diff --git a/lua/autorun/client/addons_checker.lua b/lua/autorun/client/addons_checker.lua index 48beb55..f41e2ba 100644 --- a/lua/autorun/client/addons_checker.lua +++ b/lua/autorun/client/addons_checker.lua @@ -1,8 +1,6 @@ --[[------------------------------------------------------------------------- Addons checker for metrostroi addon ---------------------------------------------------------------------------]] -CreateClientConVar("metrostroi_addons_check_skip_error",0,true) -CreateClientConVar("metrostroi_addons_check_ignore",0,true) if SERVER then return end local RequiredAddons = { @@ -177,16 +175,6 @@ local RequiredAddons = { reason="Workshop.ErrorLegacy", single = true, }, - { - --Old content - additional = { - "materials/models/metrostroi_train/81-702/apparats.vmt", - "materials/models/metrostroi_train/81-702/apparats_n.vtf", - "materials/models/metrostroi_train/81-702/body.vtf", - "models/metrostroi_train/81-717/81-717.mdl", - }, - reason="Workshop.ErrorOld", - }, { --Some effects enhancers wsid = 259517980, @@ -203,12 +191,6 @@ local RequiredAddons = { reason="Workshop.Error1", single = true, }, - { - --Train bogey entity - wsid = 1434772621, - reason="Workshop.Error1", - single = true, - }, { --Gm_mus_orange_c_long wsid = 793374567, @@ -288,7 +270,7 @@ local function showAddons(ply) else v.message = "Workshop.FilesMissingLocaly" end - elseif installed>=#v.additional and not v.mounted then + elseif installed>=#v.additional and not v.filename then v.error = v.reason~=nil v.message = v.reason or "Workshop.InstalledLocaly" end @@ -413,7 +395,6 @@ local function showAddons(ply) end local function checkAddons(ply) - if not Metrostroi then return end for kr,v in ipairs(RequiredAddons) do if v.single and not game.SinglePlayer() then continue end v.filename = nil; v.downloaded = nil; v.downloaded = nil; v.mounted = nil; v.error = nil; v.message = nil @@ -439,7 +420,6 @@ local function checkAddons(ply) WaitAddons = WaitAddons-1 if WaitAddons<=0 then showAddons(ply) - return end end) end diff --git a/lua/autorun/gm_metrostroi_content.lua b/lua/autorun/gm_metrostroi_content.lua index aa0adb6..9a3d35f 100644 --- a/lua/autorun/gm_metrostroi_content.lua +++ b/lua/autorun/gm_metrostroi_content.lua @@ -10,8 +10,6 @@ local workshopid = { 1095105863, -- Pack 4 1095109617, -- Pack 5 1095111608, -- Pack 6 - 674649096, - 348429431, } print("-Starting adding metrostroi workshop addons...") print("-Workshop addons in base:"..#workshopid) diff --git a/lua/autorun/metrostroi.lua b/lua/autorun/metrostroi.lua index 6429a54..a130ceb 100644 --- a/lua/autorun/metrostroi.lua +++ b/lua/autorun/metrostroi.lua @@ -67,34 +67,6 @@ if not Metrostroi then Metrostroi.Systems = {} Metrostroi.BaseSystems = {} end - ---List of spawned trains -Metrostroi.SpawnedTrains = {} -for k,ent in pairs(ents.GetAll()) do - if ent.Base == "gmod_subway_base" or ent:GetClass() == "gmod_subway_base" then - Metrostroi.SpawnedTrains[ent] = true - end -end - -hook.Add("EntityRemoved","MetrostroiTrains",function(ent) - if Metrostroi.SpawnedTrains[ent] then - Metrostroi.SpawnedTrains[ent] = nil - end -end) -if SERVER then - hook.Add("OnEntityCreated","MetrostroiTrains",function(ent) - if ent.Base == "gmod_subway_base" or ent:GetClass() == "gmod_subway_base" then - Metrostroi.SpawnedTrains[ent] = true - end - end) -else - hook.Add("OnEntityCreated","MetrostroiTrains",function(ent) - if ent:GetClass() == "gmod_subway_base" or scripted_ents.IsBasedOn(ent:GetClass(), "gmod_subway_base") then - Metrostroi.SpawnedTrains[ent] = true - end - end) -end - ------------------------ -- Metrostroi version -- ------------------------ @@ -133,7 +105,7 @@ function Metrostroi.AddSkin(category,name,tbl) print(Format("Metrostroi: Added a %s skin category",category)) Metrostroi.Skins[category] = {} end - if not tbl.typ then ErrorNoHalt(Format("Metrostroi:Skin error: %s wont have a typ direvtive!\n",tbl.name or name)) return end + if not tbl.typ then ErrorNoHalt(Format("Metrostroi:Skin error: %s wont have a typ direvtive!",tbl.name or name)) return end Metrostroi.Skins[category][name] = tbl Metrostroi.Skins.GetTable = function(id,name,tbl,typ) local SkinsType = ENT and ENT.SkinsType @@ -141,14 +113,14 @@ function Metrostroi.AddSkin(category,name,tbl) if SkinsType then tbl = {} for k,v in pairs(Metrostroi.Skins[typ]) do - if v.typ == SkinsType and not hook.Run("MetrostroiSkinsCheck",SkinsType,typ,v.name or k,k) then tbl[k] = v.name or k end + if v.typ == SkinsType then tbl[k] = v.name or k end end return tbl end end,nil,function(ent,val) if not Metrostroi.Skins or not Metrostroi.Skins[typ] then return end local texture = Metrostroi.Skins[typ][val] - if not texture or hook.Run("MetrostroiSkinsCheck",texture.typ,typ,texture.name or val,val) then return end + if not texture then return end ent:SetNW2String(id,val) --[[ if texture.textures then ent:SetNW2String(id,texture.func and texture.func(ent) or val) @@ -159,10 +131,10 @@ function Metrostroi.AddSkin(category,name,tbl) if not Metrostroi.Skins or not Metrostroi.Skins[typ] then return end local texture = Metrostroi.Skins[typ][List:GetOptionData(List:GetSelectedID())] if not texture or not texture.defaults then return end + for _,v in ipairs(VGUI) do v(nil,nil,true) end for k,v in pairs(texture.defaults) do local id = VGUI[k].ID - print(List:GetOptionData(List:GetSelectedID()),id,VGUI[id],v) - if id and VGUI[id] then + if id then VGUI[id](v,true) end end @@ -249,10 +221,10 @@ function Metrostroi.AddPassSchemeTex(id,name,schTbl) Metrostroi.Skins[id] = {} end local tbl = Metrostroi.Skins[id] - for k,v in ipairs(tbl) do + for k,v in pairs(tbl) do if name == v.name then - tbl[k] = schTbl - tbl[k].name = name + tbl[id] = schTbl + v.name = name return end end @@ -310,39 +282,23 @@ end -- Load core files and skins -------------------------------------------------------------------------------- if SERVER then - local OSes = { - Windows = "win32", - Linux = "linux", - BSD = "linux", - POSIX = "linux", - OSX = "osx", - } DISABLE_TURBOSTROI = false if not DISABLE_TURBOSTROI then - print(Format("Metrostroi: Trying to load simulation acceleration DLL for %s %s...",jit.os,jit.arch)) + print("Metrostroi: Trying to load simulation acceleration DLL...") --TODO: OS specific check - if jit.arch == "x86" and OSes[jit.os] and file.Exists(Format("lua/bin/gmsv_turbostroi_%s.dll",OSes[jit.os]), "GAME") then + if file.Exists("lua/bin/gmsv_turbostroi_"..(system.IsWindows() and "win32" or system.IsLinux() and "linux" or "osx")..".dll", "GAME") then + print("Metrostroi: Founded. System: "..(system.IsWindows() and "Windows" or system.IsLinux() and "Linux" or "OSX")) if not pcall(require,"turbostroi") then if system.IsWindows() then - ErrorNoHalt("======================================================\nMetrostroi: Turbostroi library can't be loaded because of missing libraries!\nCheck, that you have Microsoft visual c++ 2010 and 2017 redistributable(x86) installed\nYou can download it from:\n") - MsgC(Color(255,0,0),"https://www.microsoft.com/en-us/download/details.aspx?id=5555\nhttps://aka.ms/vs/15/release/vc_redist.x86.exe\n") - ErrorNoHalt("======================================================\n") + ErrorNoHalt("Metrostroi: Turbostroi DLL can't be loaded!\nCheck, that you have Microsoft visual c++ 2010 redistributable(x86)\nYou can find it here:https://www.microsoft.com/en-us/download/details.aspx?id=5555\n") else ErrorNoHalt("Metrostroi: Turbostroi library can't be loaded!\n") end else - print("Metrostroi: Turbostroi library loaded successfuly.") + print("Metrostroi: Turbostroi DLL be loaded successfuly.") end - elseif jit.arch ~= "x86" then - ErrorNoHalt("Metrostroi: Unsupported architecture "..jit.arch..".\nTurbostroi works only on x86(32 bit) version of server\n") - elseif system.IsWindows() then - ErrorNoHalt("======================================================\nMetrostroi: Turbostroi DLL not found.\nYou can found turbostroi for Windows at \n") - MsgC(Color(255,0,0),"https://metrostroi.net/turbostroi\n") - ErrorNoHalt("Just place this .dll to garrysmod/lua/bin folder.\nIf bin folder doesn't exists - create it.\nDon't forget to install Microsoft visual c++ 2010 and 2017 redistributable(x86)\nYou can download it from:\n") - MsgC(Color(255,0,0),"https://www.microsoft.com/en-us/download/details.aspx?id=5555\nhttps://aka.ms/vs/15/release/vc_redist.x86.exe\n") - ErrorNoHalt("======================================================\n") else - ErrorNoHalt("Metrostroi: Turbostroi DLL not found.\n") + print("Metrostroi: Turbostroi DLL not not found") end else Turbostroi = nil @@ -525,21 +481,21 @@ end if SERVER then util.AddNetworkString "MetrostroiMessages" local function CheckErr(ply) - if not Turbostroi and IsValid(ply) and (ply:IsSuperAdmin() or not game.IsDedicated()) then + if not Turbostroi then net.Start "MetrostroiMessages" - net.WriteString("Turbostroi is not installed!\nTurbostroi is accelerating train calculations by using multiple\ncores. Check "..(game.IsDedicated() and "server" or "game").." logs for more information.\nYou can download it at:\nhttps://metrostroi.net/turbostroi") + net.WriteString("Turbostroi is not installed! Performance will be low!\nDownload it at:\nhttps://metrostroi.net/turbostroi") net.WriteString("https://metrostroi.net/turbostroi") net.Send(ply) end if not game.IsDedicated() then net.Start "MetrostroiMessages" - net.WriteString("For comfort and smooth experience, you need to\njoin to server or host a dedicated server.\nIt's required because Garry's mod using only\n1 core, and now it using it for client and server code.\nWhen you join or host server you can separate server\nand client processes to different cores.\nInformation about how to host server:\nhttp://wiki.garrysmod.com/page/Hosting_A_Dedicated_Server") + net.WriteString("You playing in listenserver. For comfortable playing, you need host a dedicated server:\nhttp://wiki.garrysmod.com/page/Hosting_A_Dedicated_Server") net.WriteString("http://wiki.garrysmod.com/page/Hosting_A_Dedicated_Server") net.Send(ply) end end local m_adm = {} - for _,v in pairs(player.GetHumans()) do + for _,v in pairs(player.GetAll()) do if IsValid(v) and v:IsAdmin() then table.insert(m_adm,v) end @@ -548,12 +504,10 @@ if SERVER then hook.Add("PlayerInitialSpawn","MetrostroiWarnMessage",CheckErr) else local function err(msg, url) - local count = #msg:gsub("[^\n]+","") - local size = 83+count*18 local warn = vgui.Create("DFrame") warn:SetDeleteOnClose(true) warn:SetTitle("Warning") - warn:SetSize(380, size) + warn:SetSize(380, 120) warn:SetDraggable(false) warn:SetSizable(false) warn:Center() @@ -564,30 +518,20 @@ else draw.DrawText(msg, "Trebuchet18", w/2, 30, color_white, 1) end - local Close = vgui.Create("DButton", warn) - Close:SetText("I understand") - Close:SetPos(290, size-30) - Close:SetSize(80, 25) - Close.DoClick = function() - warn:Close() - end - local Open = vgui.Create("DButton", warn) Open:SetText("Open link") - Open:SetPos(15, size-30) + Open:SetPos(15, 85) Open:SetSize(80, 25) Open.DoClick = function() - Close:SetText("Close window") gui.OpenURL(url) end - local Copy = vgui.Create("DButton", warn) - Copy:SetText("Copy link") - Copy:SetPos(100, size-30) - Copy:SetSize(80, 25) - Copy.DoClick = function() - Close:SetText("Close window") - SetClipboardText(url) + local Close = vgui.Create("DButton", warn) + Close:SetText("Close") + Close:SetPos(290, 85) + Close:SetSize(80, 25) + Close.DoClick = function() + warn:Close() end end net.Receive("MetrostroiMessages", function() @@ -875,7 +819,7 @@ if SERVER then local players if LastErr == "Server requested update (203)" then players = {} - for _,v in pairs(player.GetHumans()) do + for _,v in pairs(player.GetAll()) do if v:IsBot() then continue end table.insert(players,v:SteamID()) end @@ -898,9 +842,7 @@ if SERVER then end init() - concommand.Add("metrostroi_monitoring_start",function(ply) - if IsValid(ply) then return end - + concommand.Add("metrostroi_monitoring_start",function() if not monitoringStarted() and CV_Enabled:GetBool() then init() MsgC(Color(255,0,255),"MetrostroiMon: ",Color(0,255,0),"Started.\n") @@ -911,9 +853,7 @@ if SERVER then Color(255,255,0),"\n\tIf you want send monitoring data, type\n\t",Color(255,0,255),"metrostroi_monitoring_allow 1",Color(255,255,0)," to console\n") end end,nil,"Try to start monitoring") - concommand.Add("metrostroi_monitoring_stop",function(ply) - if IsValid(ply) then return end - + concommand.Add("metrostroi_monitoring_stop",function() if monitoringStarted() then shutdown() MsgC(Color(255,0,255),"MetrostroiMon: ",Color(0,255,0),"Stopped.\n") @@ -930,9 +870,7 @@ if SERVER then string.NiceTime(elapsed),"\n" ) end - concommand.Add("metrostroi_monitoring_status",function(ply) - if IsValid(ply) then return end - + concommand.Add("metrostroi_monitoring_status",function() if State>0 then MsgC(Color(255,0,255),"MetrostroiMon:\t\t",Color(0,255,0),"Watchdog working\n") MsgC(Color(255,255,255),"\tStatus:\t\t") @@ -964,16 +902,13 @@ if SERVER then end end,nil,"Monitoring status") --Restart monitoring, if we want to start it - concommand.Add("metrostroi_monitoring_restart",function(ply) - if IsValid(ply) then return end - + concommand.Add("metrostroi_monitoring_restart",function() RunConsoleCommand("metrostroi_monitoring_stop") RunConsoleCommand("metrostroi_monitoring_start") end,nil,"Restart monitoring") concommand.Add("metrostroi_monitoring_confirm",function(ply,_,_,str) if IsValid(ply) then return end - if not monitoringStarted() or State<=1 then print("Monitoring is not started. It can be disabled or have a error.") print("You can check monitoring status by metrostroi_monitoring_status console command.") diff --git a/lua/autorun/your_skin.txt b/lua/autorun/your_skin.txt deleted file mode 100644 index 4a36553..0000000 --- a/lua/autorun/your_skin.txt +++ /dev/null @@ -1,21 +0,0 @@ - -THIS FILE MUST HAVE THAT SYNTAXIS: - -if not Metrostroi.Skins then Metrostroi.Skins = {} end -if not Metrostroi.Skins["ezh3"] then Metrostroi.Skins["ezh3"] = {} end -table.insert(Metrostroi.Skins["ezh3"],{ - name = "Green-Blue", - path = "metrostroi_skins/ezh3/1", -}) - -WHERE: -table.insert(Metrostroi.Skins["ezh3"],{ - name = "Green-Blue", - path = "metrostroi_skins/ezh3/1", -}) - -YOUR SKIN -table.insert(Metrostroi.Skins["type of train(ezh3 or 717)"],{ -name = "YOUR NAME" -path = "PATH_TO_VMT_AND_VTF", -}) \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_subway_ai/cl_init.lua b/lua/entities/_obsolete/gmod_subway_ai/cl_init.lua deleted file mode 100644 index 8aa1831..0000000 --- a/lua/entities/_obsolete/gmod_subway_ai/cl_init.lua +++ /dev/null @@ -1,131 +0,0 @@ -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false - --------------------------------------------------------------------------------- -function ENT:Props81717() - --if self.PropsInit then return end - --self.PropsInit = true - - local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(349.0 - 32*k - 230*i,-65*(1-2*k),-2.8) - else return Vector(349.0 - 32*(1-k) - 230*i,-65*(1-2*k),-2.8) - end - end - for i=0,3 do - for k=0,1 do - self.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi/81/81-7036_door1.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,180*(1-k),0) - } - self.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi/81/81-7036_door2.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,180*(1-k),0) - } - end - end - self.ClientProps["d1"] = { - model = "models/metrostroi/81/81-7036_door4.mdl", - pos = Vector(-487.0,-2.2,-4.5), - ang = Angle(0,0,0) - } - self.ClientProps["d2"] = { - model = "models/metrostroi/81/81-7036_door3.mdl", - pos = Vector(414.0,65.0,-1.8), - ang = Angle(0,0,0) - } - self.ClientProps["d3"] = { - model = "models/metrostroi/81/81-7036_door5.mdl", - pos = Vector(414.3,-65.0,-1.8), - ang = Angle(0,0,0) - } -end - -function ENT:Think() - self.BaseClass.Think(self) - - local trainType = self:GetNW2String("TrainType") - if trainType == "81-717" and not self.ClientProps["d1"] then - --self:Props81717() - end - - -- Animate doors - for i=0,3 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - local animation = self:Animate(n_l,self:GetPackedBool(21+i+4-k*4) and 1 or 0,0,1, 0.8 + (-0.2+0.4*math.random()),0) - local offset_l = Vector(math.abs(31*animation),0,0) - local offset_r = Vector(math.abs(32*animation),0,0) - if self.ClientEnts[n_l] and IsValid(self.ClientEnts[n_l]) then - self.ClientEnts[n_l]:SetPos(self:LocalToWorld(self.ClientProps[n_l].pos + (1.0 - 2.0*k)*offset_l)) - end - if self.ClientEnts[n_r] and IsValid(self.ClientEnts[n_r]) then - self.ClientEnts[n_r]:SetPos(self:LocalToWorld(self.ClientProps[n_r].pos - (1.0 - 2.0*k)*offset_r)) - end - end - end - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 2.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 2.0*((-0.4*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self:SetSoundState("release2",self.BrakeLineRamp1,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 2.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 2.0*(0.02*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self:SetSoundState("release3",self.BrakeLineRamp2,1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor",1,1) - else - self:SetSoundState("compressor",0,0) - self:PlayOnce("compressor_end",nil,0.75) - end - end - - -- ARS/ringer alert - local state = self:GetPackedBool(39) - self.PreviousAlertState = self.PreviousAlertState or false - if self.PreviousAlertState ~= state then - self.PreviousAlertState = state - if state then - self:SetSoundState("ring",0.20,1) - else - self:SetSoundState("ring",0,0) - self:PlayOnce("ring_end","cabin",0.45) - end - end - - -- DIP sound - self:SetSoundState("bpsn1",self:GetPackedBool(52) and 1 or 0,1.0) -end - -function ENT:OnRemove() - self.BaseClass.OnRemove(self) - for k,v in pairs(self.ClientProps) do - self.ClientProps[k] = nil - end - for k,v in pairs(self.ClientEnts) do - v:Remove() - end - self.ClientEnts = nil - self.ClientProps = {} -end \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_subway_ai/init.lua b/lua/entities/_obsolete/gmod_subway_ai/init.lua deleted file mode 100644 index a9b340e..0000000 --- a/lua/entities/_obsolete/gmod_subway_ai/init.lua +++ /dev/null @@ -1,538 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - --------------------------------------------------------------------------------- -function ENT:Initialize() - -- Defined train information - self.SubwayTrain = { - Type = "AI", - Name = "", - } - if not self.TrainType then self.TrainType = "81-717" end - -- Set model and initialize - self.NoPhysics = true - if self.TrainType == "81-717" then self:SetModel("models/metrostroi/81/81-7036.mdl") end - if self.TrainType == "81-714" then self:SetModel("models/metrostroi/81/81-7037.mdl") end - self.BaseClass.Initialize(self) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 325-20,0,-75),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-325-10,0,-75),Angle(0,0,0),false) - - -- Seats - if self.TrainType == "81-717" then - self.DriverSeat = self:CreateSeat("driver",Vector(410,-2,-23)) - --self.InstructorsSeat = self:CreateSeat("instructor",Vector(410,35,-28)) - --self.ExtraSeat = self:CreateSeat("instructor",Vector(410,-35,-28)) - end - --[[ - for i=1,1 do --17 - local pos = Vector(280-(i-1)*30-math.floor((i-1)/5)*80,-47,-32) - local p1 = self:CreateSeat("passenger",pos,Angle(0,90,0)) - pos.y = -pos.y - local p2 = self:CreateSeat("passenger",pos,Angle(0,270,0)) - end]] - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- Find SOME sort of route - local route - for k,v in pairs(Metrostroi.AIConfiguration) do - if not route then route = k end - end - - -- Initial setup - if not self.Route then self.Route = route end - if (not self.PathID) and (route) and Metrostroi.AIConfiguration[route] then - self.PathID = Metrostroi.AIConfiguration[route].Path - end - self.Position = self.Position or 100 - self.Velocity = 0 - self.RheostatPosition = 0 - - -- Lights - if self.TrainType == "81-717" then - self.Lights = { - -- Head - [1] = { "headlight", Vector(465,0,-20), Angle(0,0,0), Color(176,161,132), fov = 100 }, - [2] = { "glow", Vector(460, 51,-23), Angle(0,0,0), Color(255,255,255), brightness = 2 }, - [3] = { "glow", Vector(460,-51,-23), Angle(0,0,0), Color(255,255,255), brightness = 2 }, - [4] = { "glow", Vector(460,-8, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [5] = { "glow", Vector(460,-8, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [6] = { "glow", Vector(460, 2, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [7] = { "glow", Vector(460, 2, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - - -- Reverse - [8] = { "light", Vector(458,-45, 55), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - [9] = { "light", Vector(458, 45, 55), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector( 420, 0, 35), Angle(0,0,0), Color(255,255,255), brightness = 0.1, distance = 550 }, - - -- Interior - [12] = { "dynamiclight", Vector( 0, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - - -- Side lights - [14] = { "light", Vector(-50, 68, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [15] = { "light", Vector(4, 68, 54), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [16] = { "light", Vector(1, 68, 54), Angle(0,0,0), Color(0,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [17] = { "light", Vector(-2, 68, 54), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [18] = { "light", Vector(-50, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [19] = { "light", Vector(5, -69, 54), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [20] = { "light", Vector(2, -69, 54), Angle(0,0,0), Color(0,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [21] = { "light", Vector(-1, -69, 54), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - } - end - if self.TrainType == "81-714" then - self.Lights = { - -- Interior - [12] = { "dynamiclight", Vector( 0, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - - -- Side lights - [14] = { "light", Vector(-50, 68, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [15] = { "light", Vector(4, 68, 54), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [16] = { "light", Vector(1, 68, 54), Angle(0,0,0), Color(0,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [17] = { "light", Vector(-2, 68, 54), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [18] = { "light", Vector(-50, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [19] = { "light", Vector(5, -69, 54), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [20] = { "light", Vector(2, -69, 54), Angle(0,0,0), Color(0,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [21] = { "light", Vector(-1, -69, 54), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - } - end - - -- Prop-protection related - if CPPI and IsValid(self.Owner) then - self:CPPISetOwner(self.Owner) - end - -- Spawn a dummy consist - if (self.TrainType == "81-717") and (not self.TrainHead) then - for i=2,5 do - local ent = ents.Create("gmod_subway_ai") - if i == 5 - then ent.TrainType = "81-717" - else ent.TrainType = "81-714" - end - ent.TrainIndex = i - ent.TrainHead = self - ent.Owner = self.Owner - ent:Spawn() - table.insert(self.TrainEntities,ent) - end - end - --self:Remove() - -- Type - self:SetNW2String("TrainType",self.TrainType) -end - ---[[concommand.Add("metrostroi_ai_spawn", function(ply, _, args) - if (ply:IsValid()) and (not ply:IsAdmin()) then return end - - local pathid = tonumber(args[2]) or 1 - local trainCounter = tonumber(args[1]) or 1 - local prevEnt - timer.Create("metrostroi-ai-spawntimer-"..pathid,1.0,0,function() - if prevEnt then - if (pathid == 1) and (prevEnt.Position < 260) then - return - end - if (pathid == 2) and (prevEnt.Position < 960) then - return - end - end - if trainCounter < 1 then return end - - local ent = ents.Create("gmod_subway_ai") - ent.Position = 150 - ent.PathID = pathid - ent:Spawn() - prevEnt = ent - trainCounter = trainCounter - 1 - print("Spawning AI trains (path "..pathid.."), left: "..trainCounter) - end) -end) - -concommand.Add("metrostroi_ai_clear", function(ply, _, args) - if (ply:IsValid()) and (not ply:IsAdmin()) then return end - for k,v in pairs(ents.FindByClass("gmod_subway_ai")) do - SafeRemoveEntity(v) - if args[1] then print("Removed one") return end - end - --timer.Create("metrostroi-ai-spawntimer",1.0,0,function()end) -end)]]-- - -concommand.Add("metrostroi_ai_info", function(ply, _, args) - if (ply:IsValid()) and (not ply:IsAdmin()) then return end - for k,v in pairs(ents.FindByClass("gmod_subway_ai")) do - if not v.TrainHead then - print(Format("Train to [%03d][%02d] (%.0f m %.02f km/h, left %0.3f m)", - v.TargetStation or 0,v.TargetPlatform or 0,v.Position,v.Speed, - (v.PlatformEdgeX or 0) - v.Position)) - end - end -end) - - - - --------------------------------------------------------------------------------- --- Train driving AI --------------------------------------------------------------------------------- -function ENT:DoAI(dT) - -- Get a schedule - if self.Schedule and (#self.Schedule == 0) then - self.Schedule = nil - end - if (not self.Schedule) and (not self.NoStation) then - self.Schedule = Metrostroi.GenerateSchedule(self.Route) - self.StopTimer = 10 - end - - -- See if must move to next station - if self.Schedule then - if ((Metrostroi.ServerTime()+10000 > (self.Schedule[1][3]*60)) and (self.StopTimer < 0)) or - (self.StopTimer < -200) then - table.remove(self.Schedule,1) - self.StopTimer = 10 - end - end - - -- Get current target station info - local platformEdgeX - if self.Schedule and self.Schedule[1] then - local targetStation = self.Schedule[1][1] - local targetPlatform = self.Schedule[1][2] - local stationData = Metrostroi.Stations[targetStation] - local platformData - if stationData then platformData = stationData[targetPlatform] end - if platformData then - platformEdgeX = math.max(platformData.x_end,platformData.x_start) - end - if platformData and platformData.node_end then - if platformData.node_end.path.id ~= self.PathID then - --print("WRONG PATH") - platformEdgeX = nil - end - end - self.TargetStation = targetStation - self.TargetPlatform = targetPlatform - else - self.NoStation = true - end - self.PlatformEdgeX = platformEdgeX - - if platformEdgeX then - if self.Position > platformEdgeX then - --print("Overrun!",self.Position,platformEdgeX) - table.remove(self.Schedule,1) - self.StopTimer = 10 - end - end - - -- Get current information on driving - local speedLimit = self.ALS_ARS.SpeedLimit - local nextLimit = self.ALS_ARS.NextLimit - local targetSpeed = nextLimit - --print() - if nextLimit == 0 then targetSpeed = speedLimit end - - -- Move at slow speed to next red light or blocked section - if targetSpeed == 0 then targetSpeed = 20 end - -- If there is a red light ahead, stop once in its range - if self.RedLightDistance and (self.RedLightDistance < 20) then - targetSpeed = 0 - end - - -- Stop at station gradually - if platformEdgeX and (platformEdgeX > self.Position) then - local dX = platformEdgeX - self.Position - if dX < 100 then - targetSpeed = math.min(targetSpeed,55) * (math.max(0.0,math.min(1.0,(dX-12)/90))^0.5) - if dX > 18 then targetSpeed = math.max(targetSpeed,20) end - if self.Speed < 1 then - self.StopTimer = self.StopTimer - dT - end - end - end - - -- Wait for schedule start - if (self.PathID == 1) and (self.Position < 250) and - (self.Schedule) and (self.Schedule[1]) then - local dT = self.Schedule[1][3]*60 - Metrostroi.ServerTime() - --if dT > 90 then targetSpeed = 0 end - end - --targetSpeed = 0 - -- Reached target speed, stop accelerating - if self.Speed > (targetSpeed-2) then - self.Accelerating = false - end - -- Speed is below required, try to accelerate - if self.Speed < (targetSpeed-10) then - self.Accelerating = true - end - -- Exceeding speed limit, apply brakes - if self.Speed > targetSpeed then - self.Braking = true - end - -- Braked enough, stop braking - if (self.Speed < (targetSpeed-5)) and (self.Braking) then - self.Braking = false - end - - -- ARS system logic - if false and self.ALS_ARS.LVD then - self.Braking = true - self.Accelerating = false - end - --print(self.ALS_ARS.LVD) - if self.ALS_ARS.LVD - then self.ALS_ARS.AttentionPedal = true - else self.ALS_ARS.AttentionPedal = false - end - if speedLimit == 0 then self.ALS_ARS.AttentionPedal = true end - - -- Apply pneumatic brakes if overspeeding much or stopped - self.Pneumo = false - if (self.Speed < 7) and (not self.Accelerating) then - self.Pneumo = true - end - if (self.Speed > (targetSpeed+5)) then - --self.Pneumo = true - end - - -- Save for statistics - self.TargetSpeed = targetSpeed - --if self.RedLightDistance and (self.RedLightDistance < 30) then self.Pneumo = true end -end - - - --------------------------------------------------------------------------------- --- Train physics --------------------------------------------------------------------------------- -function ENT:DoPhysics(dT) - -- Slopes code - local slopeAngle = self:GetAngles().p - if slopeAngle > 180 then slopeAngle = slopeAngle-360 end - local slopeFactor = math.min(8.0,math.max(-8.0,slopeAngle))/8.0 - - -- Motor code - local motorPower = 0 - if self.Accelerating then motorPower = 1.0 end - if self.Braking then motorPower = -1.0 end - - local motorForce = 0 - if motorPower > 0 then motorForce = 1.25*motorPower end - if motorPower < 0 then motorForce = -1.3*math.abs(motorPower) * math.max(-1.0,math.min(1.0,0.25*self.Velocity)) end - - -- Brake code - local brakeForce = 0 - if self.Pneumo then - brakeForce = -1.4*math.max(-1.0,math.min(1.0,3.0*self.Velocity)) - slopeFactor = slopeFactor*math.max(-1.0,math.min(1.0,3.0*self.Velocity)) - end - self.PneumoForce = brakeForce - - -- Integrate position and velocity - self.Acceleration = 0 - +motorForce - +brakeForce - -self.Velocity*0.0045 - +slopeFactor*1.52 - self.Velocity = self.Velocity + dT*self.Acceleration - self.Position = self.Position + dT*self.Velocity - --print(Format("%.2f/%.2f km/h %.0f m A-%s B-%s P-%s", - --self.Speed,self.TargetSpeed,self.Position, - --tostring(self.Accelerating),tostring(self.Braking),tostring(self.Pneumo))) - - -- Info - self.MotorPower = motorPower -end - -function ENT:Think() - -- Basic think loop - self.PrevTime = self.PrevTime or CurTime() - self.DeltaTime = (CurTime() - self.PrevTime) - self.PrevTime = CurTime() - - --self:RecvPackedData() - self:NextThink(CurTime()+0.10) - - -- Simulate equipment specific to trains - local dT = self.DeltaTime - if (self.TrainType == "81-717") and (not self.TrainHead) then - self.ALS_ARS:Think(dT,1) - end - - -- Select path - if (not self.PathID) or (not self.Route) then return true end - local path = Metrostroi.Paths[self.PathID] - local config = Metrostroi.AIConfiguration[self.Route] - if self.Position > config.EndPosition then - self.Route = config.NextRoute - config = Metrostroi.AIConfiguration[self.Route] - self.PathID = config.Path - self.Position = config.SpawnPosition - self.Velocity = 0 - - self.Schedule = nil - self.NoStation = false - end - --self.Velocity = 0 - - ---------------------------------------------------------------------------- - -- If needed, update train physics and AI - if not self.TrainHead then - self:DoAI(dT) - self:DoPhysics(dT) - else - if not IsValid(self.TrainHead) then - SafeRemoveEntity(self) - return - end - - self.Route = self.TrainHead.Route - self.PathID = self.TrainHead.PathID - self.Position = self.TrainHead.Position - 18.6*(self.TrainIndex-1) - self.Velocity = self.TrainHead.Velocity - self.MotorPower = self.TrainHead.MotorPower - self.PneumoForce = self.TrainHead.PneumoForce - end - - - ---------------------------------------------------------------------------- - -- Lighting - if self.TrainType == "81-717" then - self:SetLightPower(1, self.TrainHead == nil) - self:SetLightPower(2, self.TrainHead == nil) - self:SetLightPower(3, self.TrainHead == nil) - self:SetLightPower(4, self.TrainHead == nil) - self:SetLightPower(5, self.TrainHead == nil) - self:SetLightPower(6, self.TrainHead == nil) - self:SetLightPower(7, self.TrainHead == nil) - self:SetLightPower(8, self.TrainHead ~= nil) - self:SetLightPower(9, self.TrainHead ~= nil) - self:SetLightPower(10, (CurTime() % 60) > 0.1) - self:SetLightPower(12, (CurTime() % 60) > 0.1) - end - if self.TrainType == "81-714" then - self:SetLightPower(12, (CurTime() % 60) > 0.1) - end - -- Pneumatic brakes - self.PneumaticPressure = self.PneumaticPressure or 0 - self.PneumaticPressure_dPdT = self.PneumaticPressure_dPdT or 0 - if self.Pneumo - then self.PneumaticPressure_dPdT = 0.65*(1.5 - self.PneumaticPressure) - else self.PneumaticPressure_dPdT = 0.65*(0.0 - self.PneumaticPressure) - end - self.PneumaticPressure = self.PneumaticPressure + self.PneumaticPressure_dPdT*dT - - -- Minor state - if self.TrainHead then - self.LeftDoorsOpen = self.TrainHead.LeftDoorsOpen - self.RightDoorsOpen = self.TrainHead.RightDoorsOpen - else - self.LeftDoorsOpen = self.StopTimer and (self.StopTimer < 9) - self.RightDoorsOpen = self.StopTimer and (self.StopTimer < 9) - end - if self.LeftDoorsOpen ~= self.PrevLeftDoorsOpen then - self.PrevLeftDoorsOpen = self.LeftDoorsOpen - if self.LeftDoorsOpen then - self:PlayOnce("door_open1") - else - self:PlayOnce("door_close1") - end - end - if self.RightDoorsOpen ~= self.PrevRightDoorsOpen then - self.PrevRightDoorsOpen = self.RightDoorsOpen - if self.RightDoorsOpen then - self:PlayOnce("door_open1") - else - self:PlayOnce("door_close1") - end - end - self:SetPackedBool(21,self.LeftDoorsOpen) - self:SetPackedBool(22,self.LeftDoorsOpen) - self:SetPackedBool(23,self.LeftDoorsOpen) - self:SetPackedBool(24,self.LeftDoorsOpen) - self:SetPackedBool(25,self.RightDoorsOpen) - self:SetPackedBool(26,self.RightDoorsOpen) - self:SetPackedBool(27,self.RightDoorsOpen) - self:SetPackedBool(28,self.RightDoorsOpen) - self:SetPackedBool(52,1) - self:SetPackedBool(39,self.ALS_ARS.LVD and (not self.TrainHead)) - - -- Update state of all objects and sounds - self.Speed = math.abs(self.Velocity/0.277778) - self.FrontBogey.Speed = self.Speed - self.RearBogey.Speed = self.Speed - self.FrontBogey.MotorPower = self.MotorPower - self.RearBogey.MotorPower = self.MotorPower - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.PneumaticPressure_dPdT - self.RearBogey.BrakeCylinderPressure_dPdT = -self.PneumaticPressure_dPdT - self.FrontBogey.BrakeSqueal = math.min(1,(3*math.abs(self.PneumoForce or 0))^1) - self.RearBogey.BrakeSqueal = math.min(1,(3*math.abs(self.PneumoForce or 0))^1) - - - ---------------------------------------------------------------------------- - -- Update train position - local vec,dir,node = Metrostroi.GetTrackPosition(path,self.Position) - if vec then - --local vec1,dir1 = Metrostroi.GetTrackPosition(path,self.Position+0) - local vec2,dir2 = Metrostroi.GetTrackPosition(path,self.Position-5) - if dir2 then - dir = dir2 - end - - if self.TrainHead then dir = -dir end - --[[local trace = { - start = vec, - endpos = vec + Vector(0,0,-384), - mask = MASK_NPCWORLDSTATIC - } - local result = util.TraceLine(trace)]]-- - local rollAngle = Angle(0,0,0)--Angle(0,0,(180.0/math.pi)*math.acos(result.HitNormal.z)) - - self:SetPos(vec) - self:SetAngles(dir:Angle() + rollAngle) - end - - -- Update information about restrictions in driving - self.RestrictionTimeout = self.RestrictionTimeout or 0 - if (CurTime() - self.RestrictionTimeout) > 0.50 then - self.RestrictionTimeout = CurTime() - if node and (not self.TrainHead) then - self.RedLightDistance = nil - - -- Check ARS signal/traffic light being red - local nextARS = Metrostroi.GetARSJoint(node,self.Position,true) - if nextARS and nextARS.AutoEnabled then - local arsOffset = (nextARS.ARSOffset or self.Position) - local dX = math.abs(arsOffset - self.Position) - if (not self.PlatformEdgeX) or (arsOffset < self.PlatformEdgeX) then - self.RedLightDistance = dX - end - end - - -- Find other trains on the same line - if not self.RedLightDistance then - for k,v in pairs(ents.FindByClass("gmod_subway_ai")) do - if (v.PathID == self.PathID) and (v ~= self) and (v.Position > self.Position) then - self.RedLightDistance = math.abs(v.Position - self.Position) - end - end - end - end - end - --- self:SendPackedData() - return true -end \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_subway_ai/shared.lua b/lua/entities/_obsolete/gmod_subway_ai/shared.lua deleted file mode 100644 index f2773c2..0000000 --- a/lua/entities/_obsolete/gmod_subway_ai/shared.lua +++ /dev/null @@ -1,24 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameT = "AI Train" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSystems() - self:LoadSystem("ALS_ARS") -end diff --git a/lua/entities/_obsolete/gmod_subway_e/cl_init.lua b/lua/entities/_obsolete/gmod_subway_e/cl_init.lua deleted file mode 100644 index 8ddee8d..0000000 --- a/lua/entities/_obsolete/gmod_subway_e/cl_init.lua +++ /dev/null @@ -1,1881 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} - ------ --- ALS Panel ------ -ENT.ButtonMap["OldARS"] = { - pos = Vector(445.38,-57.98,18.49), - ang = Angle(0,-90-37.9,90), - width = 60, - height = 140, - scale = 0.0625, - - buttons = { - {ID = "L80", x=10,75, y=13,57, w=25,h=12, tooltip="ALS80"}, - {ID = "L70", x=10,75, y=30,57, w=25,h=12, tooltip="ALS70"}, - {ID = "L60", x=10,75, y=46,57, w=25,h=12, tooltip="ALS60"}, - {ID = "L40", x=10,75, y=61,57, w=25,h=12, tooltip="ALS40"}, - {ID = "L0", x=10,75, y=76,7, w=25,h=12, tooltip="ALS0"}, - {ID = "LOCh", x=10,75, y=91,57, w=25,h=12, tooltip="OCH"}, - } -} - --- Main panel -ENT.ButtonMap["Main"] = { - pos = Vector(439.7+12.15,-31.99,0.05), - ang = Angle(0,-90,90-27), - width = 315, - height = 240, - scale = 0.0588, - - buttons = { - {ID = "DIPonSet", x=39 + 51*0-1, y=94, radius=20, tooltip="КУ4:Включение ДИП и освещения\nTurn DIP and interior lights on"}, - {ID = "DIPoffSet", x=35 + 51*1.03-1, y=94, radius=20, tooltip="КУ5:Отключение ДИП и освещения\nTurn DIP and interior lights off"}, - {ID = "VozvratRPSet", x=35 + 51*2-1, y=94, radius=20, tooltip="КУ9:Возврат РП\nReset overload relay"}, - {ID = "KSNSet", x=35 + 51*2.98-1, y=94, radius=20, tooltip="КУ8:Принудительное срабатывание РП на неисправном вагоне (сигнализация неисправности)\nKSN: Failure indication button"}, - {ID = "KVTSet", x=35 + 51*3.92-1, y=94, radius=20, tooltip="КБ: Кнопка Бдительности\nKB: Attention button"}, - {ID = "KDPSet", x=35 + 51*4.85-1, y=94, radius=20, tooltip="КДП:Правые двери\nKDP: Right doors open"}, - ----Down Panel - {ID = "KU1Toggle", x=17,y=128,w=45,h=90, tooltip="КУ1:Включение мотор-компрессора\nTurn motor-compressor on"}, - {ID = "KRPSet", x=135,y=128,w=45,h=90, tooltip="КРР: Резервное реверсирование"}, - {ID = "VUD1Toggle", x=253,y=128,w=45,h=90, tooltip="КУ2: Закрытие дверей\nVUD: Door control toggle (close doors)"}, - {ID = "ALSToggle", x=217,y=220,radius=20, tooltip="АЛС: Автоматическая локомотивная сигнализация\nAdditional lighning"}, - {ID = "L_3Toggle", x=94, y=220, radius=20, tooltip="Освещение приборов\nPanel lighting"}, - ----Lamps - {ID = "GreenRPLight", x=181, y=29.07, radius=20, tooltip="Зеленая РП: Зелёная лампа реле перегрузки (Сигнализация перегрузки)\nRP: Green overload relay light (overload relay open on current train)"}, - {ID = "RedRPLight", x=226.8, y=29.07, radius=20, tooltip="Красная РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)"}, - {ID = "RedRP2Light", x=138, y=29.07, radius=20, tooltip="Красная лампа РК (Вращение Реостатного контроллера)\nRK: Rheostat controller motion light"}, - {ID = "LVD", x=47, y=29.07, radius=20, tooltip="ЛВД: Лампа включения двигателей\nLVD: Engines engaged"}, - {ID = "LST", x=90, y=29.07, radius=20, tooltip="ЛСТ: Лампа сигнализации торможения\nLST: Brakes engaged"}, - {ID = "BlueLight", x=270.6, y=29.1, radius=20, tooltip="Синяя лампа СД: Сигнализация дверей поезда\nBlue door state light (doors are closed)"}, - - - --{ID = "RezMKSet", x=66, y=80, radius=20, tooltip="Резервное включение мотор-компрессора\nEmergency motor-compressor startup"}, - --{ID = "VAHToggle", x=187, y=19, radius=20, tooltip="ВАХ: Включение аварийного хода (неисправность реле педали безопасности)\nVAH: Emergency driving mode (failure of RPB relay)"}, - --{ID = "VADToggle", x=226, y=19, radius=20, tooltip="ВАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)\nVAD: Emergency door close override (failure of KD relay)"}, - - --{ID = "ARSToggle", x=187+77, y=19, radius=20, tooltip="АРС: Включение системы автоматического регулирования скорости\nARS: Automatic speed regulation"}, - --{ID = "ALSToggle", x=226+77, y=19, radius=20, tooltip="АЛС: Включение системы автоматической локомотивной сигнализации\nALS: Automatic locomotive signalling"}, - - --{ID = "OtklAVUToggle", x=349, y=19, radius=20, tooltip="Отключение автоматического выключения управления (неисправность реле АВУ)\nTurn off automatic control disable relay (failure of AVU relay)"}, - --{ID = "VUD1Toggle", x=393, y=80, radius=20, tooltip="ВУД1: Выключатель управления дверьми\nVUD1: Door control toggle (close doors)"}, - - --{ID = "DoorSelectToggle",x=321, y=75, radius=20, tooltip="Выбор стороны открытия дверей\nSelect side on which doors will open"}, - {ID = "KDLSet", x=97, y=168, radius=20, tooltip="КУ12: Кнопка левых дверей\nKDL: Left doors open"}, - {ID = "KRZDSet", x=217, y=168, radius=20, tooltip="КУ10: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing"}, - --{ID = "KDPSet", x=349, y=122, radius=20, tooltip="КДП: Кнопка правых дверей\nKDP: Right doors open"}, - - --{ID = "KVTSet", x=240, y=122, radius=20, tooltip=""}, - --{ID = "KSNSet", x=240, y=78, radius=20, tooltip="КСН: Кнопка сигнализации неисправности\nKSN: Failure indication button"}, - --{ID = "KRPSet", x=192, y=122, radius=20, tooltip="КРП: Кнопка резервного пуска"}, - - --{ID = "R_Program1Set", x=112, y=127, radius=20, tooltip="Программа 1\nProgram 1"}, - --{ID = "R_Program2Set", x=149, y=127, radius=20, tooltip="Программа 2\nProgram 2"}, - - --{ID = "R_UNchToggle", x=112, y=30, radius=20, tooltip="УНЧ: Усилитель низких частот\nUNCh: Low frequency amplifier"}, - --{ID = "R_ZSToggle", x=149, y=30, radius=20, tooltip="ЭС: Контроль экстренной связи\nES: Emergency communication control"}, - --{ID = "R_RadioToggle", x=112, y=80, radius=20, tooltip="Радиоинформатор (встроеный)\nRadioinformator: Announcer (built-in)"}, - --{ID = "R_GToggle", x=149, y=80, radius=20, tooltip="Громкоговоритель\nLoudspeaker: Sound in cabin enable"}, - - } -} - ---VU1 Panel -ENT.ButtonMap["VU1"] = { - pos = Vector(451.0+9,-17.15,32), - ang = Angle(0,270,90), - width = 100, - height = 240, - scale = 0.0625, - - buttons = { - {ID = "VUSToggle", x=0, y=0, w=100, h=110, tooltip="Прожектор\nVUSoggle"}, - {x=50,y=170,radius=50,tooltip="Напряжение цепей управления"}, - } -} ---VUSToggle -Metrostroi.ClientPropForButton("VUS",{ - panel = "VU1", - button = "VUSToggle", - model = "models/metrostroi_train/switches/autobr.mdl", - ang = 270, - z=20, -}) - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(451.0+8.6,-17.15,17.5), - ang = Angle(0,270,90), - width = 100, - height = 240, - scale = 0.0625, - - buttons = { - {ID = "VUToggle", x=0, y=100, w=100, h=140, tooltip="ВУ: Выключатель Управления\nVUToggle"}, - {ID = "RezMKToggle", x=30, y=20, w=50, h=100, tooltip="КУ15:Резервное включение мотор-компрессора\nRezMKSet"}, - } -} - -ENT.ButtonMap["AVMain"] = { - pos = Vector(387.4+14.15,38.8,56), - ang = Angle(0,90,90), - width = 335, - height = 500, - scale = 0.0625, - - buttons = { - {ID = "AV8BToggle", x=0, y=0, w=300, h=600, tooltip="АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n"}, - } -} ----AV1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(387.414+14.15,39,23), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VU1Toggle", x=0, y=0, w=100, h=140, tooltip="ВУ1: Печь отопления кабины ПТ-6\n"}, - {ID = "VU2Toggle", x=100, y=0, w=100, h=140, tooltip="ВУ2: Аварийное освещение 25В\n"}, - {ID = "VU3Toggle", x=200, y=0, w=100, h=140, tooltip="ВУ3: Освещение кабины\n"}, - } -} - -ENT.ButtonMap["AV2"] = { - pos = Vector(401.4,19.15,45.3), - ang = Angle(0,90,90), - width = 295, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "RSTToggle", x=0, y=0, w=295, h=155, tooltip="РСТ: Радиооповещение и поездная радио связь\nVB: А62"}, - } -} - ---[ARS/Speedometer panel -ENT.ButtonMap["ARS"] = { - pos = Vector(449.1+12.15,-37.3,4.9), - ang = Angle(0,-97.9,69), - width = 410*10, - height = 95*10, - scale = 0.0625/10, - - buttons = { - --{x=2045,y=406,tooltip="Индикатор скорости\nSpeed indicator",radius=130}, - --{x=2610,y=363,tooltip="РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)",radius=120}, - --{x=2982,y=363,tooltip="РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)",radius=120}, - --{x=1070+320*0,y=780,tooltip="ЛхРК: Лампа хода реостатного контроллера\nLhRK: Rheostat controller motion light",radius=120}, - --{x=1070+320*1,y=780,tooltip="КТ: Контроль тормоза\nKT: ARS braking indicator",radius=120}, - --{x=1070+320*2,y=780,tooltip="КВД: Контроль выключения двигателей\nKVD: ARS engine shutdown indicator",radius=120}, - --{x=1070+320*3,y=780,tooltip="НР1: Нулевое реле\nNR1: Zero relay state (high voltage enabled)",radius=120}, - --{x=1070+320*4,y=780,tooltip="ВПР: Контроль включения поездной радиосвязи\nVPR: Train radio equipment enabled",radius=120}, - --{x=1070+320*5,y=780,tooltip="ПЕЧЬ: Индикатор работы печи\nPECH: Cabin heating indicator",radius=120}, - --{x=1070+320*6,y=780,tooltip="АВУ: Автоматический выключатель управления\nAVU: Automatic control disabler active",radius=120}, - - --{x=1070+380*0,y=570,tooltip="ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency",radius=120}, - --{x=1070+380*1,y=570,tooltip="0: Сигнал АРС остановки\n0: ARS stop signal",radius=120}, - --{x=1070+380*2,y=570,tooltip="40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph",radius=120}, - --{x=1070+380*3,y=570,tooltip="60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph",radius=120}, - --{x=1070+380*4,y=570,tooltip="70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph",radius=120}, - --{x=1070+380*5,y=570,tooltip="80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph",radius=120}, - - --{x=1080+380*0,y=363,tooltip="СД: Сигнализация дверей\nSD: Door state light (doors are closed/door circuits are OK)",radius=120}, - --{x=1080+380*1,y=363,tooltip="РП: Зелёная лампа реле перегрузки\nRP: Green overload relay light (overload relay open on current train)",radius=120}, - } -} - - -ENT.ButtonMap["VAH"] = { - pos = Vector(400.9,-26.24,38), - ang = Angle(0,90,90), - width = 150, - height = 260, - scale = 0.0625, - - buttons = { - {ID = "VAHToggle", x=30,y=0,w=90,h=130 , tooltip="ВАХ: Включение аварийного хода (неисправность реле педали безопасности)\nVAH: Emergency driving mode (failure of RPB relay)"}, - {ID = "VADToggle", x=30,y=130,w=90,h=130 , tooltip="ВАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)\nVAD: Emergency door close override (failure of KD relay)"}, - } -} --- AV panel -ENT.ButtonMap["AV"] = { - pos = Vector(394.0+14,-53.5,44.5), - ang = Angle(0,90,90), - width = 520, - height = 550, - scale = 0.0625, - - buttons = { - {ID = "ARSToggle", x=152,y=212,w=230,h=140 , tooltip="ARS"}, - ---------- - {x=33,y=411,tooltip="Регулятор давления АК",radius=70}, - {x=90,y=379,tooltip="Соединительные зажимы",w=375,h=230}, - {x=390,y=377,tooltip="Кнопка РРП",w=100,h=100}, - } -} --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(387.414+12.15,19.2,28.8), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=0, y=0, w=290, h=155, tooltip="АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)(\nVB: Battery on/off"}, - } -} - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(454,43.0,2.0), - ang = Angle(0,-84,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(446.83,58,25), - ang = Angle(0,-25,90), - width = 64, - height = 144, - scale = 0.0625, - - buttons = { - {ID = "VUD2Toggle", x=32, y=42, radius=32, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)"}, - {ID = "VDLSet", x=32, y=138, radius=32, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open"}, - } -} - --- Help panel -ENT.ButtonMap["Help"] = { - pos = Vector(410,-45,62), - ang = Angle(0,90,90), - width = 28, - height = 20, - scale = 0.5, - - buttons = { - {ID = "ShowHelp", x=0, y=0, w=28,h=20, tooltip="Помощь в вождении поезда\nShow help on driving the train"}, - } -} --- Pneumatic instrument panel 2 -ENT.ButtonMap["PneumaticManometer"] = { - pos = Vector(453.915771,-53.891716,19.525063), - ang = Angle(0,-145,90), - width = 110, - height = 110, - scale = 0.0625, - - buttons = { - {x=55,y=55,radius=55,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(455.838104,-51.486084,9.136534), - ang = Angle(0,-115,90), - width = 60, - height = 60, - scale = 0.0625, - - buttons = { - {x=30,y=30,radius=30,tooltip="Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - } -} -ENT.ButtonMap["BLDisconnect"] = { - pos = Vector(420+25.15,-56.0-6,-25), - ang = Angle(90,180,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги тормозной магистрали\nTrain line disconnect valve"}, - } -} -ENT.ButtonMap["TLDisconnect"] = { - pos = Vector(420+25.15*1.1,-56.0+6-6,-25), - ang = Angle(90,180,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - --{ID = "EPKToggle", x=0, y=0, w=200, h=90, tooltip="Кран ЭПК\nEPK disconnect valve"} - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги напорной магистрали\nBrake line disconnect valve"}, - } -} -ENT.ButtonMap["EPKDiscoonect"] = { - pos = Vector(430.476318,-56.581806,-39.564163), - ang = Angle(0,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "EPKToggle", x=0, y=0, w=200, h=90, tooltip="Кран ЭПК\nEPK disconnect valve"} - --{ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Клапан разобщения\nDriver valve disconnect valve"}, - } -} -ENT.ButtonMap["DURA"] = { - pos = Vector(408+15+12.15,-58.0-5.3,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625, - - buttons = { - {ID = "DURASelectMain", x=145, y=43, radius=20, tooltip="DURA Основной путь\nDURA Select Main"}, -- NEEDS TRANSLATING - {ID = "DURASelectAlternate", x=180, y=43, radius=20, tooltip="DURA Альтернативный путь\nDURA Select Alternate"}, -- NEEDS TRANSLATING - {ID = "DURAToggleChannel", x=100, y=60, radius=20, tooltip="DURA Выбор канала\nDURA Toggle Channel"}, -- NEEDS TRANSLATING - {ID = "DURAPowerToggle", x=100, y=30, radius=20, tooltip="DURA Питание\nDURA Power"}, -- NEEDS TRANSLATING - - } -} -ENT.ButtonMap["AVU"] = { - pos = Vector(453.71597,-19.63482,39.93294), - ang = Angle(-8,-90+21.5,90+15), - width = 105, - height = 85, - scale = 0.0625, - - buttons = { - {ID = "AVULight", x=30, y=20, radius=20, tooltip="АВУ: Автоматический выключатель управления\nAVU: Automatic control disabler active"}, - {ID = "OtklAVUToggle", x=30, y=60, radius=20, tooltip="Отключение автоматического выключения управления (неисправность АВУ)\nTurn off automatic control disable relay (failure of AVU)"}, - - } -} - -ENT.ButtonMap["DURADisplay"] = { - pos = Vector(408+15-0.75+12.15,-58.0-5.3+1.5625,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625/3.2, -} - -ENT.ButtonMap["Announcer"] = { - pos = Vector(434.3+12.15,-50,40.4), - ang = Angle(0,-130,90+50), - width = 170, - height = 100, - scale = 0.0625, - - buttons = { - - {ID = "Custom2Set", x=155, y=15, radius=15, tooltip="+"}, - {ID = "Custom1Set", x=155, y=42, radius=15, tooltip="-"}, - {ID = "Custom3Set", x=85, y=72, radius=20, tooltip="Меню\nMenu"}, - {ID = "CustomCToggle", x=20, y=28, radius=20, tooltip="Автоинформатор\nAutoannouncer"}, - - {ID = "CustomD", x=95+20*-3, y=72, radius=10, tooltip="Информатор: Конечная\nAnnouncer: Last statuon"}, - {ID = "CustomE", x=95+20*-2, y=72, radius=10, tooltip="Информатор: Платформа справа\nAnnouncer: Right side"}, - {ID = "CustomF", x=95+20*1, y=72, radius=10, tooltip="Информатор: Необходима настройка\nAnnouncer: Need setup"}, - {ID = "CustomG", x=95+20*2, y=72, radius=10, tooltip="Информатор: Проигрывание объявления\nAnnouncer: Playing announce"}, - } -} --- Announcer panel -ENT.ButtonMap["AnnouncerDisplay"] = { - pos = Vector(434.3+12.15,-50,40.4), - ang = Angle(0,-130,90+50), - width = 10, - height = 10, - scale = 0.012, -} - -ENT.ButtonMap["Meters"] = { - pos = Vector(453.844452,-56.7,38.7), - ang = Angle(0,-148,90), - width = 73, - height = 140, - scale = 0.0625, - - buttons = { - {x=13, y=22, w=60, h=50, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=13, y=81, w=60, h=50, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} -ENT.ButtonMap["Speedometer"] = { - pos = Vector(453.22702,-53.241482,28), - ang = Angle(0,-145,90), - width = 110, - height = 110, - scale = 0.0625, - - buttons = { - {x=0, y=0, w=110, h=110, tooltip="Скоростемер"}, - } -} - - ---These values should be identical to those drawing the schedule -local col1w = 80 -- 1st Column width -local col2w = 32 -- The other column widths -local rowtall = 30 -- Row height, includes -only- the usable space and not any lines - -local rowamount = 16 -- How many rows to show (total) ---[[ENT.ButtonMap["Schedule"] = { - pos = Vector(442.1,-60.7,26), - ang = Angle(0,-110,90), - width = (col1w + 2 + (1 + col2w) * 3), - height = (rowtall+1)*rowamount+1, - scale = 0.0625/2, - - buttons = { - {x=1, y=1, w=col1w, h=rowtall, tooltip="М №\nRoute number"}, - {x=1, y=rowtall*2+3, w=col1w, h=rowtall, tooltip="П №\nPath number"}, - - {x=col1w+2, y=1, w=col2w*3+2, h=rowtall, tooltip="ВРЕМЯ ХОДА\nTotal schedule time"}, - {x=col1w+2, y=rowtall+2, w=col2w*3+2, h=rowtall, tooltip="ИНТ\nTrain interval"}, - - {x=col1w+2, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="ЧАС\nHour"}, - {x=col1w+col2w+3, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="МИН\nMinute"}, - {x=col1w+col2w*2+4, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="СЕК\nSecond"}, - {x=col1w+2, y=rowtall*3+4, w=col2w*3+2, h=(rowtall+1)*(rowamount-3)-1, tooltip="Arrival times"}, -- NEEDS TRANSLATING - - {x=1, y=rowtall*3+4, w=col1w, h=(rowtall+1)*(rowamount-3)-1, tooltip="Station name"}, -- NEEDS TRANSLATING - } -}]] - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(466,-45.0,-50.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=189, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - {ID = "FrontTrainLineIsolationToggle",x=710, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - } -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-466,45.0,-50.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "RearTrainLineIsolationToggle",x=189, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - {ID = "RearBrakeLineIsolationToggle",x=710, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - } -} -ENT.ButtonMap["GV"] = { - pos = Vector(160,66,-52), - ang = Angle(0,180,90), - width = 170, - height = 170, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Главный выключатель", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - }}, - } -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-168,68.6,-50), - ang = Angle(0,180,90), - width = 170, - height = 80, - scale = 0.1, - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 80, tooltip="Выключение воздухораспределителя"}, - } -} - - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(450,52,-20), - ang = Angle(0,-70,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа\nUAVA: Universal Automatic Autostop Disabler"}, - {ID = "UAVAContactSet",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(-445,-68,-12.5), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(396,68,-12.5), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - --- Front info table -ENT.ButtonMap["InfoTable"] = { - pos = Vector(458.0+12.15,-16.0,12.0), - ang = Angle(0,90,90), - width = 646, - height = 100, - scale = 0.1/2, -} -ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(454.0+12.15,-27.0,27.0), - ang = Angle(0,-90,90), - width = 250, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=0,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=50,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=150,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=150,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=200,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=200,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - -ENT.ButtonMap["InfoRoute"] = { - pos = Vector(451.29+12.15,39.9,24.2), - ang = Angle(0,97.3,84), - width = 100, - height = 100, - scale = 0.115, -} - -ENT.ButtonMap["FrontDoor"] = { - pos = Vector(455+12.15,16,48.4), - ang = Angle(0,-90,90), - width = 550, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=550,h=1900, tooltip="Передняя дверь\nFront door"}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(408.9,64,50.8), - ang = Angle(0,0,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor1",x=0,y=0,w=642,h=1900, tooltip="Дверь в кабину машиниста\nCabin door"}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(390+8,-16,48.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=1900, tooltip="Дверь из салона\nPassenger door"}, - } -} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -ENT.ClientProps["brake334"] = { - model = "models/metrostroi_train/81/334cran.mdl", - pos = Vector(449.2,-54.2,3.7), - ang = Angle(0,47,0) -} ---[[ENT.ClientProps["brake334_body"] = { - model = "models/metrostroi/81-717/brake334_body.mdl", - pos = Vector(442+12.15,-56.85,1.0), - ang = Angle(0,0,0) -}]] -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/e/kv.mdl", - pos = Vector(452.36,-25.6,2), - ang = Angle(0,90+23,0) -} -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(452.36,-25.6,2), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(442.73816,-58.73211,-32.45488), - ang = Angle(0,-90,0), -} -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(445.34006,-54.19079,-32.45488), - ang = Angle(0,-90,0), - color = Color(0,212,255), -} -ENT.ClientProps["EPK_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(434.476318,-58.581806,-39.564163), - ang = Angle(0.000000,-90.000000,-90.000000), -} -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi/81-717/ezh_koleso.mdl", - pos = Vector(450.58,31.19,-10.0), - ang = Angle(-90,0,0), -} --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/e/black_pneumo_needle.mdl", - pos = Vector(451.33,-56.03,13.2), - ang = Angle(87,-90-54,90) -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/e/red_pneumo_needle.mdl", - pos = Vector(451.3,-56.00,13.2), - ang = Angle(87,-90-54,90) -} -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(455.4155,-53.31028,7.21621),--pos = Vector(450.5,-32.9,10.4), - ang = Angle(180,-90-24.96,90), - scale = 1.5, -} --------------------------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(451.284607,-57.260746,35.1), - ang = Angle(92,33.3,-90) -} -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(451.302399,-57.287834,31.31461), - ang = Angle(92,33.3,-90) -} -ENT.ClientProps["volt1"] = { - model = "models/metrostroi_train/e/volt_bat_needle.mdl", - pos = Vector(458.41455,-20.33349,19.95662), - ang = Angle(1,90+2.299,-90) -} -ENT.ClientProps["speed1"] = {-- - --model = "models/metrostroi_train/e/speed_needle.mdl", - model = "models/metrostroi_train/e/black_pneumo_needle.mdl", - pos = Vector(448.42697,-56.81982,21.85731), - ang = Angle(90,-145,90) -} ---[[ENT.ClientProps["volt2"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.6,-35.3,5.0), - ang = Angle(90,0,180) -}]] - - - - --------------------------------------------------------------------------------- ---[[ENT.ClientProps["headlights"] = { - model = "models/metrostroi/81-717/switch04.mdl", - pos = Vector(443.1,-60.0,0.5), - ang = Angle(-74,0,0) -} -ENT.ClientProps["panellights"] = { - model = "models/metrostroi/81-717/switch04.mdl", - pos = Vector(444.1,-59.3,3.3), - ang = Angle(-74,0,0) -}]] --------------------------------------------------------------------------------- ---[[ - {ID = "DIPonSet", x=35 + 50*0, y=95, radius=20, tooltip="Включение ДИП и освещения\nTurn DIP and interior lights on"}, - {ID = "DIPoffSet", x=35 + 50*1, y=95, radius=20, tooltip="Выключение ДИП и освещения\nTurn DIP and interior lights off"}, - {ID = "VozvratRPSet", x=35 + 50*2, y=95, radius=20, tooltip="Возврат реле перегрузки\nReset overload relay"}, - {ID = "KSNSet", x=35 + 50*3, y=95, radius=20, tooltip="КСН: Кнопка сигнализации неисправности\nKSN: Failure indication button"}, - {ID = "KDPSet", x=35 + 50*4.95, y=95, radius=20, tooltip="КДП: Кнопка правых дверей\nKDP: Right doors open"}, - - {ID = "KDLSet", x=95, y=170, radius=20, tooltip="КДЛ: Кнопка левых дверей\nKDL: Left doors open"}, - {ID = "KRZDSet", x=217, y=170, radius=20, tooltip="КРЗД: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing"}, - - {ID = "KU1Toggle", x=17,y=130,w=45,h=90, tooltip="Включение мотор-компрессора\nTurn motor-compressor on"}, - {ID = "VUD1Toggle", x=253,y=130,w=45,h=90, radius=20, tooltip="ВУД: Выключатель управления дверьми\nVUD: Door control toggle (close doors)"}, -]] -Metrostroi.ClientPropForButton("DIPon",{ - panel = "Main", - button = "DIPonSet", - model = "models/metrostroi_train/e/buttonwhite.mdl", - ang = 0, - z = -6, -}) -Metrostroi.ClientPropForButton("VozvratRP",{ - panel = "Main", - button = "VozvratRPSet", - model = "models/metrostroi_train/e/buttonwhite.mdl", - ang = 0, - z = -6, -}) -Metrostroi.ClientPropForButton("KVT",{ - panel = "Main", - button = "KVTSet", - model = "models/metrostroi_train/e/buttonwhite.mdl", - ang = 0, - z = -6, -}) -Metrostroi.ClientPropForButton("DIPoff",{ - panel = "Main", - button = "DIPoffSet", - model = "models/metrostroi_train/e/buttonred1.mdl", - ang = 0, - z = 0, -}) -Metrostroi.ClientPropForButton("KSN",{ - panel = "Main", - button = "KSNSet", - model = "models/metrostroi_train/e/buttonred1.mdl", - ang = 0, - z = 0, -}) -Metrostroi.ClientPropForButton("KDP",{ - panel = "Main", - button = "KDPSet", - model = "models/metrostroi_train/e/buttonred1.mdl", - ang = 0, - z = -0, -}) - -Metrostroi.ClientPropForButton("KDL",{ - panel = "Main", - button = "KDLSet", - model = "models/metrostroi_train/e/buttonred1.mdl", - ang = 0, - z = 0, -}) -Metrostroi.ClientPropForButton("KRZD",{ - panel = "Main", - button = "KRZDSet", - model = "models/metrostroi_train/e/buttonwhite.mdl", - ang = 0, - z = -6, -}) - -Metrostroi.ClientPropForButton("VUD",{ - panel = "Main", - button = "VUD1Toggle", - model = "models/metrostroi_train/switches/vudblack.mdl", - z = -20, -}) -Metrostroi.ClientPropForButton("KU1",{ - panel = "Main", - button = "KU1Toggle", - model = "models/metrostroi_train/switches/vudblack.mdl", - z = -20, -}) - -Metrostroi.ClientPropForButton("VAH",{ - panel = "VAH", - button = "VAHToggle", - model = "models/metrostroi_train/switches/autobr.mdl", -}) -Metrostroi.ClientPropForButton("VAD",{ - panel = "VAH", - button = "VADToggle", - model = "models/metrostroi_train/switches/autobr.mdl", -}) ---------------------------------------------------------------------------------- -Metrostroi.ClientPropForButton("VU1",{ - panel = "AV1", - button = "VU1Toggle", - model = "models/metrostroi_train/switches/autobr.mdl", - z=10, -}) -Metrostroi.ClientPropForButton("VU2",{ - panel = "AV1", - button = "VU2Toggle", - model = "models/metrostroi_train/switches/autobr.mdl", - z=10, -}) -Metrostroi.ClientPropForButton("VU3",{ - panel = "AV1", - button = "VU3Toggle", - model = "models/metrostroi_train/switches/autobr.mdl", - z=10, -}) - -Metrostroi.ClientPropForButton("RST",{ - panel = "AV2", - button = "RSTToggle", - model = "models/metrostroi_train/switches/autobr2.mdl", - z=20, -}) - -Metrostroi.ClientPropForButton("AV8B",{ - panel = "AVMain", - button = "AV8BToggle", - model = "models/metrostroi_train/switches/automain.mdl", - z=31, - skin=1, -}) - -Metrostroi.ClientPropForButton("VU",{ - panel = "VU", - button = "VUToggle", - model = "models/metrostroi_train/switches/autobr.mdl", - z=0, -}) ---------------------------------------------------- ---RezMKSet -Metrostroi.ClientPropForButton("RezMK",{ - panel = "VU", - button = "RezMKToggle", - model = "models/metrostroi_train/switches/vudbrown.mdl", - z=15, -}) - ---ALS -Metrostroi.ClientPropForButton("ALS",{ - panel = "Main", - button = "ALSToggle", - model = "models/metrostroi_train/81/tumbler1.mdl", - ang = 0, -}) -Metrostroi.ClientPropForButton("LOCh",{ - panel = "OldARS", - button = "LOCh", - model = "models/metrostroi_train/e/ars_04.mdl", - z = 0, - ang = 0, -}) -Metrostroi.ClientPropForButton("L0",{ - panel = "OldARS", - button = "L0", - model = "models/metrostroi_train/e/ars_0.mdl", - z = 0, - ang = 0, -}) -Metrostroi.ClientPropForButton("L40",{ - panel = "OldARS", - button = "L40", - model = "models/metrostroi_train/e/ars_40.mdl", - z = 0, - ang = 0, -}) -Metrostroi.ClientPropForButton("L60",{ - panel = "OldARS", - button = "L60", - model = "models/metrostroi_train/e/ars_60.mdl", - z = 0, - ang = 0, -}) -Metrostroi.ClientPropForButton("L80",{ - panel = "OldARS", - button = "L80", - model = "models/metrostroi_train/e/ars_80.mdl", - z = 0, - ang = 0, -}) -Metrostroi.ClientPropForButton("L70",{ - panel = "OldARS", - button = "L70", - model = "models/metrostroi_train/e/ars_70.mdl", - z = 0, - ang = 0, -}) ---RRP -Metrostroi.ClientPropForButton("KRP",{ - panel = "Main", - button = "KRPSet", - model = "models/metrostroi_train/switches/vudblack.mdl", - z = -20, -}) ---ARS -Metrostroi.ClientPropForButton("ARS",{ - panel = "AV", - button = "ARSToggle", - model = "models/metrostroi_train/switches/autobr2.mdl", - ang = 270, - z=-65 -}) --- Panel lighning -Metrostroi.ClientPropForButton("L_3",{ - panel = "Main", - button = "L_3Toggle", - model = "models/metrostroi_train/81/tumbler1.mdl", - ang = 90 -}) --- MainPanel Lamps -Metrostroi.ClientPropForButton("SD",{ - panel = "Main", - button = "BlueLight", - model = "models/metrostroi_train/e/lampblue.mdl", - z = 5.73, - ang = 90, -}) -Metrostroi.ClientPropForButton("gRP",{ - panel = "Main", - button = "GreenRPLight", - model = "models/metrostroi_train/e/lampgreen.mdl", - z = 5.73, - ang = 90, -}) -Metrostroi.ClientPropForButton("rRP",{ - panel = "Main", - button = "RedRPLight", - model = "models/metrostroi_train/e/lampred1.mdl", - z = 5.73, - ang = 90, -}) -Metrostroi.ClientPropForButton("r2RP",{ - panel = "Main", - button = "RedRP2Light", - model = "models/metrostroi_train/e/lampred1.mdl", - z = 5.73, - ang = 90, -}) -Metrostroi.ClientPropForButton("LST",{ - panel = "Main", - button = "LST", - model = "models/metrostroi_train/e/lampwhite1.mdl", - z = 5.73, - ang = 90, -}) -Metrostroi.ClientPropForButton("LVD",{ - panel = "Main", - button = "LVD", - model = "models/metrostroi_train/e/lampwhite1.mdl", - z = 5.73, - ang = 90, -}) - -Metrostroi.ClientPropForButton("AVULight",{ - panel = "AVU", - button = "AVULight", - model = "models/metrostroi_train/81/lamp.mdl", - skin = 1, - z = -10, -}) -Metrostroi.ClientPropForButton("AVULight_light",{ - panel = "AVU", - button = "AVULight", - model = "models/metrostroi_train/81/lamp_on.mdl", - ignorepanel = true, - skin = 1, - z = -10, -}) -Metrostroi.ClientPropForButton("OtklAVU",{ - panel = "AVU", - button = "OtklAVUToggle", - model = "models/metrostroi_train/81/tumbler1.mdl", - ang = 90 -}) ------------------------------------------------ -Metrostroi.ClientPropForButton("SelectMain",{ - panel = "DURA", - button = "DURASelectMain", - model = "models/metrostroi_train/81/button.mdl", - skin = 4, - z = -1, -}) -Metrostroi.ClientPropForButton("SelectAlternate",{ - panel = "DURA", - button = "DURASelectAlternate", - model = "models/metrostroi_train/81/button.mdl", - skin = 4, - z = -1, -}) -Metrostroi.ClientPropForButton("SelectChannel",{ - panel = "DURA", - button = "DURAToggleChannel", - model = "models/metrostroi_train/81/tumbler2.mdl", -}) -Metrostroi.ClientPropForButton("DURAPower",{ - panel = "DURA", - button = "DURAPowerToggle", - model = "models/metrostroi_train/81/tumbler2.mdl", -}) -Metrostroi.ClientPropForButton("VUD2",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("VDL",{ - panel = "HelperPanel", - button = "VDLSet", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("Custom1",{ - panel = "Announcer", - button = "Custom1Set", - model = "models/metrostroi_train/81/button.mdl", - skin = 5, - z = -1, -}) -Metrostroi.ClientPropForButton("Custom2",{ - panel = "Announcer", - button = "Custom2Set", - model = "models/metrostroi_train/81/button.mdl", - skin = 5, - z = -1, -}) -Metrostroi.ClientPropForButton("Custom3",{ - panel = "Announcer", - button = "Custom3Set", - model = "models/metrostroi/81-717/button07.mdl" -}) -Metrostroi.ClientPropForButton("CustomC",{ - panel = "Announcer", - button = "CustomCToggle", - model = "models/metrostroi/81-717/switch04.mdl", -}) - -Metrostroi.ClientPropForButton("CustomD",{ - panel = "Announcer", - button = "CustomD", - model = "models/metrostroi/81-717/light01.mdl", -}) -Metrostroi.ClientPropForButton("CustomE",{ - panel = "Announcer", - button = "CustomE", - model = "models/metrostroi/81-717/light03.mdl", -}) -Metrostroi.ClientPropForButton("CustomF",{ - panel = "Announcer", - button = "CustomF", - model = "models/metrostroi/81-717/light04.mdl", -}) -Metrostroi.ClientPropForButton("CustomG",{ - panel = "Announcer", - button = "CustomG", - model = "models/metrostroi/81-717/light02.mdl", -}) - -Metrostroi.ClientPropForButton("Battery",{ - panel = "Battery", - button = "VBToggle", - model = "models/metrostroi_train/switches/autobr3.mdl", - z=40, -}) - --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(154,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(154,62.5,-65), - ang = Angle(0,0,0) -} --------------------------------------------------------------------------------- -ENT.ClientProps["book"] = { - model = "models/props_lab/binderredlabel.mdl", - pos = Vector(404,-32,58.7), - ang = Angle(0,0,90) -} - -ENT.ClientProps["E_salon"] = { - model = "models/metrostroi_train/e/e_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps"] = { - model = "models/metrostroi_train/e/lamps_on.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["PB"] = {-- - model = "models/metrostroi_train/81/pb.mdl", - pos = Vector(456.08691, -34.98815, -37.62471), - ang = Angle(0,-90,40) -} - -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(455, -26.0, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(455, 26, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(-455, -26, -55), - ang = Angle(0,90,0) -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(-455, 26, -55), - ang = Angle(0,90,0) -} - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(358.27 - 67.49*k - 233.4*i,-64.56*(1-2*k),-1.55) - else return Vector(358.27 - 67.49*(1-k) - 233.4*i,-64.56*(1-2*k),-1.55) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi_train/e/doorright.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,90 + 180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi_train/e/doorleft.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,90 + 180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/e/doorfront.mdl", - pos = Vector(464,-17.11,-3.98), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/e/doorback.mdl", - pos = Vector(-464,17.11,-3.98), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/e/doorpass.mdl", - pos = Vector(396.8,17.11,-6.1), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/e/doorcab.mdl", - pos = Vector(442.24,64.56,-2.51), - ang = Angle(0,-90,0) -} ---[[ENT.ClientProps["UAVA"] = { - model = "models/metrostroi/81-717/uava_body.mdl", - pos = Vector(400,61,-8),--Vector(415.0,-58.5,-18.2), - ang = Angle(0,0,0) -}]] -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81/uavalever.mdl", - pos = Vector(452.84598,51,-21.813349), - ang = Angle(0,90,90) -} - - -ENT.Texture = "7" -ENT.OldTexture = nil ---local X = Material( "metrostroi_skins/81-717/6.png") - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self:GetNW2String("texture")] - local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("passtexture")] - local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("cabtexture")] - for _,self in pairs(self.ClientEnts) do - if not IsValid(self) then continue end - for k,v in pairs(self:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end -end --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if self.Texture ~= self:GetNW2String("texture") then - self.Texture = self:GetNW2String("texture") - self:UpdateTextures() - end - if self.PassTexture ~= self:GetNW2String("passtexture") then - self.PassTexture = self:GetNW2String("passtexture") - self:UpdateTextures() - end - if self.CabinTexture ~= self:GetNW2String("cabtexture") then - self.CabinTexture = self:GetNW2String("cabtexture") - self:UpdateTextures() - end - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - --[[ - if self.FrontDoor < 90 and self:GetPackedBool(157) or self.FrontDoor > 0 and not self:GetPackedBool(157) then - --local FrontDoorData = self.ClientProps["door1"] - --FrontDoor:SetLocalPos(FrontDoorData.pos + Vector(-2,-0,0)) - self.FrontDoor = math.max(0,math.min(90,self.FrontDoor + (self:GetPackedBool(157) and 1 or -1)*self.DeltaTime*180)) - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - if not self.ButtonMapMatrix["InfoTable"] then - self.ButtonMapMatrix["InfoTable"] = {} - self.ButtonMapMatrix["InfoTable"].scale = 0.1/2 - end - self.ButtonMapMatrix["InfoTable"].ang = Angle(0,90+self.FrontDoor,90) - self.ButtonMapMatrix["InfoTable"].pos = Vector(458.0,-16.0,12.0) + Vector(0,1.5,0)*self.FrontDoor/90 - - end - ]] - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - -- Parking brake animation - self.ParkingBrakeAngle = self.ParkingBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ParkingBrakeAngle - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - - local Lamps = self:GetPackedBool(20) and 0.4 or 1 - self:ShowHideSmooth("Lamps",self:Animate("lamps",self:GetPackedBool("Lamps") and Lamps or 0,0,1,6,false)) - - --ALS Lamps - self:ShowHideSmooth("LOCh",self:Animate("light_OCh",self:GetPackedBool(41) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("L0",self:Animate("light_0",self:GetPackedBool(42) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("L40",self:Animate("light_40",self:GetPackedBool(43) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("L60",self:Animate("light_60",self:GetPackedBool(44) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("L70",self:Animate("light_70",self:GetPackedBool(45) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("L80",self:Animate("light_80",self:GetPackedBool(46) and 1 or 0,0,1,10,false)) - - --MainPanel Lamps - self:ShowHideSmooth("SD",self:Animate("light_SD",self:GetPackedBool(40) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("gRP",self:Animate("light_gRP",self:GetPackedBool(36) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("rRP",self:Animate("light_rRP",self:GetPackedBool(35) and 1 or 0,0,1,12,false) + self:Animate("light_rLSN",self:GetPackedBool(131) and 1 or 0,0,0.2,12,false)) - self:ShowHideSmooth("r2RP",self:Animate("light_LhRK",self:GetPackedBool(112) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("LST",self:Animate("light_LST",self:GetPackedBool(49) and 1 or 0,0,1,10,false)) - self:ShowHideSmooth("LVD",self:Animate("light_LVD",self:GetPackedBool(50) and 1 or 0,0,1,5,false)) - - -- DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(52) and 1 or 0,1.0) - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake334", 1-self:GetPackedRatio(0), 0.00, 0.65, 256,24) - self:Animate("brake013", self:GetPackedRatio(0)^0.5, 0.00, 0.65, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0, 0.31, 2,false) - self:Animate("reverser", self:GetPackedRatio(2), 0.26, 0.35, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0.347,0.524) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:ShowHide("brake013", self:GetPackedBool(22)) - self:ShowHide("brake334", not self:GetPackedBool(22)) - self:ShowHide("brake334_body", not self:GetPackedBool(22)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0.626, 0.88, 256,2)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0.626, 0.88, 256,2)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0.121, 0.865, 256,2)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.587, 0.874) - self:Animate("ampermeter", self:GetPackedRatio(8), 0.628, 0.875) - --self:Animate("volt2", 0, 0.38, 0.63) - - local wheel_radius = 0.5*44.1 -- units - local speed = self:GetPackedRatio(3)*100 - local ang_vel = speed/(2*math.pi*wheel_radius) - - -- Rotate wheel - self.Angle = ((self.Angle or math.random()) + ang_vel*self.DeltaTime) % 1.0 - - self:Animate("speed1", self:GetPackedRatio("Speed") + math.sin(math.pi*8*self.Angle)*2/120, 0.525, 0.695, nil, nil, 256,2,0.01) - - self:Animate("headlights", self:GetPackedBool(1) and 1 or 0, 0,1, 8, false) - self:Animate("VozvratRP", self:GetPackedBool(2) and 1 or 0, 0,1, 16, false) - self:Animate("DIPon", self:GetPackedBool(3) and 1 or 0, 0,1, 16, false) - self:Animate("DIPoff", self:GetPackedBool(4) and 1 or 0, 0,1, 16, false) - self:Animate("Battery", self:GetPackedBool(7) and 1 or 0, 1,0, 4, false) - --self:Animate("bat2", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - --self:Animate("bat3", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - self:Animate("RezMK", self:GetPackedBool(8) and 1 or 0, 0,1.1, 16, false) - self:Animate("VUS", self:GetPackedBool(1) and 1 or 0, 1,0.1, 16, false) - self:Animate("KU1", self:GetPackedBool(9) and 1 or 0, 0,1, 16, false) - self:Animate("VAH", self:GetPackedBool(10) and 1 or 0, 1,0, 4, false) - self:Animate("VAD", self:GetPackedBool(11) and 1 or 0, 1,0, 4, false) - self:Animate("VUD", self:GetPackedBool(12) and 1 or 0, 0,1, 16, false) - self:Animate("VUD2", self:GetPackedBool(13) and 1 or 0, 0,1, 16, false) - self:Animate("VDL", self:GetPackedBool(14) and 1 or 0, 0,1, 16, false) - self:Animate("KDL", self:GetPackedBool(15) and 1 or 0, 0,1, 16, false) - self:Animate("KDP", self:GetPackedBool(16) and 1 or 0, 0,1, 16, false) - self:Animate("KRZD", self:GetPackedBool(17) and 1 or 0, 0,1, 16, false) - self:Animate("KSN", self:GetPackedBool(18) and 1 or 0, 0,1, 16, false) - self:Animate("OtklAVU", self:GetPackedBool(19) and 0 or 1, 0,1, 16, false) - self:Animate("DURAPower", self:GetPackedBool(24) and 1 or 0, 0,1, 16, false) - self:Animate("SelectMain", self:GetPackedBool(29) and 1 or 0, 0,1, 16, false) - self:Animate("SelectAlternate", self:GetPackedBool(30) and 1 or 0, 0,1, 16, false) - self:Animate("SelectChannel", self:GetPackedBool(31) and 1 or 0, 0,1, 16, false) - self:Animate("ARS", self:GetPackedBool(56) and 1 or 0, 1,0, 4, false) - self:Animate("ALS", self:GetPackedBool(57) and 1 or 0, 0,1, 16, false) - self:Animate("KVT", self:GetPackedBool(28) and 1 or 0, 0,1, 16, false) - ---- - self:Animate("door1", self:GetPackedBool(157) and (self.Door1 or 0.99) or 0,0,0.54/2, 1024, 1) - self:Animate("door3", self:GetPackedBool(158) and (self.Door2 or 0.99) or 0,0,0.51/2, 1024, 1) - self:Animate("door2", self:GetPackedBool(156) and (self.Door3 or 0.99) or 0,0,0.54/2, 1024, 1) - self:Animate("door4", self:GetPackedBool(159) and (self.Door2 or 0.99) or 0,0,0.51/2, 1024, 1) - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,0.35, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 0 or 1,0,0.35, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 1 or 0,0,0.35, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,0.35, 3, false) - - self:Animate("VUD2", self:GetPackedBool(13) and 1 or 0, 0,1, 16, false) - self:Animate("L_3", self:GetPackedBool(62) and 1 or 0, 0,1, 16, false) - - self:Animate("Custom1", self:GetPackedBool(114) and 1 or 0, 0,1, 16, false) - self:Animate("Custom2", self:GetPackedBool(115) and 1 or 0, 0,1, 16, false) - self:Animate("Custom3", self:GetPackedBool(116) and 1 or 0, 0,1, 16, false) - --[[self:Animate("Custom4", self:GetPackedBool(117) and 1 or 0, 0,1, 16, false) - self:Animate("Custom5", self:GetPackedBool(118) and 1 or 0, 0,1, 16, false) - self:Animate("Custom6", self:GetPackedBool(119) and 1 or 0, 0,1, 16, false) - self:Animate("Custom7", self:GetPackedBool(120) and 1 or 0, 0,1, 16, false) - self:Animate("Custom8", self:GetPackedBool(121) and 1 or 0, 0,1, 16, false) - self:Animate("CustomA", self:GetPackedBool(122) and 1 or 0, 0,1, 16, false) - self:Animate("CustomB", self:GetPackedBool(123) and 1 or 0, 0,1, 16, false)]]-- - self:Animate("CustomC", self:GetPackedBool(124) and 1 or 0, 0,1, 16, false) - self:Animate("R_G", self:GetPackedBool(125) and 1 or 0, 0,1, 16, false) - self:Animate("R_Radio", self:GetPackedBool(126) and 1 or 0, 0,1, 16, false) - self:Animate("R_UNch", self:GetPackedBool(127) and 1 or 0, 0,1, 16, false) - self:Animate("Program1", self:GetPackedBool(128) and 1 or 0, 0,1, 16, false) - self:Animate("Program2", self:GetPackedBool(129) and 1 or 0, 0,1, 16, false) - self:Animate("rc1", self:GetPackedBool(130) and 0.87 or 1, 0,1, 1, false) - self:Animate("UOS", self:GetPackedBool(134) and 0.87 or 1, 0,1, 1, false) - self:Animate("BPS", self:GetPackedBool(135) and 0.87 or 1, 0,1, 1, false) - self:Animate("UAVALever", self:GetPackedBool(152) and 1 or 0, 0,0.25, 128, 3,false) - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0,0.5, 3,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0,0.5, 3,false) - self:Animate("EPK_disconnect",self:GetPackedBool("EPK") and 1 or 0,0,0.5, 3,false) - - self:Animate("PB", self:GetPackedBool(165) and 1 or 0,0,0.2, 8,false) - - self:ShowHideSmooth("AVULight_light",self:Animate("AVUl",self:GetPackedBool(38) and 1 or 0,0,1,10,false)) - -- Animate AV switches - for i,v in ipairs(self.Panel.AVMap) do - local value = self:GetPackedBool(64+(i-1)) and 1 or 0 - --self:Animate("a"..(i-1),value,0,1,8,false) - end - self:Animate("VU1",self:GetPackedBool(64+19) and 1 or 0, 1,0, 4, false) - self:Animate("VU",self:GetPackedBool(64+12) and 1 or 0, 1,0, 4, false) - self:Animate("RST",self:GetPackedBool(64+24) and 1 or 0, 1,0, 4, false) - self:Animate("AV8B",self:GetPackedBool(64+7) and 1 or 0, 0,1, 8, false) - self:Animate("VU2",self:GetPackedBool(64+36) and 1 or 0, 1,0, 4, false) - self:Animate("VU3",self:GetPackedBool(64+13) and 1 or 0, 1,0, 4, false) - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - -- Animate doors - for i=0,4 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - self:Animate(n_l,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - self:Animate(n_r,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - --[[ - local animation = self:Animate(n_l,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0,1, 0.8 + (-0.2+0.4*math.random()),0) - local offset_l = Vector(math.abs(31*animation),0,0) - local offset_r = Vector(math.abs(32*animation),0,0) - if self.ClientEnts[n_l] then - --self.ClientEnts[n_l]:SetPos(self:LocalToWorld(self.ClientProps[n_l].pos + (1.0 - 2.0*k)*offset_l)) - --self.ClientEnts[n_l]:SetSkin(self:GetSkin()) - end - if self.ClientEnts[n_r] then - --self.ClientEnts[n_r]:SetPos(self:LocalToWorld(self.ClientProps[n_r].pos - (1.0 - 2.0*k)*offset_r)) - --self.ClientEnts[n_r]:SetSkin(self:GetSkin()) - end]] - end - end - --if self.ClientEnts["door1"] then self.ClientEnts["door1"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door2"] then self.ClientEnts["door2"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door3"] then self.ClientEnts["door3"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door4"] then self.ClientEnts["door4"]:SetSkin(self:GetSkin()) end - - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*((-0.6*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self.BrakeLineRamp1 = math.Clamp(self.BrakeLineRamp1,0,1) - self:SetSoundState("release2",self.BrakeLineRamp1^1.65,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 4.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 8.0*(0.1*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self.BrakeLineRamp2 = math.Clamp(self.BrakeLineRamp2,0,1) - self:SetSoundState("release3",self.BrakeLineRamp2 + math.max(0,self.BrakeLineRamp1/2-0.15),1.0) - - self:SetSoundState("cran1",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor_e",1,1) - else - self:SetSoundState("compressor_e",0,1) - self:SetSoundState("compressor_e_end",0,1) - self:SetSoundState("compressor_e_end",1,1) - --self:PlayOnce("compressor_e_end",nil,1,nil,true) - end - end - - -- ARS/ringer alert - local state = self:GetPackedBool(39) - self.PreviousAlertState = self.PreviousAlertState or false - if self.PreviousAlertState ~= state then - self.PreviousAlertState = state - if state then - self:SetSoundState("ring4",1,1) - else - self:SetSoundState("ring4",0,0) - self:SetSoundState("ring4_end",0,1) - self:SetSoundState("ring4_end",1,1) - end - end - - local state = self:GetPackedBool("VPR") - self.PreviousVPRState = self.PreviousVPRState or false - if self.PreviousVPRState ~= state then - self.PreviousVPRState = state - if state then - self:SetSoundState("vpr",1,1) - else - self:SetSoundState("vpr",0,0) - self:PlayOnce("vpr_end","cabin",1) - end - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - local state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk_spin",0.7,1,nil,0.75) - else - self:SetSoundState("rk_spin",0,0,nil,0.75) - self:SetSoundState("rk_stop",0,1,nil,0.75) - self:SetSoundState("rk_stop",0.7,1,nil,0.75) - end - end - - --DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(32) and 1 or 0,1.0) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - -function ENT:DrawPost() - local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) - self:DrawOnPanel("InfoTable",function() - surface.SetDrawColor(0,0,0) --255*dc.x,250*dc.y,220*dc.z) - surface.DrawRect(50,0,540,100) - draw.Text({ - text = self:GetNW2String("FrontText",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 320, 50 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(250,200,20,255)}) - end) - - if self.InfoTableTimeout and (CurTime() < self.InfoTableTimeout) then - self:DrawOnPanel("InfoTableSelect",function() - draw.Text({ - text = self:GetNW2String("RouteNumber",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -50 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - draw.Text({ - text = self:GetNW2String("FrontText",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -100 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - end) - end - - self:DrawOnPanel("InfoRoute",function() - surface.SetDrawColor(142,132,101) --255*dc.x,250*dc.y,220*dc.z) - --surface.DrawRect(0,100,88,70) - draw.Text({ - text = self:GetNW2String("RouteNumber"," ")[1], - font = "MetrostroiSubway_InfoRoute",--..self:GetNW2Int("Style",1), - pos = { 20, 135 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(0,0,0,255)}) - draw.Text({ - text = self:GetNW2String("RouteNumber"," ")[2], - font = "MetrostroiSubway_InfoRoute",--..self:GetNW2Int("Style",1), - pos = { 68, 135 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(0,0,0,255)}) - end) - self:DrawOnPanel("ARS",function() - if not self:GetPackedBool(32) then return end - - local speed = self:GetPackedRatio(3)*100.0 - local d1 = math.floor(speed) % 10 - local d2 = math.floor(speed / 10) % 10 - self:DrawDigit((196+0) *10, 35*10, d2, 0.75, 0.55) - self:DrawDigit((196+10)*10, 35*10, d1, 0.75, 0.55) - - --[[local b = self:Animate("light_rRP",self:GetPackedBool(35) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(253*10,33*10,16*10,8*10) - surface.SetAlphaMultiplier(1) - draw.DrawText("РП","MetrostroiSubway_LargeText",253*10+30,33*10-19,Color(0,0,0,255)) - end - - local b = self:Animate("light_rLSN",self:GetPackedBool(131) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(290*10,33*10,16*10,8*10) - draw.DrawText("РП","MetrostroiSubway_LargeText",290*10+30,33*10-19,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_gRP",self:GetPackedBool(36) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(140*10,33*10,16*10,8*10) - draw.DrawText("РП","MetrostroiSubway_LargeText",140*10+30,33*10-19,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_gKT",self:GetPackedBool(47) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(133*10,73*10,16*10,8*10) - draw.DrawText("КТ","MetrostroiSubway_LargeText",133*10+30,73*10-20,Color(0,0,0,255)) - end ]] - - --[[b = self:Animate("light_gKVD",self:GetPackedBool(48) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(165*10,73*10,16*10,8*10) - draw.DrawText("КВД","MetrostroiSubway_LargeText",165*10,73*10-20,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_LhRK",self:GetPackedBool(33) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(101*10,73*10,16*10,8*10) - end]] - - --[[b = self:Animate("light_NR1",self:GetPackedBool(34) and 0 or 1,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(196*10,73*10,16*10,8*10) - draw.DrawText("НР1","MetrostroiSubway_LargeText",196*10,73*10-20,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_PECH",self:GetPackedBool(37) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(260*10,73*10,16*10,8*10) - draw.DrawText("ПЕЧЬ","MetrostroiSubway_SmallText",260*10,73*10-5,Color(0,0,0,255)) - end]] - --[[ - b = self:Animate("light_AVU",self:GetPackedBool(38) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(295*10,73*10,16*10,8*10) - draw.DrawText("АВУ","MetrostroiSubway_LargeText",295*10,73*10-20,Color(0,0,0,255)) - end - ]] - --[[b = self:Animate("light_SD",self:GetPackedBool(40) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(102*10,33*10,16*10,8*10) - draw.DrawText("СД","MetrostroiSubway_LargeText",102*10+30,33*10-20,Color(0,0,0,255)) - end]] - - ------------------------------------------------------------------------ - --[[b = self:Animate("light_OCh",self:GetPackedBool(41) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(102*10,53*10,16*10,8*10) - draw.DrawText("ОЧ","MetrostroiSubway_LargeText",102*10+30,53*10-15,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_0",self:GetPackedBool(42) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(140*10,53*10,16*10,8*10) - draw.DrawText("0","MetrostroiSubway_LargeText",140*10+55,53*10-10,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_40",self:GetPackedBool(43) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(176*10,53*10,16*10,8*10) - draw.DrawText("40","MetrostroiSubway_LargeText",176*10+30,53*10-10,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_60",self:GetPackedBool(44) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(217*10,53*10,16*10,8*10) - draw.DrawText("60","MetrostroiSubway_LargeText",217*10+30,53*10-10,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_75",self:GetPackedBool(45) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(255*10,53*10,16*10,8*10) - draw.DrawText("70","MetrostroiSubway_LargeText",255*10+30,53*10-10,Color(0,0,0,255)) - end]] - - --[[b = self:Animate("light_80",self:GetPackedBool(46) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(294*10,53*10,16*10,8*10) - draw.DrawText("80","MetrostroiSubway_LargeText",294*10+30,53*10-10,Color(0,0,0,255)) - end]] - - surface.SetAlphaMultiplier(1.0) - end) ---[[ - self:DrawOnPanel("IGLA",function() - local plus = ((not self:GetPackedBool(32) or not self:GetPackedBool(78)) and 1 or 0) - surface.SetDrawColor(50 - plus*40,255 - plus*220,40 - plus*40) - surface.DrawRect(0,-4,360,60) - if not self:GetPackedBool(32) or not self:GetPackedBool(78) then return end - local text1 = "" - local text2 = "" - local C1 = Color(0,0,0,255) - local C2 = Color(50,200,50,255) - local flash = false - local T = self:GetPackedRatio(11) - local Ptrain = self:GetPackedRatio(5)*16.0 - local Pcyl = self:GetPackedRatio(6)*6.0 - local date = os.date("!*t",os_time) - -- Default IGLA text - text1 = "IGLA-01K RK TEMP" - text2 = Format("%02d:%02d:%02d %3d C",date.hour,date.min,date.sec,T) - - -- Modifiers and conditions - if self:GetPackedBool(25) then text1 = " !! Right Doors !!" end - if self:GetPackedBool(21) then text1 = " !! Left Doors !!" end - - if T > 300 then text1 = "Temperature warning!" end - - if self:GetPackedBool(50) and (Pcyl > 1.1) then - text1 = "FAIL PNEUMATIC BRAKE" - flash = true - end - if self:GetPackedBool(35) and - self:GetPackedBool(28) then - text1 = "FAIL AVU/BRAKE PRESS" - flash = true - end - if self:GetPackedBool(35) and - (not self:GetPackedBool(40)) then - text1 = "FAIL SD/DOORS OPEN " - flash = true - end - if self:GetPackedBool(36) then - text1 = "FAIL OVERLOAD RELAY " - flash = true - end - if Ptrain < 5.5 then - text1 = "FAIL TRAIN LINE LEAK" - flash = true - end - - if T > 400 then flash = true end - if T > 500 then text1 = "!Disengage circuits!" end - if T > 750 then text1 = " !! PIZDA POEZDU !! " end - - -- Draw text - if flash and ((RealTime() % 1.0) > 0.5) then - C2,C1 = C1,C2 - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+4,16,22) - draw.DrawText(string.upper(text1[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+0,C1) - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+24+4,16,22) - draw.DrawText(string.upper(text2[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+24,C1) - end - end) - ]] - self:DrawOnPanel("AnnouncerDisplay",function() - local plus = (not self:GetPackedBool(32) and 1 or 0) - surface.SetDrawColor(50 - plus*40,255 - plus*220,40 - plus*40) - surface.DrawRect(260,80,390,150) - if not self:GetPackedBool(32) then return end - - -- Custom announcer display - local C1 = Color(0,0,0,210) - local C2 = Color(50,200,50,255) - local flash = false - text1 = self:GetNW2String("CustomStr0") - text2 = self:GetNW2String("CustomStr1") - - -- Draw text - if flash and ((RealTime() % 1.0) > 0.5) then - C2,C1 = C1,C2 - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(280+(i-1)*17.7+1,124+4,16,20) - draw.DrawText(string.upper(text1[i] or ""),"MetrostroiSubway_IGLA",280+(i-1)*17.7,124+0,C1) - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(280+(i-1)*17.7+1,124+31+4,16,20) - draw.DrawText(string.upper(text2[i] or ""),"MetrostroiSubway_IGLA",280+(i-1)*17.7,124+31,C1) - end - end) - --[[ - self:DrawOnPanel("DURADisplay",function() - if not self:GetPackedBool(32) or not self:GetPackedBool(24) then return end - local function GetColor(id, text) - if text then - return self:GetPackedBool(id) and Color(255,0,0) or Color(0,0,0) - else - return not self:GetPackedBool(id) and Color(255,255,255) or Color(0,0,0) - end - end - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*0,211,22.8) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("DURA V 1.0","MetrostroiSubway_IGLA",0,0+22.8*0, Color(0,0,0,255)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(31)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*1,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel:" .. (self:GetPackedBool(31) and "2" or "1"),"MetrostroiSubway_IGLA",0,0+22.8*1,GetColor(31, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(153)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*2,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel1:" .. (self:GetPackedBool(153) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*2,GetColor(153, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(154)) - surface.DrawRect(0,3+22.8*3,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel2:" .. (self:GetPackedBool(154) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*3,GetColor(154, true)) - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*4,211,23) -- 120 - surface.SetAlphaMultiplier(1) - end)]] - - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - - -- Draw train numbers - local dc = render.GetLightColor(self:GetPos()) - self:DrawOnPanel("TrainNumber1",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - self:DrawOnPanel("TrainNumber2",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - local bp_press = self:GetPackedRatio(6) - local blocked_l = self:GetPackedBool(132) and 0 or 1 - local blocked_r = self:GetPackedBool(133) and 0 or 1 - if button == "ParkingBrakeLeft" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) - blocked_l*45 - end - if button == "ParkingBrakeRight" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) + blocked_r*45 - end - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end diff --git a/lua/entities/_obsolete/gmod_subway_e/init.lua b/lua/entities/_obsolete/gmod_subway_e/init.lua deleted file mode 100644 index bd80fac..0000000 --- a/lua/entities/_obsolete/gmod_subway_e/init.lua +++ /dev/null @@ -1,1007 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "E", - Name = "E", - WagType = 1, - ARS = { - HaveASNP = false, - } -} -function ENT:Initialize() - -- Set model and initialize - self:SetModel("models/metrostroi_train/e/e.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(418+9.15,-41,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 313,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-313,0,-80),Angle(0,0,0),false) - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_EQUAL] = "R_Program1Set", - [KEY_MINUS] = "R_Program2Set", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_N] = "VZ1Set", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_6] = "PneumaticBrakeSet6", - [KEY_PAD_7] = "PneumaticBrakeSet7", - [KEY_PAD_DIVIDE] = "KRPSet", - [KEY_PAD_MULTIPLY] = "KAHSet", - - [KEY_SPACE] = "PBSet", - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_PAD_DECIMAL] = "EPKToggle", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - - [KEY_A] = "DURASelectAlternate", - [KEY_D] = "DURASelectMain", - [KEY_V] = "DURAToggleChannel", - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - [KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_L] = "DriverValveDisconnect", - [KEY_F] = "BCCDSet", - [KEY_R] = "VZPSet", - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - [KEY_L] = "EPKToggle", - }, - [KEY_RALT] = { - [KEY_L] = "EPKToggle", - }, - } - - self.InteractionZones = { - { Pos = Vector(-470,-38,9), - Radius = 28, - ID = "RearDoor" }, - { Pos = Vector(450,38,9), - Radius = 28, - ID = "FrontDoor1" }, - { Pos = Vector(450,38,-16), - Radius = 28, - ID = "FrontDoor2" }, - { Pos = Vector(382,-38,9), - Radius = 28, - ID = "PassengerDoor" }, - { Pos = Vector(445,61,25), - Radius = 16, - ID = "CabinDoor1" }, - { Pos = Vector(445,61,-25), - Radius = 16, - ID = "CabinDoor2" }, - { Pos = Vector(380,67,25), - Radius = 28, - ID = "CabinDoor3" }, - { Pos = Vector(380,67,-25), - Radius = 28, - ID = "CabinDoor4" }, - } - - self.Lights = { - -- Head - [1] = { "headlight", Vector(465+11,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100 }, - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [3] = { "glow", Vector(469.4,-45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Reverse - [8] = { "light", Vector(458+11,-30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - [9] = { "light", Vector(458+11, 30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector(435,0,20), Angle(0,-0,0), Color(255,107,50), brightness = 0.004, distance = 600, shadows = 1}, - - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 300 , fov=180,farz = 128 }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400, fov=180,farz = 128 }, - [13] = { "dynamiclight", Vector(-300, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400 , fov=180,farz = 128 }, - - -- Side lights - --//[14] = { "light", Vector(390+12.15, 69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[15] = { "light", Vector(390+12.15, 69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[16] = { "light", Vector(390+12.15, 69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[17] = { "light", Vector(390+12.15, 69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - --[18] = { "light", Vector(390+12.15, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[19] = { "light", Vector(390+12.15, -69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[20] = { "light", Vector(390+12.15, -69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[21] = { "light", Vector(390+12.15, -69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [15] = { "light", Vector(402.202942,69.270073,44.79285), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [16] = { "light", Vector(402.202942,69.270073,41.509621), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [17] = { "light", Vector(402.202942,69.270073,37.3862), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - - --[19] = { "light", Vector(15, -69, 58.3), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[20] = { "light", Vector(12, -69, 58.3), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[21] = { "light", Vector(9, -69, 58.3), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [32] = { "headlight", Vector(450.70,-56.3,28), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - [33] = { "headlight", Vector(450.70,-56.3,32), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - - [34] = { "headlight", Vector(448.65,-56.40,22.60), Angle(-30,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 140 }, - - [35] = { "headlight", Vector(450.6,-55.84,12.73), Angle(-90,-90,-180), Color(216,161,92), farz = 7, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [36] = { "headlight", Vector(455.2,-53.2,5.35), Angle(-90,-90,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [37] = { "headlight", Vector(458.3,-20.32,19.6), Angle(-90,-120,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 3, fov = 160 }, - - [38] = { "headlight", Vector( -20, 0, 30), Angle(90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - [39] = { "headlight", Vector( -20, 0, 10), Angle(-90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - - } - -- Lights - --[[ - for i = 1,23 do - self.Lights[69+i] = { "light", Vector(-470 + 35*i, 0, 65), Angle(180,0,0), Color(255,220,180), brightness = 0.25, scale = 0.75} - --self:SetLightPower(69+i,RealTime()%1*2>1) - end]] - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - --- self.A5:TriggerInput("Set",0) - self:UpdateTextures() -end -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k,v in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - self:SetNW2String("texture",self.Texture) - self:SetNW2String("passtexture",self.PassTexture) - self:SetNW2String("cabtexture",self.CabTexture) -end - --------------------------------------------------------------------------------- -function ENT:Think() - if self.ARSType then self.ARSType = nil end - self.TextureTime = self.TextureTime or CurTime() - if (CurTime() - self.TextureTime) > 1.0 then - --print(1) - self.TextureTime = CurTime() - if self.Texture then - for k,v in pairs(self:GetMaterials()) do - if v:find("ewagon") then - self:SetSubMaterial(k-1,self.Texture) - else - self:SetSubMaterial(k-1,"") - end - end - self:SetNW2String("texture",self.Texture) - end - end - self.RetVal = self.BaseClass.Think(self) - - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetLightPower(1, self.Panel["HeadLights3"] > 0.5,(math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25) - ) - self:SetLightPower(2, self.Panel["HeadLights2"] > 0.5) - self:SetLightPower(3, self.Panel["HeadLights2"] > 0.5) - self:SetLightPower(4, self.Panel["HeadLights1"] > 0.5) - self:SetLightPower(5, self.Panel["HeadLights1"] > 0.5) - self:SetLightPower(6, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(7, self.Panel["HeadLights2"] > 0.5) - -- Reverser lights - self:SetLightPower(8, self.Panel["RedLightRight"] > 0.5) - self:SetLightPower(9, self.Panel["RedLightLeft"] > 0.5) - - -- Interior/cabin lights - self:SetLightPower(10, self.Panel["CabinLight"] > 0.5) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 or lightsActive2 - self:SetPackedBool("Lamps_emer",lightsActive1) - self:SetPackedBool("Lamps_full",lightsActive2) - --local I = math.Round((self.Electric.I24-150)/1000.0,1.5) - local Light - if self.Pneumatic.Compressor == 1 then - Light = (lightsActive2 and 0.6 or 0.3) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - else - Light = (lightsActive2 and 0.8 or 0.4) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - end - self:SetPackedRatio("LampsI",math.Round((self.Electric.I24-150)/1000.0,1.5)) - - --[[local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 - self:SetPackedBool("Lamps",lightsActive2) - local I = math.Round((self.Electric.I24-150)/1000.0,1.5) - if self.Pneumatic.Compressor == 1 then - local Light = 0.6 - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - self:SetLightPower(11, lightsActive2, Light) - self:SetLightPower(12, lightsActive2, Light) - self:SetLightPower(13, lightsActive2, Light) - else - local Light = 0.8 - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - self:SetLightPower(11, lightsActive2, Light) - self:SetLightPower(12, lightsActive2, Light) - self:SetLightPower(13, lightsActive2, Light) - end]] - --self:SetLightPower(12, lightsActive1,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - --self:SetLightPower(13, lightsActive2, 0.8) - --for i = 1,23 do - --self:SetLightPower(69+i,lightsActive2 and true or lightsActive1 and i%5==1 or false) - --end - --self:SetLightPower(12, self.Panel["EmergencyLight"] > 0.5) - --self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0) - - -- Side lights - self:SetLightPower(15, self.Panel["TrainDoors"] > 0.5) - --self:SetLightPower(19, self.Panel["TrainDoors"] > 0.5) - - self:SetLightPower(16, self.Panel["GreenRP"] > 0.5) - --self:SetLightPower(20, self.Panel["GreenRP"] > 0.5) - - self:SetLightPower(17, self.Panel["TrainBrakes"] > 0.5) - --self:SetLightPower(21, self.Panel["TrainBrakes"] > 0.5) - - self:SetLightPower(32,self.L_3.Value > 0.5) - self:SetLightPower(33,self.L_3.Value > 0.5) - self:SetLightPower(34,self.L_3.Value > 0.5) - self:SetLightPower(35,self.L_3.Value > 0.5) - self:SetLightPower(36,self.L_3.Value > 0.5) - self:SetLightPower(37,self.L_3.Value > 0.5) - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - self:SetPackedBool(1,self.VUS.Value == 1.0) - self:SetPackedBool(2,self.VozvratRP.Value == 1.0) - self:SetPackedBool(3,self.DIPon.Value == 1.0) - self:SetPackedBool(4,self.DIPoff.Value == 1.0) - self:SetPackedBool(5,self.GV.Value == 1.0) - self:SetPackedBool(7,self.VB.Value == 1.0) - self:SetPackedBool(8,self.RezMK.Value == 1.0) - self:SetPackedBool(9,self.KU1.Value == 1.0) - self:SetPackedBool(10,self.VAH.Value == 1.0) - self:SetPackedBool(11,self.VAD.Value == 1.0) - self:SetPackedBool(12,self.VUD1.Value == 0.0) - self:SetPackedBool(13,self.VUD2.Value == 1.0) - self:SetPackedBool(14,self.VDL.Value == 1.0) - self:SetPackedBool(15,self.KDL.Value == 1.0) - self:SetPackedBool(16,self.KDP.Value == 1.0) - self:SetPackedBool(17,self.KRZD.Value == 1.0) - self:SetPackedBool(18,self.KSN.Value == 1.0) - self:SetPackedBool(19,self.OtklAVU.Value == 1.0) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(22,self.Pneumatic.ValveType == 2) - --self:SetPackedBool(22,self.Pneumatic.LeftDoorState[2] > 0.5) - --self:SetPackedBool(23,self.Pneumatic.LeftDoorState[3] > 0.5) - --self:SetPackedBool(24,self.Pneumatic.LeftDoorState[4] > 0.5) - self:SetPackedBool(24,self.DURA.Power) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - --self:SetPackedBool(26,self.Pneumatic.RightDoorState[2] > 0.5) - --self:SetPackedBool(27,self.Pneumatic.RightDoorState[3] > 0.5) - self:SetPackedBool(27,self.KVWrenchMode == 2) - --self:SetPackedBool(28,self.Pneumatic.RightDoorState[4] > 0.5) - self:SetPackedBool(28,self.KVT.Value == 1.0) - --self:SetPackedBool(156,self.KB.Value == 1.0) - self:SetPackedBool(29,self.DURA.SelectAlternate == false) - self:SetPackedBool(30,self.DURA.SelectAlternate == true) - self:SetPackedBool(31,self.DURA.Channel == 2) - self:SetPackedBool(56,self.ARS.Value == 1.0) - self:SetPackedBool(57,self.ALS.Value == 1.0) - self:SetPackedBool(58,self.Panel["CabinLight"] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(114,self.Custom1.Value == 1.0) - self:SetPackedBool(115,self.Custom2.Value == 1.0) - self:SetPackedBool(116,self.Custom3.Value == 1.0) - self:SetPackedBool(124,self.CustomC.Value == 1.0) - --[[self:SetPackedBool(117,self.Custom4.Value == 1.0) - self:SetPackedBool(118,self.Custom5.Value == 1.0) - self:SetPackedBool(119,self.Custom6.Value == 1.0) - self:SetPackedBool(120,self.Custom7.Value == 1.0) - self:SetPackedBool(121,self.Custom8.Value == 1.0) - self:SetPackedBool(122,self.CustomA.Value == 1.0) - self:SetPackedBool(124,self.CustomC.Value == 1.0)]]-- --- self:SetLightPower(35,self.CustomD.Value == 1.0) --- self:SetLightPower(36,self.CustomE.Value == 1.0) --- self:SetLightPower(37,self.CustomF.Value == 1.0) --- self:SetLightPower(38,self.CustomG.Value == 1.0) - self:SetPackedBool(125,self.R_G.Value == 1.0) - self:SetPackedBool(126,self.R_Radio.Value == 1.0) - self:SetPackedBool(127,self.R_UNch.Value == 1.0) - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - self:SetPackedBool(130,self.RC1.Value == 1.0) - self:SetPackedBool(132,self.ManualBrake <= 0.001) - self:SetPackedBool(133,self.ManualBrake >= 0.999) - self:SetPackedBool(134,self.UOS.Value == 1.0) - self:SetPackedBool(135,self.BPS.Value == 1.0) - self:SetPackedBool(152,self.UAVA.Value == 1.0) - self:SetPackedBool(153,self.DURA.Channel1Alternate) - self:SetPackedBool(154,self.DURA.Channel2Alternate) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - self:SetPackedBool("DriverValveBLDisconnect",self.DriverValveBLDisconnect.Value == 1.0) - self:SetPackedBool("DriverValveTLDisconnect",self.DriverValveTLDisconnect.Value == 1.0) - self:SetPackedBool("EPK",self.EPK.Value == 1.0) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- LxRK - self:SetPackedBool(33,false)--self.RheostatController.MotorCoilState ~= 0.0) - -- NR1 - self:SetPackedBool(34,(self.NR.Value == 1.0) or (self.RPU.Value == 1.0)) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end--(self.KV.ControllerPositionAutodrive == 0 and self.KV.ControllerPosition == 0) - self:SetPackedBool(35,TW18 > 0.5) - self:SetPackedBool(131,TW18 > 0) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - self:SetPackedBool(40,self.Panel["SD"] > 0.5) - -- OCh - self:SetPackedBool(41,self.ALS_ARS.NoFreq) - -- 0 - self:SetPackedBool(42,self.ALS_ARS.Signal0) - -- 40 - self:SetPackedBool(43,self.ALS_ARS.Signal40) - -- 60 - self:SetPackedBool(44,self.ALS_ARS.Signal60) - -- 75 - self:SetPackedBool(45,self.ALS_ARS.Signal70) - -- 80 - self:SetPackedBool(46,self.ALS_ARS.Signal80) - -- KT - self:SetPackedBool(47,self.ALS_ARS.LKT) - -- KVD - self:SetPackedBool(48,self.ALS_ARS.LVD) - -- LST - self:SetPackedBool(49,self:ReadTrainWire(6) > 0.5) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - self:SetPackedBool(165,self.PB.Value > 0) - - -- AV states - -- for i,v in ipairs(self.Panel.AVMap) do - -- if tonumber(v) - -- then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - -- elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - -- end - -- end - - self:SetPackedBool(62,self.L_3.Value > 0.5) - self:SetPackedBool(64+19,self.VU1.Value > 0.5) - self:SetPackedBool(64+12,self.VU.Value > 0.5) - self:SetPackedBool(64+24,self.RST.Value > 0.5) - self:SetPackedBool(64+7 ,self.AV8B.Value > 0.5) - self:SetPackedBool(64+36,self.VU2.Value > 0.5) - self:SetPackedBool(64+13,self.VU3.Value > 0.5) - self:SetPackedBool("VPR",self.RST.Value == 1.0 and self.Panel["V1"]) - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - if self.Pneumatic.ValveType == 1 then - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/12.0) - else - self:SetPackedRatio(4, self.Pneumatic.BrakeLinePressure/12.0) - end - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/12.0) - self:SetPackedRatio(6, math.min(2.7,self.Pneumatic.BrakeCylinderPressure + 4.0*self.ManualBrake)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, math.abs(self.Electric.I24)/1000.0) - --self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 100.0) - self:SetPackedRatio(11,IGLA_Temperature) - - -- Update ARS system - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/120) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- RUT test - local weightRatio = math.max(0,math.min(1,(self:GetNW2Float("PassengerCount")/300))) - if math.abs(self:GetAngles().pitch) > 2.5 then weightRatio = weightRatio + 1.00 end - self.YAR_13A:TriggerInput("WeightLoadRatio",math.max(0,math.min(1.00,weightRatio))) - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = false - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - --self.RearBogey.ParkingBrake = self.ManualBrake.Value > 0.5 - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return self.RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "VAHToggle" then - local state = self.VAH.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VAH!") - end - if button == "OtklAVUToggle" then - local state = self.OtklAVU.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." OtklAVU!") - end - if button == "VADToggle" then - local state = self.VAD.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VAD!") - end - if button == "RC1Toggle" then - local state = self.RC1.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." RC1!") - end - if button == "UOSToggle" then - local state = self.UOS.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UOS!") - end - if button == "UAVAToggle" then - local state = self.UAVA.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UAVA!") - end - if button == "BPSToggle" then - local state = self.BPS.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." BPS!") - end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveDisconnect:TriggerInput("Set",1) - return - end - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - - if (button == "UAVAToggle") then - if self.UAVA then - if self.UAVA.Value > 0.5 then - self:PlayOnce("uava_off","cabin") - else - self:PlayOnce("uava_off","cabin") - end - end - return - end - - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - else - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - end - return - end - - if button == "DriverValveBLDisconnectToggle" then - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - else - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - end - return - end - if button == "EPKToggle" and self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 0.0 then - self:PlayOnce("epv_off","cabin",0.9) - else - self:PlayOnce("epv_on","cabin",0.9) - end - return - end -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - - if (not string.find(button,"KVT")) and string.find(button,"KV") then return end - if string.find(button,"KRU") then return end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end diff --git a/lua/entities/_obsolete/gmod_subway_e/shared.lua b/lua/entities/_obsolete/gmod_subway_e/shared.lua deleted file mode 100644 index 8aa1065..0000000 --- a/lua/entities/_obsolete/gmod_subway_e/shared.lua +++ /dev/null @@ -1,86 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameTranslated = "81-703" -ENT.Author = "Oldy" -ENT.Contact = "oldy702@gmail.com" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["relay_close2"] = nil - self.SoundNames["rvt_close"] = nil - self.SoundNames["r1_5_close"] = nil - self.SoundNames["rvt_open"] = nil - self.SoundNames["r1_5_open"] = nil - --[[self.SoundNames["relay_close4"] = {"subway_trains/new/relay_7.wav","subway_trains/new/lsd_4.wav"} - self.SoundNames["pneumo_switch"] = { - "subway_trains/pneumo_8.wav", - "subway_trains/pneumo_9.wav", - }]] -end - -function ENT:InitializeSystems() - -- Электросистема 81-710 - self:LoadSystem("Electric","81_701_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_117DM") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_70") - -- Контроллер резервного управления - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - --self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - -- Панель управления Е - self:LoadSystem("Panel","81_701_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - self:LoadSystem("DURA") - self:LoadSystem("ALS_ARS") - self:LoadSystem("Horn") - self:LoadSystem("Announcer") - --self:LoadSystem("RRI") -end diff --git a/lua/entities/_obsolete/gmod_subway_em/cl_init.lua b/lua/entities/_obsolete/gmod_subway_em/cl_init.lua deleted file mode 100644 index ab4b2a9..0000000 --- a/lua/entities/_obsolete/gmod_subway_em/cl_init.lua +++ /dev/null @@ -1,995 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} - --- Main panel -ENT.ButtonMap["Main"] = { - pos = Vector(460.968903,-32.25375,0.064331), - ang = Angle(0,-90,90-27), - width = 315, - height = 240, - scale = 0.0588, - - buttons = { - {ID = "DIPonSet", x=35 + 48.3*0, y=96, radius=20, tooltip="КУ4:Включение ДИП и освещения\nTurn DIP and interior lights on"}, - {ID = "DIPoffSet", x=35 + 48.3*1, y=96, radius=20, tooltip="КУ5:Отключение ДИП и освещения\nTurn DIP and interior lights off"}, - {ID = "VozvratRPSet", x=35 + 48.3*2, y=96, radius=20, tooltip="КУ9:Возврат РП\nReset overload relay"}, - {ID = "KSNSet", x=35 + 48.3*3, y=96, radius=20, tooltip="КУ8:Принудительное срабатывание РП на неисправном вагоне (сигнализация неисправности)\nKSN: Failure indication button"}, - {ID = "KDPSet", x=35 + 48.3*5, y=96, radius=20, tooltip="КДП:Правые двери\nKDP: Right doors open"}, - ----Down Panel - {ID = "KU1Toggle", x=16,y=129,w=45,h=90, tooltip="КУ1:Включение мотор-компрессора\nTurn motor-compressor on"}, - {ID = "VUD1Toggle", x=248,y=129,w=45,h=90, tooltip="КУ2: Закрытие дверей\nVUD: Door control toggle (close doors)"}, - ----Lamps - --{ID = "Lamp1", x=42, y=30, radius=20, tooltip="ЛВД: Лампа включения двигателей\nLVD: Engines engaged"}, - --{ID = "Lamp6", x=86, y=30, radius=20, tooltip="ЛСТ: Лампа сигнализации торможения\nLST: Brakes engaged"}, - --{ID = "Lamp2", x=134, y=30, radius=20, tooltip="Красная лампа РК (Вращение Реостатного контроллера)\nRK: Rheostat controller motion "}, - --{ID = "DoorsWag", x=134, y=30, radius=20, tooltip="Синяя лампа СД: Сигнализация дверей вагона\nBlue door state light (doors on wagon are closed)"}, - {ID = "RedRP", x=177, y=30, radius=20, tooltip="Красная РП: Красная лампа реле перегрузки\nRP: Red overload relay (power circuits failed to assemble)"}, - {ID = "GreenRP", x=223, y=30, radius=20, tooltip="Зеленая РП: Зелёная лампа реле перегрузки (Сигнализация перегрузки)\nRP: Green overload relay (overload relay open on current train)"}, - {ID = "DoorsWag", x=265, y=30, radius=20, tooltip="Белая лампа СД: Сигнализация дверей поезда\nWhite door state light (doors on train are closed)"}, - - {ID = "KDLSet", x=92, y=169, radius=20, tooltip="КУ12: Кнопка левых дверей\nKDL: Left doors open"}, - {ID = "KRZDSet", x=212, y=169, radius=20, tooltip="КУ10: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing"}, - - } -} - -Metrostroi.ClientPropForButton("GreenRP",{ - panel = "Main", - button = "GreenRP", - model = "models/metrostroi_train/e/lampgreen.mdl", - z = 6, - ang = 90, - staylabel = true, -}) -Metrostroi.ClientPropForButton("RedRP",{ - panel = "Main", - button = "RedRP", - model = "models/metrostroi_train/e/lampred1.mdl", - z = 6, - ang = 90, - staylabel = true, -}) -Metrostroi.ClientPropForButton("DoorsWag",{ - panel = "Main", - button = "DoorsWag", - model = "models/metrostroi_train/e/lampblue.mdl", - z = 6, - ang = 90, - staylabel = true, -}) - - -Metrostroi.ClientPropForButton("DIPon",{ - panel = "Main", - button = "DIPonSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("DIPoff",{ - panel = "Main", - button = "DIPoffSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("VozvratRP",{ - panel = "Main", - button = "VozvratRPSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("KSN",{ - panel = "Main", - button = "KSNSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("KDP",{ - panel = "Main", - button = "KDPSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("KDL",{ - panel = "Main", - button = "KDLSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("KRZD",{ - panel = "Main", - button = "KRZDSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("VUD",{ - panel = "Main", - button = "VUD1Toggle", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z=-20, -}) -Metrostroi.ClientPropForButton("KU1",{ - panel = "Main", - button = "KU1Toggle", - model = "models/metrostroi_train/switches/vudbrown.mdl", - z=-20, -}) - -ENT.ButtonMap["RezMK"] = { - pos = Vector(469.0,-19.75,37), - ang = Angle(0,270,90), - width = 50, - height = 80, - scale = 0.0625, - - buttons = { - {ID = "RezMKSet", x=0, y=0, w=50, h=80, tooltip="КУ15:Резервное включение мотор-компрессора\nRezMKSet"}, - } -} -Metrostroi.ClientPropForButton("RezMK",{ - panel = "RezMK", - button = "RezMKSet", - model = "models/metrostroi_train/switches/vudblack.mdl", -}) - -ENT.ButtonMap["AVMain"] = { - pos = Vector(408.06,40.8,56), - ang = Angle(0,90,90), - width = 335, - height = 380, - scale = 0.0625, - - buttons = { - {ID = "AV8BToggle", x=0, y=0, w=300, h=380, tooltip="АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n"}, - } -} -Metrostroi.ClientPropForButton("AV8B",{ - panel = "AVMain", - button = "AV8BToggle", - model = "models/metrostroi_train/switches/automain.mdl", - z=43, -}) - ----AV1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(408.06,41,30), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VU3Toggle", x=0, y=0, w=100, h=140, tooltip="ВУ3: Освещение кабины\n"}, - {ID = "VU2Toggle", x=100, y=0, w=100, h=140, tooltip="ВУ2: Аварийное освещение 25В\n"}, - {ID = "VU1Toggle", x=200, y=0, w=100, h=140, tooltip="ВУ1: Печь отопления кабины ПТ-6\n"}, - } -} -for k,v in pairs(ENT.ButtonMap["AV1"].buttons) do - if not v.ID then continue end - Metrostroi.ClientPropForButton(v.ID:sub(0,-7),{ - panel = "AV1", - button = v.ID, - model = "models/metrostroi_train/switches/autobl.mdl", - z=10, - }) -end --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(408.98,20.24,30.5), - ang = Angle(0,90,90), - width = 250, - height = 136, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=0, y=0, w=250, h=136, tooltip="АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)\nVB: Battery on/off"}, - } -} -Metrostroi.ClientPropForButton("VB",{ - panel = "Battery", - button = "VBToggle", - model = "models/metrostroi_train/switches/autobl2.mdl", - z=15, -}) - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(469.5,-18.5,20), - ang = Angle(0,270,90), - width = 90, - height = 120, - scale = 0.0625, - - buttons = { - {ID = "VUToggle", x=0, y=0, w=90, h=120, tooltip="ВУ: Выключатель Управления\nVUToggle"}, - {ID = "VUPl", x=0, y=70, w=90, h=50, tooltip="Пломба ВУ\nVU plomb"}, - } -} -Metrostroi.ClientPropForButton("VU",{ - panel = "VU", - button = "VUToggle", - model = "models/metrostroi_train/switches/autobl.mdl", - z=20, -}) - -Metrostroi.ClientPropForButton("VUPl",{ - panel = "VU", - button = "VUToggle", - model = "models/metrostroi_train/switches/autoplombr.mdl", - z=19, - propname = false, - ang=0, -}) ---[[ -Metrostroi.ClientPropForButton("AVVB",{ - panel = "BatteryAV", - button = "AVVBToggle", - model = "models/metrostroi_train/switches/autobl2.mdl", - z=15, -}) -]] - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(460,49.0,6.0), - ang = Angle(0,-82,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(455.13,58.99,24.44), - ang = Angle(0,-17.5,90), - width = 60, - height = 188, - scale = 0.0625, - - buttons = { - {ID = "VDLSet", x=30, y=42, radius=30, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open"}, - {ID = "VUD2LToggle", x=0, y=110, w=60,h=20, tooltip="Блокировка ВУД2\nVUD2 lock"}, - {ID = "VUD2Toggle", x=30, y=138, radius=30, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)"}, - } -} -Metrostroi.ClientPropForButton("VUD2",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("VUD2l",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/switches/vudlock.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("VDL",{ - panel = "HelperPanel", - button = "VDLSet", - model = "models/metrostroi_train/switches/vudblack.mdl", - z = 0, -}) - --- Pneumatic instrument panel 2 -ENT.ButtonMap["PneumaticManometer"] = { - pos = Vector(459.247131,-54.307846,16.197767), - ang = Angle(0,-90-51,90), - - width = 70, - height = 70, - scale = 0.0625, - - buttons = { - {x=35,y=35,radius=35,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(463.281189,-53.228256,11.310288), - ang = Angle(0,-90-44,90), - - width = 70, - height = 70, - scale = 0.0625, - - buttons = { - {x=35,y=35,radius=35,tooltip="Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - } -} -ENT.ButtonMap["DriverValveBLDisconnect"] = { - pos = Vector(453.57,-54.37,-27.61), - ang = Angle(-90,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги тормозной магистрали\nTrain line disconnect valve"}, - } -} -ENT.ButtonMap["DriverValveTLDisconnect"] = { - pos = Vector(455.482483,-54,-15), - ang = Angle(90,180-11.79,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги напорной магистрали\nBrake line disconnect valve"}, - } -} - - -ENT.ButtonMap["Meters"] = { - pos = Vector(461.65213,-56.696617,37.528275), - ang = Angle(0,-148,90), - width = 73, - height = 140, - scale = 0.0625, - - buttons = { - {x=13, y=22, w=60, h=50, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=13, y=81, w=60, h=50, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} -ENT.ButtonMap["Speedometer"] = { - pos = Vector(459.649109,-53.19582,26.624441), - ang = Angle(0,-149,97), - width = 110, - height = 110, - scale = 0.0625, - - buttons = { - {x=0, y=0, w=110, h=110, tooltip="Скоростемер"}, - } -} - - ---These values should be identical to those drawing the schedule -local col1w = 80 -- 1st Column width -local col2w = 32 -- The other column widths -local rowtall = 30 -- Row height, includes -only- the usable space and not any lines - -local rowamount = 16 -- How many rows to show (total) ---[[ENT.ButtonMap["Schedule"] = { - pos = Vector(442.1,-60.7,26), - ang = Angle(0,-110,90), - width = (col1w + 2 + (1 + col2w) * 3), - height = (rowtall+1)*rowamount+1, - scale = 0.0625/2, - - buttons = { - {x=1, y=1, w=col1w, h=rowtall, tooltip="М №\nRoute number"}, - {x=1, y=rowtall*2+3, w=col1w, h=rowtall, tooltip="П №\nPath number"}, - - {x=col1w+2, y=1, w=col2w*3+2, h=rowtall, tooltip="ВРЕМЯ ХОДА\nTotal schedule time"}, - {x=col1w+2, y=rowtall+2, w=col2w*3+2, h=rowtall, tooltip="ИНТ\nTrain interval"}, - - {x=col1w+2, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="ЧАС\nHour"}, - {x=col1w+col2w+3, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="МИН\nMinute"}, - {x=col1w+col2w*2+4, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="СЕК\nSecond"}, - {x=col1w+2, y=rowtall*3+4, w=col2w*3+2, h=(rowtall+1)*(rowamount-3)-1, tooltip="Arrival times"}, -- NEEDS TRANSLATING - - {x=1, y=rowtall*3+4, w=col1w, h=(rowtall+1)*(rowamount-3)-1, tooltip="Station name"}, -- NEEDS TRANSLATING - } -}]] - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(475,-45.0,-50.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - {ID = "FrontTrainLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - } -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-475,45.0,-50.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "RearTrainLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - {ID = "RearBrakeLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - } -} -ENT.ButtonMap["GV"] = { - pos = Vector(139,66,-54), - ang = Angle(0,180,90), - width = 170, - height = 170, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Главный выключатель", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - }}, - } -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-168,68.6,-50), - ang = Angle(0,180,90), - width = 170, - height = 80, - scale = 0.1, - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 80, tooltip="Выключение воздухораспределителя"}, - } -} - - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(450,52,-20), - ang = Angle(0,-70,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа\nUAVA: Universal Automatic Autostop Disabler"}, - {ID = "UAVAContactSet",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(-440,-68,-11), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(416,68,-11), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - - -ENT.ButtonMap["FrontDoor"] = { - pos = Vector(472,16,43.4), - ang = Angle(0,-90,90), - width = 650, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=650,h=1780, tooltip="Передняя дверь\nFront door"}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(420,64,43.4), - ang = Angle(0,0,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor1",x=0,y=0,w=642,h=1780, tooltip="Дверь в кабину машиниста\nCabin door"}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(384,-16,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=1900, tooltip="Дверь из салона\nPassenger door"}, - } -} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -ENT.ClientProps["brake"] = { - model = "models/metrostroi_train/81/334cran.mdl", - pos = Vector(460.11,-53.7,3.7), - ang = Angle(0,34,0) -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/em/kv.mdl", - pos = Vector(461.65,-24.63,3.9), - ang = Angle(0,-32,0) -} -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(461.65,-24.63,3.2), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(452.9,-57.33,-25.61), - ang = Angle(0,-90,0), - color = Color(144,74,0), -} -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(455.482483,-52.546734,-19.333017), - ang = Angle(0.000000,-101.794258,0.000000), - color = Color(0,212,255), -} - -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi/81-717/ezh_koleso.mdl", - pos = Vector(460.316742,37.144958,-6.000000), - ang = Angle(-90.000000,8.000000,0.000000), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(457.722778,-56.060150,13.877457), - ang = Angle(314.669312,40.953403,-90.000000), -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(457.688568,-56.020660,13.877457), - ang = Angle(314.669312,40.953403,-90.000000), - color = Color(255,120,120), -} - -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(462.104797,-55.268986,9.050000), - ang = Angle(313.335266,48.532555,-90.000000), -} ----------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(460.647858,-58.177208,35.553993), - ang = Angle(237.732468,23.827326,270.135559), -} - -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(460.647858,-58.177208,32.055382), - ang = Angle(222.645691,23.000584,270.135559), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(0,0,0) -} - -ENT.ClientProps["Em_salon"] = { - model = "models/metrostroi_train/em/em_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Em_salon2"] = { - model = "models/metrostroi_train/em/em_salon2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_emer"] = { - model = "models/metrostroi_train/em/lamps_emer.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_full"] = { - model = "models/metrostroi_train/em/lamps_full.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} - -ENT.ClientProps["Lamps_full2"] = { - model = "models/metrostroi_train/em/lamps_full_em.mdl", - pos = Vector(0.007439,0,0), - ang = Angle(0,0,0) -} - -ENT.ClientProps["Lamps_cab_em"] = { - model = "models/metrostroi_train/em/lamps_cab_em.mdl", - pos = Vector(0.007439,0,0), - ang = Angle(0,0,0) -} - -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(460, -30, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(460, 30, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(-460, -30, -55), - ang = Angle(0,90,0) -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(-460, 30, -55), - ang = Angle(0,90,0) -} - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(383.0 - 67.49*k - 233.4*i,-64.56*(1-2*k),1) - else return Vector(383.0 - 67.49*(1-k) - 233.4*i,-64.56*(1-2*k),1) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi_train/em/doorright.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,90 + 180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi_train/em/doorleft.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,90 + 180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/em/doorfront.mdl", - pos = Vector(471.71,-17.1,-1), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/em/doorback.mdl", - pos = Vector(-471.24,17.19,-1), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/em/doorpass.mdl", - pos = Vector(403.69,16.95,-2.2), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/em/doorcab.mdl", - pos = Vector(420.75,64.26,1.5), - ang = Angle(0,-90,0) -} ---[[ENT.ClientProps["UAVA"] = { - model = "models/metrostroi/81-717/uava_body.mdl", - pos = Vector(400,61,-8),--Vector(415.0,-58.5,-18.2), - ang = Angle(0,0,0) -} -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81/uavalever.mdl", - pos = Vector(452.84598,51,-21.813349), - ang = Angle(0,90,90) -} -]] -ENT.ClientProps["RedLights"] = { - model = "models/metrostroi_train/Em/redlights.mdl", - pos = Vector(474.674042,-0.885458,55.695278), - ang = Angle(90.000000,-0.212120,0.000000), -} -ENT.ClientProps["DistantLights"] = { - model = "models/metrostroi_train/Em/distantlights.mdl", - pos = Vector(471.731842,-0.651488,54.413082), - ang = Angle(90.000000,0.000000,0.000000), -} -ENT.ClientProps["WhiteLights"] = { - model = "models/metrostroi_train/Em/whitelights.mdl", - pos = Vector(475.597565,-0.525079,-29.160791), - ang = Angle(90.267662,0.000000,0.000000), -} - -ENT.Texture = "7" -ENT.OldTexture = nil ---local X = Material( "metrostroi_skins/81-717/6.png") - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self:GetNW2String("texture")] - local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("passtexture")] - local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("cabtexture")] - for _,self in pairs(self.ClientEnts) do - if not IsValid(self) then continue end - for k,v in pairs(self:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end -end --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if self.Texture ~= self:GetNW2String("texture") then - self.Texture = self:GetNW2String("texture") - self:UpdateTextures() - end - if self.PassTexture ~= self:GetNW2String("passtexture") then - self.PassTexture = self:GetNW2String("passtexture") - self:UpdateTextures() - end - if self.CabinTexture ~= self:GetNW2String("cabtexture") then - self.CabinTexture = self:GetNW2String("cabtexture") - self:UpdateTextures() - end - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - -- Parking brake animation - self.ParkingBrakeAngle = self.ParkingBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ParkingBrakeAngle - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - - local Lamps = self:GetPackedBool(20) and 0.6 or 1 - self:ShowHideSmooth("Lamps_emer",self:Animate("lamps_emer",self:GetPackedBool("Lamps_emer") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Lamps_cab_em",self.Anims["lamps_full"].val) - self:ShowHideSmooth("Lamps_full2",self.Anims["lamps_full"].val) - - --self:ShowHideSmooth("Lamp2",self:Animate("Lamp2_hs",self:GetPackedBool("Lamp2") and 1 or 0,0,1,5,false)) - --self:ShowHideSmooth("Lamp1",self:Animate("Lamp1_hs",self:GetPackedBool("Lamp1") and 1 or 0,0,1,5,false)) - --self:ShowHideSmooth("Lamp6",self:Animate("Lamp6_hs",self:GetPackedBool("Lamp6") and 1 or 0,0,1,5,false)) - --self:ShowHideSmooth("Doors",self:Animate("Doors_hs",self:GetPackedBool(40) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DoorsWag",self:Animate("DoorsWag_hs",self:GetPackedBool("DoorsWag") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("GreenRP",self:Animate("GreenRP_hs",self:GetPackedBool(36) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("RedRP",self:Animate("RedRP_hs",self:GetPackedBool(35) and 1 or 0,0,1,5,false) + self:Animate("RedLSN_hs",self:GetPackedBool(131) and 1 or 0,0,0.4,5,false)) - - - self:Animate("AV8B",self:GetPackedBool("AV8B") and 1 or 0, 0,1, 8, false) - - self:Animate("VU1",self:GetPackedBool("VU1") and 0 or 1, 0,1, 12, false) - self:Animate("VU3",self:GetPackedBool("VU3") and 0 or 1, 0,1, 12, false) - self:Animate("VU2",self:GetPackedBool("VU2") and 0 or 1, 0,1, 12, false) - - self:Animate("VU",self:GetPackedBool("VU") and 0 or 1, 0,1, 12, false) - self:Animate("RezMK",self:GetPackedBool("RezMK") and 1 or 0, 0,1, 7, false) - - self:HideButton("VUToggle",self:GetPackedBool("VUPl")) - self:HideButton("VUPl",not self:GetPackedBool("VUPl")) - - self:SetCSBodygroup("VUPl",1,self:GetPackedBool("VUPl") and 0 or 1) - - - self:Animate("VB",self:GetPackedBool("VB") and 0 or 1, 0,1, 8, false) - - - self:Animate("KRZD",self:GetPackedBool("KRZD") and 1 or 0, 0,1, 12, false) - - self:ShowHideSmooth("RedLights",self:Animate("redlights",self:GetPackedBool("RedLight") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("WhiteLights",self:Animate("whitelights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DistantLights",self:Animate("distantlights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false)) - - self:Animate("KDL",self:GetPackedBool("KDL") and 1 or 0, 0,1, 12, false) - self:Animate("DIPon",self:GetPackedBool("DIPon") and 1 or 0, 0,1, 12, false) - self:Animate("DIPoff",self:GetPackedBool("DIPoff") and 1 or 0, 0,1, 12, false) - self:Animate("VozvratRP",self:GetPackedBool("VozvratRP") and 1 or 0, 0,1, 12, false) - self:Animate("KSN",self:GetPackedBool("KSN") and 1 or 0, 0,1, 12, false) - self:Animate("KDP",self:GetPackedBool("KDP") and 1 or 0, 0,1, 12, false) - - self:Animate("KU1",self:GetPackedBool("KU1") and 1 or 0, 0,1, 7, false) - self:Animate("VUD",self:GetPackedBool("VUD1") and 1 or 0, 0,1, 7, false) - - --- self:Animate("VDL",self:GetPackedBool("VDL") and 1 or 0, 0,1, 7, false) - - self:Animate("VUD2",self:GetPackedBool("VUD2") and 0 or 1, 0,1, 7, false) - self:Animate("VUD2l",self:GetPackedBool("VUD2L") and 1 or 0, 0,1, 7, false) - - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0,0.5, 3,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0,0.5, 3,false) - - -- DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(52) and 1 or 0,1.0) - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake", 1-self:GetPackedRatio(0), 0.00, 0.65, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0, 0.31, 2,false) - self:Animate("reverser", self:GetPackedRatio(2), 0.26, 0.35, 4,false) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0, 0.725, 256,2)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0, 0.725, 256,2)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0, 0.721, 256,2)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.014, 0.298,256,2) - self:Animate("ampermeter", self:GetPackedRatio(8), 0, 0.248,256,2) - --self:Animate("volt2", 0, 0.38, 0.63) - ---- - self:Animate("door1", self:GetPackedBool(157) and (self.Door1 or 0.99) or 0,0,0.22, 1024, 1) - self:Animate("door3", self:GetPackedBool(158) and (self.Door2 or 0.99) or 0,0,0.25, 1024, 1) - self:Animate("door2", self:GetPackedBool(156) and (self.Door3 or 0.99) or 0,0,0.25, 1024, 1) - self:Animate("door4", self:GetPackedBool(159) and (self.Door2 or 0.99) or 0,1,0.77, 1024, 1) - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,0.35, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 0 or 1,0,0.35, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 1 or 0,0,0.35, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,0.35, 3, false) - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - -- Animate doors - for i=0,4 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - self:Animate(n_l,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - self:Animate(n_r,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - end - end - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*((-0.6*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self.BrakeLineRamp1 = math.Clamp(self.BrakeLineRamp1,0,1) - self:SetSoundState("release2",self.BrakeLineRamp1^1.65,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 4.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 8.0*(0.1*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self.BrakeLineRamp2 = math.Clamp(self.BrakeLineRamp2,0,1) - self:SetSoundState("release3",self.BrakeLineRamp2 + math.max(0,self.BrakeLineRamp1/2-0.15),1.0) - - self:SetSoundState("cran1",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor_ezh",1,1) - else - self:SetSoundState("compressor_ezh",0,1) - self:SetSoundState("compressor_ezh_end",0,1) - self:SetSoundState("compressor_ezh_end",1,1) - --self:PlayOnce("compressor_e_end",nil,1,nil,true) - end - end - - -- ARS/ringer alert - local state = self:GetPackedBool(39) - self.PreviousAlertState = self.PreviousAlertState or false - if self.PreviousAlertState ~= state then - self.PreviousAlertState = state - if state then - self:SetSoundState("ring4",1,1) - else - self:SetSoundState("ring4",0,0) - self:SetSoundState("ring4_end",0,1) - self:SetSoundState("ring4_end",1,1) - --self:PlayOnce("ring4_end","cabin",0,101) - end - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - local state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk_spin",0.7,1,nil,0.75) - else - self:SetSoundState("rk_spin",0,0,nil,0.75) - self:SetSoundState("rk_stop",0,1,nil,0.75) - self:SetSoundState("rk_stop",0.7,1,nil,0.75) - end - end - - --DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(32) and 1 or 0,1.0) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - -function ENT:DrawPost() - - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - - -- Draw train numbers - local dc = render.GetLightColor(self:GetPos()) - self:DrawOnPanel("TrainNumber1",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - self:DrawOnPanel("TrainNumber2",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - local bp_press = self:GetPackedRatio(6) - local blocked_l = self:GetPackedBool(132) and 0 or 1 - local blocked_r = self:GetPackedBool(133) and 0 or 1 - if button == "ParkingBrakeLeft" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) - blocked_l*45 - end - if button == "ParkingBrakeRight" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) + blocked_r*45 - end - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end diff --git a/lua/entities/_obsolete/gmod_subway_em/init.lua b/lua/entities/_obsolete/gmod_subway_em/init.lua deleted file mode 100644 index b6c26bd..0000000 --- a/lua/entities/_obsolete/gmod_subway_em/init.lua +++ /dev/null @@ -1,896 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "E", - Name = "Em", - WagType = 0, - ARS = { - HaveASNP = false, - } -} -function ENT:Initialize() - -- Set model and initialize - self:SetModel("models/metrostroi_train/em/em.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(430,-39,-21.5),Angle(0,0,0)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 320,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-320,0,-80),Angle(0,0,0),false) - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - --[KEY_2] = "KVSetX2", - --[KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - [KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_L] = "DriverValveDisconnect", - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - }, - [KEY_RALT] = { - }, - } - - self.InteractionZones = { - { Pos = Vector(-471,-30,0), - Radius = 28, - ID = "RearDoor" - }, - { Pos = Vector(473,32,28), - Radius = 28, - ID = "FrontDoor1" - }, - { Pos = Vector(473,32,-28), - Radius = 28, - ID = "FrontDoor2" - }, - { Pos = Vector(383.02,31.85,2), - Radius = 28, - ID = "PassengerDoor1" - }, - { Pos = Vector(383.02,-31.85,2), - Radius = 28, - ID = "PassengerDoor2" - }, - { Pos = Vector(408.18,63.59,-26), - Radius = 16, - ID = "CabinDoor1" - }, - { Pos = Vector(408.18,63.59,6), - Radius = 16, - ID = "CabinDoor2" - }, - { Pos = Vector(408.18,63.59,38), - Radius = 16, - ID = "CabinDoor3" - }, - { Pos = Vector(458.18,63.59,-26), - Radius = 16, - ID = "CabinDoor4" - }, - { Pos = Vector(458.18,63.59,6), - Radius = 16, - ID = "CabinDoor5" - }, - { Pos = Vector(458.18,63.59,38), - Radius = 16, - ID = "CabinDoor6" - }, - } - - self.Lights = { - -- Head - [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100 }, - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [3] = { "glow", Vector(469.4,-45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Reverse - --[8] = { "light", Vector(458+11,-30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - --[9] = { "light", Vector(458+11, 30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector(434,-32,18), Angle(0,-0,0), Color(255,107,50), brightness = 0.4, distance = 600, shadows = 1}, - - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 300 , fov=180,farz = 128 }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400, fov=180,farz = 128 }, - [13] = { "dynamiclight", Vector(-300, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400 , fov=180,farz = 128 }, - - -- Side lights - --//[14] = { "light", Vector(390+12.15, 69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[15] = { "light", Vector(390+12.15, 69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[16] = { "light", Vector(390+12.15, 69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[17] = { "light", Vector(390+12.15, 69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - --[18] = { "light", Vector(390+12.15, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[19] = { "light", Vector(390+12.15, -69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[20] = { "light", Vector(390+12.15, -69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[21] = { "light", Vector(390+12.15, -69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [15] = { "light", Vector(402.202942,69.270073,44.79285), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [16] = { "light", Vector(402.202942,69.270073,41.509621), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [17] = { "light", Vector(402.202942,69.270073,37.3862), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - - --[19] = { "light", Vector(15, -69, 58.3), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[20] = { "light", Vector(12, -69, 58.3), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[21] = { "light", Vector(9, -69, 58.3), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [32] = { "headlight", Vector(450.70,-56.3,28), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - [33] = { "headlight", Vector(450.70,-56.3,32), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - - [34] = { "headlight", Vector(448.65,-56.40,22.60), Angle(-30,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 140 }, - - [35] = { "headlight", Vector(450.6,-55.84,12.73), Angle(-90,-90,-180), Color(216,161,92), farz = 7, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [36] = { "headlight", Vector(455.2,-53.2,5.35), Angle(-90,-90,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [37] = { "headlight", Vector(458.3,-20.32,19.6), Angle(-90,-120,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 3, fov = 160 }, - - [38] = { "headlight", Vector( -20, 0, 30), Angle(90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - [39] = { "headlight", Vector( -20, 0, 10), Angle(-90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - [70 ] = { "headlight", Vector( 450, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, - - } - self.NetworkSwitches = { - "VB", - "RezMK", - "VU3","VU1","VU2","AV8B","VU", - "VUD2","VUD2L","VDL", - "KDL","DIPon","DIPoff","VozvratRP","KSN","KDP", - "KU1","KRZD","VUD1", - --[["VB","VBA", - - "KVT","VZP","VZD","KRZD", - - "KDL","DIPon","DIPoff","VozvratRP","KSN","KDP", - - "KU1","Ring","VUS","KAK","VAutodrive","VUD1", - - "RezMK", - - "VUD2","VUD2L","VDL", - - "VRU","VAH","VAD","OVT","KSD","DP","VKF", - - "OtklAVU","KRP", - - "RC1","RC2","VRD", - - "PB","VU3","VU1","VU2","AV8B","VU","KDLK","VDLK","KDPK","KAHK","L_3","RST","VSOSD",]] - } - self.Plombs = { - VU = true, - --[[RST = true, - VAH = true, - VAD = true, - OVT = true, - RC1 = true, - RC2 = true,]] - Init = true, - } - -- Lights - --[[ - for i = 1,23 do - self.Lights[69+i] = { "light", Vector(-470 + 35*i, 0, 65), Angle(180,0,0), Color(255,220,180), brightness = 0.25, scale = 0.75} - --self:SetLightPower(69+i,RealTime()%1*2>1) - end]] - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false --- self.A5:TriggerInput("Set",0) - self:UpdateTextures() -end - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k,v in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - self:SetNW2String("texture",self.Texture) - self:SetNW2String("passtexture",self.PassTexture) - self:SetNW2String("cabtexture",self.CabTexture) -end - --------------------------------------------------------------------------------- -function ENT:Think() - self.RetVal = self.BaseClass.Think(self) - - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetLightPower(1, self.Panel["HeadLights3"] > 0.5,(math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25) - ) - --self:SetLightPower(2, self.Panel["HeadLights2"] > 0.5) - --self:SetLightPower(3, self.Panel["HeadLights2"] > 0.5) - --self:SetLightPower(4, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(5, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(6, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(7, self.Panel["HeadLights2"] > 0.5) - -- Reverser lights - --self:SetLightPower(8, self.Panel["RedLightRight"] > 0.5) - --self:SetLightPower(9, self.Panel["RedLightLeft"] > 0.5) - self:SetPackedBool("HeadLights1",self.Panel["HeadLights1"] > 0.5) - self:SetPackedBool("HeadLights2",self.Panel["HeadLights2"] > 0.5) - self:SetPackedBool("RedLight",((self.Panel["RedLightLeft"] > 0.5 or self.Panel["RedLightRight"] > 0.5 ) and IsValid(self.FrontTrain))) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 or lightsActive2 - self:SetPackedBool("Lamps_emer",lightsActive1) - self:SetPackedBool("Lamps_full",lightsActive2) - - -- Interior/cabin lights - self:SetLightPower(10, lightsActive2, 0.8)--self.Panel["CabinLight"] > 0.5) - --local I = math.Round((self.Electric.I24-150)/1000.0,1.5) - if self.Pneumatic.Compressor == 1 then - local Light = (lightsActive2 and 0.6 or 0.3) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - else - local Light = (lightsActive2 and 0.8 or 0.4) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - end - - --self:SetLightPower(12, lightsActive1,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - --self:SetLightPower(13, lightsActive2, 0.8) - --for i = 1,23 do - --self:SetLightPower(69+i,lightsActive2 and true or lightsActive1 and i%5==1 or false) - --end - --self:SetLightPower(12, self.Panel["EmergencyLight"] > 0.5) - --self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0) - - -- Side lights - --self:SetLightPower(15, self.Panel["TrainDoors"] > 0.5) - --self:SetLightPower(19, self.Panel["TrainDoors"] > 0.5) - - --self:SetLightPower(16, self.Panel["GreenRP"] > 0.5) - --self:SetLightPower(20, self.Panel["GreenRP"] > 0.5) - - --self:SetLightPower(17, self.Panel["TrainBrakes"] > 0.5) - --self:SetLightPower(21, self.Panel["TrainBrakes"] > 0.5) - - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end--(self.KV.ControllerPositionAutodrive == 0 and self.KV.ControllerPosition == 0) - self:SetPackedBool(35,TW18 > 0.5) - self:SetPackedBool(131,TW18 > 0) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - --self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - --self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - --self:SetPackedBool(40,self.Panel["SD"] > 0.5) - self:SetPackedBool("DriverValveBLDisconnect",self.DriverValveBLDisconnect.Value == 1.0) - self:SetPackedBool("DriverValveTLDisconnect",self.DriverValveTLDisconnect.Value == 1.0) - for i=1,#self.NetworkSwitches do - local switch = self.NetworkSwitches[i] - self:SetPackedBool(switch,self[switch].Value == 1.0) - end - --self:SetPackedBool("Lamp6",self:ReadTrainWire(6) > 0.5) - --self:SetPackedBool("Lamp1",self:ReadTrainWire(1) > 0.5) - --self:SetPackedBool("Lamp2",self:ReadTrainWire(2) > 0.5) - self:SetPackedBool("DoorsWag",self.BD.Value == 0.0 and self.Panel["V1"] > 0.5) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - if self.VUD2.Blocked > 0 and self.VUD2L.Value > 0.5 then - self.VUD2:TriggerInput("Block",0) - end - if self.VUD2.Blocked == 0 and self.VUD2L.Value == 0 then - self.VUD2:TriggerInput("Block",1) - end - if self.VUD2L.Blocked > 0 and self.VUD2.Value > 0 then - self.VUD2L:TriggerInput("Block",0) - end - if self.VUD2L.Blocked == 0 and self.VUD2.Value == 0 then - self.VUD2L:TriggerInput("Block",1) - end - self:SetPackedBool("VUD2Bl",self.VUD2.Blocked > 0) - self:SetPackedBool("VUD2LBl",self.VUD2L.Blocked > 0) - --[[ - -- LST - self:SetPackedBool(49,self:ReadTrainWire(6) > 0.5) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - self:SetPackedBool(165,self.PB.Value > 0) - - -- AV states - -- for i,v in ipairs(self.Panel.AVMap) do - -- if tonumber(v) - -- then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - -- elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - -- end - -- end - - self:SetPackedBool(62,self.L_3.Value > 0.5) - self:SetPackedBool(64+19,self.VU1.Value > 0.5) - self:SetPackedBool(64+12,self.VU.Value > 0.5) - self:SetPackedBool(64+24,self.RST.Value > 0.5) - self:SetPackedBool(64+7 ,self.AV8B.Value > 0.5) - self:SetPackedBool(64+36,self.VU2.Value > 0.5) - self:SetPackedBool(64+13,self.VU3.Value > 0.5) - self:SetPackedBool("VPR",self.RST.Value == 1.0 and self.Panel["V1"]) - ]] - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, math.min(2.7,self.Pneumatic.BrakeCylinderPressure + 4.0*self.ManualBrake)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, math.abs(self.Electric.I24)/1000.0) - --self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 82.0) - self:SetPackedRatio(11,IGLA_Temperature) - - -- Update ARS system - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/120) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = false - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - --self.RearBogey.ParkingBrake = self.ManualBrake.Value > 0.5 - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return self.RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "UAVAToggle" then - local state = self.UAVA.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UAVA!") - end - if button == "VRDToggle" then - local state = self.VRD.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VRD!") - end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveBLDisconnect:TriggerInput("Set",1) - return - end - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - return - end - - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - - if (button == "UAVAToggle") then - if self.UAVA then - if self.UAVA.Value > 0.5 then - self:PlayOnce("uava_off","cabin") - else - self:PlayOnce("uava_off","cabin") - end - end - return - end -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - - if (not string.find(button,"KVT")) and string.find(button,"KV") then return end - if string.find(button,"KRU") then return end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end diff --git a/lua/entities/_obsolete/gmod_subway_em/shared.lua b/lua/entities/_obsolete/gmod_subway_em/shared.lua deleted file mode 100644 index 62c11c8..0000000 --- a/lua/entities/_obsolete/gmod_subway_em/shared.lua +++ /dev/null @@ -1,91 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameTranslated = "Entities.Em" -ENT.Author = "Oldy" -ENT.Contact = "oldy702@gmail.com" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["relay_close2"] = nil - self.SoundNames["rvt_close"] = nil - self.SoundNames["r1_5_close"] = nil - self.SoundNames["rvt_open"] = nil - self.SoundNames["r1_5_open"] = nil - --[[self.SoundNames["relay_close4"] = {"subway_trains/new/relay_7.wav","subway_trains/new/lsd_4.wav"} - self.SoundNames["pneumo_switch"] = { - "subway_trains/pneumo_8.wav", - "subway_trains/pneumo_9.wav", - } - self.SoundNames["rk_spin"] = "subway_trains/rk_3.wav" - self.SoundNames["rk_stop"] = "subway_trains/rk_4.wav" - ]] -end - -function ENT:InitializeSystems() - -- Электросистема 81-710 - self:LoadSystem("Electric","81_704_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_117DM") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_70")--_lite") - -- Контроллер резервного управления - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - self.Pneumatic.ValveType = 1 - -- Панель управления Е - self:LoadSystem("Panel","81_704_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - self:LoadSystem("Horn") - self:LoadSystem("Announcer") - - self:LoadSystem("ADoorDisable","Relay") - - self:LoadSystem("ALS_ARS","NoARS") -end diff --git a/lua/entities/_obsolete/gmod_subway_em508/cl_init.lua b/lua/entities/_obsolete/gmod_subway_em508/cl_init.lua deleted file mode 100644 index 484d955..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508/cl_init.lua +++ /dev/null @@ -1,1593 +0,0 @@ --------------------------------------------------------------------------------- --- All the models, materials, sounds belong to their corresponding authors. Permission is granted to only distribute these models through Garry's Mod Steam Workshop and the official Metrostroi GitHub accounts for use with Garry's Mod and Metrostroi Subway Simulator. --- --- It is forbidden to use any of these models, materials, sounds and other content for any commercial purposes without an explicit permission from the authors. It is forbidden to make any changes in these files in any derivative projects without an explicit permission from the author. --- --- The following models are (C) 2015-2017 oldy (Aleksandr Kravchenko). All rights reserved. --- - 81-703 Е (models\metrostroi_train\81-703) --- - 81-508 Еm508 (models\metrostroi_train\81-508) --- - 81-707 Ezh (models\metrostroi_train\81-707) --- - 81-708 Еzh1 --- - 81-710 Еzh3 (models\metrostroi_train\81-710) --- - 81-508T Еm508T --- - 81-720 Yauza (models\metrostroi_train\81-720) --- - 81-721 Yauza (intermediate) --- - 81-722 Yubileinyi (models\metrostroi_train\81-722) --- - 81-723 Yubileinyi --- - 81-724 Yubileinyi --------------------------------------------------------------------------------- -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} - -ENT.ButtonMap["Lamp"] = { - pos = Vector(444.31597,-52.43482,37.93294), - ang = Angle(-8,-90+21.5,180), - width = 105, - height = 85, - scale = 0.0625, - - buttons = { - { ID = "L_3Toggle", x=15, y=15, radius=100, tooltip="Лампа: Подсветка приборов\nLamp: Gauges lighting", model = { - var="L_3",speed=16, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["AVU"] = { - pos = Vector(458.31597,-22.43482,32.93294), - ang = Angle(-8,-90+21.5,90+15), - width = 105, - height = 85, - scale = 0.0625, - - buttons = { - {ID = "AVULight", x=30, y=32, radius=20, tooltip="Лампа:Включен АВУ (Автоматический выключатель управления)\nLamp: Automatic control disabler is active", model = { - model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 3, z = -0, - lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.6, var="AVU"} - }}, - { ID = "OtklAVUToggle", x=30, y=60, radius=20, tooltip="Отключение автоматического выключения управления (неисправность АВУ)\nTurn off automatic control disable relay (failure of AVU)", model = { - model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-2, - var="OtklAVU",speed=16, - plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=-1,y=24,z=-2,var="OtklAVUPl", ID="OtklAVUPl",}, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["LAMPS"] = { - pos = Vector(455.349,-50.3,-12.12), - ang = Angle(0,90,-65.5), - width = 315, - height = 100, - scale = 0.0600, - - buttons = { - {ID = "SN", x=233,y=60, radius=10, tooltip="Индикатор: Cигнализация неисправности\nLamp: Overload relay light (overload relay open on current train)", model = {lamp = { - model = "models/metrostroi_train/81-508/508_sn_lamp.mdl", z = 0, - var=131,speed=16, color = Color(190,70,255), - }}}, - {ID = "RedRP", x=255,y=58.8, radius=10, tooltip="Индикатор: Красная лампа реле перегрузки\nLamp: Red overload relay light (power circuits failed to assemble)", model = {lamp = { - model = "models/metrostroi_train/81-508/508_rp1_lamp.mdl", z = 0, - var="RedRP",speed=5, color = Color(190,70,255), - getfunc = function(ent) return ent:GetPackedRatio("LRP") end, - }}}, - {ID = "SD", x=170,y=58.8, radius=20, tooltip="Индикатор: Сигнализация дверей\nLamp: SD door state light (doors are open)", model = {lamp = { - model = "models/metrostroi_train/81-508/508_sd_lamp.mdl", z = 0, - var=40,speed=8, color = Color(180,180,50), - }}}, - {ID = "GreenRP", x=213.5, y=58.75, radius=10, tooltip="Индикатор: Зеленая лампа реле перегрузки\nLamp: Green overload relay light", model = {lamp = { - model = "models/metrostroi_train/81-508/508_rp2_lamp.mdl", z = 0, - var=36,speed=16, color = Color(50,180,180), - }}}, - {ID = "UKS", x=150, y=58.75, radius=10, tooltip="Индикатор: Устройство контроля скорости УКС-20М\nSpeed control device UKS-20M", model = {lamp = { - model = "models/metrostroi_train/81-508/508_uks_lamp.mdl", z = 0, - var="UKS",speed=16, - }}}, - {ID = "Red", x=130, y=58.75, radius=10, tooltip="Индикатор: Обогрев кабины\nLamp: The heater is on", model = {lamp = { - model = "models/metrostroi_train/81-508/508_red_lamp.mdl", z = 0, - var="Red",speed=16, - }}}, - {ID = "AGS", x=84, y=72, radius=10, tooltip="Лампа: Работа АГС (Автоматический гребне смазыватель)\nLamp: AGS (Automatic Creast Greaser", model = {lamp = { - model = "models/metrostroi_train/common/lamps/svetodiod1.mdl", z = 20, color = Color(255,100,80), - var="Red",speed=16, - }}}, - } -} - --- Main panel - -ENT.ButtonMap["AGS"] = { - pos = Vector(455.65,-44.6,-8.62), - ang = Angle(0,-90,60.44), - width = 50, - height = 50, - scale = 0.0588, - - buttons = { - { ID = "VUSToggle", x=0, y=0, w=22, h=20, tooltip="Переключатель: Ближний свет/Дальний свет\nSwitcher: Near Headlights(down)/Far Headlights (up)", model = { - model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=2, - var="VUS",speed=16, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["Main"] = { - pos = Vector(460.5,-30.9,-9.3), - ang = Angle(0,-90,9.44), - width = 315, - height = 240, - scale = 0.0588, - - buttons = { - ----Кнопки - { ID = "DoorSelectToggle", x=165, y=180, radius=20, tooltip="Переключатель: Выбор стороны открытия дверей\nSwitcher:Select side on which doors will open", model = { - model = "models/metrostroi_train/81-508/em508_switcher.mdl",ang = 180,z=2, - var="DoorSelect",speed=16, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - { ID = "DIPonSet", x=50.88, y=137.3, radius=20, tooltip="Вкл. Осв.: Включение освещения\nSwithcer:Turn interior lights on", model = { - model = "models/metrostroi_train/81-508/em508_button_black.mdl",ang = 180,z=0, - var="DIPon",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button1_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "DIPoffSet", x=50.88+38.1*1, y=137.3, radius=20, tooltip="Выкл. Осв.: Отключение освещения\nSwithcer:Turn interior lights off", model = { - model = "models/metrostroi_train/81-508/em508_button_black.mdl",ang = 180,z=0, - var="DIPoff",speed=16, - sndvol = 0.10, snd = function(val) return val and "button3_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "VozvratRPSet", x=50.88+1.4+38.1*2, y=137.3, radius=20, tooltip="ВРП: Возврат РП\nKU:Reset overload relay", model = { - model = "models/metrostroi_train/81-508/em508_button_red.mdl",ang = 180,z=0, - var="VozvratRP",speed=16, - sndvol = 0.10, snd = function(val) return val and "button4_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KSNSet", x=50.88+1.4+38.1*3, y=137.3, radius=20, tooltip="КСН:Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)\nKSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", model = { - model = "models/metrostroi_train/81-508/em508_button_red.mdl",ang = 180,z=0, - var="KSN",speed=16, - sndvol = 0.10, snd = function(val) return val and "button4_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KRZDSet", x=50.88+2+38.1*5, y=137.3, radius=20, tooltip="КРЗД: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing", model = { - model = "models/metrostroi_train/81-508/em508_button_black.mdl",ang = 180,z=-0, - var="KRZD",speed=16, - sndvol = 0.10, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KSDSet", x=50.88+2+38.1*4+2.2, y=137.3, radius=20, tooltip="КСД: Контроль сигнализации дверей(проверка СД)\nKSD: Door state controle(Door check)", model = { - model = "models/metrostroi_train/81-508/em508_button_red.mdl",ang = 180,z=0, - var="KSD",speed=16,vmin=1,vmax=0, - sndvol = 0.10, snd = function(val) return val and "button1_on" or "button1_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KDPSet", x=142+46, y=216, radius=20, radius=20, tooltip="КДП:Правые двери\nKDP: Right doors open", model = { - model = "models/metrostroi_train/81-508/em508_button_red.mdl",ang = 180,z=-0, - var="KDP",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KDLSet", x=142, y=216, radius=20, tooltip="КДЛ: Кнопка левых дверей\nKDL: Left doors open", model = { - model = "models/metrostroi_train/81-508/em508_button_red.mdl",ang = 180,z=0, - var="KDL",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "RezMKSet", x=51.5, y=198, radius=20, tooltip="РМК: Резервное включение мотор-компрессора\nEMC: Emergency motor-compressor enabling", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-19, - var="RezMK",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),color = Color(78,65,38), - }}, - { ID = "KU1Toggle", x=111,y=199,radius=20, tooltip="МК: Включение мотор-компрессора\nMK: Turn on motor-compressor", model = { - model = "models/metrostroi_train/81-508/em508_switcher.mdl", z=-2, - var="KU1",speed=6, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - { ID = "VUD1Toggle", x=238.6,y=198,radius=20, tooltip="ВУД: Закрытие дверей\nVUD: Door control toggle (close doors)", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-19, - var="VUD1",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),color = Color(120,120,120), - }}, - } -} - -ENT.ButtonMap["IGLAButtons"] = { - pos = Vector(420.4,-56.1,9.87), - ang = Angle(-0,180-0.5,90), - width = 87, - height = 70, - scale = 0.0625, - buttons = { - {ID = "IGLA1USet",x=11, y=39-6, w=12, h=7, tooltip="ИГЛА: Первая кнопка вверх"}, - {ID = "IGLA1Set",x=11, y=46-6, w=12, h=7, tooltip="ИГЛА: Первая кнопка"}, - {ID = "IGLA1DSet",x=11, y=53-6, w=12, h=7, tooltip="ИГЛА: Первая кнопка вниз"}, - {ID = "IGLA2USet",x=65, y=39-6, w=12, h=7, tooltip="ИГЛА: Вторая кнопка вверх"}, - {ID = "IGLA2Set",x=65, y=46-6, w=12, h=7, tooltip="ИГЛА: Вторая кнопка"}, - {ID = "IGLA2DSet",x=65, y=53-6, w=12, h=7, tooltip="ИГЛА: Вторая кнопка вниз"}, - {ID = "!IGLASR",x=17.9, y=10.5, radius=3, tooltip="ИГЛА: SR", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLASR",color=Color(175,250,20),z=-2.5}, - }}, - {ID = "!IGLARX",x=27.5, y=10.5, radius=3, tooltip="ИГЛА: RX", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLARX",color=Color(255,56,30),z=-2.5}, - }}, - {ID = "!IGLAErr",x=40.5, y=10.5, radius=3, tooltip="ИГЛА: Отказ", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAErr",color=Color(255,168,000),z=-2.5}, - }}, - {ID = "!IGLAOSP",x=50, y=10.5, radius=3, tooltip="ИГЛА: ОСП", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOSP",color=Color(175,250,20),z=-2.5}, - }}, - {ID = "!IGLAPI",x=59.3, y=10.5, radius=3, tooltip="ИГЛА: ПИ", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAPI",color=Color(255,56,30),z=-2.5}, - }}, - {ID = "!IGLAOff",x=68.3, y=10.5, radius=3, tooltip="ИГЛА: Откл", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOff",color=Color(255,56,30),z=-2.5}, - }}, - } -} -ENT.ButtonMap["IGLA"] = { - pos = Vector(420.4-0.65,-56.1-0.15,9.87-1.15), - ang = Angle(-0,180-0.5,90), - width = 512, - height = 128, - scale = 0.025/2.96, -} - -ENT.ButtonMap["Back1"] = { - pos = Vector(405.5,-50.9,34.0), - ang = Angle(0,90,90), - width = 280, - height = 250, - scale = 0.1088, - - buttons = { - {ID = "!ULSPM", x=121, y=71, radius=30, tooltip="УЛСПМ (Уствойство связи пассажир-машинист)\nULSPM"}, - {ID = "!TonalARS", x=191, y=71, radius=30, tooltip="Тональное устройство - Звонок\nRing"}, - {ID = "!PressureRelay", x=-9, y=236, radius=50, tooltip="Регулятор давления\nPressure controller"}, - {ID = "!Reproductor", x=90, y=9, radius=30, tooltip="Громкоговоритель\nSpeaker"}, - {ID = "!LVFuses", x=70, y=145, w=180, h=50, tooltip="Щиток с низковольтными предохранителями\nShield with low-voltage fuses"}, - {ID = "R_UNchToggle", x=-30, y=20, w=100, h=140, tooltip="Питание статива РРИ\nRadioinformator control", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=15, ang = 180, - var="R_UNch",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,90), - }}, - } -} - -ENT.ButtonMap["Back2"] = { - pos = Vector(405.5,25.9,4.0), - ang = Angle(0,90,90), - width = 280, - height = 340, - scale = 0.1088, - - buttons = { - {ID = "!HVFuses", x=0, y=12, w=280, h=130, tooltip="Блок предохранителей\nBlock Fuse HV fuses"}, - {ID = "!Relays", x=0, y=170, w=300, h=270, tooltip="Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель\nThe box with the devices for battery recharging and door pressure diffuser"}, - {ID = "!Heater", x=280, y=170, w=80, h=300, tooltip="Печка\nThe heater"}, - } -} - -ENT.ButtonMap["Back3"] = { - pos = Vector(405.5,-20,52.0), - ang = Angle(0,90,90), - width = 500, - height = 200, - scale = 0.1088, - - buttons = { - {ID = "!RTM", x=394, y=191, radius=30, tooltip="Пульт диспетчерской радиосвязи\nRemote radio with dispatcher"}, - {ID = "!ULSPMSpeaker", x=289, y=66, radius=40, tooltip="Блок громкоговорителя связи пассажир-машинист\nRemote radio with dispatcher"}, - {ID = "!Amplifier", x=50, y=77, radius=40, tooltip="Блок усилителя поездной радиостанции\namplifier unit of train station"}, - } -} - ---VU1 Panel -ENT.ButtonMap["VU1"] = { - pos = Vector(456+7.6,-16.7,31.2), - ang = Angle(0,270,90), - width = 120, - height = 300, - scale = 0.0625, - - buttons = { - {ID = "KRPSet", x=43, y=210, w=50, h=110, tooltip="РРП: Резервный пуск \nRRP: Motor emergency toggle", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=20, - var="KRP",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), color = Color(80,80,80), - }}, - } -} - - -ENT.ButtonMap["KRR"] = { - pos = Vector(402.5,-36.8,10), - ang = Angle(0,90,90), - width = 335, - height = 380, - scale = 0.0625, - - buttons = { - {ID = "KRRSet", x=170, y=120, radius=20, tooltip="KРР: Кнопка разворота реверсоров\nKRR: Button of enabling reversors", model = { - model = "models/metrostroi_train/Equipment/button_ezh_6.mdl",z=15, - var="KRR", speed=16, min=1,max=0, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button1_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - } -} - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(456+7.6,-16.15,12.0), - ang = Angle(0,270,90), - width = 100, - height = 220, - scale = 0.0625, - - buttons = { - {ID = "VUToggle", x=0, y=110, w=100, h=110, tooltip="ВУ: Выключатель Управления\nVU: Train control", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), color = Color(200,200,250), - }}, - - } -} - - -ENT.ButtonMap["Stopkran"] = { - pos = Vector(459+7,27,20.7), - ang = Angle(0,-90,90), - width = 200, - height = 1300, - scale = 0.1/2, - buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="Стопкран\nEmergency brake"}, - } -} - -ENT.ButtonMap["Tsepi"] = { - pos = Vector(456+7.6,-16.15,10.5), - ang = Angle(0,273,90), - width = 85, - height = 50, - scale = 0.0625, - - buttons = { - {x=0,y=0,w=85,h=50,tooltip="Напряжение цепей управления"}, - } -} - -ENT.ButtonMap["AVMain"] = { - pos = Vector(403.5,40.8,42), - ang = Angle(0,90,90), - width = 335, - height = 380, - scale = 0.0625, - - buttons = { - {ID = "AV8BToggle", x=0, y=0, w=300, h=380, tooltip="АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", model = { - model = "models/metrostroi_train/switches/automain.mdl", z=43, ang = -90, - var="AV8B",speed=6, vmin=0.0,vmax=1, skin=2, - sndvol = 3, snd = function(val) return val and "av8_on" or "av8_off" end, - }}, - } -} ----AV1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(403.5,41,16), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VU3Toggle", x=0, y=0, w=100, h=140, tooltip="ВУ3: Освещение кабины\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU3",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU2Toggle", x=110, y=0, w=100, h=140, tooltip="ВУ2: Аварийное освещение\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU2",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU1Toggle", x=220, y=0, w=100, h=140, tooltip="ВУ1: Печь отопления кабины\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU1",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), color = Color(150,150,150), - }}, - } -} - -ENT.ButtonMap["AV2"] = { - pos = Vector(403.5,30.40,31.1), - ang = Angle(0,90,90), - width = 180, - height = 136, - scale = 0.0625, - - buttons = { - {ID = "RSTToggle", x=0, y=0, w=100, h=136, tooltip="РСТ: Радиостанция\nRST: Radiostation", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=-1,y=24,z=0,var="RSTPl", ID="RSTPl",}, - var="RST",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - - --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(403.5,16,20.5), - ang = Angle(0,90,90), - width = 250, - height = 300, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=100, y=0, w=250, h=140, tooltip="АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)\nVB: Battery on/off", model = { - model = "models/metrostroi_train/Equipment/vu22_brown_3.mdl", z=15, ang = 180, - var="VB",speed=6, - sndvol = 1, snd = function(val) return val and "vu223_on" or "vu223_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "R_RadioToggle", x=30, y=180, w=250, h=140, tooltip="Питание радиоинформатора +50В\nRadioinformator", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=15, ang = 180, - var="R_Radio",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - -ENT.ButtonMap["ASNP"] = { - pos = Vector(438.59+4,-55.33-1.78,43.99), - ang = Angle(-.4,180,90), - --pos = Vector(462.77,-51.43-1.3,5.85), - --ang = Angle(-.4,230,90), - width = 220, - height = 100, - scale = 0.0625, - - buttons = { - {ID = "R_ASNPMenuSet",x=100, y=40, radius=8, tooltip = "Информатор: Меню",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPMenu",speed=12, vmin=0, vmax=0.9, - sndvol = 0.8, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPUpSet",x=140, y=8, radius=8, tooltip = "Информатор: Вверх",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPUp",speed=12, vmin=0, vmax=0.9, - sndvol = 0.8, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPDownSet",x=140, y=8+15, radius=8, tooltip = "Информатор: Вниз",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPDown",speed=12, vmin=0, vmax=0.9, - sndvol = 0.8, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPOnToggle",x=52, y=8, radius=8, tooltip = "Информатор: Включение",model = { - model = "models/metrostroi_train/81-720/tumbler2.mdl", ang=0, z = 7, - var="R_ASNPOn",speed=12, vmin=1, vmax=0, - sndvol = 0.8, snd = function(val) return val and "pnm_on" or "pnm_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["ASNPScreen"] = { - pos = Vector(438.59,-55.33-1.3,43.99), - ang = Angle(-.4,180,90), - width = 512, - height = 128, - scale = 0.025/3, -} - - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(460,46.0,-2.0), - ang = Angle(0,-70,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(452.5,61.5,18.44), - ang = Angle(0,-17.5,90), - width = 60, - height = 200, - scale = 0.0625, - - buttons = { - {ID = "R_Program1Set", x=12, y=200, radius=30, tooltip="Программа 1\nProgram 1", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl", z=-26, color = Color(255,255,255), - var="R_Program1",speed=6, - sndvol = 1, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_Program2Set", x=47, y=200, radius=30, tooltip="Программа 2\nProgram 2", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl", z=-26, color = Color(255,255,255), - var="R_Program2",speed=6, - sndvol = 1, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "VDLSet", x=30, y=42, radius=30, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-3, color = Color(255,255,255), - var="VDL",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "VUD2Toggle", x=30, y=138, radius=30, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-3, color = Color(255,255,255), - var="VUD2",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - - --- Pneumatic instrument panel 2 -ENT.ButtonMap["PneumaticManometer"] = { - pos = Vector(451.73+7.6,-54,14.04), - ang = Angle(0,-144,90), - width = 76, - height = 70, - scale = 0.0625, - - buttons = { - {ID = "!LinesPressure", x=68,y=65,radius=68,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(454.07+7.6,-50.11,5.9), - ang = Angle(0,-90-27,90), - - width = 76, - height = 70, - scale = 0.0625, - - buttons = { - {ID = "!CylinderPressure", x=38,y=35,radius=35,tooltip="Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - } -} -ENT.ButtonMap["DriverValveBLDisconnect"] = { - pos = Vector(443.5+7,-53,-37.61), - ang = Angle(-90,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=95, h=100, tooltip="Кран двойной тяги тормозной магистрали\nTrain line disconnect valve", model = { - var="DriverValveBLDisconnect",sndid="brake_disconnect", - sndvol = 1, snd = function(val) return "disconnect_valve" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["DriverValveTLDisconnect"] = { - pos = Vector(447+5,-46,-31), - ang = Angle(-90,-10,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=75, h=100, tooltip="Кран двойной тяги напорной магистрали\nBrake line disconnect valve", model = { - var="DriverValveTLDisconnect",sndid="train_disconnect", - sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["Meters"] = { - pos = Vector(461.65213,-56.696617,37.528275), - ang = Angle(0,-148,90), - width = 73, - height = 140, - scale = 0.0625, - - buttons = { - {x=13, y=22, w=60, h=50, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=13, y=81, w=60, h=50, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} - - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(468+7,-45.0,-59.9), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - {ID = "FrontTrainLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - } -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-468-7,45.0,-59.9), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "RearTrainLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - {ID = "RearBrakeLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - } -} -ENT.ButtonMap["GV"] = { - pos = Vector(139,66,-54), - ang = Angle(0,180,90), - width = 170, - height = 170, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Главный выключатель", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - }}, - } -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-168,68.6,-50), - ang = Angle(0,180,90), - width = 170, - height = 80, - scale = 0.1, - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 80, tooltip="Выключение воздухораспределителя"}, - } -} - - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(444+5,56,-5), - ang = Angle(0,-70,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)\nUAVA: Universal Automatic Autostop Disabler (autostop disable)", model = { - plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl",}, - var="UAVA", - sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "UAVAContactSet",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - -for i=0,4 do - ENT.ClientProps["TrainNumberL"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,69,-26), - ang = Angle(180,0,180), - skin=0, - } -end -for i=0,4 do - ENT.ClientProps["TrainNumberR"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,-66.4,-26), - ang = Angle(0,0,0), - skin=0, - } -end - -ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(455+7.0,35,14.0), - ang = Angle(0,-90,90), - width = 400, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=300,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=350,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=0,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=0,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=50,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=50,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - - -ENT.ButtonMap["Front"] = { - pos = Vector(468,16,43.4), - ang = Angle(0,-90,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=642,h=1900, tooltip="Передняя дверь\nFront door", model = { - var="door1",sndid="door1", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(416,64,43.4), - ang = Angle(0,0,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста\nCabin door", model = { - var="door2",sndid="door2", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(384,-16,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door", model = { - var="door3",sndid="door3", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["PassengerDoor1"] = { - pos = Vector(384,16,43.4), - ang = Angle(0,-90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door", model = { - var="door3",sndid="door3", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["Back"] = { - pos = Vector(-470,-15,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "BackDoor",x=0,y=0,w=642,h=1900, tooltip="Задняя дверь", model = { - var="door4",sndid="door4", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ClientPropsInitialized = false -if not ENT.ClientSounds["br_334"] then ENT.ClientSounds["br_334"] = {} end -table.insert(ENT.ClientSounds["br_334"],{"brake",function(ent,_,var) return "br_334_"..var end,1,1,50,1e3,Angle(-90,0,0)}) -ENT.ClientProps["brake"] = { - model = "models/metrostroi_train/81-703/cabin_cran_334.mdl", - pos = Vector(448.62+7.6,-51.69,-3.0), - ang = Angle(0,-133,0), -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/81-707/kv_ezh.mdl", - pos = Vector(451.36+6.4,-24.73,-3.5), - ang = Angle(0,180+15,0) -} - -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(451.36+7.6,-23.43,-4.7), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi_train/81-707/cran1.mdl", - pos = Vector(441.0+8.2,-55.30,-33.91), - ang = Angle(0,92,-90), -} - -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi_train/81-707/cran3.mdl", - pos = Vector(444.482483+8.4,-50.746734,-27.333017), - ang = Angle(90,-100,90), -} -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi_train/81-703/cabin_parking.mdl", - pos = Vector(449.118378+7.6,33.493385,-14.713276), - ang = Angle(-90.000000,8.000000,0.000000), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/Equipment/arrow_nm.mdl", - pos = Vector(448.20+7.87,-50.91-4,12.1), - ang = Angle(-90,-90-48,90) -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/Equipment/arrow_tm.mdl", - pos = Vector(448.20+7.89,-50.94-4,12.1), - ang = Angle(-90,-90-48,90) -} - -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/Equipment/arrow_nm.mdl", - pos = Vector(453.199+7.4,-52.52,2.73000), - ang = Angle(222,80,-90.000000), -} ----------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(450.284607+6.0,-56.887834,26.5+0), - ang = Angle(-90,0,-60) -} - -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(450.284607+5.9,-56.987834,30.5+0.4), - ang = Angle(-90,0,-60) -} - -ENT.ClientProps["volt1"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(458.81455+4.2,-19.63349,7.95662-1+0.4), - ang = Angle(-90,0,0), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(0,0,0) -} - - ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(464.0,15,22.0), - ang = Angle(0,-90,90), - width = 550, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=0,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=50,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=450,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=450,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=500,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=500,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - -ENT.ClientProps["Ema_salon"] = { - model = "models/metrostroi_train/81-508/81-508_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["E_informator"] = { - model = "models/metrostroi_train/81-703/703_asotp.mdl", - pos = Vector(7,1.5,2), - ang = Angle(0,0,0) - } -ENT.ClientProps["tab"] = { - model = "models/metrostroi_train/Equipment/tab.mdl", - pos = Vector(-0.0,0,-0), - ang = Angle(0,0,0), - skin = 2, - } -ENT.ClientProps["route"] = { - model = "models/metrostroi_train/common/routes/ezh/route_holder.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} - ENT.ClientProps["route1"] = { - model = "models/metrostroi_train/common/routes/ezh/route_number1.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} - ENT.ClientProps["route2"] = { - model = "models/metrostroi_train/common/routes/ezh/route_number2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) - } -ENT.ClientProps["Ema_salon2"] = { - model = "models/metrostroi_train/81-508/81-508_underwagon.mdl", - pos = Vector(0,1,-18), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_emer"] = { - model = "models/metrostroi_train/81-508/81-508_lamps_emer.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), -} -ENT.ClientProps["Lamps_full"] = { - model = "models/metrostroi_train/81-508/81-508_lamps.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), -} - -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(445+7, -30, -68), - ang = Angle(0,-90,0) -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(445+7, 30, -68), - ang = Angle(0,-90,0) -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(-450-6, -30, -68), - ang = Angle(0,90,0) -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(-450-6, 30, -68), - ang = Angle(0,90,0) -} -----Циферблат -ENT.ClientProps["speedo1"] = { - model = "models/metrostroi_train/81-508/digit.mdl", - pos = Vector(456.79,-39.0,-8.93), - ang = Angle(113,0,0), - color = Color(255,170,60), -} -ENT.ClientProps["speedo2"] = { - model = "models/metrostroi_train/81-508/digit.mdl", - pos = Vector(456.79,-39.0+0.44,-8.93), - ang = Angle(113,0,0), - color = Color(255,170,60), -} - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(344.9-0.1*k - 233.6*i,-63.86*(1-2.02*k),-5.75) - else return Vector(344.9-0.1*(1-k) - 233.6*i,-63.86*(1-2.02*k),-5.75) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi_train/81-508/81-508_door_right.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,90 + 180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi_train/81-508/81-508_door_left.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,90 + 180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/81-508/81-508_door_front.mdl", - pos = Vector(460.62+7.4,-14.53,-7.23), - ang = Angle(0,-90,0), -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/81-508/81-508_door_front.mdl", - pos = Vector(-462.6-8,16.53,-7.24), - ang = Angle(0,90,0), -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/81-508/81-508_door_pass.mdl", - pos = Vector(396.7-13.2,-15.0,-13), - ang = Angle(0,90,0), -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/81-508/81-508_door_cab.mdl", - pos = Vector(411.17+7.6,66.05,-6.38), - ang = Angle(0,-90,0), -} -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81-703/cabin_uava.mdl", - pos = Vector(449+7.7,56.0,-10.24349), - ang = Angle(0,-90,90) -} - -ENT.ClientProps["RedLights"] = { - model = "models/metrostroi_train/81-703/81-703_red_light.mdl", - pos = Vector(-23+7.2,1,-191), - ang = Angle(0,0,0.000000), -} -ENT.ClientProps["DistantLights"] = { - model = "models/metrostroi_train/81-703/81-703_projcetor_light.mdl", - pos = Vector(-23+8.2,1,-191), - ang = Angle(00.000000,0.000000,0.000000), -} -ENT.ClientProps["WhiteLights"] = { - model = "models/metrostroi_train/81-703/81-703_front_light.mdl", - pos = Vector(-23+7.6,1,-191), - ang = Angle(0,0,0), -} - -ENT.Lights = { - [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(169,130,88), brightness = 2 ,fov = 90 }, - [22] = { "headlight", Vector(432,-45,45.2), Angle(90,0,0), Color(255,125,25), hfov=90, vfov=90,farz=66,brightness = 9,shadows = 1, texture = "effects/flashlight/soft"}, -} -function ENT:Initialize() - self.BaseClass.Initialize(self) - --self.Train:SetPackedRatio("EmergencyValve_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyValveEPK_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyBrakeValve_dPdT", leak) - self.ASNP = self:CreateRT("717ASNP",512,128) - self.IGLA = self:CreateRT("717IGLA",512,128) - self.CraneRamp = 0 - self.ReleasedPdT = 0 - self.EmergencyValveRamp = 0 - self.EmergencyValveEPKRamp = 0 - self.EmergencyBrakeValveRamp = 0 -end - -function ENT:UpdateTextures() - self.Texture = self:GetNW2String("texture") - self.PassTexture = self:GetNW2String("passtexture") - self.CabinTexture = self:GetNW2String("cabtexture") - - self.Number = self:GetWagonNumber() - self.LastStation = self:GetNW2Int("LastStation") - - self.RouteNumber = self:GetNW2String("RouteNumber","00") - - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabinTexture] - for _,ent in pairs(self.ClientEnts) do - if not IsValid(ent) then continue end - for k,v in pairs(ent:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - ent:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - ent:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - ent:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end - - local count = math.max(4,math.ceil(math.log10(self.Number))) - for i=0,4 do - self:ShowHide("TrainNumberL"..i,i 0,self:GetPackedRatio("Headlight")) - if IsValid(self.GlowingLights[1]) then - self.GlowingLights[1]:SetEnableShadows(true) - if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then - self.GlowingLights[1]:SetFarZ(3144) - end - if self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 5144 then - self.GlowingLights[1]:SetFarZ(5144) - end - end - local val = self.Anims["gauges_lit"] and self.Anims["gauges_lit"].value^3 or 0 - self:SetLightPower(22,val>0,val)--self:GetPackedBool("PanelLights")) - - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - --[[ - if self.FrontDoor < 90 and self:GetPackedBool(157) or self.FrontDoor > 0 and not self:GetPackedBool(157) then - --local FrontDoorData = self.ClientProps["door1"] - --FrontDoor:SetLocalPos(FrontDoorData.pos + Vector(-2,-0,0)) - self.FrontDoor = math.max(0,math.min(90,self.FrontDoor + (self:GetPackedBool(157) and 1 or -1)*self.DeltaTime*180)) - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - if not self.ButtonMapMatrix["InfoTable"] then - self.ButtonMapMatrix["InfoTable"] = {} - self.ButtonMapMatrix["InfoTable"].scale = 0.1/2 - end - self.ButtonMapMatrix["InfoTable"].ang = Angle(0,90+self.FrontDoor,90) - self.ButtonMapMatrix["InfoTable"].pos = Vector(458.0,-16.0,12.0) + Vector(0,1.5,0)*self.FrontDoor/90 - - end - ]] - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - - -- Parking brake animation - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self:GetPackedRatio("ManualBrake")*360*3.2 - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - local BAsnd = math.floor(self.TrueBrakeAngle/10) - if self.BrakeAngleSND ~= BAsnd then - if not IsValid(self.Sounds["parking_brake_rolling"]) or self.Sounds["parking_brake_rolling"]:GetState() ~= GMOD_CHANNEL_PLAYING then - self:PlayOnce("parking_brake_rolling","bass",1,1) - end - self.BrakeAngleSND = BAsnd - end - local Lamps = self:GetPackedBool(20) and 0.6 or 1 - self:ShowHideSmooth("Lamps_emer",self:Animate("lamps_emer",self:GetPackedBool("Lamps_emer") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Gauges_lit",self:Animate("gauges_lit",(self:GetPackedBool("L_3") and self:GetPackedBool("VB")) and 1 or 0,0,1,12,false)) - - self:Animate("KRR", self:GetPackedBool("KRR") and 0 or 1,0,1, 16, false) - self:Animate("KRP", self:GetPackedBool(113) and 1 or 0,0,1, 16, false) - - - self:ShowHideSmooth("RedLights",self:Animate("redlights",self:GetPackedBool("RedLight") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("WhiteLights",self:Animate("whitelights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DistantLights",self:Animate("distantlights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false)) - - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 0 or 1,0.25,0.5, 4,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.25,0, 4,false) - - self:Animate("UAVALever", self:GetPackedBool(152) and 0 or 1, 0,0.25, 128, 3,false) - - - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake", 1-self:GetPackedRatio(0), 0.00, 0.48, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0, 0.31, 2,false) - self:Animate("reverser", self:GetPackedRatio(2), 0.26, 0.35, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0.6,0.5,45,3) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0.133, 0.907, 359,3)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0.133, 0.907, 359,3)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0, 0.95, 359,3)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.632,0.36,92,2) - self:Animate("ampermeter", self:GetPackedRatio(8), 0.632,0.36, nil, nil, 92,20,3) - - - local door1 = self:Animate("door1", self:GetPackedBool(157) and 0.99 or 0,0,0.22, 1024, 1) - local door2 = self:Animate("door2", self:GetPackedBool(156) and 0.99 or 0,0,0.25, 1024, 1) - local door3 = self:Animate("door3", self:GetPackedBool(158) and 0.99 or 0,1,0.79, 1024, 1) - local door4 = self:Animate("door4", self:GetPackedBool(159) and 0.99 or 0,1,0.77, 1024, 1) - - if self.Door1 ~= (door1 > 0) then - self.Door1 = door1 > 0 - self:PlayOnce("door1","bass",self.Door1 and 1 or 0) - end - if self.Door2 ~= (door2 > 0) then - self.Door2 = door2 > 0 - self:PlayOnce("door2","bass",self.Door2 and 1 or 0) - end - if self.Door3 ~= (door3 > 0) then - self.Door3 = door3 > 0 - self:PlayOnce("door3","bass",self.Door3 and 1 or 0) - end - if self.Door4 ~= (door4 > 0) then - self.Door4 = door4 > 0 - self:PlayOnce("door4","bass",self.Door4 and 1 or 0) - end - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,0.35, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 0 or 1,0,0.35, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 1 or 0,0,0.35, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,0.35, 3, false) - - self:ShowHideSmooth("AVULight_light",self:Animate("AVUl",self:GetPackedBool(38) and 1 or 0,0,1,10,false)) - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - ---BIG Digits - if self:GetPackedBool(32) then - local speed = self:GetPackedRatio("Speed")*100.0 - if IsValid(self.ClientEnts["speedo1"])then - self.ClientEnts["speedo1"]:SetSkin(math.floor(speed)%10) - end - if IsValid(self.ClientEnts["speedo2"])then - self.ClientEnts["speedo2"]:SetSkin(math.floor(speed/10)) - end - end - - self:ShowHide("speedo1",self:GetPackedBool(32)) - self:ShowHide("speedo2",self:GetPackedBool(32)) - - -- Animate doors ---self:InitializeSounds() - if not self.DoorStates then self.DoorStates = {} end - if not self.DoorLoopStates then self.DoorLoopStates = {} end - for i=0,3 do - for k=0,1 do - local st = k==1 and "DoorL" or "DoorR" - local doorstate = self:GetPackedBool(st) - local id,sid = st..(i+1),"door"..i.."x"..k - local state = self:GetPackedRatio(id) - --print(state,self.DoorStates[state]) - if (state ~= 1 and state ~= 0) ~= self.DoorStates[id] then - if doorstate and state < 1 or not doorstate and state > 0 then - else - if state > 0 then - self:PlayOnce(sid.."o","",1,math.Rand(0.8,1.2)) - else - self:PlayOnce(sid.."c","",1,math.Rand(0.8,1.2)) - end - end - self.DoorStates[id] = (state ~= 1 and state ~= 0) - end - if (state ~= 1 and state ~= 0) then - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) + 2*self.DeltaTime,0,1) - else - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) - 6*self.DeltaTime,0,1) - end - self:SetSoundState(sid.."r",self.DoorLoopStates[id],0.8+self.DoorLoopStates[id]*0.2) - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - local dlo = 1 - local dro = 1 - if self.Anims[n_l] then - dlo = math.abs(state-(self.Anims[n_l] and self.Anims[n_l].oldival or 0)) - if dlo <= 0 and self.Anims[n_l].oldspeed then dlo = self.Anims[n_l].oldspeed/14 end - end - self:Animate(n_l,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - self:Animate(n_r,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - end - end - - -- Door transient - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - local door_state1 = self:GetPackedBool(21) - local door_state2 = self:GetPackedBool(25) - if door_state1 ~= self.PrevDoorState1 then - self.PrevDoorState1 = door_state1 - self.Transient = 1.00 - end - if door_state2 ~= self.PrevDoorState2 then - self.PrevDoorState2 = door_state2 - self.Transient = 1.00 - end - - local dT = self.DeltaTime - local speed = self:GetPackedRatio("Speed")*100.0 - local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) - local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1)) - local rol40p = Lerp((speed-23)/50,0.6,1) - local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1)) - local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2) - local rol80 = math.Clamp((speed-70)/5,0,1) - local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_10",rol10,0.6) - self:SetSoundState("rolling_40",rol40,rol40p) - self:SetSoundState("rolling_70",rol70,rol70p) - self:SetSoundState("rolling_80",rol80,rol80p) - --[[ - local sign = 1 - if dPdT < 0 then sign = -1 end - if self.PrevDpSign ~= sign then - self.PrevDpSign = sign - self:SetSoundState("release",0.0,0.0) - end]] - - - local dT = self.DeltaTime - local threshold = 0.01 - local dPdT = self:GetPackedRatio("BrakeCylinderPressure_dPdT") - self.ReleasedPdT = math.Clamp(self.ReleasedPdT + 4*(-self:GetPackedRatio("BrakeCylinderPressure_dPdT",0)-self.ReleasedPdT)*dT,0,1) - --print(dPdT) - self:SetSoundState("release1",math.Clamp(self.ReleasedPdT,0,1)^1.65,1.0) - - if self:GetPackedBool(22) then - self.CraneRamp = self.CraneRamp + 1.0*((0.9*self:GetPackedRatio("Crane_dPdT",0))-self.CraneRamp)*dT - self:SetSoundState("crane334_brake",0,1.0) - self:SetSoundState("crane334_brake_slow",0,1.0) - self:SetSoundState("crane334_release",0,1.0) - else - self.CraneRamp = math.Clamp(self.CraneRamp + 8.0*((1*self:GetPackedRatio("Crane_dPdT",0))-self.CraneRamp)*dT,-1,1) - self:SetSoundState("crane334_brake",math.Clamp(((-self.CraneRamp)-0.5)/0.5,0,1),1.0) - self:SetSoundState("crane334_brake_slow",math.Clamp((-self.CraneRamp)*2,0,1),1.0) - self:SetSoundState("crane334_release",math.Clamp(self.CraneRamp,0,1),1.0) - end - local emergencyValveEPK = self:GetPackedRatio("EmergencyValveEPK_dPdT", 0) - self.EmergencyValveEPKRamp = math.Clamp(self.EmergencyValveEPKRamp + 1.0*((0.5*emergencyValveEPK)-self.EmergencyValveEPKRamp)*dT,0,1) - self:SetSoundState("epk_brake",self.EmergencyValveEPKRamp,1.0) - if emergencyValveEPK > 0 and not self.EmergencyValveEPKStart then - self:PlayOnce("epk_brake_start","bass",1,1) - self.EmergencyValveEPKStart = true - end - if emergencyValveEPK <= 0 and self.EmergencyValveEPKStart then - self.EmergencyValveEPKStart = false - end - - local emergencyBrakeValve = self:GetPackedRatio("EmergencyBrakeValve_dPdT", 0) - self.EmergencyBrakeValveRamp = math.Clamp(self.EmergencyBrakeValveRamp + 1.0*((0.5*emergencyBrakeValve)-self.EmergencyBrakeValveRamp)*dT,0,1) - self:SetSoundState("valve_brake",self.EmergencyBrakeValveRamp,1.0) - if emergencyBrakeValve > 0 and not self.EmergencyBrakeValveStart then - self:PlayOnce("valve_brake_start","bass",1,1) - self.EmergencyBrakeValveStart = true - end - if emergencyBrakeValve <= 0 and self.EmergencyBrakeValveStart then - self.EmergencyBrakeValveStart = false - end - self:SetSoundState("pneumo_idle",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - local emergencyValve = self:GetPackedRatio("EmergencyValve_dPdT", 0) - self.EmergencyValveRamp = math.Clamp(self.EmergencyValveRamp + 1.0*((0.5*emergencyValve)-self.EmergencyValveRamp)*dT,0,1) - self:SetSoundState("emer_brake",self.EmergencyValveRamp,1.0) - if emergencyValve > 0 and not self.EmergencyValveStart then - self:PlayOnce("emer_brake_start","bass",1,1) - self.EmergencyValveStart = true - end - if emergencyValve <= 0 and self.EmergencyValveStart then - self.EmergencyValveStart = false - end - - - -- Compressor - local state = self:GetPackedBool(20) - self:SetSoundState("compressor",state and 0.6 or 0,1) - -- ARS/ringer alert - state = self:GetPackedBool(39) - if state then - self:SetSoundState("ring_old",0.05,0.75) - else - self:SetSoundState("ring_old",0,0) - end - - state = self:GetPackedBool("VPR") - if state then - self:SetSoundState("vpr",1,1) - else - self:SetSoundState("vpr",0,0) - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self:SetSoundState("rk",state and 0.7 or 0,1) - - local work = self:GetNW2Bool("ASNPPlay") - local playing = self:GetNW2Bool("AnnouncerPlaying", false) - self.NoiseVolume = self.NoiseVolume or 0 - local buzzvolume = 0 - if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then buzzvolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end - if self.NoiseVolume > buzzvolume then - self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(buzzvolume-self.NoiseVolume)*dT,0.1,1) - else - self.NoiseVolume = math.Clamp(self.NoiseVolume + 0.5*(buzzvolume-self.NoiseVolume)*dT,0.1,1) - end - for k,v in ipairs(self.AnnouncerPositions) do - local play = playing and work - for i=1,2 do - self:SetSoundState(Format("announcer_noise%d_%d",i,k),play and self.NoiseVolume or 0,1) - end - if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(play and 1 or 0) end - end -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end -function ENT:DrawPost(special) - --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) - -if self.InfoTableTimeout and (CurTime() < self.InfoTableTimeout) then - self:DrawOnPanel("InfoTableSelect",function() - local text = self:GetNW2String("FrontText","") - local col = text:find("ЗЕЛ") and Color(100,200,0) or text:find("СИН") and Color(0,100,200) or text:find("МАЛ") and Color(200,100,200) or text:find("ОРА") and Color(200,200,0) or text:find("БИР") and Color(48,213,200) or Color(255,0,0) - draw.DrawText(self:GetNW2String("RouteNumber","") .. " " .. text,"MetrostroiSubway_InfoPanel",260, -100,col,TEXT_ALIGN_CENTER) - end) - end - - - self.RTMaterial:SetTexture("$basetexture", self.ASNP) - self:DrawOnPanel("ASNPScreen",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(256,64,512,128,0) - end) - - self.RTMaterial:SetTexture("$basetexture", self.IGLA) - self:DrawOnPanel("IGLA",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(256,64+22,512,128+22,0) - end) - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end - -function ENT:OnPlay(soundid,location,range,pitch) - if location == "stop" then - if IsValid(self.Sounds[soundid]) then - self.Sounds[soundid]:Pause() - self.Sounds[soundid]:SetTime(0) - end - return - end - if location == "bass" then - if soundid == "VDOL" then - return range > 0 and "vdol_on" or "vdol_off",location,1,pitch - end - if soundid == "VDOP" then - return range > 0 and "vdor_on" or "vdor_off",location,1,pitch - end - if soundid == "VDZ" then - return range > 0 and "vdz_on" or "vdz_off",location,1,pitch - end - if soundid:sub(1,4) == "IGLA" then - return range > 0 and "igla_on" or "igla_off",location,1,pitch - end - if soundid == "LK2" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk2_on" or "lk2_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "LK3" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk3_on" or "lk3_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "RVT" then - return range > 0 and "rvt_on" or "rvt_off",location,1,pitch - end - if soundid == "R1_5" then - return range > 0 and "r1_5_on" or "r1_5_off",location,1,pitch - end - if soundid == "RPB" then - return range > 0 and "rpb_on" or "rpb_off",location,1,pitch - end - if soundid == "KD" then - return range > 0 and "kd_on" or "kd_off",location,1,pitch - end - if soundid == "K25" then - return range > 0 and "k25_on" or "k25_off",location,1,pitch - end - if soundid == "RO" then - return range > 0 and "ro_on" or nil,location,1,pitch - end - if soundid == "AVU" then - return range > 0 and "avu_on" or "avu_off",location,1,0.6 - end - end - return soundid,location,range,pitch -end - -local dist = { - Back1 = 550, - AVMain = 550, - AV1 = 550, - AV2 = 550, - Battery = 550, -} -for id,panel in pairs(ENT.ButtonMap) do - if not panel.buttons then continue end - for k,v in pairs(panel.buttons) do - if v.model then - local dist = dist[id] or 150 - if v.model.model then - v.model.hideseat=dist - elseif v.model.lamp then - v.model.lamp.hideseat=dist - end - end - end -end -Metrostroi.GenerateClientProps() diff --git a/lua/entities/_obsolete/gmod_subway_em508/init.lua b/lua/entities/_obsolete/gmod_subway_em508/init.lua deleted file mode 100644 index 8fa5bf0..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508/init.lua +++ /dev/null @@ -1,857 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---"DURASelectMain","DURASelectAlternate","DURAToggleChannel","DURAPowerToggle", -ENT.SyncTable = { - "CustomC","Custom1","Custom2","Custom3","CustomD", - "CustomE","CustomF","CustomG","R_UNch","R_ZS","R_G","R_Radio","R_Program1","R_Program2","KVT","KB","KSD", - "VZ1","VUD1","KDL","KDLR","KDLK","KDP","KDLRK","DoorSelect","Ring","UKS","AGS", - "KRZD","R_VPR","VozvratRP","AVU","KVP","ConverterProtection","RZP", - "KSN","ARS","ALS","OtklAVU","TormAT","L_1","L_3","DIPoff", - "VMK","BPSNon","RezMK","ARS13","L_4","VUS","VAH","VAD","EmergencyBrakeValve", - "KAH","KAHK","KDPK","CabinHeat","KRR","KRP", - "RC1","VB","BPS","UOS", "PB", "UAVA","AVULight_light","PD","AVU", - "DriverValveBLDisconnect","DriverValveTLDisconnect","DriverValveTLDisconnect","ParkingBrake","EPK", - "VUD2","VDL", "GV","DIPon","DIPoff","VozvratRP","KU1","RezMK", - "VU3","VU1","VU2","AV8B","VU","KDLK","VDLK","KDPK","RST", "DoorSelect","LPU","R_ASNPMenu","R_ASNPUp","R_ASNPDown","R_ASNPOn", -} -ENT.SyncFunctions = { - "" -} - -function ENT:Initialize() - - self.Plombs = { - RST = true, - Init = true, - OtklAVU = true, - UAVA = true, - } - -- Set model and initialize - self:SetModel("models/metrostroi_train/81-508/81-508.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(425,-39,-27.5),Angle(0,0,0)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 317-5,0,-89),Angle(0,180,0),true,"717") - self.RearBogey = self:CreateBogey(Vector(-317+0,0,-89),Angle(0,0,0),false,"717") - self.FrontCouple = self:CreateCouple(Vector( 419.5+3.5,0,-75),Angle(0,0,0),true,"717") - self.RearCouple = self:CreateCouple(Vector(-421.5-3.5,0,-75),Angle(0,180,0),false,"717") - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_EQUAL] = "R_Program1Set", - [KEY_MINUS] = "R_Program2Set", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_N] = "VZ1Set", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_6] = "PneumaticBrakeSet6", - [KEY_PAD_7] = "PneumaticBrakeSet7", - [KEY_PAD_DIVIDE] = "KRPSet", - [KEY_PAD_MULTIPLY] = "KAHSet", - --[KEY_J] = "KVWrenchKRU", - - --[KEY_SPACE] = "PBSet", - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - - [KEY_A] = "DURASelectAlternate", - [KEY_D] = "DURASelectMain", - [KEY_V] = "DURAToggleChannel", - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - --[KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - --[KEY_L] = "DriverValveDisconnect", - [KEY_F] = "BCCDSet", - [KEY_R] = "VZPSet", - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - }, - } - - self.InteractionZones = { - { Pos = Vector(-471,-30,0), - Radius = 28, - ID = "RearDoor" - }, - { Pos = Vector(473,32,28), - Radius = 28, - ID = "FrontDoor1" - }, - { Pos = Vector(473,32,-28), - Radius = 28, - ID = "FrontDoor2" - }, - { Pos = Vector(383.02,31.85,2), - Radius = 28, - ID = "PassengerDoor1" - }, - { Pos = Vector(383.02,-31.85,2), - Radius = 28, - ID = "PassengerDoor2" - }, - { Pos = Vector(408.18,63.59,-26), - Radius = 16, - ID = "CabinDoor1" - }, - { Pos = Vector(408.18,63.59,6), - Radius = 16, - ID = "CabinDoor2" - }, - { Pos = Vector(408.18,63.59,38), - Radius = 16, - ID = "CabinDoor3" - }, - { Pos = Vector(458.18,63.59,-26), - Radius = 16, - ID = "CabinDoor4" - }, - { Pos = Vector(458.18,63.59,6), - Radius = 16, - ID = "CabinDoor5" - }, - { Pos = Vector(458.18,63.59,38), - Radius = 16, - ID = "CabinDoor6" - }, - } - - self.Lights = { - -- Head - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Emergency lit - [9] = { "headlight", Vector(412,0,51), Angle(80,0,0), Color(255,255,255), brightness = 1, farz = 117, nearz = 0.01, shadows = 0, fov = 120 }, - -- Cabin - [22] = { "light", Vector(432+5.9,-54.5,42.2), Angle(90,0,0), Color(255,180,128), brightness = 0.75, scale = 0.4, texture = "sprites/light_glow03.vmt" }, - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(255,255,255), brightness = 0.0005, distance = 600}, - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, -5), Angle(0,0,0), Color(255,125,25), brightness = 6, distance = 250}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,125,25), brightness = 6, distance = 300}, - [13] = { "dynamiclight", Vector(-250, 0, -5), Angle(0,0,0), Color(255,125,25), brightness = 6, distance = 250}, - - [15] = { "light", Vector(402.202942,69.270073,44.79285), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [16] = { "light", Vector(402.202942,69.270073,41.509621), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [17] = { "light", Vector(402.202942,69.270073,37.3862), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - - [70 ] = { "headlight", Vector( 450, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, - - } - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - --- self.A5:TriggerInput("Set",0) - self:TrainSpawnerUpdate() -end - -function ENT:TrainSpawnerUpdate() - self.Texture = self:GetNW2String("Texture") - self.PassTexture = self:GetNW2String("PassTexture") - self.CabTexture = self:GetNW2String("CabTexture") - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - elseif v == "models/metrostroi_train/81/tabl" then - if not self.SignsList then - self:PrepareSigns() - end - if self.SignsList[self.SignsIndex] then self:SetSubMaterial(k-1,self.SignsList[self.SignsIndex][1]) end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end -end - --------------------------------------------------------------------------------- -function ENT:Think() - local RetVal = self.BaseClass.Think(self) - - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetPackedBool("RedLight",(self.Panel["RedLightLeft"] > 0.5 or self.Panel["RedLightRight"] > 0.5 ) and not IsValid(self.FrontTrain)) - - -- Emergency Ezh cabin lights - self:SetLightPower(9, self.AV8B.Value < 0.5 and self.VU2.Value > 0.5 and self.Panel["V1"] > 0.5) - - -- Cabin lights - --self:SetLightPower(22, self.L_2.Value > 0.5 and self.Panel["V1"] > 0.5) - self:SetLightPower(23, self.VU3.Value > 0.5) - - --Gauges lights - self:SetPackedBool("PanelLights",self.L_3.Value > 0.5 and self.Panel["V1"] > 0.5) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = (self.VU2.Value > 0.5 and self.Panel["V1"] > 0.5) or lightsActive2 - self:SetPackedBool("Lamps_emer",lightsActive1) - self:SetPackedBool("Lamps_full",lightsActive2) - local Light - if self.Pneumatic.Compressor == 1 then - Light = (lightsActive2 and 0.6 or 0.3) - else - Light = (lightsActive2 and 0.8 or 0.4) - end - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - self:SetPackedRatio("LampsI",math.Round((self.Electric.I24-150)/1000.0,1.5)) - - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end - self:SetPackedBool(131,TW18 > 0) - self:SetPackedRatio("LRP",TW18) - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ManualBrake - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - self:SetPackedBool(40,self.Panel["V1"] > 0.5 and self.Panel["SD"] < 0.5) - -- KSD - self:SetPackedBool("KSD",self.KSD.Value == 0.00) - -- KRP - self:SetPackedBool(113,self.KRP.Value == 1.0) - - - self:SetPackedBool("DriverValveBLDisconnect",self.DriverValveBLDisconnect.Value == 1.0) - self:SetPackedBool("DriverValveTLDisconnect",self.DriverValveTLDisconnect.Value == 1.0) - if self.DriverValveDisconnect.Blocked > 0 and self.Pneumatic.ValveType == 2 then - self.DriverValveDisconnect:TriggerInput("Block",0) - self.DriverValveBLDisconnect:TriggerInput("Block",1) - self.DriverValveTLDisconnect:TriggerInput("Block",1) - end - if self.DriverValveDisconnect.Blocked == 0 and self.Pneumatic.ValveType == 1 then - self.DriverValveDisconnect:TriggerInput("Block",1) - self.DriverValveBLDisconnect:TriggerInput("Block",0) - self.DriverValveTLDisconnect:TriggerInput("Block",0) - end - self:SetPackedBool("EPK",self.EPK.Value == 1.0) - self:SetPackedBool("VPR",self.RST.Value > 0 and self.Panel["V1"] > 0) - self:SetPackedBool("LST",self:ReadTrainWire(6) > 0.5) - self:SetPackedBool("LVD",self:ReadTrainWire(1) > 0.5) - self:SetPackedBool("RK",self:ReadTrainWire(2) > 0.5) - self:SetPackedBool(19,self.OtklAVU.Value == 1.0) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(55,(self.DoorSelect.Value == 1.0)) - self:SetPackedBool("VZ1",(self.VZ1.Value == 1)) - - self:SetPackedBool(17,self.KRZD.Value == 1.0) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - - self:SetNW2Bool("ASNPPlay",self.VB.Value > 0 and self:ReadTrainWire(47) > 0) - --KRR - self:SetPackedBool("KRR",self.KRR.Value > 0.5) - - --Radiostation - self:SetPackedBool(125,self.R_G.Value == 1.0) - self:SetPackedBool(127,self.R_ZS.Value == 1.0) - self:SetPackedBool(126,self.R_Radio.Value == 1.0) - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - - --[[ - -- LST - self:SetPackedBool(49,self:ReadTrainWire(6) > 0.5) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - self:SetPackedBool(165,self.PB.Value > 0) - - -- AV states - -- for i,v in ipairs(self.Panel.AVMap) do - -- if tonumber(v) - -- then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - -- elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - -- end - -- end - - self:SetPackedBool(62,self.L_3.Value > 0.5) - self:SetPackedBool(64+19,self.VU1.Value > 0.5) - self:SetPackedBool(64+12,self.VU.Value > 0.5) - self:SetPackedBool(64+24,self.RST.Value > 0.5) - self:SetPackedBool(64+7 ,self.AV8B.Value > 0.5) - self:SetPackedBool(64+36,self.VU2.Value > 0.5) - self:SetPackedBool(64+13,self.VU3.Value > 0.5) - self:SetPackedBool("VPR",self.RST.Value == 1.0 and self.Panel["V1"]) - ]] - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 82.0) - self:SetPackedRatio(11,IGLA_Temperature) - self:SetPackedBool("EmergencyBrakeValve",self.EmergencyBrakeValve.Value > 0) - self:SetPackedBool(152,self.UAVA.Value == 1.0) - - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - self:SetPackedBool(22,self.Pneumatic.ValveType == 2) - - -- Update ARS system (no ars on E) - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/100) - ---print (self.Speed) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 27000+13000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 27000+13000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - local add = 1 - if math.abs(self:GetAngles().pitch) > 4 then - add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 - end - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 85, math.random(96,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 85, math.random(96,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.05) - if self.ManualBrake == 0.0 then return end - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.05) - if self.ManualBrake == 1.0 then return end - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveBLDisconnect:TriggerInput("Set",1) - return - end - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - --self:PlayOnce("pneumo_disconnect1","cabin",0.9) - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - else - --self:PlayOnce("pneumo_disconnect2","cabin",0.9) - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - end - return - end - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - - --[[if (button == "UAVAToggle") then - if self.UAVA then - if self.UAVA.Value > 0.5 then - self:PlayOnce("uava_off","cabin") - else - self:PlayOnce("uava_off","cabin") - end - end - return - end]] -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - - if (not string.find(button,"KVT")) and string.find(button,"KV") then return end - if string.find(button,"KRU") then return end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end - -function ENT:TriggerTurbostroiInput(sys,name,val) - self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) - if sys == "Panel" and name:find("HeadLights") or sys == "L_4" then - local brightness = math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25 - if (self.Panel["HeadLights3"] > 0.5 or self.Panel["HeadLights1"] > 0.5) then-- and (self.L_4.Value > 0.5) then - self:SetPackedRatio("Headlight",brightness) - else - self:SetPackedRatio("Headlight",0) - end - self:SetPackedBool("HeadLights1",self.Panel["HeadLights1"] > 0) - self:SetPackedBool("HeadLights2",self.Panel["HeadLights2"] > 0) - end -end diff --git a/lua/entities/_obsolete/gmod_subway_em508/shared.lua b/lua/entities/_obsolete/gmod_subway_em508/shared.lua deleted file mode 100644 index 709867c..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508/shared.lua +++ /dev/null @@ -1,604 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintName = "Entities.Em508" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = true -ENT.AdminSpawnable = false - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -local function GetDoorPosition(i,k) - return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) -end -ENT.AnnouncerPositions = { - {Vector(412,-49 ,61),80,1}, - {Vector(-3,-60, 62),300,1}, - {Vector(-3,60 ,62),300,1}, -} -ENT.Cameras = { - {Vector(407.5+15,32,16),Angle(0,180,0),"Train.703.Breakers1"}, - {Vector(407.5+11,46,20),Angle(0,180,0),"Train.703.Breakers2"}, - {Vector(407.5+28,48,16),Angle(0,40,0),"Train.703.Left"}, - {Vector(407.5+11,37,-5),Angle(0,0,0),"Train.703.Parking"}, - {Vector(407.5+29,-45,43),Angle(0,-90,0),"Train.703.ASNP"}, - {Vector(407.5+10,-45,7),Angle(0,-90,0),"Train.703.IGLA"}, -} - - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} - self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} - self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} - self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_10"] = {1200,1e9,Vector(0,0,0),1} - self.SoundPositions["rolling_40"] = self.SoundPositions["rolling_10"] - self.SoundPositions["rolling_70"] = self.SoundPositions["rolling_10"] - self.SoundPositions["rolling_80"] = self.SoundPositions["rolling_10"] - self.SoundNames["pneumo_disconnect2"] = "subway_trains/common/pneumatic/pneumo_close.mp3" - self.SoundNames["pneumo_disconnect1"] = { - "subway_trains/common/pneumatic/pneumo_open.mp3", - "subway_trains/common/pneumatic/pneumo_open2.mp3", - } - self.SoundPositions["pneumo_disconnect2"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - self.SoundPositions["pneumo_disconnect1"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - self.SoundNames["epv_on"] = "subway_trains/common/pneumatic/epv_on.mp3" - self.SoundNames["epv_off"] = "subway_trains/common/pneumatic/epv_off.mp3" - self.SoundPositions["epv_on"] = {100,1e9,Vector(437.2,-53.1,-32.0),1} - self.SoundPositions["epv_off"] = {100,1e9,Vector(437.2,-53.1,-32.0),1} - self.SoundPositions["epv_off"] = {60,1e9,Vector(437.2,-53.1,-32.0),1} - -- Релюшки - self.SoundNames["rpb_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["rpb_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["rpb_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["rpb_off"] = {100,1e9,Vector(400,25,-35),1} - self.SoundNames["rvt_on"] = { - "subway_trains/717/relays/brake_on1.mp3", - } - self.SoundNames["rvt_off"] = { - "subway_trains/717/relays/brake_off1.mp3", - "subway_trains/717/relays/brake_off2.mp3", - "subway_trains/717/relays/brake_off3.mp3", - } - self.SoundPositions["rvt_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["rvt_off"] = {100,1e9,Vector(400,25,-35),1} - if self.Breakers then - self.SoundNames["r1_5_on"] = "subway_trains/717/relays/drive_on1.mp3" - else - self.SoundNames["r1_5_on"] = "subway_trains/717/relays/drive2_on.mp3" - end - self.SoundNames["r1_5_off"] = "subway_trains/717/relays/drive_off.mp3" - self.SoundPositions["r1_5_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["r1_5_off"] = {100,1e9,Vector(400,25,-35),1} - - self.SoundNames["kd_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["kd_on"] = "subway_trains/717/relays/lsd_1.mp3" - self.SoundPositions["kd_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["kd_off"] = {100,1e9,Vector(400,25,-35),1} - self.SoundNames["k25_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["k25_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["k25_on"] = {120,1e9,Vector(400,25,-35),1} - self.SoundPositions["k25_off"] = {120,1e9,Vector(400,25,-35),1} - self.SoundNames["ro_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["ro_on"] = "subway_trains/717/relays/RO_on.mp3" - self.SoundPositions["ro_on"] = {140,1e9,Vector(400,25,-35),1} - self.SoundPositions["ro_off"] = {140,1e9,Vector(400,25,-35),1} - - - self.SoundNames["avu_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["avu_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["avu_on"] = {60,1e9, Vector(400,-40,-45),1} - self.SoundPositions["avu_off"] = {60,1e9, Vector(400,-40,-45),1} - --Подвагонка - self.SoundNames["lk2_on"] = "subway_trains/717/pneumatic/lk/lk2_on.mp3" - self.SoundNames["lk2_off"] = "subway_trains/717/pneumatic/lk/lk2_off.mp3" - self.SoundNames["lk3_on"] = "subway_trains/717/pneumatic/lk/lk3_on.mp3" - self.SoundNames["lk3_off"] = "subway_trains/717/pneumatic/lk/lk3_off.mp3" - self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.2} - self.SoundPositions["lk2_off"] = {400,1e9,Vector(-60,-40,-66),0.6} - self.SoundPositions["lk3_on"] = {440,1e9,Vector(-60,-40,-66),0.2} - self.SoundPositions["lk3_off"] = {400,1e9,Vector(-60,-40,-66),0.6} - - self.SoundNames["compressor"] = {loop=2.0,"subway_trains/ezh/compressor/ezh_compressor_start.mp3","subway_trains/ezh/compressor/ezh_compressor_loop.mp3", "subway_trains/ezh/compressor/ezh_compressor_end.mp3"} - self.SoundPositions["compressor"] = {700,1e9,Vector(-118,-40,-66)} - self.SoundNames["rk"] = {"subway_trains/717/rk/rk_start.wav","subway_trains/717/rk/rk_spin.wav","subway_trains/717/rk/rk_stop.mp3"} - self.SoundPositions["rk"] = {70,1e3,Vector(110,-40,-75)} - - self.SoundNames["ezh3_revers_0-f"] = {"subway_trains/717/kv70/reverser_0-f_1.mp3","subway_trains/717/kv70/reverser_0-f_2.mp3"} - self.SoundNames["ezh3_revers_f-0"] = {"subway_trains/717/kv70/reverser_f-0_1.mp3","subway_trains/717/kv70/reverser_f-0_2.mp3"} - self.SoundNames["ezh3_revers_0-b"] = {"subway_trains/717/kv70/reverser_0-b_1.mp3","subway_trains/717/kv70/reverser_0-b_2.mp3"} - self.SoundNames["ezh3_revers_b-0"] = {"subway_trains/717/kv70/reverser_b-0_1.mp3","subway_trains/717/kv70/reverser_b-0_2.mp3"} - self.SoundNames["revers_in"] = {"subway_trains/ezh3/kv66/revers_in.wav"} - self.SoundNames["revers_out"] = {"subway_trains/ezh3/kv66/revers_out.wav"} - self.SoundPositions["ezh3_revers_0-f"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_f-0"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_0-b"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_b-0"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_in"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_out"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - - self.SoundNames["kru_in"] = { - "subway_trains/717/kru/kru_insert1.mp3", - "subway_trains/717/kru/kru_insert2.mp3" - } - self.SoundPositions["kru_in"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundNames["kru_out"] = { - "subway_trains/717/kru/kru_eject1.mp3", - "subway_trains/717/kru/kru_eject2.mp3", - "subway_trains/717/kru/kru_eject3.mp3", - } - self.SoundPositions["kru_out"] = {80,1e9,Vector(452.3,-24.0,4.0)} - - self.SoundNames["kru_0_1"] = { - "subway_trains/717/kru/kru0-1_1.mp3", - "subway_trains/717/kru/kru0-1_2.mp3", - "subway_trains/717/kru/kru0-1_3.mp3", - "subway_trains/717/kru/kru0-1_4.mp3", - } - self.SoundNames["kru_1_2"] = { - "subway_trains/717/kru/kru1-2_1.mp3", - "subway_trains/717/kru/kru1-2_2.mp3", - "subway_trains/717/kru/kru1-2_3.mp3", - "subway_trains/717/kru/kru1-2_4.mp3", - } - self.SoundNames["kru_2_1"] = { - "subway_trains/717/kru/kru2-1_1.mp3", - "subway_trains/717/kru/kru2-1_2.mp3", - "subway_trains/717/kru/kru2-1_3.mp3", - "subway_trains/717/kru/kru2-1_4.mp3", - } - self.SoundNames["kru_1_0"] = { - "subway_trains/717/kru/kru1-0_1.mp3", - "subway_trains/717/kru/kru1-0_2.mp3", - "subway_trains/717/kru/kru1-0_3.mp3", - "subway_trains/717/kru/kru1-0_4.mp3", - } - self.SoundNames["kru_2_3"] = { - "subway_trains/717/kru/kru2-3_1.mp3", - "subway_trains/717/kru/kru2-3_2.mp3", - "subway_trains/717/kru/kru2-3_3.mp3", - "subway_trains/717/kru/kru2-3_4.mp3", - } - self.SoundNames["kru_3_2"] = { - "subway_trains/717/kru/kru3-2_1.mp3", - "subway_trains/717/kru/kru3-2_2.mp3", - "subway_trains/717/kru/kru3-2_3.mp3", - "subway_trains/717/kru/kru3-2_4.mp3", - } - self.SoundPositions["kru_0_1"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_1_2"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_2_1"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_1_0"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_2_3"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_3_2"] = {80,1e9,Vector(452.3,-24.0,4.0)} - - self.SoundNames["kr_open"] = { - "subway_trains/717/cover/cover_open1.mp3", - "subway_trains/717/cover/cover_open2.mp3", - "subway_trains/717/cover/cover_open3.mp3", - } - self.SoundNames["kr_close"] = { - "subway_trains/717/cover/cover_close1.mp3", - "subway_trains/717/cover/cover_close2.mp3", - "subway_trains/717/cover/cover_close3.mp3", - } - - self.SoundNames["switch_off"] = { - "subway_trains/717/switches/tumbler_slim_off1.mp3", - "subway_trains/717/switches/tumbler_slim_off2.mp3", - "subway_trains/717/switches/tumbler_slim_off3.mp3", - "subway_trains/717/switches/tumbler_slim_off4.mp3", - } - self.SoundNames["switch_on"] = { - "subway_trains/717/switches/tumbler_slim_on1.mp3", - "subway_trains/717/switches/tumbler_slim_on2.mp3", - "subway_trains/717/switches/tumbler_slim_on3.mp3", - "subway_trains/717/switches/tumbler_slim_on4.mp3", - } - - self.SoundNames["switchbl_off"] = { - "subway_trains/717/switches/tumbler_fatb_off1.mp3", - "subway_trains/717/switches/tumbler_fatb_off2.mp3", - "subway_trains/717/switches/tumbler_fatb_off3.mp3", - } - self.SoundNames["switchbl_on"] = { - "subway_trains/717/switches/tumbler_fatb_on1.mp3", - "subway_trains/717/switches/tumbler_fatb_on2.mp3", - "subway_trains/717/switches/tumbler_fatb_on3.mp3", - } - - self.SoundNames["triple_down-0"] = { - "subway_trains/717/switches/tumbler_triple_down-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_down-0_2.mp3", - } - self.SoundNames["triple_0-up"] = { - "subway_trains/717/switches/tumbler_triple_0-up_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-up_2.mp3", - } - self.SoundNames["triple_up-0"] = { - "subway_trains/717/switches/tumbler_triple_up-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_up-0_2.mp3", - } - self.SoundNames["triple_0-down"] = { - "subway_trains/717/switches/tumbler_triple_0-down_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-down_2.mp3", - } - self.SoundNames["button1_off"] = { - "subway_trains/ezh3/switches/button_off1.mp3", - "subway_trains/ezh3/switches/button_off2.mp3", - } - self.SoundNames["button1_on"] = { - "subway_trains/ezh3/switches/button_on1.mp3", - "subway_trains/ezh3/switches/button_on2.mp3", - } - self.SoundNames["button2_off"] = { - "subway_trains/ezh3/switches/button_off3.mp3", - "subway_trains/ezh3/switches/button_off4.mp3", - } - self.SoundNames["button2_on"] = { - "subway_trains/ezh3/switches/button_on3.mp3", - "subway_trains/ezh3/switches/button_on4.mp3", - } - self.SoundNames["button3_off"] = { - "subway_trains/ezh3/switches/button_off6.mp3", - "subway_trains/ezh3/switches/button_off5.mp3", - } - self.SoundNames["button3_on"] = { - "subway_trains/ezh3/switches/button_on5.mp3", - "subway_trains/ezh3/switches/button_on6.mp3", - } - self.SoundNames["button4_off"] = { - "subway_trains/ezh3/switches/button_on1.mp3", - "subway_trains/ezh3/switches/button_on2.mp3", - } - self.SoundNames["button4_on"] = { - "subway_trains/717/switches/button4_on1.mp3", - "subway_trains/717/switches/button4_on2.mp3", - } - - self.SoundNames["uava_reset"] = { - "subway_trains/common/uava/uava_reset1.mp3", - "subway_trains/common/uava/uava_reset2.mp3", - "subway_trains/common/uava/uava_reset4.mp3", - } - self.SoundPositions["uava_reset"] = {80,1e9,Vector(449+7.7,56.0,-10.24349),0.6} - self.SoundNames["gv_f"] = self.SoundNames["revers_0-b"] - self.SoundNames["gv_b"] = self.SoundNames["revers_b-0"] - self.SoundPositions["gv_f"] = {80,1e2,Vector(120,62.0+0.0,-60),0.5} - self.SoundPositions["gv_b"] = {80,1e2,Vector(120,62.0+0.0,-60),0.5} - - --Краны - self.SoundNames["brake"] = {"subway_trains/common/pneumatic/vz_brake_on1.mp3","subway_trains/common/pneumatic/vz_brake_on2.mp3"} - self.SoundPositions["brake"] = {600,1e9,Vector(0,0,0),0.5} - self.SoundNames["release1"] = {loop=true,"subway_trains/common/pneumatic/release.wav"} --TODO разделение отпуска и срыва по позициям в кабине\вне - self.SoundPositions["release1"] = {1200,1e9,Vector(-183,0,-70)} - self.SoundNames["crane334_brake"] = {loop=true,"subway_trains/common/pneumatic/334_brake.wav"} --TODO добавить жужжащий звук - self.SoundPositions["crane334_brake"] = {180,1e9,Vector(440,-55.75,-10)} - self.SoundNames["crane334_brake_slow"] = {loop=true,"subway_trains/common/pneumatic/334_brake_slow.wav"} --TODO добавить жужжащий звук - self.SoundPositions["crane334_brake_slow"] = {180,1e9,Vector(440,-55.75,-10)} - self.SoundNames["crane334_release"] = {loop=true,"subway_trains/common/pneumatic/334_release.wav"} - self.SoundPositions["crane334_release"] = {180,1e9,Vector(440,-55.75,-10)} - - self.SoundNames["epk_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["epk_brake"] = {200,1e9,Vector(437.2,-53.1,-50.0)} - self.SoundNames["epk_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["epk_brake_start"] = self.SoundPositions["epk_brake"] - - self.SoundNames["valve_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["valve_brake"] = {200,1e9,Vector(402,-63,-50)} - self.SoundNames["valve_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["valve_brake_start"] = self.SoundPositions["valve_brake"] - - self.SoundNames["emer_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["emer_brake"] = {200,1e9,Vector(380,-45,-75)} - self.SoundNames["emer_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["emer_brake_start"] = self.SoundPositions["emer_brake"] - - self.SoundNames["pneumo_TL_open"] = { - "subway_trains/common/334/334_open.mp3", - } - self.SoundNames["pneumo_TL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - self.SoundNames["pneumo_BL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - - self.SoundNames["pak_on"] = "subway_trains/717/switches/rc_on.mp3" - self.SoundNames["pak_off"] = "subway_trains/717/switches/rc_off.mp3" - - --self.SoundNames["kv70_fix_on"] = {"subway_trains/717/kv70/kv70_fix_on1.mp3","subway_trains/717/kv70/kv70_fix_on2.mp3"} --- self.SoundNames["kv70_fix_off"] = {"subway_trains/717/kv70/kv70_fix_off1.mp3","subway_trains/717/kv70/kv70_fix_off2.mp3"} - self.SoundNames["kv40_0_t1"] = {"subway_trains/ezh/kv40/kv40_0_T1.mp3"} - self.SoundNames["kv40_t1_0"] = {"subway_trains/ezh/kv40/kv40_T1_0.mp3"} - self.SoundNames["kv40_t1_t1a"] = {"subway_trains/ezh/kv40/kv40_T1_T1A.mp3"} - self.SoundNames["kv40_t1a_t1"] = {"subway_trains/ezh/kv40/kv40_T1A_T1.mp3"} - self.SoundNames["kv40_t1a_t2"] = {"subway_trains/ezh/kv40/kv40_T1A_T2.mp3"} - self.SoundNames["kv40_t2_t1a"] = {"subway_trains/ezh/kv40/kv40_T2_T1A.mp3"} - self.SoundNames["kv40_0_x1"] = {"subway_trains/ezh/kv40/kv40_0_X1.mp3"} - self.SoundNames["kv40_x1_0"] = {"subway_trains/ezh/kv40/kv40_X1_0.mp3"} - self.SoundNames["kv40_x1_x2"] = {"subway_trains/ezh/kv40/kv40_X1_X2.mp3"} - self.SoundNames["kv40_x2_x1"] = {"subway_trains/ezh/kv40/kv40_X2_X1.mp3"} - self.SoundNames["kv40_x2_x3"] = {"subway_trains/ezh/kv40/kv40_X2_X3.mp3"} - self.SoundNames["kv40_x3_x2"] = {"subway_trains/ezh/kv40/kv40_X3_X2.mp3"} - --self.SoundPositions["kv70_fix_on"] = {100,1e9,Vector(442.2,-40,-16.2),2} - --self.SoundPositions["kv70_fix_off"] = {100,1e9,Vector(442.2,-40,-16.2),2} - self.SoundPositions["kv40_0_t1"] = {100,1e9,Vector(442.2,-40,-16.2),2} - self.SoundPositions["kv40_t1_0"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1_t1a"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1a_t1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1a_t2"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t2_t1a"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_0_x1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x1_0"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x1_x2"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x2_x1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x2_x3"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x3_x2"] = self.SoundPositions["kv40_0_t1"] - - self.SoundNames["ring"] = {"subway_trains/717/ring/ring_start.wav","subway_trains/717/ring/ring_loop.wav","subway_trains/717/ring/ring_end.wav"} - self.SoundPositions["ring"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["ring2"] = {loop=0.1,"subway_trains/717/ring/ringc_start.wav","subway_trains/717/ring/ringc_loop.wav","subway_trains/717/ring/ringc_end.mp3"} - self.SoundPositions["ring2"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["ring_old"] = {loop=0.15,"subway_trains/717/ring/ringo_start.wav","subway_trains/717/ring/ringo_loop.wav","subway_trains/717/ring/ringo_end.mp3"} - self.SoundPositions["ring_old"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["cab_door_open"] = { - "subway_trains/common/door/cab/cab_door_open2.mp3", - "subway_trains/common/door/cab/cab_door_open.mp3", - } - self.SoundPositions["cab_door_open"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["cab_door_close"] = { - "subway_trains/common/door/cab/cab_door_close2.mp3", - "subway_trains/common/door/cab/cab_door_close.mp3", - } - - self.SoundNames["parking_brake_rolling"] = {"subway_trains/ezh3/parking_brake_rolling1.mp3","subway_trains/ezh3/parking_brake_rolling2.mp3","subway_trains/ezh3/parking_brake_rolling3.mp3","subway_trains/ezh3/parking_brake_rolling4.mp3"} - self.SoundPositions["parking_brake_rolling"] = {120,1e9,Vector(449.118378+7.6,33.493385,-14.713276)} - self.SoundNames["av8_on"] = {"subway_trains/common/switches/av8/av8_on.mp3","subway_trains/common/switches/av8/av8_on2.mp3"} - self.SoundNames["av8_off"] = {"subway_trains/common/switches/av8/av8_off.mp3","subway_trains/common/switches/av8/av8_off2.mp3"} - self.SoundPositions["av8_on"] = {100,1e9,Vector(405,40,30)} - self.SoundPositions["av8_off"] = {100,1e9,Vector(405,40,30)} - - self.SoundNames["vu22_on"] = {"subway_trains/ezh3/vu/vu22_on1.mp3", "subway_trains/ezh3/vu/vu22_on2.mp3", "subway_trains/ezh3/vu/vu22_on3.mp3"} - self.SoundNames["vu22_off"] = {"subway_trains/ezh3/vu/vu22_off1.mp3", "subway_trains/ezh3/vu/vu22_off2.mp3", "subway_trains/ezh3/vu/vu22_off3.mp3"} - self.SoundNames["vu223_on"] = {"subway_trains/common/switches/vu22/vu22_3_on.mp3"} - self.SoundNames["vu223_off"] = {"subway_trains/common/switches/vu22/vu22_3_off.mp3"} - - self.SoundNames["igla_on"] = "subway_trains/common/other/igla/igla_on1.mp3" - self.SoundNames["igla_off"] = "subway_trains/common/other/igla/igla_off2.mp3" - self.SoundNames["igla_start1"] = "subway_trains/common/other/igla/igla2_start1.mp3" - self.SoundNames["igla_start2"] = "subway_trains/common/other/igla/igla2_start2.mp3" - self.SoundPositions["igla_on"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_off"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_start1"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_start2"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.2} - - self.SoundNames["upps"] = {"subway_trains/common/other/upps/upps1.mp3","subway_trains/common/other/upps/upps2.mp3"} - self.SoundPositions["upps"] = {60,1e9,Vector(443,-64,4),0.5} - - self.SoundNames["pnm_on"] = {"subway_trains/common/pnm/pnm_switch_on.mp3","subway_trains/common/pnm/pnm_switch_on2.mp3"} - self.SoundNames["pnm_off"] = {"subway_trains/common/pnm/pnm_switch_off.mp3","subway_trains/common/pnm/pnm_switch_off2.mp3"} - self.SoundNames["pnm_button1_on"] = { - "subway_trains/common/pnm/pnm_button_push.mp3", - "subway_trains/common/pnm/pnm_button_push2.mp3", - "subway_trains/common/pnm/pnm_button_push3.mp3", - } - - self.SoundNames["pnm_button2_on"] = { - "subway_trains/common/pnm/pnm_button_push4.mp3", - "subway_trains/common/pnm/pnm_button_push5.mp3", - "subway_trains/common/pnm/pnm_button_push6.mp3", - } - - self.SoundNames["pnm_button1_off"] = { - "subway_trains/common/pnm/pnm_button_release.mp3", - "subway_trains/common/pnm/pnm_button_release2.mp3", - "subway_trains/common/pnm/pnm_button_release3.mp3", - } - - self.SoundNames["pnm_button2_off"] = { - "subway_trains/common/pnm/pnm_button_release4.mp3", - "subway_trains/common/pnm/pnm_button_release5.mp3", - "subway_trains/common/pnm/pnm_button_release6.mp3", - } - - self.SoundNames["horn1"] = {loop=0.6,"subway_trains/common/pneumatic/horn/horn1_start.wav","subway_trains/common/pneumatic/horn/horn1_loop.wav", "subway_trains/common/pneumatic/horn/horn1_end.mp3"} - self.SoundNames["horn2"] = {loop=0.8,"subway_trains/common/pneumatic/horn/horn3_start.wav","subway_trains/common/pneumatic/horn/horn3_loop.wav", "subway_trains/common/pneumatic/horn/horn3_end.wav"} - self.SoundPositions["horn1"] = {1100,1e9,Vector(450,0,-55)} - self.SoundPositions["horn2"] = self.SoundPositions["horn1"] - - --DOORS - self.SoundNames["vdol_on"] = { - "subway_trains/common/pneumatic/door_valve/VDO_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_on.mp3", - } - self.SoundNames["vdol_off"] = { - "subway_trains/common/pneumatic/door_valve/VDO_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_off.mp3", - } - self.SoundPositions["vdol_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdol_off"] = self.SoundPositions["vdol_on"] - self.SoundNames["vdor_on"] = self.SoundNames["vdol_on"] - self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] - self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] - self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - self.SoundNames["vdz_on"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_on.mp3", - } - self.SoundNames["vdz_off"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_off.mp3", - } - self.SoundPositions["vdz_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdz_off"] = {100,1e9,Vector(410,20,-45)} - - for i=0,3 do - for k=0,1 do - self.SoundNames["door"..i.."x"..k.."r"] = {"subway_trains/common/door/door_roll.wav",loop=true} - self.SoundPositions["door"..i.."x"..k.."r"] = {150,1e9,GetDoorPosition(i,k),0.2} - self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end1.mp3","subway_trains/common/door/door_open_end2.mp3","subway_trains/common/door/door_open_end3.mp3","subway_trains/common/door/door_open_end4.mp3"} - self.SoundPositions["door"..i.."x"..k.."o"] = {300,1e9,GetDoorPosition(i,k),1} - self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end2.mp3","subway_trains/common/door/door_close_end3.mp3"} - self.SoundPositions["door"..i.."x"..k.."c"] = self.SoundPositions["door"..i.."x"..k.."o"] - end - end - self.SoundNames["PN2end"] = "subway_trains/common/pneumatic/vz2_end.mp3" - self.SoundPositions["PN2end"] = {600,1e9,Vector(-183,0,-70),0.5} - - - for k,v in ipairs(self.AnnouncerPositions) do - self.SoundNames["announcer_noise1_"..k] = {loop=true,"subway_announcers/upo/noiseS1.wav"} - self.SoundPositions["announcer_noise1_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - self.SoundNames["announcer_noise2_"..k] = {loop=true,"subway_announcers/upo/noiseS2.wav"} - self.SoundPositions["announcer_noise2_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - end -end - -function ENT:InitializeSystems() - -- Электросистема Е (АРС) - self:LoadSystem("Electric","81_701_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_108D") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","KF_47A6") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_40") - -- Контроллер резервного управления (KRP) - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A","YAR_15A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - self.Pneumatic.ValveType = 1 - -- Панель управления Еж АРС МП - self:LoadSystem("Panel","81_508_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - --self:LoadSystem("DURA") - self:LoadSystem("ALS_ARS","NoARS") - - self:LoadSystem("ASNP31","Relay","Switch") - self:LoadSystem("ASNP32","Relay","Switch") - self:LoadSystem("Horn") - - self:LoadSystem("Announcer","81_722_Announcer", "AnnouncementsASNP") - self:LoadSystem("ASNP","81_71_ASNP") - self:LoadSystem("IGLA_CBKI","IGLA_CBKI2") - self:LoadSystem("IGLA_PCBK") -end - -ENT.SubwayTrain = { - Type = "E", - Name = "Em508", - WagType = 0, - ARS = { - HaveASNP = true, - NoEPK = true, - }, - ALS = { - HaveAutostop = true, - }, - EKKType = 703, - NoFrontEKK=true, -} -ENT.NumberRanges = {{3905,3954},{6001,6100},{6201,6251}} - -local Texture = {} -for k,v in pairs(Metrostroi.Skins["train"]) do - if v.typ == "em508" then Texture[k] = v.name or k end -end -local PassTexture = {} -for k,v in pairs(Metrostroi.Skins["pass"] or {}) do - if v.typ == "em508" then PassTexture[k] = v.name or k end -end -local CabTexture = {} -for k,v in pairs(Metrostroi.Skins["cab"] or {}) do - if v.typ == "em508" then CabTexture[k] = v.name or k end -end -local Announcer = {} -for k,v in pairs(Metrostroi.AnnouncementsASNP or {}) do Announcer[k] = v.name or k end -ENT.Spawner = { - model = "models/metrostroi_train/81-508/81-508.mdl", - interim = "gmod_subway_em508_int", - func = function(ent,i,maxi) - if i > 1 and i < maxi then - ent.VU:TriggerInput("Set",0) - ent.UAVA:TriggerInput("Set",1) - ent.Plombs.VU = false - ent.Plombs.UAVA = nil - else - ent.VU:TriggerInput("Set",1) - ent.UAVA:TriggerInput("Set",0) - ent.Plombs.VU = nil - ent.Plombs.UAVA = true - end - end, - Metrostroi.Skins.GetTable("Texture","Texture",Texture,"train"), - Metrostroi.Skins.GetTable("PassTexture","PassTexture",PassTexture,"pass"), - Metrostroi.Skins.GetTable("CabTexture","CabTexture",CabTexture,"cab"), - {"Announcer","Announcer","List",Announcer}, - {"HornType","Piter horn","Boolean"}, - {"NM","NM","Slider",1,0,9.0,8.2,function(ent,val) ent.Pneumatic.TrainLinePressure = val end}, - {"Battery","Battery","Boolean",true,function(ent,val) ent.VB:TriggerInput("Set",val) end}, - {"AV8B","AV8B","Boolean",true,function(ent,val) ent.AV8B:TriggerInput("Set",val) end}, - {"DoorsL","DoorsL","Boolean",false, function(ent,val,rot) - if rot then - ent.Pneumatic.RightDoorState = val and {1,1,1,1} or {0,0,0,0} - else - ent.Pneumatic.LeftDoorState = val and {1,1,1,1} or {0,0,0,0} - end - end}, - {"DoorsR","DoorsR","Boolean",false, function(ent,val,rot) - if rot then - ent.Pneumatic.LeftDoorState = val and {1,1,1,1} or {0,0,0,0} - else - ent.Pneumatic.RightDoorState = val and {1,1,1,1} or {0,0,0,0} - end - end}, - {"GV","GV","Boolean",true,function(ent,val) ent.GV:TriggerInput("Set",val) end}, -} diff --git a/lua/entities/_obsolete/gmod_subway_em508_int/cl_init.lua b/lua/entities/_obsolete/gmod_subway_em508_int/cl_init.lua deleted file mode 100644 index cb8a418..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508_int/cl_init.lua +++ /dev/null @@ -1,1301 +0,0 @@ --------------------------------------------------------------------------------- --- All the models, materials, sounds belong to their corresponding authors. Permission is granted to only distribute these models through Garry's Mod Steam Workshop and the official Metrostroi GitHub accounts for use with Garry's Mod and Metrostroi Subway Simulator. --- --- It is forbidden to use any of these models, materials, sounds and other content for any commercial purposes without an explicit permission from the authors. It is forbidden to make any changes in these files in any derivative projects without an explicit permission from the author. --- --- The following models are (C) 2015-2017 oldy (Aleksandr Kravchenko). All rights reserved. --- - 81-703 Е (models\metrostroi_train\81-703) --- - 81-508 Еm508 (models\metrostroi_train\81-508) --- - 81-707 Ezh (models\metrostroi_train\81-707) --- - 81-708 Еzh1 --- - 81-710 Еzh3 (models\metrostroi_train\81-710) --- - 81-508T Еm508T --- - 81-720 Yauza (models\metrostroi_train\81-720) --- - 81-721 Yauza (intermediate) --- - 81-722 Yubileinyi (models\metrostroi_train\81-722) --- - 81-723 Yubileinyi --- - 81-724 Yubileinyi --------------------------------------------------------------------------------- -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} - -ENT.ButtonMap["Lamp"] = { - pos = Vector(444.31597,-52.43482,37.93294), - ang = Angle(-8,-90+21.5,180), - width = 105, - height = 85, - scale = 0.0625, - - buttons = { - { ID = "L_3Toggle", x=15, y=15, radius=100, tooltip="Лампа: Подсветка приборов\nLamp: Gauges lighting", model = { - var="L_3",speed=16, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["Main"] = { - pos = Vector(451.5+6.99,-31.78,-4.01), - ang = Angle(0,-93,90-20), - width = 315, - height = 240, - scale = 0.0588, - - buttons = { - ----Лампы - {ID = "GreenRP",x=42.2+41.3*3,y=58.4, radius=20, tooltip="Лампа: Зеленая лампа реле перегрузки\nLamp: Green overload relay light", model = {lamp = { - model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl", z = 9, - var=36,speed=16, color = Color(50,180,180), - }}}, - {ID = "RedRP", x=42.2+41.2*4,y=58.4, radius=20, tooltip="Лампа: Красная лампа реле перегрузки\nLamp: Red overload relay light (power circuits failed to assemble)", model = {lamp = { - model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl", z = 9, - var="RedRP",speed=5, color = Color(255,110,80), - getfunc = function(ent) return ent:GetPackedRatio("LRP") end, - }}}, - {ID = "SD", x=42.2+41.3*5,y=58.4, radius=20, tooltip="Лампа: Сигнализация дверей\nLamp: SD door state light (doors are open)", model = {lamp = { - model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl", z = 9, - var=40,speed=8, - }}}, - ----Кнопки - { ID = "DIPonSet", x=35.8+44*0, y=127.3, radius=20, tooltip="Вкл. Осв.: Включение освещения\nSwithcer:Turn interior lights on", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=0, - var="DIPon",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button1_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "DIPoffSet", x=35.8+44*1, y=127.3, radius=20, tooltip="Выкл. Осв.: Отключение освещения\nSwithcer:Turn interior lights off", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=0, - var="DIPoff",speed=16, - sndvol = 0.10, snd = function(val) return val and "button3_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "VozvratRPSet", x=35.8+44*2, y=127.3, radius=20, radius=20, tooltip="ВРП: Возврат РП\nKU:Reset overload relay", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=0, - var="VozvratRP",speed=16, - sndvol = 0.10, snd = function(val) return val and "button4_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KSNSet", x=35.8+44*3, y=127.3, radius=20, tooltip="КСН:Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)\nKSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=0, - var="KSN",speed=16, - sndvol = 0.10, snd = function(val) return val and "button4_on" or "button4_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KRZDSet", x=195.5, y=171.8, radius=20, tooltip="КРЗД: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=-0, - var="KRZD",speed=16, - sndvol = 0.10, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KDPSet", x=35.8+44*5, y=127.3, radius=20, radius=20, tooltip="КДП:Правые двери\nKDP: Right doors open", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=-0, - var="KDP",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KDLSet", x=96.8, y=171.8, radius=20, tooltip="КДЛ: Кнопка левых дверей\nKDL: Left doors open", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=0, - var="KDL",speed=16, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - { ID = "KU1Toggle", x=49,y=190,radius=20, tooltip="МК: Включение мотор-компрессора\nMK: Turn on motor-compressor", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-25, - var="KU1",speed=6, - sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - { ID = "VUD1Toggle",x=245,y=190,radius=20, tooltip="ВУД: Закрытие дверей\nVUD: Door control toggle (close doors)", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-25, - var="VUD1",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),color = Color(120,120,120), - }}, - } -} - -ENT.ButtonMap["Back2"] = { - pos = Vector(405.5,25.9,4.0), - ang = Angle(0,90,90), - width = 280, - height = 340, - scale = 0.1088, - - buttons = { - {ID = "!HVFuses", x=0, y=12, w=280, h=130, tooltip="Блок предохранителей\nBlock Fuse HV fuses"}, - {ID = "!Relays", x=0, y=170, w=300, h=270, tooltip="Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель\nThe box with the devices for battery recharging and door pressure diffuser"}, - {ID = "!Heater", x=280, y=170, w=80, h=300, tooltip="Печка\nThe heater"}, - } -} - ---VU1 Panel -ENT.ButtonMap["VU1"] = { - pos = Vector(456+7.6,-16.7,31.2), - ang = Angle(0,270,90), - width = 120, - height = 300, - scale = 0.0625, - - buttons = { - {ID = "KRPSet", x=43, y=210, w=50, h=110, tooltip="РРП: Резервный пуск \nRRP: Motor emergency toggle", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=20, - var="KRP",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), color = Color(80,80,80), - }}, - } -} - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(456+7.6,-16.15,12.0), - ang = Angle(0,270,90), - width = 100, - height = 220, - scale = 0.0625, - - buttons = { - {ID = "VUToggle", x=0, y=110, w=100, h=110, tooltip="ВУ: Выключатель Управления\nVU: Train control", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - plomb = {model = "models/metrostroi_train/switches/autoplombr.mdl",x=4,z=0,ang=0,var="VUPl", ID="VUPl",}, - var="VU",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), color = Color(200,200,250), - }}, - } -} - -ENT.ButtonMap["Stopkran"] = { - pos = Vector(459+7,27,20.7), - ang = Angle(0,-90,90), - width = 200, - height = 1300, - scale = 0.1/2, - buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="Стопкран\nEmergency brake"}, - } -} - -ENT.ButtonMap["Tsepi"] = { - pos = Vector(456+7.6,-16.15,10.5), - ang = Angle(0,273,90), - width = 85, - height = 50, - scale = 0.0625, - - buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=85,h=50,tooltip="Напряжение цепей управления"}, - } -} - -ENT.ButtonMap["AVMain"] = { - pos = Vector(403.5,40.8,42), - ang = Angle(0,90,90), - width = 335, - height = 380, - scale = 0.0625, - - buttons = { - {ID = "AV8BToggle", x=0, y=0, w=300, h=380, tooltip="АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", model = { - model = "models/metrostroi_train/switches/automain.mdl", z=43, ang = -90, - var="AV8B",speed=6, vmin=0.0,vmax=1, skin=2, - sndvol = 3, snd = function(val) return val and "av8_on" or "av8_off" end, - }}, - } -} - ----AV1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(403.5,41,16), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VU3Toggle", x=0, y=0, w=100, h=140, tooltip="ВУ3: Освещение кабины\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU3",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU2Toggle", x=110, y=0, w=100, h=140, tooltip="ВУ2: Аварийное освещение\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU2",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU1Toggle", x=220, y=0, w=100, h=140, tooltip="ВУ1: Печь отопления кабины\n", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=20, ang = 180, - var="VU1",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), color = Color(150,150,150), - }}, - } -} - --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(403.5,16,20.5), - ang = Angle(0,90,90), - width = 250, - height = 300, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=100, y=0, w=250, h=140, tooltip="АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)\nVB: Battery on/off", model = { - model = "models/metrostroi_train/Equipment/vu22_brown_3.mdl", z=15, ang = 180, - var="VB",speed=6, - sndvol = 1, snd = function(val) return val and "vu223_on" or "vu223_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "R_RadioToggle", x=30, y=180, w=250, h=140, tooltip="Питание радиоинформатора +50В\nRadioinformator", model = { - model = "models/metrostroi_train/Equipment/vu22_brown.mdl", z=15, ang = 180, - var="R_Radio",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(460,46.0,-2.0), - ang = Angle(0,-70,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(452.5,61.5,18.44), - ang = Angle(0,-17.5,90), - width = 60, - height = 200, - scale = 0.0625, - - buttons = { - {ID = "R_Program1Set", x=12, y=200, radius=30, tooltip="Программа 1\nProgram 1", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl", z=-26, color = Color(255,255,255), - var="R_Program1",speed=6, - sndvol = 1, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_Program2Set", x=47, y=200, radius=30, tooltip="Программа 2\nProgram 2", model = { - model = "models/metrostroi_train/81-703/cabin_button_black.mdl", z=-26, color = Color(255,255,255), - var="R_Program2",speed=6, - sndvol = 1, snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "VDLSet", x=30, y=42, radius=30, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-3, color = Color(255,255,255), - var="VDL",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "VUD2Toggle", x=30, y=138, radius=30, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)", model = { - model = "models/metrostroi_train/switches/vudwhite.mdl", z=-3, color = Color(255,255,255), - var="VUD2",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - - --- Pneumatic instrument panel 2 -ENT.ButtonMap["PneumaticManometer"] = { - pos = Vector(451.73+7.6,-54,14.04), - ang = Angle(0,-144,90), - width = 76, - height = 70, - scale = 0.0625, - - buttons = { - {ID = "!LinesPressure", x=68,y=65,radius=68,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(454.07+7.6,-50.11,5.9), - ang = Angle(0,-90-27,90), - width = 76, - height = 70, - scale = 0.0625, - - buttons = { - {ID = "!CylinderPressure", x=38,y=35,radius=35,tooltip="Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - } -} -ENT.ButtonMap["DriverValveBLDisconnect"] = { - pos = Vector(443.5+7,-53,-37.61), - ang = Angle(-90,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=95, h=100, tooltip="Кран двойной тяги тормозной магистрали\nTrain line disconnect valve", model = { - var="DriverValveBLDisconnect",sndid="brake_disconnect", - sndvol = 1, snd = function(val) return "disconnect_valve" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["DriverValveTLDisconnect"] = { - pos = Vector(447+5,-46,-31), - ang = Angle(-90,-10,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=75, h=100, tooltip="Кран двойной тяги напорной магистрали\nBrake line disconnect valve", model = { - var="DriverValveTLDisconnect",sndid="train_disconnect", - sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["Meters"] = { - pos = Vector(461.65213,-56.696617,37.528275), - ang = Angle(0,-148,90), - width = 73, - height = 140, - scale = 0.0625, - - buttons = { - {x=13, y=22, w=60, h=50, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=13, y=81, w=60, h=50, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} - - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(468+7,-45.0,-59.9), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - {ID = "FrontTrainLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - } -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-468-7,45.0,-59.9), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "RearTrainLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - {ID = "RearBrakeLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - } -} -ENT.ButtonMap["GV"] = { - pos = Vector(139,66,-54), - ang = Angle(0,180,90), - width = 170, - height = 170, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Главный выключатель", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - }}, - } -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-168,68.6,-50), - ang = Angle(0,180,90), - width = 170, - height = 80, - scale = 0.1, - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 80, tooltip="Выключение воздухораспределителя"}, - } -} - - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(444+5,56,-5), - ang = Angle(0,-70,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)\nUAVA: Universal Automatic Autostop Disabler (autostop disable)", model = { - plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl",}, - var="UAVA", - sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "UAVAContactSet",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - -for i=0,4 do - ENT.ClientProps["TrainNumberL"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,69,-26), - ang = Angle(180,0,180), - skin=0, - } -end -for i=0,4 do - ENT.ClientProps["TrainNumberR"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,-66.4,-26), - ang = Angle(0,0,0), - skin=0, - } -end - -ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(455+7.0,35,14.0), - ang = Angle(0,-90,90), - width = 400, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=300,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=350,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=0,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=0,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=50,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=50,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - - -ENT.ButtonMap["Front"] = { - pos = Vector(468,16,43.4), - ang = Angle(0,-90,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=642,h=1900, tooltip="Передняя дверь\nFront door", model = { - var="door1",sndid="door1", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(416,64,43.4), - ang = Angle(0,0,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста\nCabin door", model = { - var="door2",sndid="door2", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(384,-16,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door", model = { - var="door3",sndid="door3", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} -ENT.ButtonMap["PassengerDoor1"] = { - pos = Vector(384,16,43.4), - ang = Angle(0,-90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door", model = { - var="door3",sndid="door3", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["Back"] = { - pos = Vector(-470,-15,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "BackDoor",x=0,y=0,w=642,h=1900, tooltip="Задняя дверь", model = { - var="door4",sndid="door4", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ClientPropsInitialized = false -if not ENT.ClientSounds["br_334"] then ENT.ClientSounds["br_334"] = {} end -table.insert(ENT.ClientSounds["br_334"],{"brake",function(ent,_,var) return "br_334_"..var end,1,1,50,1e3,Angle(-90,0,0)}) -ENT.ClientProps["brake"] = { - model = "models/metrostroi_train/81-703/cabin_cran_334.mdl", - pos = Vector(448.62+7.6,-51.69,-3.0), - ang = Angle(0,-133,0), -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/81-707/kv_ezh.mdl", - pos = Vector(451.36+6.4,-24.73,-3.5), - ang = Angle(0,180+15,0) -} - -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(451.36+7.6,-23.43,-4.7), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi_train/81-707/cran1.mdl", - pos = Vector(441.0+8.2,-55.30,-33.91), - ang = Angle(0,92,-90), -} - -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi_train/81-707/cran3.mdl", - pos = Vector(444.482483+8.4,-50.746734,-27.333017), - ang = Angle(90,-100,90), -} -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi_train/81-703/cabin_parking.mdl", - pos = Vector(449.118378+7.6,33.493385,-14.713276), - ang = Angle(-90.000000,8.000000,0.000000), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/Equipment/arrow_nm.mdl", - pos = Vector(448.20+7.87,-50.91-4,12.1), - ang = Angle(-90,-90-48,90) -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/Equipment/arrow_tm.mdl", - pos = Vector(448.20+7.89,-50.94-4,12.1), - ang = Angle(-90,-90-48,90) -} - -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/Equipment/arrow_nm.mdl", - pos = Vector(453.199+7.4,-52.52,2.73000), - ang = Angle(222,80,-90.000000), -} ----------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(450.284607+6.0,-56.887834,26.5+0), - ang = Angle(-90,0,-60) -} - -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(450.284607+5.9,-56.987834,30.5+0.4), - ang = Angle(-90,0,-60) -} - -ENT.ClientProps["volt1"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(458.81455+4.2,-19.63349,7.95662-1+0.4), - ang = Angle(-90,0,0), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(0,0,0) -} - - ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(464.0,15,22.0), - ang = Angle(0,-90,90), - width = 550, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=0,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=50,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=450,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=450,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=500,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=500,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - -ENT.ClientProps["Ema_salon"] = { - model = "models/metrostroi_train/81-508/81-508_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["tab"] = { - model = "models/metrostroi_train/Equipment/tab.mdl", - pos = Vector(-0.0,0,-0), - ang = Angle(0,0,0), - skin = 2, - } -ENT.ClientProps["Ema_salon"] = { - model = "models/metrostroi_train/81-508/81-508_salon_interim.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["tab"] = { - model = "models/metrostroi_train/Equipment/tab.mdl", - pos = Vector(18.0,0,-0), - ang = Angle(0,0,0), - skin = 2, - } - -ENT.ClientProps["Ema_salon2"] = { - model = "models/metrostroi_train/81-508/81-508_underwagon.mdl", - pos = Vector(0,1,-18), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_emer"] = { - model = "models/metrostroi_train/81-508/81-508_lamps_emer.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_full"] = { - model = "models/metrostroi_train/81-508/81-508_lamps.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} - -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(445+7, -30, -68), - ang = Angle(0,-90,0) -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(445+7, 30, -68), - ang = Angle(0,-90,0) -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(-450-6, -30, -68), - ang = Angle(0,90,0) -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(-450-6, 30, -68), - ang = Angle(0,90,0) -} - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(344.9-0.1*k - 233.6*i,-63.86*(1-2.02*k),-5.75) - else return Vector(344.9-0.1*(1-k) - 233.6*i,-63.86*(1-2.02*k),-5.75) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi_train/81-508/81-508_door_right.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,90 + 180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi_train/81-508/81-508_door_left.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,90 + 180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/81-508/81-508_door_front.mdl", - pos = Vector(460.62+7.4,-14.53,-7.23), - ang = Angle(0,-90,0), -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/81-508/81-508_door_front.mdl", - pos = Vector(-462.6-8,16.53,-7.24), - ang = Angle(0,90,0), -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/81-508/81-508_door_pass.mdl", - pos = Vector(396.7+6,-14.84,-10), - ang = Angle(0,90,0), -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/81-508/81-508_door_cab.mdl", - pos = Vector(411.17+7.6,66.05,-6.38), - ang = Angle(0,-90,0), -} -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81-703/cabin_uava.mdl", - pos = Vector(449+7.7,56.0,-10.24349), - ang = Angle(0,-90,90) -} - -ENT.ClientProps["RedLights"] = { - model = "models/metrostroi_train/81-703/81-703_red_light.mdl", - pos = Vector(-23+7.2,1,-191), - ang = Angle(0,0,0.000000), -} -ENT.ClientProps["DistantLights"] = { - model = "models/metrostroi_train/81-703/81-703_projcetor_light.mdl", - pos = Vector(-23+8.2,1,-191), - ang = Angle(00.000000,0.000000,0.000000), -} -ENT.ClientProps["WhiteLights"] = { - model = "models/metrostroi_train/81-703/81-703_front_light.mdl", - pos = Vector(-23+7.6,1,-191), - ang = Angle(0,0,0), -} - -ENT.Lights = { - [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(169,130,88), brightness = 2 ,fov = 90 }, - [22] = { "headlight", Vector(432+4.5,-30.5,40.2), Angle(100,20,0), Color(255,130,88), hfov=160, vfov=90,farz=66,brightness = 5,shadows = 0, texture = "effects/flashlight/soft"}, -} -function ENT:Initialize() - self.BaseClass.Initialize(self) - --self.Train:SetPackedRatio("EmergencyValve_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyValveEPK_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyBrakeValve_dPdT", leak) - self.ASNP = self:CreateRT("717ASNP",512,128) - self.IGLA = self:CreateRT("717IGLA",512,128) - self.CraneRamp = 0 - self.ReleasedPdT = 0 - self.EmergencyValveRamp = 0 - self.EmergencyValveEPKRamp = 0 - self.EmergencyBrakeValveRamp = 0 -end - -function ENT:UpdateTextures() - self.Texture = self:GetNW2String("texture") - self.PassTexture = self:GetNW2String("passtexture") - self.CabinTexture = self:GetNW2String("cabtexture") - - self.Number = self:GetWagonNumber() - - self.RouteNumber = self:GetNW2String("RouteNumber","00") - - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabinTexture] - for _,ent in pairs(self.ClientEnts) do - if not IsValid(ent) then continue end - for k,v in pairs(ent:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - ent:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - ent:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - ent:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end - - local count = math.max(4,math.ceil(math.log10(self.Number))) - for i=0,4 do - self:ShowHide("TrainNumberL"..i,i 0,self:GetPackedRatio("Headlight")) - if IsValid(self.GlowingLights[1]) then - self.GlowingLights[1]:SetEnableShadows(true) - if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then - self.GlowingLights[1]:SetFarZ(3144) - end - if self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 5144 then - self.GlowingLights[1]:SetFarZ(5144) - end - end - local val = self.Anims["gauges_lit"] and self.Anims["gauges_lit"].value^3 or 0 - self:SetLightPower(22,val>0,val)--self:GetPackedBool("PanelLights")) - - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - --[[ - if self.FrontDoor < 90 and self:GetPackedBool(157) or self.FrontDoor > 0 and not self:GetPackedBool(157) then - --local FrontDoorData = self.ClientProps["door1"] - --FrontDoor:SetLocalPos(FrontDoorData.pos + Vector(-2,-0,0)) - self.FrontDoor = math.max(0,math.min(90,self.FrontDoor + (self:GetPackedBool(157) and 1 or -1)*self.DeltaTime*180)) - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - if not self.ButtonMapMatrix["InfoTable"] then - self.ButtonMapMatrix["InfoTable"] = {} - self.ButtonMapMatrix["InfoTable"].scale = 0.1/2 - end - self.ButtonMapMatrix["InfoTable"].ang = Angle(0,90+self.FrontDoor,90) - self.ButtonMapMatrix["InfoTable"].pos = Vector(458.0,-16.0,12.0) + Vector(0,1.5,0)*self.FrontDoor/90 - - end - ]] - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - - -- Parking brake animation - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self:GetPackedRatio("ManualBrake")*360*3.2 - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - local BAsnd = math.floor(self.TrueBrakeAngle/10) - if self.BrakeAngleSND ~= BAsnd then - if not IsValid(self.Sounds["parking_brake_rolling"]) or self.Sounds["parking_brake_rolling"]:GetState() ~= GMOD_CHANNEL_PLAYING then - self:PlayOnce("parking_brake_rolling","bass",1,1) - end - self.BrakeAngleSND = BAsnd - end - local Lamps = self:GetPackedBool(20) and 0.6 or 1 - self:ShowHideSmooth("Lamps_emer",self:Animate("lamps_emer",self:GetPackedBool("Lamps_emer") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Gauges_lit",self:Animate("gauges_lit",(self:GetPackedBool("L_3") and self:GetPackedBool("VB")) and 1 or 0,0,1,12,false)) - - self:Animate("KRR", self:GetPackedBool("KRR") and 0 or 1,0,1, 16, false) - self:Animate("KRP", self:GetPackedBool(113) and 1 or 0,0,1, 16, false) - - - self:ShowHideSmooth("RedLights",self:Animate("redlights",self:GetPackedBool("RedLight") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("WhiteLights",self:Animate("whitelights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DistantLights",self:Animate("distantlights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false)) - - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 0 or 1,0.25,0.5, 4,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.25,0, 4,false) - - self:Animate("UAVALever", self:GetPackedBool(152) and 0 or 1, 0,0.25, 128, 3,false) - - - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake", 1-self:GetPackedRatio(0), 0.00, 0.48, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0, 0.31, 25*1000,1) - self:Animate("reverser", self:GetPackedRatio(2), 0.26, 0.35, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0.6,0.5,45,3) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0.2, 0.85, 359,3)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0.2, 0.85, 359,3)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0, 0.95, 359,3)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.632,0.36,92,2) - self:Animate("ampermeter", self:GetPackedRatio(8), 0.632,0.36, nil, nil, 92,20,3) - - - local door1 = self:Animate("door1", self:GetPackedBool(157) and 0.99 or 0,0,0.22, 1024, 1) - local door2 = self:Animate("door2", self:GetPackedBool(156) and 0.99 or 0,0,0.25, 1024, 1) - local door3 = self:Animate("door3", self:GetPackedBool(158) and 0.99 or 0,1,0.79, 1024, 1) - local door4 = self:Animate("door4", self:GetPackedBool(159) and 0.99 or 0,1,0.77, 1024, 1) - - if self.Door1 ~= (door1 > 0) then - self.Door1 = door1 > 0 - self:PlayOnce("door1","bass",self.Door1 and 1 or 0) - end - if self.Door2 ~= (door2 > 0) then - self.Door2 = door2 > 0 - self:PlayOnce("door2","bass",self.Door2 and 1 or 0) - end - if self.Door3 ~= (door3 > 0) then - self.Door3 = door3 > 0 - self:PlayOnce("door3","bass",self.Door3 and 1 or 0) - end - if self.Door4 ~= (door4 > 0) then - self.Door4 = door4 > 0 - self:PlayOnce("door4","bass",self.Door4 and 1 or 0) - end - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,0.35, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 0 or 1,0,0.35, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 1 or 0,0,0.35, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,0.35, 3, false) - - self:ShowHideSmooth("AVULight_light",self:Animate("AVUl",self:GetPackedBool(38) and 1 or 0,0,1,10,false)) - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - ---BIG Digits - if self:GetPackedBool(32) then - local speed = self:GetPackedRatio("Speed")*100.0 - if IsValid(self.ClientEnts["speedo1"])then - self.ClientEnts["speedo1"]:SetSkin(math.floor(speed)%10) - end - if IsValid(self.ClientEnts["speedo2"])then - self.ClientEnts["speedo2"]:SetSkin(math.floor(speed/10)) - end - end - - self:ShowHide("speedo1",self:GetPackedBool(32)) - self:ShowHide("speedo2",self:GetPackedBool(32)) - - -- Animate doors ---self:InitializeSounds() - if not self.DoorStates then self.DoorStates = {} end - if not self.DoorLoopStates then self.DoorLoopStates = {} end - for i=0,3 do - for k=0,1 do - local st = k==1 and "DoorL" or "DoorR" - local doorstate = self:GetPackedBool(st) - local id,sid = st..(i+1),"door"..i.."x"..k - local state = self:GetPackedRatio(id) - --print(state,self.DoorStates[state]) - if (state ~= 1 and state ~= 0) ~= self.DoorStates[id] then - if doorstate and state < 1 or not doorstate and state > 0 then - else - if state > 0 then - self:PlayOnce(sid.."o","",1,math.Rand(0.8,1.2)) - else - self:PlayOnce(sid.."c","",1,math.Rand(0.8,1.2)) - end - end - self.DoorStates[id] = (state ~= 1 and state ~= 0) - end - if (state ~= 1 and state ~= 0) then - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) + 2*self.DeltaTime,0,1) - else - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) - 6*self.DeltaTime,0,1) - end - self:SetSoundState(sid.."r",self.DoorLoopStates[id],0.8+self.DoorLoopStates[id]*0.2) - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - local dlo = 1 - local dro = 1 - if self.Anims[n_l] then - dlo = math.abs(state-(self.Anims[n_l] and self.Anims[n_l].oldival or 0)) - if dlo <= 0 and self.Anims[n_l].oldspeed then dlo = self.Anims[n_l].oldspeed/14 end - end - self:Animate(n_l,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - self:Animate(n_r,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - end - end - - -- Door transient - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - local door_state1 = self:GetPackedBool(21) - local door_state2 = self:GetPackedBool(25) - if door_state1 ~= self.PrevDoorState1 then - self.PrevDoorState1 = door_state1 - self.Transient = 1.00 - end - if door_state2 ~= self.PrevDoorState2 then - self.PrevDoorState2 = door_state2 - self.Transient = 1.00 - end - - local dT = self.DeltaTime - local speed = self:GetPackedRatio("Speed")*100.0 - local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) - local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1)) - local rol40p = Lerp((speed-23)/50,0.6,1) - local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1)) - local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2) - local rol80 = math.Clamp((speed-70)/5,0,1) - local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_10",rol10,0.6) - self:SetSoundState("rolling_40",rol40,rol40p) - self:SetSoundState("rolling_70",rol70,rol70p) - self:SetSoundState("rolling_80",rol80,rol80p) - --[[ - local sign = 1 - if dPdT < 0 then sign = -1 end - if self.PrevDpSign ~= sign then - self.PrevDpSign = sign - self:SetSoundState("release",0.0,0.0) - end]] - - - local dT = self.DeltaTime - local threshold = 0.01 - local dPdT = self:GetPackedRatio("BrakeCylinderPressure_dPdT") - self.ReleasedPdT = math.Clamp(self.ReleasedPdT + 4*(-self:GetPackedRatio("BrakeCylinderPressure_dPdT",0)-self.ReleasedPdT)*dT,0,1) - --print(dPdT) - self:SetSoundState("release1",math.Clamp(self.ReleasedPdT,0,1)^1.65,1.0) - - if self:GetPackedBool(22) then - self.CraneRamp = self.CraneRamp + 1.0*((0.9*self:GetPackedRatio("Crane_dPdT",0))-self.CraneRamp)*dT - self:SetSoundState("crane334_brake",0,1.0) - self:SetSoundState("crane334_brake_slow",0,1.0) - self:SetSoundState("crane334_release",0,1.0) - else - self.CraneRamp = math.Clamp(self.CraneRamp + 8.0*((1*self:GetPackedRatio("Crane_dPdT",0))-self.CraneRamp)*dT,-1,1) - self:SetSoundState("crane334_brake",math.Clamp(((-self.CraneRamp)-0.5)/0.5,0,1),1.0) - self:SetSoundState("crane334_brake_slow",math.Clamp((-self.CraneRamp)*2,0,1),1.0) - self:SetSoundState("crane334_release",math.Clamp(self.CraneRamp,0,1),1.0) - end - local emergencyValveEPK = self:GetPackedRatio("EmergencyValveEPK_dPdT", 0) - self.EmergencyValveEPKRamp = math.Clamp(self.EmergencyValveEPKRamp + 1.0*((0.5*emergencyValveEPK)-self.EmergencyValveEPKRamp)*dT,0,1) - self:SetSoundState("epk_brake",self.EmergencyValveEPKRamp,1.0) - if emergencyValveEPK > 0 and not self.EmergencyValveEPKStart then - self:PlayOnce("epk_brake_start","bass",1,1) - self.EmergencyValveEPKStart = true - end - if emergencyValveEPK <= 0 and self.EmergencyValveEPKStart then - self.EmergencyValveEPKStart = false - end - - local emergencyBrakeValve = self:GetPackedRatio("EmergencyBrakeValve_dPdT", 0) - self.EmergencyBrakeValveRamp = math.Clamp(self.EmergencyBrakeValveRamp + 1.0*((0.5*emergencyBrakeValve)-self.EmergencyBrakeValveRamp)*dT,0,1) - self:SetSoundState("valve_brake",self.EmergencyBrakeValveRamp,1.0) - if emergencyBrakeValve > 0 and not self.EmergencyBrakeValveStart then - self:PlayOnce("valve_brake_start","bass",1,1) - self.EmergencyBrakeValveStart = true - end - if emergencyBrakeValve <= 0 and self.EmergencyBrakeValveStart then - self.EmergencyBrakeValveStart = false - end - self:SetSoundState("pneumo_idle",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - local emergencyValve = self:GetPackedRatio("EmergencyValve_dPdT", 0) - self.EmergencyValveRamp = math.Clamp(self.EmergencyValveRamp + 1.0*((0.5*emergencyValve)-self.EmergencyValveRamp)*dT,0,1) - self:SetSoundState("emer_brake",self.EmergencyValveRamp,1.0) - if emergencyValve > 0 and not self.EmergencyValveStart then - self:PlayOnce("emer_brake_start","bass",1,1) - self.EmergencyValveStart = true - end - if emergencyValve <= 0 and self.EmergencyValveStart then - self.EmergencyValveStart = false - end - - - -- Compressor - local state = self:GetPackedBool(20) - self:SetSoundState("compressor",state and 0.6 or 0,1) - -- ARS/ringer alert - state = self:GetPackedBool(39) - if state then - self:SetSoundState("ring_old",0.20,1) - else - self:SetSoundState("ring_old",0,0) - end - - state = self:GetPackedBool("VPR") - if state then - self:SetSoundState("vpr",1,1) - else - self:SetSoundState("vpr",0,0) - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self:SetSoundState("rk",state and 0.7 or 0,1) - - local work = self:GetNW2Bool("ASNPPlay") - local playing = self:GetNW2Bool("AnnouncerPlaying", false) - self.NoiseVolume = self.NoiseVolume or 0 - local buzzvolume = 0 - if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then buzzvolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end - if self.NoiseVolume > buzzvolume then - self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(buzzvolume-self.NoiseVolume)*dT,0.1,1) - else - self.NoiseVolume = math.Clamp(self.NoiseVolume + 0.5*(buzzvolume-self.NoiseVolume)*dT,0.1,1) - end - for k,v in ipairs(self.AnnouncerPositions) do - local play = playing and work - for i=1,2 do - self:SetSoundState(Format("announcer_noise%d_%d",i,k),play and self.NoiseVolume or 0,1) - end - if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(play and 1 or 0) end - end -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end -function ENT:DrawPost(special) - --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) - -if self.InfoTableTimeout and (CurTime() < self.InfoTableTimeout) then - self:DrawOnPanel("InfoTableSelect",function() - local text = self:GetNW2String("FrontText","") - local col = text:find("ЗЕЛ") and Color(100,200,0) or text:find("СИН") and Color(0,100,200) or text:find("МАЛ") and Color(200,100,200) or text:find("ОРА") and Color(200,200,0) or text:find("БИР") and Color(48,213,200) or Color(255,0,0) - draw.DrawText(self:GetNW2String("RouteNumber","") .. " " .. text,"MetrostroiSubway_InfoPanel",260, -100,col,TEXT_ALIGN_CENTER) - end) - end - - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end - -function ENT:OnPlay(soundid,location,range,pitch) - if location == "stop" then - if IsValid(self.Sounds[soundid]) then - self.Sounds[soundid]:Pause() - self.Sounds[soundid]:SetTime(0) - end - return - end - if location == "bass" then - if soundid == "VDOL" then - return range > 0 and "vdol_on" or "vdol_off",location,1,pitch - end - if soundid == "VDOP" then - return range > 0 and "vdor_on" or "vdor_off",location,1,pitch - end - if soundid == "VDZ" then - return range > 0 and "vdz_on" or "vdz_off",location,1,pitch - end - if soundid:sub(1,4) == "IGLA" then - return range > 0 and "igla_on" or "igla_off",location,1,pitch - end - if soundid == "LK2" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk2_on" or "lk2_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "LK3" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk3_on" or "lk3_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "RVT" then - return range > 0 and "rvt_on" or "rvt_off",location,1,pitch - end - if soundid == "R1_5" then - return range > 0 and "r1_5_on" or "r1_5_off",location,1,pitch - end - if soundid == "RPB" then - return range > 0 and "rpb_on" or "rpb_off",location,1,pitch - end - if soundid == "KD" then - return range > 0 and "kd_on" or "kd_off",location,1,pitch - end - if soundid == "K25" then - return range > 0 and "k25_on" or "k25_off",location,1,pitch - end - if soundid == "RO" then - return range > 0 and "ro_on" or nil,location,1,pitch - end - if soundid == "AVU" then - return range > 0 and "avu_on" or "avu_off",location,1,0.6 - end - end - return soundid,location,range,pitch -end - -local dist = {} -for id,panel in pairs(ENT.ButtonMap) do - if not panel.buttons then continue end - for k,v in pairs(panel.buttons) do - if v.model then - local dist = dist[id] or 150 - if v.model.model then - v.model.hideseat=dist - elseif v.model.lamp then - v.model.lamp.hideseat=dist - end - end - end -end -Metrostroi.GenerateClientProps() diff --git a/lua/entities/_obsolete/gmod_subway_em508_int/init.lua b/lua/entities/_obsolete/gmod_subway_em508_int/init.lua deleted file mode 100644 index f9a9c4b..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508_int/init.lua +++ /dev/null @@ -1,861 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---"DURASelectMain","DURASelectAlternate","DURAToggleChannel","DURAPowerToggle", -ENT.SyncTable = { - "CustomC","Custom1","Custom2","Custom3","CustomD", - "CustomE","CustomF","CustomG","R_UNch","R_ZS","R_G","R_Radio","R_Program1","R_Program2","KVT","KB","KSD", - "VZ1","VUD1","KDL","KDLR","KDLK","KDP","KDLRK","DoorSelect","Ring","UKS","AGS", - "KRZD","R_VPR","VozvratRP","AVU","KVP","ConverterProtection","RZP", - "KSN","ARS","ALS","OtklAVU","TormAT","L_1","L_3","DIPoff", - "VMK","BPSNon","RezMK","ARS13","L_4","VUS","VAH","VAD","EmergencyBrakeValve", - "KAH","KAHK","KDPK","CabinHeat","KRR","KRP", - "RC1","VB","BPS","UOS", "PB", "UAVA","AVULight_light","PD","AVU", - "DriverValveBLDisconnect","DriverValveTLDisconnect","DriverValveTLDisconnect","ParkingBrake","EPK", - "VUD2","VDL", "GV","DIPon","DIPoff","VozvratRP","KU1","RezMK", - "VU3","VU1","VU2","AV8B","VU","KDLK","VDLK","KDPK","RST", "DoorSelect","LPU","R_ASNPMenu","R_ASNPUp","R_ASNPDown","R_ASNPOn", -} -ENT.SyncFunctions = { - "" -} - -function ENT:Initialize() - - self.Plombs = { - RST = true, - Init = true, - OtklAVU = true, - UAVA = true, - VU=true, - } - -- Set model and initialize - self:SetModel("models/metrostroi_train/81-508/81-508.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(425,-39,-27.5),Angle(0,0,0)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 317-5,0,-89),Angle(0,180,0),true,"717") - self.RearBogey = self:CreateBogey(Vector(-317+0,0,-89),Angle(0,0,0),false,"717") - self.FrontCouple = self:CreateCouple(Vector( 419.5+3.5,0,-75),Angle(0,0,0),true,"717") - self.RearCouple = self:CreateCouple(Vector(-421.5-3.5,0,-75),Angle(0,180,0),false,"717") - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_EQUAL] = "R_Program1Set", - [KEY_MINUS] = "R_Program2Set", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_N] = "VZ1Set", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_6] = "PneumaticBrakeSet6", - [KEY_PAD_7] = "PneumaticBrakeSet7", - [KEY_PAD_DIVIDE] = "KRPSet", - [KEY_PAD_MULTIPLY] = "KAHSet", - --[KEY_J] = "KVWrenchKRU", - - --[KEY_SPACE] = "PBSet", - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - - [KEY_A] = "DURASelectAlternate", - [KEY_D] = "DURASelectMain", - [KEY_V] = "DURAToggleChannel", - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - --[KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - --[KEY_L] = "DriverValveDisconnect", - [KEY_F] = "BCCDSet", - [KEY_R] = "VZPSet", - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - }, - --[KEY_RALT] = { - --[KEY_L] = "EPKToggle", - --}, - } - - self.InteractionZones = { - { Pos = Vector(-471,-30,0), - Radius = 28, - ID = "RearDoor" - }, - { Pos = Vector(473,32,28), - Radius = 28, - ID = "FrontDoor1" - }, - { Pos = Vector(473,32,-28), - Radius = 28, - ID = "FrontDoor2" - }, - { Pos = Vector(383.02,31.85,2), - Radius = 28, - ID = "PassengerDoor1" - }, - { Pos = Vector(383.02,-31.85,2), - Radius = 28, - ID = "PassengerDoor2" - }, - { Pos = Vector(408.18,63.59,-26), - Radius = 16, - ID = "CabinDoor1" - }, - { Pos = Vector(408.18,63.59,6), - Radius = 16, - ID = "CabinDoor2" - }, - { Pos = Vector(408.18,63.59,38), - Radius = 16, - ID = "CabinDoor3" - }, - { Pos = Vector(458.18,63.59,-26), - Radius = 16, - ID = "CabinDoor4" - }, - { Pos = Vector(458.18,63.59,6), - Radius = 16, - ID = "CabinDoor5" - }, - { Pos = Vector(458.18,63.59,38), - Radius = 16, - ID = "CabinDoor6" - }, - } - - self.Lights = { - -- Head - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Emergency lit - [9] = { "headlight", Vector(412,0,51), Angle(80,0,0), Color(255,255,255), brightness = 1, farz = 117, nearz = 0.01, shadows = 0, fov = 120 }, - -- Cabin - [22] = { "light", Vector(432+5.9,-54.5,42.2), Angle(90,0,0), Color(255,180,128), brightness = 0.75, scale = 0.4, texture = "sprites/light_glow03.vmt" }, - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(255,130,88), brightness = 0.001, distance = 500}, - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, -5), Angle(180,0,0), Color(255, 176, 59), brightness = 2, distance = 400 , fov=180 }, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(180,0,0), Color(255, 176, 59), brightness = 2, distance = 400, fov=180 }, - [13] = { "dynamiclight", Vector(-300, 0, -5), Angle(180,0,0), Color(255, 176, 59), brightness = 2, distance = 400 , fov=180 }, - - [15] = { "light", Vector(402.202942,69.270073,44.79285), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [16] = { "light", Vector(402.202942,69.270073,41.509621), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [17] = { "light", Vector(402.202942,69.270073,37.3862), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - - [70 ] = { "headlight", Vector( 450, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, - - } - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - --- self.A5:TriggerInput("Set",0) - self:TrainSpawnerUpdate() -end - -function ENT:TrainSpawnerUpdate() - self.Texture = self:GetNW2String("Texture") - self.PassTexture = self:GetNW2String("PassTexture") - self.CabTexture = self:GetNW2String("CabTexture") - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - elseif v == "models/metrostroi_train/81/tabl" then - if not self.SignsList then - self:PrepareSigns() - end - if self.SignsList[self.SignsIndex] then self:SetSubMaterial(k-1,self.SignsList[self.SignsIndex][1]) end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end -end - --------------------------------------------------------------------------------- -function ENT:Think() - local RetVal = self.BaseClass.Think(self) - - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetPackedBool("RedLight",(self.Panel["RedLightLeft"] > 0.5 or self.Panel["RedLightRight"] > 0.5 ) and not IsValid(self.FrontTrain)) - - -- Emergency Ezh cabin lights - self:SetLightPower(9, self.AV8B.Value < 0.5 and self.VU2.Value > 0.5 and self.Panel["V1"] > 0.5) - - -- Cabin lights - --self:SetLightPower(22, self.L_2.Value > 0.5 and self.Panel["V1"] > 0.5) - self:SetLightPower(23, self.VU3.Value > 0.5) - - --Gauges lights - self:SetPackedBool("PanelLights",self.L_3.Value > 0.5 and self.Panel["V1"] > 0.5) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = (self.VU2.Value > 0.5 and self.Panel["V1"] > 0.5) or lightsActive2 - self:SetPackedBool("Lamps_emer",lightsActive1) - self:SetPackedBool("Lamps_full",lightsActive2) - local Light - if self.Pneumatic.Compressor == 1 then - Light = (lightsActive2 and 0.6 or 0.3) - else - Light = (lightsActive2 and 0.8 or 0.4) - end - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - self:SetPackedRatio("LampsI",math.Round((self.Electric.I24-150)/1000.0,1.5)) - - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end - self:SetPackedBool(131,TW18 > 0) - self:SetPackedRatio("LRP",TW18) - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ManualBrake - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - self:SetPackedBool(40,self.Panel["V1"] > 0.5 and self.Panel["SD"] < 0.5) - -- KSD - self:SetPackedBool("KSD",self.KSD.Value == 0.00) - -- KRP - self:SetPackedBool(113,self.KRP.Value == 1.0) - - - self:SetPackedBool("DriverValveBLDisconnect",self.DriverValveBLDisconnect.Value == 1.0) - self:SetPackedBool("DriverValveTLDisconnect",self.DriverValveTLDisconnect.Value == 1.0) - if self.DriverValveDisconnect.Blocked > 0 and self.Pneumatic.ValveType == 2 then - self.DriverValveDisconnect:TriggerInput("Block",0) - self.DriverValveBLDisconnect:TriggerInput("Block",1) - self.DriverValveTLDisconnect:TriggerInput("Block",1) - end - if self.DriverValveDisconnect.Blocked == 0 and self.Pneumatic.ValveType == 1 then - self.DriverValveDisconnect:TriggerInput("Block",1) - self.DriverValveBLDisconnect:TriggerInput("Block",0) - self.DriverValveTLDisconnect:TriggerInput("Block",0) - end - self:SetPackedBool("EPK",self.EPK.Value == 1.0) - self:SetPackedBool("VPR",self.RST.Value > 0 and self.Panel["V1"] > 0) - self:SetPackedBool("LST",self:ReadTrainWire(6) > 0.5) - self:SetPackedBool("LVD",self:ReadTrainWire(1) > 0.5) - self:SetPackedBool("RK",self:ReadTrainWire(2) > 0.5) - self:SetPackedBool(19,self.OtklAVU.Value == 1.0) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(55,(self.DoorSelect.Value == 1.0)) - self:SetPackedBool("VZ1",(self.VZ1.Value == 1)) - - self:SetPackedBool(17,self.KRZD.Value == 1.0) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - - self:SetNW2Bool("ASNPPlay",self.VB.Value > 0 and self:ReadTrainWire(47) > 0) - --KRR - self:SetPackedBool("KRR",self.KRR.Value > 0.5) - - --Radiostation - self:SetPackedBool(125,self.R_G.Value == 1.0) - self:SetPackedBool(127,self.R_ZS.Value == 1.0) - self:SetPackedBool(126,self.R_Radio.Value == 1.0) - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - - --[[ - -- LST - self:SetPackedBool(49,self:ReadTrainWire(6) > 0.5) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - self:SetPackedBool(165,self.PB.Value > 0) - - -- AV states - -- for i,v in ipairs(self.Panel.AVMap) do - -- if tonumber(v) - -- then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - -- elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - -- end - -- end - - self:SetPackedBool(62,self.L_3.Value > 0.5) - self:SetPackedBool(64+19,self.VU1.Value > 0.5) - self:SetPackedBool(64+12,self.VU.Value > 0.5) - self:SetPackedBool(64+24,self.RST.Value > 0.5) - self:SetPackedBool(64+7 ,self.AV8B.Value > 0.5) - self:SetPackedBool(64+36,self.VU2.Value > 0.5) - self:SetPackedBool(64+13,self.VU3.Value > 0.5) - self:SetPackedBool("VPR",self.RST.Value == 1.0 and self.Panel["V1"]) - ]] - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 82.0) - self:SetPackedRatio(11,IGLA_Temperature) - self:SetPackedBool("EmergencyBrakeValve",self.EmergencyBrakeValve.Value > 0) - self:SetPackedBool(152,self.UAVA.Value == 1.0) - - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - self:SetPackedBool(22,self.Pneumatic.ValveType == 2) - - -- Update ARS system (no ars on E) - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/100) - ---print (self.Speed) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 27000+13000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 27000+13000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - local add = 1 - if math.abs(self:GetAngles().pitch) > 4 then - add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 - end - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 85, math.random(96,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 85, math.random(96,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.05) - if self.ManualBrake == 0.0 then return end - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.05) - if self.ManualBrake == 1.0 then return end - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveBLDisconnect:TriggerInput("Set",1) - return - end - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - --self:PlayOnce("pneumo_disconnect1","cabin",0.9) - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - else - --self:PlayOnce("pneumo_disconnect2","cabin",0.9) - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - end - return - end - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - - --[[if (button == "UAVAToggle") then - if self.UAVA then - if self.UAVA.Value > 0.5 then - self:PlayOnce("uava_off","cabin") - else - self:PlayOnce("uava_off","cabin") - end - end - return - end]] -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - - if (not string.find(button,"KVT")) and string.find(button,"KV") then return end - if string.find(button,"KRU") then return end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end - -function ENT:TriggerTurbostroiInput(sys,name,val) - self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) - if sys == "Panel" and name:find("HeadLights") or sys == "L_4" then - local brightness = math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25 - if (self.Panel["HeadLights3"] > 0.5 or self.Panel["HeadLights1"] > 0.5) then-- and (self.L_4.Value > 0.5) then - self:SetPackedRatio("Headlight",brightness) - else - self:SetPackedRatio("Headlight",0) - end - self:SetPackedBool("HeadLights1",self.Panel["HeadLights1"] > 0) - self:SetPackedBool("HeadLights2",self.Panel["HeadLights2"] > 0) - end -end diff --git a/lua/entities/_obsolete/gmod_subway_em508_int/shared.lua b/lua/entities/_obsolete/gmod_subway_em508_int/shared.lua deleted file mode 100644 index df7a969..0000000 --- a/lua/entities/_obsolete/gmod_subway_em508_int/shared.lua +++ /dev/null @@ -1,538 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintName = "Entities.Em508_int" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = true -ENT.AdminSpawnable = false - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -local function GetDoorPosition(i,k) - return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) -end -ENT.AnnouncerPositions = { - {Vector(412,-49 ,61),80,1}, - {Vector(-3,-60, 62),300,1}, - {Vector(-3,60 ,62),300,1}, -} - - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} - self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} - self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} - self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_10"] = {1200,1e9,Vector(0,0,0),1} - self.SoundPositions["rolling_40"] = self.SoundPositions["rolling_10"] - self.SoundPositions["rolling_70"] = self.SoundPositions["rolling_10"] - self.SoundPositions["rolling_80"] = self.SoundPositions["rolling_10"] - self.SoundNames["pneumo_disconnect2"] = "subway_trains/common/pneumatic/pneumo_close.mp3" - self.SoundNames["pneumo_disconnect1"] = { - "subway_trains/common/pneumatic/pneumo_open.mp3", - "subway_trains/common/pneumatic/pneumo_open2.mp3", - } - self.SoundPositions["pneumo_disconnect2"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - self.SoundPositions["pneumo_disconnect1"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - self.SoundNames["epv_on"] = "subway_trains/common/pneumatic/epv_on.mp3" - self.SoundNames["epv_off"] = "subway_trains/common/pneumatic/epv_off.mp3" - self.SoundPositions["epv_on"] = {100,1e9,Vector(437.2,-53.1,-32.0),1} - self.SoundPositions["epv_off"] = {100,1e9,Vector(437.2,-53.1,-32.0),1} - self.SoundPositions["epv_off"] = {60,1e9,Vector(437.2,-53.1,-32.0),1} - -- Релюшки - self.SoundNames["rpb_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["rpb_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["rpb_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["rpb_off"] = {100,1e9,Vector(400,25,-35),1} - self.SoundNames["rvt_on"] = { - "subway_trains/717/relays/brake_on1.mp3", - } - self.SoundNames["rvt_off"] = { - "subway_trains/717/relays/brake_off1.mp3", - "subway_trains/717/relays/brake_off2.mp3", - "subway_trains/717/relays/brake_off3.mp3", - } - self.SoundPositions["rvt_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["rvt_off"] = {100,1e9,Vector(400,25,-35),1} - if self.Breakers then - self.SoundNames["r1_5_on"] = "subway_trains/717/relays/drive_on1.mp3" - else - self.SoundNames["r1_5_on"] = "subway_trains/717/relays/drive2_on.mp3" - end - self.SoundNames["r1_5_off"] = "subway_trains/717/relays/drive_off.mp3" - self.SoundPositions["r1_5_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["r1_5_off"] = {100,1e9,Vector(400,25,-35),1} - - self.SoundNames["kd_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["kd_on"] = "subway_trains/717/relays/lsd_1.mp3" - self.SoundPositions["kd_on"] = {100,1e9,Vector(400,25,-35),1} - self.SoundPositions["kd_off"] = {100,1e9,Vector(400,25,-35),1} - self.SoundNames["k25_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["k25_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["k25_on"] = {120,1e9,Vector(400,25,-35),1} - self.SoundPositions["k25_off"] = {120,1e9,Vector(400,25,-35),1} - self.SoundNames["ro_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["ro_on"] = "subway_trains/717/relays/RO_on.mp3" - self.SoundPositions["ro_on"] = {140,1e9,Vector(400,25,-35),1} - self.SoundPositions["ro_off"] = {140,1e9,Vector(400,25,-35),1} - - - self.SoundNames["avu_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["avu_on"] = "subway_trains/717/relays/relay_on.mp3" - self.SoundPositions["avu_on"] = {60,1e9, Vector(400,-40,-45),1} - self.SoundPositions["avu_off"] = {60,1e9, Vector(400,-40,-45),1} - --Подвагонка - self.SoundNames["lk2_on"] = "subway_trains/717/pneumatic/lk/lk2_on.mp3" - self.SoundNames["lk2_off"] = "subway_trains/717/pneumatic/lk/lk2_off.mp3" - self.SoundNames["lk3_on"] = "subway_trains/717/pneumatic/lk/lk3_on.mp3" - self.SoundNames["lk3_off"] = "subway_trains/717/pneumatic/lk/lk3_off.mp3" - self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.2} - self.SoundPositions["lk2_off"] = {400,1e9,Vector(-60,-40,-66),0.6} - self.SoundPositions["lk3_on"] = {440,1e9,Vector(-60,-40,-66),0.2} - self.SoundPositions["lk3_off"] = {400,1e9,Vector(-60,-40,-66),0.6} - - self.SoundNames["compressor"] = {loop=2.0,"subway_trains/ezh/compressor/ezh_compressor_start.mp3","subway_trains/ezh/compressor/ezh_compressor_loop.mp3", "subway_trains/ezh/compressor/ezh_compressor_end.mp3"} - self.SoundPositions["compressor"] = {700,1e9,Vector(-118,-40,-66)} - self.SoundNames["rk"] = {"subway_trains/717/rk/rk_start.wav","subway_trains/717/rk/rk_spin.wav","subway_trains/717/rk/rk_stop.mp3"} - self.SoundPositions["rk"] = {70,1e3,Vector(110,-40,-75)} - - self.SoundNames["ezh3_revers_0-f"] = {"subway_trains/717/kv70/reverser_0-f_1.mp3","subway_trains/717/kv70/reverser_0-f_2.mp3"} - self.SoundNames["ezh3_revers_f-0"] = {"subway_trains/717/kv70/reverser_f-0_1.mp3","subway_trains/717/kv70/reverser_f-0_2.mp3"} - self.SoundNames["ezh3_revers_0-b"] = {"subway_trains/717/kv70/reverser_0-b_1.mp3","subway_trains/717/kv70/reverser_0-b_2.mp3"} - self.SoundNames["ezh3_revers_b-0"] = {"subway_trains/717/kv70/reverser_b-0_1.mp3","subway_trains/717/kv70/reverser_b-0_2.mp3"} - self.SoundNames["revers_in"] = {"subway_trains/ezh3/kv66/revers_in.wav"} - self.SoundNames["revers_out"] = {"subway_trains/ezh3/kv66/revers_out.wav"} - self.SoundPositions["ezh3_revers_0-f"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_f-0"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_0-b"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_b-0"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_in"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - self.SoundPositions["ezh3_revers_out"] = {80,1e9,Vector(445.5,-32+1.7,-7.5)} - - self.SoundNames["kru_in"] = { - "subway_trains/717/kru/kru_insert1.mp3", - "subway_trains/717/kru/kru_insert2.mp3" - } - self.SoundPositions["kru_in"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundNames["kru_out"] = { - "subway_trains/717/kru/kru_eject1.mp3", - "subway_trains/717/kru/kru_eject2.mp3", - "subway_trains/717/kru/kru_eject3.mp3", - } - self.SoundPositions["kru_out"] = {80,1e9,Vector(452.3,-24.0,4.0)} - - self.SoundNames["kru_0_1"] = { - "subway_trains/717/kru/kru0-1_1.mp3", - "subway_trains/717/kru/kru0-1_2.mp3", - "subway_trains/717/kru/kru0-1_3.mp3", - "subway_trains/717/kru/kru0-1_4.mp3", - } - self.SoundNames["kru_1_2"] = { - "subway_trains/717/kru/kru1-2_1.mp3", - "subway_trains/717/kru/kru1-2_2.mp3", - "subway_trains/717/kru/kru1-2_3.mp3", - "subway_trains/717/kru/kru1-2_4.mp3", - } - self.SoundNames["kru_2_1"] = { - "subway_trains/717/kru/kru2-1_1.mp3", - "subway_trains/717/kru/kru2-1_2.mp3", - "subway_trains/717/kru/kru2-1_3.mp3", - "subway_trains/717/kru/kru2-1_4.mp3", - } - self.SoundNames["kru_1_0"] = { - "subway_trains/717/kru/kru1-0_1.mp3", - "subway_trains/717/kru/kru1-0_2.mp3", - "subway_trains/717/kru/kru1-0_3.mp3", - "subway_trains/717/kru/kru1-0_4.mp3", - } - self.SoundNames["kru_2_3"] = { - "subway_trains/717/kru/kru2-3_1.mp3", - "subway_trains/717/kru/kru2-3_2.mp3", - "subway_trains/717/kru/kru2-3_3.mp3", - "subway_trains/717/kru/kru2-3_4.mp3", - } - self.SoundNames["kru_3_2"] = { - "subway_trains/717/kru/kru3-2_1.mp3", - "subway_trains/717/kru/kru3-2_2.mp3", - "subway_trains/717/kru/kru3-2_3.mp3", - "subway_trains/717/kru/kru3-2_4.mp3", - } - self.SoundPositions["kru_0_1"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_1_2"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_2_1"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_1_0"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_2_3"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundPositions["kru_3_2"] = {80,1e9,Vector(452.3,-24.0,4.0)} - - self.SoundNames["kr_open"] = { - "subway_trains/717/cover/cover_open1.mp3", - "subway_trains/717/cover/cover_open2.mp3", - "subway_trains/717/cover/cover_open3.mp3", - } - self.SoundNames["kr_close"] = { - "subway_trains/717/cover/cover_close1.mp3", - "subway_trains/717/cover/cover_close2.mp3", - "subway_trains/717/cover/cover_close3.mp3", - } - - self.SoundNames["switch_off"] = { - "subway_trains/717/switches/tumbler_slim_off1.mp3", - "subway_trains/717/switches/tumbler_slim_off2.mp3", - "subway_trains/717/switches/tumbler_slim_off3.mp3", - "subway_trains/717/switches/tumbler_slim_off4.mp3", - } - self.SoundNames["switch_on"] = { - "subway_trains/717/switches/tumbler_slim_on1.mp3", - "subway_trains/717/switches/tumbler_slim_on2.mp3", - "subway_trains/717/switches/tumbler_slim_on3.mp3", - "subway_trains/717/switches/tumbler_slim_on4.mp3", - } - - self.SoundNames["switchbl_off"] = { - "subway_trains/717/switches/tumbler_fatb_off1.mp3", - "subway_trains/717/switches/tumbler_fatb_off2.mp3", - "subway_trains/717/switches/tumbler_fatb_off3.mp3", - } - self.SoundNames["switchbl_on"] = { - "subway_trains/717/switches/tumbler_fatb_on1.mp3", - "subway_trains/717/switches/tumbler_fatb_on2.mp3", - "subway_trains/717/switches/tumbler_fatb_on3.mp3", - } - - self.SoundNames["triple_down-0"] = { - "subway_trains/717/switches/tumbler_triple_down-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_down-0_2.mp3", - } - self.SoundNames["triple_0-up"] = { - "subway_trains/717/switches/tumbler_triple_0-up_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-up_2.mp3", - } - self.SoundNames["triple_up-0"] = { - "subway_trains/717/switches/tumbler_triple_up-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_up-0_2.mp3", - } - self.SoundNames["triple_0-down"] = { - "subway_trains/717/switches/tumbler_triple_0-down_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-down_2.mp3", - } - self.SoundNames["button1_off"] = { - "subway_trains/ezh3/switches/button_off1.mp3", - "subway_trains/ezh3/switches/button_off2.mp3", - } - self.SoundNames["button1_on"] = { - "subway_trains/ezh3/switches/button_on1.mp3", - "subway_trains/ezh3/switches/button_on2.mp3", - } - self.SoundNames["button2_off"] = { - "subway_trains/ezh3/switches/button_off3.mp3", - "subway_trains/ezh3/switches/button_off4.mp3", - } - self.SoundNames["button2_on"] = { - "subway_trains/ezh3/switches/button_on3.mp3", - "subway_trains/ezh3/switches/button_on4.mp3", - } - self.SoundNames["button3_off"] = { - "subway_trains/ezh3/switches/button_off6.mp3", - "subway_trains/ezh3/switches/button_off5.mp3", - } - self.SoundNames["button3_on"] = { - "subway_trains/ezh3/switches/button_on5.mp3", - "subway_trains/ezh3/switches/button_on6.mp3", - } - self.SoundNames["button4_off"] = { - "subway_trains/ezh3/switches/button_on1.mp3", - "subway_trains/ezh3/switches/button_on2.mp3", - } - self.SoundNames["button4_on"] = { - "subway_trains/717/switches/button4_on1.mp3", - "subway_trains/717/switches/button4_on2.mp3", - } - - self.SoundNames["uava_reset"] = { - "subway_trains/common/uava/uava_reset1.mp3", - "subway_trains/common/uava/uava_reset2.mp3", - "subway_trains/common/uava/uava_reset4.mp3", - } - self.SoundPositions["uava_reset"] = {80,1e9,Vector(449+7.7,56.0,-10.24349),0.6} - self.SoundNames["gv_f"] = self.SoundNames["revers_0-b"] - self.SoundNames["gv_b"] = self.SoundNames["revers_b-0"] - self.SoundPositions["gv_f"] = {80,1e2,Vector(120,62.0+0.0,-60),0.5} - self.SoundPositions["gv_b"] = {80,1e2,Vector(120,62.0+0.0,-60),0.5} - - --Краны - self.SoundNames["brake"] = {"subway_trains/common/pneumatic/vz_brake_on1.mp3","subway_trains/common/pneumatic/vz_brake_on2.mp3"} - self.SoundPositions["brake"] = {600,1e9,Vector(0,0,0),0.5} - self.SoundNames["release1"] = {loop=true,"subway_trains/common/pneumatic/release.wav"} --TODO разделение отпуска и срыва по позициям в кабине\вне - self.SoundPositions["release1"] = {1200,1e9,Vector(-183,0,-70)} - self.SoundNames["crane334_brake"] = {loop=true,"subway_trains/common/pneumatic/334_brake.wav"} --TODO добавить жужжащий звук - self.SoundPositions["crane334_brake"] = {180,1e9,Vector(440,-55.75,-10)} - self.SoundNames["crane334_brake_slow"] = {loop=true,"subway_trains/common/pneumatic/334_brake_slow.wav"} --TODO добавить жужжащий звук - self.SoundPositions["crane334_brake_slow"] = {180,1e9,Vector(440,-55.75,-10)} - self.SoundNames["crane334_release"] = {loop=true,"subway_trains/common/pneumatic/334_release.wav"} - self.SoundPositions["crane334_release"] = {180,1e9,Vector(440,-55.75,-10)} - - self.SoundNames["epk_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["epk_brake"] = {200,1e9,Vector(437.2,-53.1,-50.0)} - self.SoundNames["epk_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["epk_brake_start"] = self.SoundPositions["epk_brake"] - - self.SoundNames["valve_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["valve_brake"] = {200,1e9,Vector(402,-63,-50)} - self.SoundNames["valve_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["valve_brake_start"] = self.SoundPositions["valve_brake"] - - self.SoundNames["emer_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["emer_brake"] = {200,1e9,Vector(380,-45,-75)} - self.SoundNames["emer_brake_start"] = "subway_trains/common/pneumatic/epv_start.mp3" - self.SoundPositions["emer_brake_start"] = self.SoundPositions["emer_brake"] - - self.SoundNames["pneumo_TL_open"] = { - "subway_trains/common/334/334_open.mp3", - } - self.SoundNames["pneumo_TL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - self.SoundNames["pneumo_BL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - - self.SoundNames["pak_on"] = "subway_trains/717/switches/rc_on.mp3" - self.SoundNames["pak_off"] = "subway_trains/717/switches/rc_off.mp3" - - --self.SoundNames["kv70_fix_on"] = {"subway_trains/717/kv70/kv70_fix_on1.mp3","subway_trains/717/kv70/kv70_fix_on2.mp3"} --- self.SoundNames["kv70_fix_off"] = {"subway_trains/717/kv70/kv70_fix_off1.mp3","subway_trains/717/kv70/kv70_fix_off2.mp3"} - self.SoundNames["kv40_0_t1"] = {"subway_trains/ezh/kv40/kv40_0_T1.mp3"} - self.SoundNames["kv40_t1_0"] = {"subway_trains/ezh/kv40/kv40_T1_0.mp3"} - self.SoundNames["kv40_t1_t1a"] = {"subway_trains/ezh/kv40/kv40_T1_T1A.mp3"} - self.SoundNames["kv40_t1a_t1"] = {"subway_trains/ezh/kv40/kv40_T1A_T1.mp3"} - self.SoundNames["kv40_t1a_t2"] = {"subway_trains/ezh/kv40/kv40_T1A_T2.mp3"} - self.SoundNames["kv40_t2_t1a"] = {"subway_trains/ezh/kv40/kv40_T2_T1A.mp3"} - self.SoundNames["kv40_0_x1"] = {"subway_trains/ezh/kv40/kv40_0_X1.mp3"} - self.SoundNames["kv40_x1_0"] = {"subway_trains/ezh/kv40/kv40_X1_0.mp3"} - self.SoundNames["kv40_x1_x2"] = {"subway_trains/ezh/kv40/kv40_X1_X2.mp3"} - self.SoundNames["kv40_x2_x1"] = {"subway_trains/ezh/kv40/kv40_X2_X1.mp3"} - self.SoundNames["kv40_x2_x3"] = {"subway_trains/ezh/kv40/kv40_X2_X3.mp3"} - self.SoundNames["kv40_x3_x2"] = {"subway_trains/ezh/kv40/kv40_X3_X2.mp3"} - --self.SoundPositions["kv70_fix_on"] = {100,1e9,Vector(442.2,-40,-16.2),2} - --self.SoundPositions["kv70_fix_off"] = {100,1e9,Vector(442.2,-40,-16.2),2} - self.SoundPositions["kv40_0_t1"] = {100,1e9,Vector(442.2,-40,-16.2),2} - self.SoundPositions["kv40_t1_0"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1_t1a"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1a_t1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t1a_t2"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_t2_t1a"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_0_x1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x1_0"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x1_x2"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x2_x1"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x2_x3"] = self.SoundPositions["kv40_0_t1"] - self.SoundPositions["kv40_x3_x2"] = self.SoundPositions["kv40_0_t1"] - - self.SoundNames["ring"] = {"subway_trains/717/ring/ring_start.wav","subway_trains/717/ring/ring_loop.wav","subway_trains/717/ring/ring_end.wav"} - self.SoundPositions["ring"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["ring2"] = {loop=0.1,"subway_trains/717/ring/ringc_start.wav","subway_trains/717/ring/ringc_loop.wav","subway_trains/717/ring/ringc_end.mp3"} - self.SoundPositions["ring2"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["ring_old"] = {loop=0.15,"subway_trains/717/ring/ringo_start.wav","subway_trains/717/ring/ringo_loop.wav","subway_trains/717/ring/ringo_end.mp3"} - self.SoundPositions["ring_old"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["cab_door_open"] = { - "subway_trains/common/door/cab/cab_door_open2.mp3", - "subway_trains/common/door/cab/cab_door_open.mp3", - } - self.SoundPositions["cab_door_open"] = {100,1e9,Vector(400,-40,50)} - - self.SoundNames["cab_door_close"] = { - "subway_trains/common/door/cab/cab_door_close2.mp3", - "subway_trains/common/door/cab/cab_door_close.mp3", - } - - self.SoundNames["parking_brake_rolling"] = {"subway_trains/ezh3/parking_brake_rolling1.mp3","subway_trains/ezh3/parking_brake_rolling2.mp3","subway_trains/ezh3/parking_brake_rolling3.mp3","subway_trains/ezh3/parking_brake_rolling4.mp3"} - self.SoundPositions["parking_brake_rolling"] = {120,1e9,Vector(449.118378+7.6,33.493385,-14.713276)} - self.SoundNames["av8_on"] = {"subway_trains/common/switches/av8/av8_on.mp3","subway_trains/common/switches/av8/av8_on2.mp3"} - self.SoundNames["av8_off"] = {"subway_trains/common/switches/av8/av8_off.mp3","subway_trains/common/switches/av8/av8_off2.mp3"} - self.SoundPositions["av8_on"] = {100,1e9,Vector(405,40,30)} - self.SoundPositions["av8_off"] = {100,1e9,Vector(405,40,30)} - - self.SoundNames["vu22_on"] = {"subway_trains/ezh3/vu/vu22_on1.mp3", "subway_trains/ezh3/vu/vu22_on2.mp3", "subway_trains/ezh3/vu/vu22_on3.mp3"} - self.SoundNames["vu22_off"] = {"subway_trains/ezh3/vu/vu22_off1.mp3", "subway_trains/ezh3/vu/vu22_off2.mp3", "subway_trains/ezh3/vu/vu22_off3.mp3"} - self.SoundNames["vu223_on"] = {"subway_trains/common/switches/vu22/vu22_3_on.mp3"} - self.SoundNames["vu223_off"] = {"subway_trains/common/switches/vu22/vu22_3_off.mp3"} - - self.SoundNames["igla_on"] = "subway_trains/common/other/igla/igla_on1.mp3" - self.SoundNames["igla_off"] = "subway_trains/common/other/igla/igla_off2.mp3" - self.SoundNames["igla_start1"] = "subway_trains/common/other/igla/igla2_start1.mp3" - self.SoundNames["igla_start2"] = "subway_trains/common/other/igla/igla2_start2.mp3" - self.SoundPositions["igla_on"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_off"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_start1"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.3} - self.SoundPositions["igla_start2"] = {50,1e9,Vector(420.4-0.6,-56.1-0.15,9.87-1.15),0.2} - - self.SoundNames["upps"] = {"subway_trains/common/other/upps/upps1.mp3","subway_trains/common/other/upps/upps2.mp3"} - self.SoundPositions["upps"] = {60,1e9,Vector(443,-64,4),0.5} - - self.SoundNames["pnm_on"] = {"subway_trains/common/pnm/pnm_switch_on.mp3","subway_trains/common/pnm/pnm_switch_on2.mp3"} - self.SoundNames["pnm_off"] = {"subway_trains/common/pnm/pnm_switch_off.mp3","subway_trains/common/pnm/pnm_switch_off2.mp3"} - self.SoundNames["pnm_button1_on"] = { - "subway_trains/common/pnm/pnm_button_push.mp3", - "subway_trains/common/pnm/pnm_button_push2.mp3", - "subway_trains/common/pnm/pnm_button_push3.mp3", - } - - self.SoundNames["pnm_button2_on"] = { - "subway_trains/common/pnm/pnm_button_push4.mp3", - "subway_trains/common/pnm/pnm_button_push5.mp3", - "subway_trains/common/pnm/pnm_button_push6.mp3", - } - - self.SoundNames["pnm_button1_off"] = { - "subway_trains/common/pnm/pnm_button_release.mp3", - "subway_trains/common/pnm/pnm_button_release2.mp3", - "subway_trains/common/pnm/pnm_button_release3.mp3", - } - - self.SoundNames["pnm_button2_off"] = { - "subway_trains/common/pnm/pnm_button_release4.mp3", - "subway_trains/common/pnm/pnm_button_release5.mp3", - "subway_trains/common/pnm/pnm_button_release6.mp3", - } - - self.SoundNames["horn1"] = {loop=0.6,"subway_trains/common/pneumatic/horn/horn1_start.wav","subway_trains/common/pneumatic/horn/horn1_loop.wav", "subway_trains/common/pneumatic/horn/horn1_end.mp3"} - self.SoundNames["horn2"] = {loop=0.8,"subway_trains/common/pneumatic/horn/horn3_start.wav","subway_trains/common/pneumatic/horn/horn3_loop.wav", "subway_trains/common/pneumatic/horn/horn3_end.wav"} - self.SoundPositions["horn1"] = {1100,1e9,Vector(450,0,-55)} - self.SoundPositions["horn2"] = self.SoundPositions["horn1"] - - --DOORS - self.SoundNames["vdol_on"] = { - "subway_trains/common/pneumatic/door_valve/VDO_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_on.mp3", - } - self.SoundNames["vdol_off"] = { - "subway_trains/common/pneumatic/door_valve/VDO_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_off.mp3", - } - self.SoundPositions["vdol_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdol_off"] = self.SoundPositions["vdol_on"] - self.SoundNames["vdor_on"] = self.SoundNames["vdol_on"] - self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] - self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] - self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - self.SoundNames["vdz_on"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_on.mp3", - } - self.SoundNames["vdz_off"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_off.mp3", - } - self.SoundPositions["vdz_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdz_off"] = {100,1e9,Vector(410,20,-45)} - - for i=0,3 do - for k=0,1 do - self.SoundNames["door"..i.."x"..k.."r"] = {"subway_trains/common/door/door_roll.wav",loop=true} - self.SoundPositions["door"..i.."x"..k.."r"] = {150,1e9,GetDoorPosition(i,k),0.2} - self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end1.mp3","subway_trains/common/door/door_open_end2.mp3","subway_trains/common/door/door_open_end3.mp3","subway_trains/common/door/door_open_end4.mp3"} - self.SoundPositions["door"..i.."x"..k.."o"] = {300,1e9,GetDoorPosition(i,k),1} - self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end2.mp3","subway_trains/common/door/door_close_end3.mp3"} - self.SoundPositions["door"..i.."x"..k.."c"] = self.SoundPositions["door"..i.."x"..k.."o"] - end - end - self.SoundNames["PN2end"] = "subway_trains/common/pneumatic/vz2_end.mp3" - self.SoundPositions["PN2end"] = {600,1e9,Vector(-183,0,-70),0.5} - - for k,v in ipairs(self.AnnouncerPositions) do - self.SoundNames["announcer_noise1_"..k] = {loop=true,"subway_announcers/upo/noiseS1.wav"} - self.SoundPositions["announcer_noise1_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - self.SoundNames["announcer_noise2_"..k] = {loop=true,"subway_announcers/upo/noiseS2.wav"} - self.SoundPositions["announcer_noise2_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - end -end - -function ENT:InitializeSystems() - -- Электросистема Е (АРС) - self:LoadSystem("Electric","81_701_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_108D") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","KF_47A6") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_40") - -- Контроллер резервного управления (KRP) - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A","YAR_15A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - self.Pneumatic.ValveType = 1 - -- Панель управления Еж АРС МП - self:LoadSystem("Panel","81_508_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - --self:LoadSystem("DURA") - self:LoadSystem("ALS_ARS","NoARS") - - self:LoadSystem("ASNP31","Relay","Switch") - self:LoadSystem("ASNP32","Relay","Switch") - self:LoadSystem("Horn") - - self:LoadSystem("Announcer","81_722_Announcer", "AnnouncementsASNP") - self:LoadSystem("ASNP","81_71_ASNP") - self:LoadSystem("IGLA_CBKI","IGLA_CBKI2") - self:LoadSystem("IGLA_PCBK") -end - -ENT.SubwayTrain = { - Type = "E", - Name = "Em508", - WagType = 1, - ARS = { - NoEPK = true, - NoUAVA = true, - }, - EKKType = 703, - NoFrontEKK=true, -} - -ENT.NumberRanges = {{3955,3999},{6101,6200}} \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_subway_ema/cl_init.lua b/lua/entities/_obsolete/gmod_subway_ema/cl_init.lua deleted file mode 100644 index e8e6854..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema/cl_init.lua +++ /dev/null @@ -1,1640 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} - ------ --- ALS Panel ------ -ENT.ButtonMap["ARSPanel"] = { - pos = Vector(463.08,-52.68,28.05), - ang = Angle(0,-90-29,90), - width = 38, - height = 240, - scale = 0.0625, - - buttons = { - {ID = "L80", x=20, y=24+39.5*0, radius = 15, tooltip="80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph"}, - {ID = "L70", x=19, y=24+39.5*1, radius = 15, tooltip="70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph"}, - {ID = "L60", x=18, y=24+39.5*2, radius = 15, tooltip="60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph"}, - {ID = "L40", x=18, y=24+39.5*3, radius = 15, tooltip="40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph"}, - {ID = "L0", x=18, y=24+39.5*4, radius = 15,tooltip="0: Ограничение скорости 0 км/ч\nSpeed limit 0 kph"}, - {ID = "LNF", x=18, y=24+39.5*5, radius = 15, tooltip="НЧ: Отсутствие частоты АРС\nNCh: No ARS frequency"}, - } -} -for k,v in pairs(ENT.ButtonMap["ARSPanel"].buttons) do - Metrostroi.ClientPropForButton(v.ID,{ - panel = "ARSPanel", - button = v.ID, - model = "models/metrostroi_train/em/ars_"..v.ID:sub(2,-1)..".mdl", - z = -4, - ang = 90, - staylabel = true, - }) -end --- Main panel -ENT.ButtonMap["Main"] = { - pos = Vector(459.7,-31.9,-0.69), - ang = Angle(0,-90,90-26), - width = 315, - height = 240, - scale = 0.0588, - - buttons = { - {ID = "KVTSet", x=44, y=52, radius=27, tooltip="КБ: Кнопка Бдительности\nKB: Attention button"}, - {ID = "ARSLamp", x=88.9, y=54.6, radius=15, tooltip="АРС: Лампа торможения АРС\nARS: ARS brake lamp"}, - {ID = "VZPToggle", x=36+47*2, y=56+58*0, radius=20, tooltip="Выключатель задержки поезда"}, - {ID = "VZDSet", x=35+47*3, y=55+58*0, radius=20, tooltip="Выключатель задержки дверей"}, - {ID = "AutodriveLamp", x=220.7, y=54.5, radius=15, tooltip="Автоведение: Лампа хода от автоведения\nAutodrive: Autodrive drive lamp"}, - {ID = "KRZDSet", x=269, y=56, radius=20, tooltip="КУ10: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing"}, - - {ID = "KDLSet", x=33, y=56+58*1, radius=20, tooltip="КУ12: Кнопка левых дверей\nKDL: Left doors open"}, - {ID = "DIPonSet", x=33+47*1, y=56+58*1, radius=20, tooltip="КУ4:Включение освещения\nTurn interior lights on"}, - {ID = "DIPoffSet", x=33+47*2, y=56+58*1, radius=20, tooltip="КУ5:Отключение освещения\nTurn interior lights off"}, - {ID = "VozvratRPSet", x=33+47*3, y=56+58*1, radius=20, tooltip="КУ9:Возврат РП\nReset overload relay"}, - {ID = "KSNSet", x=33+47*4, y=56+58*1, radius=20, tooltip="КУ8:Принудительное срабатывание РП на неисправном вагоне (сигнализация неисправности)\nKSN: Failure indication button"}, - {ID = "KDPSet", x=33+47*5, y=56+58*1, radius=20, tooltip="КДП:Правые двери\nKDP: Right doors open"}, - ----Down Panel - {ID = "KU1Toggle", x=21,y=138,w=45,h=71, tooltip="КУ1:Включение мотор-компрессора\nTurn motor-compressor on"}, - {ID = "KTLamp", x=79.8, y=178.5, radius=15, tooltip="КТ: Контроль тормоза(торможение эффективно)\nKT: Brake control(efficient brakes)"}, - {ID = "RingSet", x=116.9, y=176, radius=20, tooltip="Звонок передачи управления\nControl transfer ring"}, - {ID = "VUSToggle", x=153,y=180,radius=10, tooltip="Дальний свет\nDistant light"}, - {ID = "KAKSet", x=189.2,y=176.8,radius=20, tooltip="АК: Аварийная кнопка(Х3 при резервном управлении)\nAK: Emergency button(X3 with emergency control)"}, - {ID = "VAutodriveToggle", x=226,y=180,radius=10, tooltip="Включение автоведения\nAutodrive enable"}, - {ID = "VUD1Toggle", x=237.7,y=138,w=45,h=70, tooltip="КУ2: Закрытие дверей\nKU2: Door control toggle (close doors)"}, - } -} - - - -Metrostroi.ClientPropForButton("DIPon",{ - panel = "Main", - button = "DIPonSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("VozvratRP",{ - panel = "Main", - button = "VozvratRPSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("ARSLamp",{ - panel = "Main", - button = "ARSLamp", - model = "models/metrostroi_train/Em/LampPult.mdl", - z=3, - staylabel = true, -}) - -Metrostroi.ClientPropForButton("VZP",{ - panel = "Main", - button = "VZPToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("VZD",{ - panel = "Main", - button = "VZDSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("AutodriveLamp",{ - panel = "Main", - button = "AutodriveLamp", - model = "models/metrostroi_train/Em/LampPult.mdl", - z=3, - staylabel = true, -}) - -Metrostroi.ClientPropForButton("KVT",{ - panel = "Main", - button = "KVTSet", - model = "models/metrostroi_train/em/buttonbig.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("DIPoff",{ - panel = "Main", - button = "DIPoffSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("KSN",{ - panel = "Main", - button = "KSNSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("KDP",{ - panel = "Main", - button = "KDPSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("KDL",{ - panel = "Main", - button = "KDLSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 90, - z = 0, -}) -Metrostroi.ClientPropForButton("KRZD",{ - panel = "Main", - button = "KRZDSet", - model = "models/metrostroi_train/em/buttonblack.mdl", - ang = 90, - z = 0, -}) - -Metrostroi.ClientPropForButton("VUD",{ - panel = "Main", - button = "VUD1Toggle", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z=-23, -}) -Metrostroi.ClientPropForButton("KU1",{ - panel = "Main", - button = "KU1Toggle", - model = "models/metrostroi_train/switches/vudbrown.mdl", - z=-23, -}) - -Metrostroi.ClientPropForButton("KTLamp",{ - panel = "Main", - button = "KTLamp", - model = "models/metrostroi_train/Em/LampPult.mdl", - z=3, - staylabel = true, -}) - -Metrostroi.ClientPropForButton("VAutodrive",{ - panel = "Main", - button = "VAutodriveToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) ---RRP -Metrostroi.ClientPropForButton("KAK",{ - panel = "Main", - button = "KAKSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 0, - z = 0, -}) -Metrostroi.ClientPropForButton("Ring",{ - panel = "Main", - button = "RingSet", - model = "models/metrostroi_train/em/buttonred.mdl", - ang = 0, - z = 0, -}) ---VUSToggle -Metrostroi.ClientPropForButton("VUS",{ - panel = "Main", - button = "VUSToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) - ---Lamps -ENT.ButtonMap["Lamps"] = { - pos = Vector(464.42,-21.07,28.65), - ang = Angle(0,-13.5,90), - width = 24, - height = 310, - scale = 0.0625, - - buttons = { - {ID = "LampAutodrive", x=12.6, y=16, radius=10, tooltip="Включение автоведения\nAutodrive enabled q"}, - {ID = "Lamp2", x=12.6, y=15.8 + 38*1, radius=10, tooltip="2: Лампа второго провода (ход реостатного контроллера)\n2: 2nd train wire lamp(rheostat controller motion)"}, - {ID = "Lamp1", x=12.6, y=18.2 + 38*2, radius=10, tooltip="1: Лампа первого провода (включение двигателей)\n1: 1st train wire lamp(engines engaged)"}, - {ID = "Lamp6", x=12.6, y=19 + 38*3, radius=10, tooltip="6: Лампа шестого провода (сигнализация торможения)\n6: 6th train wire lamp(brakes engaged)"}, - {ID = "DoorsWag", x=12.6, y=22 + 38*4, radius=10, tooltip="Двери вагона: Лампа проверки РД при вклюёчнном КСД\nWagon doors: RD check lamp with enabled KSD"}, - {ID = "Doors", x=12.6, y=24.7 + 38*5, radius=10, tooltip="Двери: Сигнализация дверей\nDoors: Door state light (doors are closed)"}, - {ID = "GreenRP", x=12.6, y=25.4 + 38*6, radius=10, tooltip="РП вагона: Лампа реле перегрузки вагона (Сигнализация перегрузки)\nWagon RP: Wagon overload relay light (overload relay open on current train)"}, - {ID = "RedRP", x=12.6, y=27.8 + 38*7, radius=10, tooltip="РП поезда: Лампа реле перегрузки\nTrain RP: Overload relay light (power circuits failed to assemble)"}, - } -} -local i=1 -for k,v in pairs(ENT.ButtonMap["Lamps"].buttons) do - Metrostroi.ClientPropForButton(v.ID,{ - panel = "Lamps", - button = v.ID, - model = "models/metrostroi_train/em/lamp"..i..".mdl", - staylabel = true, - }) - i = i + 1 -end - ---Lamps -ENT.ButtonMap["Lamps2"] = { - pos = Vector(466.38,-19.33,28.65), - ang = Angle(0,180-13.5,90), - width = 24, - height = 310, - scale = 0.0625, - - buttons = { - {ID = "LampAutodrive", x=12, y=16, radius=10, tooltip="Включение автоведения\nAutodrive enabled q"}, - {ID = "Lamp2", x=12, y=15.8 + 38*1, radius=10, tooltip="2: Лампа второго провода (ход реостатного контроллера)\n2: 2nd train wire lamp(rheostat controller motion)"}, - {ID = "Lamp1", x=12, y=18.2 + 38*2, radius=10, tooltip="1: Лампа первого провода (включение двигателей)\n1: 1st train wire lamp(engines engaged)"}, - {ID = "Lamp6", x=12, y=19 + 38*3, radius=10, tooltip="6: Лампа шестого провода (сигнализация торможения)\n6: 6th train wire lamp(brakes engaged)"}, - {ID = "DoorsWag", x=12, y=22 + 38*4, radius=10, tooltip="Двери вагона: Лампа проверки РД при вклюёчнном КСД\nWagon doors: RD check lamp with enabled KSD"}, - {ID = "Doors", x=12, y=24.7 + 38*5, radius=10, tooltip="Двери: Сигнализация дверей\nDoors: Door state light (doors are closed)"}, - {ID = "GreenRP", x=12, y=25.4 + 38*6, radius=10, tooltip="РП вагона: Лампа реле перегрузки вагона (Сигнализация перегрузки)\nWagon RP: Wagon overload relay light (overload relay open on current train)"}, - {ID = "RedRP", x=12, y=27.8 + 38*7, radius=10, tooltip="РП поезда: Лампа реле перегрузки\nTrain RP: Overload relay light (power circuits failed to assemble)"}, - } -} -local i=1 -for k,v in pairs(ENT.ButtonMap["Lamps2"].buttons) do - Metrostroi.ClientPropForButton(v.ID.."_p",{ - panel = "Lamps2", - button = v.ID, - model = "models/metrostroi_train/em/lamp"..i..".mdl", - z=-2.5, - staylabel = true, - }) - i = i + 1 -end - -ENT.ButtonMap["RezMK"] = { - pos = Vector(469.0,-20.75,37), - ang = Angle(0,270,90), - width = 50, - height = 80, - scale = 0.0625, - - buttons = { - {ID = "RezMKSet", x=0, y=0, w=50, h=80, tooltip="КУ15:Резервное включение мотор-компрессора\nRezMKSet"}, - } -} -Metrostroi.ClientPropForButton("RezMK",{ - panel = "RezMK", - button = "RezMKSet", - model = "models/metrostroi_train/switches/vudblack.mdl", -}) - -ENT.ButtonMap["AVMain"] = { - pos = Vector(408.06,40.8,56), - ang = Angle(0,90,90), - width = 335, - height = 380, - scale = 0.0625, - - buttons = { - {ID = "AV8BToggle", x=0, y=0, w=300, h=380, tooltip="АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n"}, - } -} -Metrostroi.ClientPropForButton("AV8B",{ - panel = "AVMain", - button = "AV8BToggle", - model = "models/metrostroi_train/switches/automain.mdl", - z=43, -}) - -ENT.ButtonMap["Tsepi"] = { - pos = Vector(408.89,36.38,30.3), - ang = Angle(0,90,90), - width = 67, - height = 50, - scale = 0.0625, - - buttons = { - --{ID = "VUSToggle", x=0, y=0, w=100, h=110, tooltip="Прожектор\nVUSoggle"}, - {x=0,y=0,w=67,h=50,tooltip="Напряжение цепей управления"}, - } -} - ----AV1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(408.06,41,30), - ang = Angle(0,90,90), - width = 290+0, - height = 155, - scale = 0.0625, - - buttons = { - {ID = "VU3Toggle", x=0, y=0, w=100, h=140, tooltip="ВУ3: Освещение кабины\n"}, - {ID = "VU2Toggle", x=100, y=0, w=100, h=140, tooltip="ВУ2: Аварийное освещение 25В\n"}, - {ID = "VU1Toggle", x=200, y=0, w=100, h=140, tooltip="ВУ1: Печь отопления кабины ПТ-6\n"}, - } -} -for k,v in pairs(ENT.ButtonMap["AV1"].buttons) do - if not v.ID then continue end - Metrostroi.ClientPropForButton(v.ID:sub(0,-7),{ - panel = "AV1", - button = v.ID, - model = "models/metrostroi_train/switches/autobl.mdl", - z=10, - }) -end - -ENT.ButtonMap["AV2"] = { - pos = Vector(408.06,22.40,44.1), - ang = Angle(0,90,90), - width = 180, - height = 136, - scale = 0.0625, - - buttons = { - {ID = "RSTToggle", x=0, y=0, w=90, h=136, tooltip="РСТ: Радиооповещение и поездная радио связь\nRST: Radio"}, - {ID = "RSTPl", x=0, y=80, w=90, h=56, tooltip="Пломба РСТ\nRST plomb"}, - {ID = "VSOSDToggle", x=90, y=0, w=90, h=136, tooltip="СОСД: Включение СОСД(светильник для горлифта)\nSOSD: SOSD enabler(horligt light)"}, - } -} -for k,v in pairs(ENT.ButtonMap["AV2"].buttons) do - if not v.ID then continue end - if v.ID:find("Pl") then - Metrostroi.ClientPropForButton(v.ID,{ - panel = "AV2", - button = v.ID:Replace("Pl","Toggle"), - model = "models/metrostroi_train/switches/autoplombl.mdl", - z=19, - propname = false, - ang=0, - }) - continue - end - Metrostroi.ClientPropForButton(v.ID:sub(0,-7),{ - panel = "AV2", - button = v.ID, - model = "models/metrostroi_train/switches/autobl.mdl", - z=20, - }) -end - --- AV panel -ENT.ButtonMap["AV"] = { - pos = Vector(408.16,-58.2,35.5), - ang = Angle(0,90,90), - width = 85*7, - height = 130, - scale = 0.0625, - - buttons = { - {ID = "VRUToggle",x=85*0,y=0,w=85,h=130 , tooltip="ВРУ: Выключатель резервного управления\nVRU: Emergency control enable"}, - {ID = "VAHToggle",x=85*1,y=0,w=85,h=130 , tooltip="КАХ: Включение аварийного хода (неисправность реле педали безопасности)\nКAH: Emergency driving mode (failure of RPB relay)"}, - {ID = "VAHPl",x=85*1,y=80,w=85,h=50 , tooltip="Пломба КАХ\nKAH plomb"}, - {ID = "VADToggle",x=85*2,y=0,w=85,h=130 , tooltip="КАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)\nKAD: Emergency door close override (failure of KD relay)"}, - {ID = "VADPl",x=85*2,y=80,w=85,h=50 , tooltip="Пломба КАД\nKAD plomb"}, - {ID = "OVTToggle",x=85*3,y=0,w=85,h=130 , tooltip="ОВТ: Отключение вентильных тормозов\nOVT: Pneumatic valves disabler"}, - {ID = "OVTPl",x=85*3,y=80,w=85,h=50 , tooltip="Пломба ОВТ\nOVT plomb"}, - {ID = "KSDToggle",x=85*4,y=0,w=85,h=130 , tooltip="КСД: Контроль сигнализации дверей(проверка СД)\nKSD: Door state controle(SD check)"}, - {ID = "DPToggle",x=85*5,y=0,w=85,h=130 , tooltip="ДП: Двери поезда\nDP: Train doors"}, - {ID = "VKFToggle",x=85*6,y=0,w=85,h=130 , tooltip="ВКФ: Выключатель красных фар(подключает КФ к батарее напрямую)\nVKF: Red lights enable(connect a red lights to battery)"}, - } -} -for k,v in pairs(ENT.ButtonMap["AV"].buttons) do - if not v.ID then continue end - if v.ID:find("Pl") then - Metrostroi.ClientPropForButton(v.ID,{ - panel = "AV", - button = v.ID:Replace("Pl","Toggle"), - model = "models/metrostroi_train/switches/autoplomb"..(v.ID:find("OVT") and "l" or "r")..".mdl", - z=14, - propname = false, - ang=0, - }) - continue - end - - Metrostroi.ClientPropForButton(v.ID:sub(0,-7),{ - panel = "AV", - button = v.ID, - model = "models/metrostroi_train/switches/autobl.mdl", - z=15, - }) -end --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(408.98,20.24,30.5), - ang = Angle(0,90,90), - width = 250, - height = 136, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=0, y=0, w=250, h=136, tooltip="АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)\nVB: Battery on/off"}, - } -} -Metrostroi.ClientPropForButton("VB",{ - panel = "Battery", - button = "VBToggle", - model = "models/metrostroi_train/switches/autobl2.mdl", - z=15, -}) - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(469.5,-17.5,45), - ang = Angle(0,270,90), - width = 100, - height = 140, - scale = 0.0625, - - buttons = { - {ID = "VUToggle", x=0, y=0, w=100, h=140, tooltip="ВУ: Выключатель Управления\nVUToggle"}, - } -} -Metrostroi.ClientPropForButton("VU",{ - panel = "VU", - button = "VUToggle", - model = "models/metrostroi_train/switches/autobl.mdl", - z=20, -}) - -ENT.ButtonMap["VRD"] = { - pos = Vector(408.06,35.24,22), - ang = Angle(0,90,90), - width = 100, - height = 140, - scale = 0.0625, - - buttons = { - {ID = "VRDToggle", x=0, y=0, w=100, h=140, tooltip="ВРД: Выключатель разрешающий движение(под 0)\nVRD: Accept moving(when 0 on ALS)"}, - } -} -Metrostroi.ClientPropForButton("VRD",{ - panel = "VRD", - button = "VRDToggle", - model = "models/metrostroi_train/switches/autobl.mdl", - z=20, -}) - - -ENT.ButtonMap["BatteryAV"] = { - pos = Vector(409.55,-50.1,12.25), - ang = Angle(0,90,90), - width = 250, - height = 136, - scale = 0.0625, - - buttons = { - {ID = "VBAToggle", x=0, y=0, w=250, h=136, tooltip="АБ: Выключатель аккумуляторной батареи автоведения(Включение АРС)(\nVBA: Autodrive battery on/off(ARS Enable)"}, - } -} -Metrostroi.ClientPropForButton("VBA",{ - panel = "BatteryAV", - button = "VBAToggle", - model = "models/metrostroi_train/switches/autobl2.mdl", - z=15, -}) - - -ENT.ButtonMap["RC"] = { - pos = Vector(412.07,-28.72,22.80), - ang = Angle(0,90,90), - width = 127, - height = 473, - scale = 0.0625, - - buttons = { - {ID = "RC2Toggle", x=0, y=0, w=127, h=213, tooltip="RC2"}, - {ID = "RC2Pl", x=0, y=213-213/4, w=127, h=213/4, tooltip="Пломба РЦ-2\nRC-2 plomb"}, - {ID = "RC1Toggle", x=0, y=473-213, w=127, h=213, tooltip="RC1"}, - {ID = "RC1Pl", x=0, y=473-213/4, w=127, h=213/4, tooltip="Пломба РЦ-1\nRC-1 plomb"}, - } -} -ENT.ClientProps["RC2"] = { - model = "models/metrostroi_train/em/rc.mdl", - pos = Vector(409.77,-24.81,9.73+2), - ang = Angle(0,-90-55,0) -} -ENT.ClientProps["RC2Pl"] = { - model = "models/metrostroi_train/switches/autoplombr.mdl", - pos = Vector(411.143951,-22.746609,11.376095), - ang = Angle(0.000000,90.000000,90.000000), -} - -ENT.ClientProps["RC1"] = { - model = "models/metrostroi_train/em/rc.mdl", - pos = Vector(409.77,-24.81,-6.72+2), - ang = Angle(0,-90-55,0) -} -ENT.ClientProps["RC1Pl"] = { - model = "models/metrostroi_train/switches/autoplombr.mdl", - pos = Vector(411.143951,-22.746609,-5.308110), - ang = Angle(0.000000,90.000000,90.000000), -} - - ---[[ -Metrostroi.ClientPropForButton("AVVB",{ - panel = "BatteryAV", - button = "AVVBToggle", - model = "models/metrostroi_train/switches/autobl2.mdl", - z=15, -}) -]] - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(460,49.0,6.0), - ang = Angle(0,-82,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip="Поворот колеса ручного тормоза"}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(455.13,58.99,24.44), - ang = Angle(0,-17.5,90), - width = 60, - height = 188, - scale = 0.0625, - - buttons = { - {ID = "VDLSet", x=30, y=42, radius=30, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open"}, - {ID = "VUD2LToggle", x=0, y=110, w=60,h=20, tooltip="Блокировка ВУД2\nVUD2 lock"}, - {ID = "VUD2Toggle", x=30, y=138, radius=30, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)"}, - } -} -Metrostroi.ClientPropForButton("VUD2",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/switches/vudwhite.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("VUD2l",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/switches/vudlock.mdl", - z = 0, -}) -Metrostroi.ClientPropForButton("VDL",{ - panel = "HelperPanel", - button = "VDLSet", - model = "models/metrostroi_train/switches/vudblack.mdl", - z = 0, -}) - --- Help panel -ENT.ButtonMap["Help"] = { - pos = Vector(422,-41,66), - ang = Angle(0,90,90), - width = 28, - height = 20, - scale = 0.5, - - buttons = { - {ID = "ShowHelp", x=0, y=0, w=28,h=20, tooltip="Помощь в вождении поезда\nShow help on driving the train"}, - } -} --- Pneumatic instrument panel 2 -ENT.ButtonMap["PneumaticManometer"] = { - pos = Vector(459.247131,-54.307846,16.197767), - ang = Angle(0,-90-51,90), - - width = 70, - height = 70, - scale = 0.0625, - - buttons = { - {x=35,y=35,radius=35,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(463.281189,-53.228256,11.310288), - ang = Angle(0,-90-44,90), - - width = 70, - height = 70, - scale = 0.0625, - - buttons = { - {x=35,y=35,radius=35,tooltip="Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - } -} -ENT.ButtonMap["DriverValveBLDisconnect"] = { - pos = Vector(453.57,-54.37,-27.61), - ang = Angle(-90,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги тормозной магистрали\nTrain line disconnect valve"}, - } -} -ENT.ButtonMap["DriverValveTLDisconnect"] = { - pos = Vector(455.482483,-54,-15), - ang = Angle(90,180-11.79,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Кран двойной тяги напорной магистрали\nBrake line disconnect valve"}, - } -} -ENT.ButtonMap["EPKDisconnect"] = { - pos = Vector(449.35,-57.78,-25.65), - ang = Angle(0,90+56.59,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "EPKToggle", x=0, y=0, w=200, h=90, tooltip="Кран ЭПК\nEPK disconnect valve"}, - } -} -ENT.ButtonMap["DURA"] = { - pos = Vector(408+15+12.15,-58.0-5.3,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625, - - buttons = { - {ID = "DURASelectMain", x=145, y=43, radius=20, tooltip="DURA Основной путь\nDURA Select Main"}, -- NEEDS TRANSLATING - {ID = "DURASelectAlternate", x=180, y=43, radius=20, tooltip="DURA Альтернативный путь\nDURA Select Alternate"}, -- NEEDS TRANSLATING - {ID = "DURAToggleChannel", x=100, y=60, radius=20, tooltip="DURA Выбор канала\nDURA Toggle Channel"}, -- NEEDS TRANSLATING - {ID = "DURAPowerToggle", x=100, y=30, radius=20, tooltip="DURA Питание\nDURA Power"}, -- NEEDS TRANSLATING - - } -} - -ENT.ButtonMap["DURADisplay"] = { - pos = Vector(408+15-0.75+12.15,-58.0-5.3+1.5625,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625/3.2, -} - - -ENT.ButtonMap["Meters"] = { - pos = Vector(461.65213,-56.696617,37.528275), - ang = Angle(0,-148,90), - width = 73, - height = 140, - scale = 0.0625, - - buttons = { - {x=13, y=22, w=60, h=50, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=13, y=81, w=60, h=50, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} -ENT.ButtonMap["Speedometer"] = { - pos = Vector(459.649109,-53.19582,26.624441), - ang = Angle(0,-149,97), - width = 110, - height = 110, - scale = 0.0625, - - buttons = { - {x=0, y=0, w=110, h=110, tooltip="Скоростемер"}, - } -} - - ---These values should be identical to those drawing the schedule -local col1w = 80 -- 1st Column width -local col2w = 32 -- The other column widths -local rowtall = 30 -- Row height, includes -only- the usable space and not any lines - -local rowamount = 16 -- How many rows to show (total) ---[[ENT.ButtonMap["Schedule"] = { - pos = Vector(442.1,-60.7,26), - ang = Angle(0,-110,90), - width = (col1w + 2 + (1 + col2w) * 3), - height = (rowtall+1)*rowamount+1, - scale = 0.0625/2, - - buttons = { - {x=1, y=1, w=col1w, h=rowtall, tooltip="М №\nRoute number"}, - {x=1, y=rowtall*2+3, w=col1w, h=rowtall, tooltip="П №\nPath number"}, - - {x=col1w+2, y=1, w=col2w*3+2, h=rowtall, tooltip="ВРЕМЯ ХОДА\nTotal schedule time"}, - {x=col1w+2, y=rowtall+2, w=col2w*3+2, h=rowtall, tooltip="ИНТ\nTrain interval"}, - - {x=col1w+2, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="ЧАС\nHour"}, - {x=col1w+col2w+3, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="МИН\nMinute"}, - {x=col1w+col2w*2+4, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="СЕК\nSecond"}, - {x=col1w+2, y=rowtall*3+4, w=col2w*3+2, h=(rowtall+1)*(rowamount-3)-1, tooltip="Arrival times"}, -- NEEDS TRANSLATING - - {x=1, y=rowtall*3+4, w=col1w, h=(rowtall+1)*(rowamount-3)-1, tooltip="Station name"}, -- NEEDS TRANSLATING - } -}]] - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(475,-45.0,-50.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - {ID = "FrontTrainLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - } -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-475,45.0,-50.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - buttons = { - {ID = "RearTrainLineIsolationToggle",x=150, y=50, radius=32, tooltip="Концевой кран напорной магистрали"}, - {ID = "RearBrakeLineIsolationToggle",x=750, y=50, radius=32, tooltip="Концевой кран тормозной магистрали"}, - } -} -ENT.ButtonMap["GV"] = { - pos = Vector(139,66,-54), - ang = Angle(0,180,90), - width = 170, - height = 170, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Главный выключатель", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - }}, - } -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-168,68.6,-50), - ang = Angle(0,180,90), - width = 170, - height = 80, - scale = 0.1, - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 80, tooltip="Выключение воздухораспределителя"}, - } -} - - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(450,52,-20), - ang = Angle(0,-70,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа\nUAVA: Universal Automatic Autostop Disabler"}, - {ID = "UAVAContactSet",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(-440,-68,-11), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(416,68,-11), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - -ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(454.0+12.15,-27.0,50.0), - ang = Angle(0,-90,90), - width = 250, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=0,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=50,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=150,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=150,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=200,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=200,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - -ENT.ButtonMap["FrontDoor"] = { - pos = Vector(472,16,43.4), - ang = Angle(0,-90,90), - width = 650, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=650,h=1780, tooltip="Передняя дверь\nFront door"}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(420,64,43.4), - ang = Angle(0,0,90), - width = 642, - height = 1780, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor1",x=0,y=0,w=642,h=1780, tooltip="Дверь в кабину машиниста\nCabin door"}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(384,-16,43.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=1900, tooltip="Дверь из салона\nPassenger door"}, - } -} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -ENT.ClientProps["brake"] = { - model = "models/metrostroi_train/81/334cran.mdl", - pos = Vector(460.11,-53.7,3.7), - ang = Angle(0,34,0) -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/em/kv.mdl", - pos = Vector(461.65,-24.63,3.9), - ang = Angle(0,-32,0) -} -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(461.65,-24.63,3.2), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(452.9,-57.33,-25.61), - ang = Angle(0,-90,0), - color = Color(144,74,0), -} -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(455.482483,-52.546734,-19.333017), - ang = Angle(0.000000,-101.794258,0.000000), - color = Color(0,212,255), -} - -ENT.ClientProps["EPK_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(449.35,-52.78,-25.65), - ang = Angle(90,90+56.59,0), -} -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi/81-717/ezh_koleso.mdl", - pos = Vector(460.316742,37.144958,-6.000000), - ang = Angle(-90.000000,8.000000,0.000000), -} - --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(457.722778,-56.060150,13.877457), - ang = Angle(314.669312,40.953403,-90.000000), -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(457.688568,-56.020660,13.877457), - ang = Angle(314.669312,40.953403,-90.000000), - color = Color(255,120,120), -} - -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/e/small_pneumo_needle.mdl", - pos = Vector(462.104797,-55.268986,9.050000), - ang = Angle(313.335266,48.532555,-90.000000), -} ----------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(458.990723,-57.425472,33.847416), - ang = Angle(240.237274,33.392635,270.135559), -} - -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/e/volt_needle.mdl", - pos = Vector(459.078979,-57.376965,30.437996), - ang = Angle(222.645691,33.392635,270.135559), -} - -ENT.ClientProps["volt1"] = { - model = "models/metrostroi_train/e/volt_bat_needle.mdl", - pos = Vector(408.890015,38.459042,27.399431), - ang = Angle(-46.365803,90.000000,90.000000), -} - -ENT.ClientProps["speed1"] = { - model = "models/metrostroi_train/e/black_pneumo_needle.mdl", - pos = Vector(455.287048,-56.941986,21.128723), - ang = Angle(96.164711,120.947121,0.000000), -} - ------------------------------------------------ -Metrostroi.ClientPropForButton("SelectMain",{ - panel = "DURA", - button = "DURASelectMain", - model = "models/metrostroi_train/81/button.mdl", - skin = 4, - z = 0, -}) -Metrostroi.ClientPropForButton("SelectAlternate",{ - panel = "DURA", - button = "DURASelectAlternate", - model = "models/metrostroi_train/81/button.mdl", - skin = 4, - z = 0, -}) -Metrostroi.ClientPropForButton("SelectChannel",{ - panel = "DURA", - button = "DURAToggleChannel", - model = "models/metrostroi_train/81/tumbler2.mdl", -}) -Metrostroi.ClientPropForButton("DURAPower",{ - panel = "DURA", - button = "DURAPowerToggle", - model = "models/metrostroi_train/81/tumbler2.mdl", -}) --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(130,62.5,-65), - ang = Angle(0,0,0) -} --------------------------------------------------------------------------------- -ENT.ClientProps["book"] = { - model = "models/props_lab/binderredlabel.mdl", - pos = Vector(418,-28,61), - ang = Angle(0,0,90) -} - -ENT.ClientProps["Ema_salon"] = { - model = "models/metrostroi_train/em/ema_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Ema_salon2"] = { - model = "models/metrostroi_train/em/ema_salon2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_emer"] = { - model = "models/metrostroi_train/em/lamps_emer.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} -ENT.ClientProps["Lamps_full"] = { - model = "models/metrostroi_train/em/lamps_full.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0) -} - -ENT.ClientProps["PB"] = {-- - model = "models/metrostroi_train/81/pb.mdl", - pos = Vector(461, -35.05, -35.31), - ang = Angle(0,-90,18) -} - -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(460, -30, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(460, 30, -55), - ang = Angle(0,-90,0) -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/81/tmiso.mdl", - pos = Vector(-460, -30, -55), - ang = Angle(0,90,0) -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/81/nmsio.mdl", - pos = Vector(-460, 30, -55), - ang = Angle(0,90,0) -} - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(383.0 - 67.49*k - 233.4*i,-64.56*(1-2*k),1) - else return Vector(383.0 - 67.49*(1-k) - 233.4*i,-64.56*(1-2*k),1) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi_train/em/doorright.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,90 + 180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi_train/em/doorleft.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,90 + 180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/em/doorfront.mdl", - pos = Vector(471.71,-17.1,-1), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/em/doorback.mdl", - pos = Vector(-471.24,17.19,-1), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/em/doorpass.mdl", - pos = Vector(384.14,16.95,-2.2), - ang = Angle(0,-90,0) -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/em/doorcab.mdl", - pos = Vector(420.75,64.26,1.5), - ang = Angle(0,-90,0) -} ---[[ENT.ClientProps["UAVA"] = { - model = "models/metrostroi/81-717/uava_body.mdl", - pos = Vector(400,61,-8),--Vector(415.0,-58.5,-18.2), - ang = Angle(0,0,0) -}]] -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81/uavalever.mdl", - pos = Vector(452.84598,51,-21.813349), - ang = Angle(0,90,90) -} - -ENT.ClientProps["RedLights"] = { - model = "models/metrostroi_train/Em/redlights.mdl", - pos = Vector(474.674042,-0.885458,55.695278), - ang = Angle(90.000000,-0.212120,0.000000), -} -ENT.ClientProps["DistantLights"] = { - model = "models/metrostroi_train/Em/distantlights.mdl", - pos = Vector(471.731842,-0.651488,54.413082), - ang = Angle(90.000000,0.000000,0.000000), -} -ENT.ClientProps["WhiteLights"] = { - model = "models/metrostroi_train/Em/whitelights.mdl", - pos = Vector(475.597565,-0.525079,-29.160791), - ang = Angle(90.267662,0.000000,0.000000), -} -ENT.ClientProps["RadioLamp"] = { - model = "models/metrostroi_train/Em/radiolight.mdl", - pos = Vector(465.569244,29.134933,-5.466231), - ang = Angle(90.000000,0.000000,0.000000), -} -ENT.ClientProps["RadioLamp1"] = { - model = "models/metrostroi_train/Em/radiolight.mdl", - pos = Vector(465.451752,31.03,-5.436231), - ang = Angle(90.000000,0.000000,0.000000), -} - - -ENT.Texture = "7" -ENT.OldTexture = nil ---local X = Material( "metrostroi_skins/81-717/6.png") - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self:GetNW2String("texture")] - local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("passtexture")] - local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("cabtexture")] - for _,self in pairs(self.ClientEnts) do - if not IsValid(self) then continue end - for k,v in pairs(self:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end -end --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if self.Texture ~= self:GetNW2String("texture") then - self.Texture = self:GetNW2String("texture") - self:UpdateTextures() - end - if self.PassTexture ~= self:GetNW2String("passtexture") then - self.PassTexture = self:GetNW2String("passtexture") - self:UpdateTextures() - end - if self.CabinTexture ~= self:GetNW2String("cabtexture") then - self.CabinTexture = self:GetNW2String("cabtexture") - self:UpdateTextures() - end - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - --[[ - if self.FrontDoor < 90 and self:GetPackedBool(157) or self.FrontDoor > 0 and not self:GetPackedBool(157) then - --local FrontDoorData = self.ClientProps["door1"] - --FrontDoor:SetLocalPos(FrontDoorData.pos + Vector(-2,-0,0)) - self.FrontDoor = math.max(0,math.min(90,self.FrontDoor + (self:GetPackedBool(157) and 1 or -1)*self.DeltaTime*180)) - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - if not self.ButtonMapMatrix["InfoTable"] then - self.ButtonMapMatrix["InfoTable"] = {} - self.ButtonMapMatrix["InfoTable"].scale = 0.1/2 - end - self.ButtonMapMatrix["InfoTable"].ang = Angle(0,90+self.FrontDoor,90) - self.ButtonMapMatrix["InfoTable"].pos = Vector(458.0,-16.0,12.0) + Vector(0,1.5,0)*self.FrontDoor/90 - - end - ]] - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - -- Parking brake animation - self.ParkingBrakeAngle = self.ParkingBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ParkingBrakeAngle - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - local Lamps = self:GetPackedBool(20) and 0.6 or 1 - self:ShowHideSmooth("Lamps_emer",self:Animate("lamps_emer",self:GetPackedBool("Lamps_emer") and Lamps or 0,0,1,6,false)) - self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,6,false)) - --ALS Lamps - self:ShowHideSmooth("LNF",self:Animate("LNF_hs",self:GetPackedBool(41) and 1 or 0,0,1,7,false)) - self:ShowHideSmooth("L0",self:Animate("L0_hs",self:GetPackedBool(42) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("L40",self:Animate("L40_hs",self:GetPackedBool(43) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("L60",self:Animate("L60_hs",self:GetPackedBool(44) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("L70",self:Animate("L70_hs",self:GetPackedBool(45) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("L80",self:Animate("L80_hs",self:GetPackedBool(46) and 1 or 0,0,1,5,false)) - - - self:ShowHideSmooth("LampAutodrive",self:Animate("LampAutodrive_hs",self:GetPackedBool("KSAUP:Work") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Lamp2",self:Animate("Lamp2_hs",self:GetPackedBool("Lamp2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Lamp1",self:Animate("Lamp1_hs",self:GetPackedBool("Lamp1") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Lamp6",self:Animate("Lamp6_hs",self:GetPackedBool("Lamp6") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Doors",self:Animate("Doors_hs",self:GetPackedBool(40) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DoorsWag",self:Animate("DoorsWag_hs",self:GetPackedBool("DoorsWag") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("GreenRP",self:Animate("GreenRP_hs",self:GetPackedBool(36) and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("RedRP",self:Animate("RedRP_hs",self:GetPackedBool(35) and 1 or 0,0,1,5,false) + self:Animate("RedLSN_hs",self:GetPackedBool(131) and 1 or 0,0,0.4,5,false)) - self:ShowHideSmoothFrom("LampAutodrive_p","LampAutodrive") - self:ShowHideSmoothFrom("Lamp2_p","Lamp2") - self:ShowHideSmoothFrom("Lamp1_p","Lamp1") - self:ShowHideSmoothFrom("Lamp6_p","Lamp6") - self:ShowHideSmoothFrom("Doors_p","Doors") - self:ShowHideSmoothFrom("DoorsWag_p","DoorsWag") - self:ShowHideSmoothFrom("GreenRP_p","GreenRP") - self:ShowHideSmoothFrom("RedRP_p","RedRP") - - - self:Animate("AV8B",self:GetPackedBool("AV8B") and 1 or 0, 0,1, 8, false) - - self:Animate("RST",self:GetPackedBool("RST") and 0 or 1, 0,1, 12, false) - self:Animate("VSOSD",self:GetPackedBool("VSOSD") and 0 or 1, 0,1, 12, false) - self:HideButton("RSTToggle",self:GetPackedBool("RSTPl")) - self:HideButton("RSTPl",not self:GetPackedBool("RSTPl")) - - self:SetCSBodygroup("RSTPl",1,self:GetPackedBool("RSTPl") and 0 or 1) - - self:Animate("VU1",self:GetPackedBool("VU1") and 0 or 1, 0,1, 12, false) - self:Animate("VU3",self:GetPackedBool("VU3") and 0 or 1, 0,1, 12, false) - self:Animate("VU2",self:GetPackedBool("VU2") and 0 or 1, 0,1, 12, false) - - self:Animate("VU",self:GetPackedBool("VU") and 0 or 1, 0,1, 12, false) - self:Animate("RezMK",self:GetPackedBool("RezMK") and 1 or 0, 0,1, 7, false) - - self:Animate("VRD",self:GetPackedBool("VRD") and 0 or 1, 0,1, 12, false) - - self:Animate("VB",self:GetPackedBool("VB") and 0 or 1, 0,1, 8, false) - - self:Animate("VBA",self:GetPackedBool("VBA") and 0 or 1, 0,1, 8, false) - - - self:Animate("RC1",self:GetPackedBool("RC1") and 1 or 0, 1,0.694, 6, false) - self:Animate("RC2",self:GetPackedBool("RC2") and 1 or 0, 1,0.694, 6, false) - self:HideButton("RC1Toggle",self:GetPackedBool("RC1Pl")) - self:HideButton("RC1Pl",not self:GetPackedBool("RC1Pl")) - self:HideButton("RC2Toggle",self:GetPackedBool("RC2Pl")) - self:HideButton("RC2Pl",not self:GetPackedBool("RC2Pl")) - self:SetCSBodygroup("RC1Pl",1,self:GetPackedBool("RC1Pl") and 0 or 1) - self:SetCSBodygroup("RC2Pl",1,self:GetPackedBool("RC2Pl") and 0 or 1) - - self:Animate("VRU",self:GetPackedBool("VRU") and 0 or 1, 0,1, 12, false) - self:Animate("VAH",self:GetPackedBool("VAH") and 0 or 1, 0,1, 12, false) - self:Animate("VAD",self:GetPackedBool("VAD") and 0 or 1, 0,1, 12, false) - self:Animate("OVT",self:GetPackedBool("OVT") and 0 or 1, 0,1, 12, false) - self:Animate("KSD",self:GetPackedBool("KSD") and 0 or 1, 0,1, 12, false) - self:Animate("DP",self:GetPackedBool("DP") and 0 or 1, 0,1, 12, false) - self:Animate("VKF",self:GetPackedBool("VKF") and 0 or 1, 0,1, 12, false) - - self:HideButton("VAHToggle",self:GetPackedBool("VAHPl")) - self:HideButton("VAHPl",not self:GetPackedBool("VAHPl")) - self:HideButton("VADToggle",self:GetPackedBool("VADPl")) - self:HideButton("VADPl",not self:GetPackedBool("VADPl")) - self:HideButton("OVTToggle",self:GetPackedBool("OVTPl")) - self:HideButton("OVTPl",not self:GetPackedBool("OVTPl")) - - self:SetCSBodygroup("VAHPl",1,self:GetPackedBool("VAHPl") and 0 or 1) - self:SetCSBodygroup("VADPl",1,self:GetPackedBool("VADPl") and 0 or 1) - self:SetCSBodygroup("OVTPl",1,self:GetPackedBool("OVTPl") and 0 or 1) - - self:Animate("KVT",self:GetPackedBool("KVT") and 1 or 0, 0,1, 8, false) - self:ShowHideSmooth("ARSLamp",self:Animate("ARSLamp_hs",self:GetPackedBool(48) and 1 or 0,0,1,5,false)) - self:Animate("VZP",self:GetPackedBool("VZP") and 1 or 0, 0,1, 12, false) - self:Animate("VZD",self:GetPackedBool("VZD") and 1 or 0, 0,1, 12, false) - self:Animate("KRZD",self:GetPackedBool("KRZD") and 1 or 0, 0,1, 12, false) - self:ShowHideSmooth("AutodriveLamp",self:Animate("AutodriveLamp_hs",self:GetPackedBool("KSAUP:AutodriveEngage") and 1 or 0,0,1,5,false)) - - self:ShowHideSmooth("RadioLamp",self:Animate("radiolamp",self:GetPackedBool("VPR") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("RadioLamp1",self.Anims["radiolamp"].val) - - self:ShowHideSmooth("RedLights",self:Animate("redlights",self:GetPackedBool("RedLight") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("WhiteLights",self:Animate("whitelights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("DistantLights",self:Animate("distantlights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false)) - - self:Animate("KDL",self:GetPackedBool("KDL") and 1 or 0, 0,1, 12, false) - self:Animate("DIPon",self:GetPackedBool("DIPon") and 1 or 0, 0,1, 12, false) - self:Animate("DIPoff",self:GetPackedBool("DIPoff") and 1 or 0, 0,1, 12, false) - self:Animate("VozvratRP",self:GetPackedBool("VozvratRP") and 1 or 0, 0,1, 12, false) - self:Animate("KSN",self:GetPackedBool("KSN") and 1 or 0, 0,1, 12, false) - self:Animate("KDP",self:GetPackedBool("KDP") and 1 or 0, 0,1, 12, false) - - self:Animate("KU1",self:GetPackedBool("KU1") and 1 or 0, 0,1, 7, false) - self:Animate("VUD",self:GetPackedBool("VUD1") and 1 or 0, 0,1, 7, false) - - - self:Animate("VDL",self:GetPackedBool("VDL") and 1 or 0, 0,1, 7, false) - self:ShowHideSmooth("KTLamp",self:Animate("KT_hs",self:GetPackedBool(47) and 1 or 0,0,1,5,false)) - self:Animate("Ring",self:GetPackedBool("Ring") and 1 or 0, 0,1, 12, false) - self:Animate("VUS",self:GetPackedBool("VUS") and 1 or 0, 0,1, 12, false) - self:Animate("KAK",self:GetPackedBool("KAK") and 1 or 0, 0,1, 12, false) - self:Animate("VAutodrive",self:GetPackedBool("VAutodrive") and 1 or 0, 0,1, 12, false) - - self:HideButton("VUD2Toggle",self:GetPackedBool("VUD2Bl")) - self:HideButton("VUD2LToggle",self:GetPackedBool("VUD2LBl")) - self:Animate("VUD2",self:GetPackedBool("VUD2") and 0 or 1, 0,1, 7, false) - self:Animate("VUD2l",self:GetPackedBool("VUD2L") and 1 or 0, 0,1, 7, false) - - self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) - - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0,0.5, 3,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0,0.5, 3,false) - self:Animate("EPK_disconnect",self:GetPackedBool("EPK") and 1 or 0,0.5,0, 3,false) - - -- DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(52) and 1 or 0,1.0) - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake", 1-self:GetPackedRatio(0), 0.00, 0.65, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0, 0.31, 2,false) - self:Animate("reverser", self:GetPackedRatio(2), 0.26, 0.35, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0,0.244,256,2) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0, 0.725, 256,2)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0, 0.725, 256,2)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0, 0.721, 256,2)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.014, 0.298,256,2) - self:Animate("ampermeter", self:GetPackedRatio(8), 0, 0.248,256,2) - --self:Animate("volt2", 0, 0.38, 0.63) - - local wheel_radius = 0.5*44.1 -- units - local speed = self:GetPackedRatio(3)*100 - local ang_vel = speed/(2*math.pi*wheel_radius) - - -- Rotate wheel - self.Angle = ((self.Angle or math.random()) + ang_vel*self.DeltaTime) % 1.0 - - self:Animate("speed1", self:GetPackedRatio("Speed") + math.sin(math.pi*8*self.Angle)*1/120, 0.495, 0.716, nil, nil, 256,2,0.01) - --self:Animate("speed1", /120, 0.495, 0.716, nil, nil, 256,2,0.01) - - ---- - self:Animate("door1", self:GetPackedBool(157) and (self.Door1 or 0.99) or 0,0,0.22, 1024, 1) - self:Animate("door3", self:GetPackedBool(158) and (self.Door2 or 0.99) or 0,0,0.25, 1024, 1) - self:Animate("door2", self:GetPackedBool(156) and (self.Door3 or 0.99) or 0,0,0.25, 1024, 1) - self:Animate("door4", self:GetPackedBool(159) and (self.Door2 or 0.99) or 0,1,0.77, 1024, 1) - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,0.35, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 0 or 1,0,0.35, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 1 or 0,0,0.35, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,0.35, 3, false) - - self:ShowHideSmooth("AVULight_light",self:Animate("AVUl",self:GetPackedBool(38) and 1 or 0,0,1,10,false)) - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - -- Animate doors - for i=0,4 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - self:Animate(n_l,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - self:Animate(n_r,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0.11,0.93, 0.8 + (-0.2+0.4*math.random()),0) - end - end - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*((-0.6*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self.BrakeLineRamp1 = math.Clamp(self.BrakeLineRamp1,0,1) - self:SetSoundState("release2",self.BrakeLineRamp1^1.65,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 4.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 8.0*(0.1*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self.BrakeLineRamp2 = math.Clamp(self.BrakeLineRamp2,0,1) - self:SetSoundState("release3",self.BrakeLineRamp2 + math.max(0,self.BrakeLineRamp1/2-0.15),1.0) - - self:SetSoundState("cran1",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor_ezh",1,1) - else - self:SetSoundState("compressor_ezh",0,1) - self:SetSoundState("compressor_ezh_end",0,1) - self:SetSoundState("compressor_ezh_end",1,1) - --self:PlayOnce("compressor_e_end",nil,1,nil,true) - end - end - -- ARS/ringer alert - state = self:GetPackedBool(39) - self.PreviousAlertState = self.PreviousAlertState or false - if self.PreviousAlertState ~= state then - self.PreviousAlertState = state - if state then - self:SetSoundState("ring4",1,1) - else - self:SetSoundState("ring4",0,0) - self:SetSoundState("ring4_end",0,1) - self:SetSoundState("ring4_end",1,1) - --self:PlayOnce("ring4_end","cabin",0,101) - end - end - - state = self:GetPackedBool("VPR") - self.PreviousVPRState = self.PreviousVPRState or false - if self.PreviousVPRState ~= state then - self.PreviousVPRState = state - if state then - self:SetSoundState("vpr",1,1) - else - self:SetSoundState("vpr",0,0) - self:PlayOnce("vpr_end","cabin",1) - end - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk_spin",0.7,1,nil,0.75) - else - self:SetSoundState("rk_spin",0,0,nil,0.75) - self:SetSoundState("rk_stop",0,1,nil,0.75) - self:SetSoundState("rk_stop",0.7,1,nil,0.75) - end - end - - --DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(32) and 1 or 0,1.0) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - -function ENT:DrawPost() - --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) - if self.InfoTableTimeout and (CurTime() < self.InfoTableTimeout) then - self:DrawOnPanel("InfoTableSelect",function() - draw.Text({ - text = self:GetNW2String("RouteNumber",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -50 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - draw.Text({ - text = self:GetNW2String("FrontText",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -100 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - end) - end - ---[[ - self:DrawOnPanel("IGLA",function() - local plus = ((not self:GetPackedBool(32) or not self:GetPackedBool(78)) and 1 or 0) - surface.SetDrawColor(50 - plus*40,255 - plus*220,40 - plus*40) - surface.DrawRect(0,-4,360,60) - if not self:GetPackedBool(32) or not self:GetPackedBool(78) then return end - local text1 = "" - local text2 = "" - local C1 = Color(0,0,0,255) - local C2 = Color(50,200,50,255) - local flash = false - local T = self:GetPackedRatio(11) - local Ptrain = self:GetPackedRatio(5)*16.0 - local Pcyl = self:GetPackedRatio(6)*6.0 - local date = os.date("!*t",os_time) - -- Default IGLA text - text1 = "IGLA-01K RK TEMP" - text2 = Format("%02d:%02d:%02d %3d C",date.hour,date.min,date.sec,T) - - -- Modifiers and conditions - if self:GetPackedBool(25) then text1 = " !! Right Doors !!" end - if self:GetPackedBool(21) then text1 = " !! Left Doors !!" end - - if T > 300 then text1 = "Temperature warning!" end - - if self:GetPackedBool(50) and (Pcyl > 1.1) then - text1 = "FAIL PNEUMATIC BRAKE" - flash = true - end - if self:GetPackedBool(35) and - self:GetPackedBool(28) then - text1 = "FAIL AVU/BRAKE PRESS" - flash = true - end - if self:GetPackedBool(35) and - (not self:GetPackedBool(40)) then - text1 = "FAIL SD/DOORS OPEN " - flash = true - end - if self:GetPackedBool(36) then - text1 = "FAIL OVERLOAD RELAY " - flash = true - end - if Ptrain < 5.5 then - text1 = "FAIL TRAIN LINE LEAK" - flash = true - end - - if T > 400 then flash = true end - if T > 500 then text1 = "!Disengage circuits!" end - if T > 750 then text1 = " !! PIZDA POEZDU !! " end - - -- Draw text - if flash and ((RealTime() % 1.0) > 0.5) then - C2,C1 = C1,C2 - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+4,16,22) - draw.DrawText(string.upper(text1[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+0,C1) - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+24+4,16,22) - draw.DrawText(string.upper(text2[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+24,C1) - end - end) - ]] - --[[ - self:DrawOnPanel("DURADisplay",function() - if not self:GetPackedBool(32) or not self:GetPackedBool(24) then return end - local function GetColor(id, text) - if text then - return self:GetPackedBool(id) and Color(255,0,0) or Color(0,0,0) - else - return not self:GetPackedBool(id) and Color(255,255,255) or Color(0,0,0) - end - end - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*0,211,22.8) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("DURA V 1.0","MetrostroiSubway_IGLA",0,0+22.8*0, Color(0,0,0,255)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(31)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*1,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel:" .. (self:GetPackedBool(31) and "2" or "1"),"MetrostroiSubway_IGLA",0,0+22.8*1,GetColor(31, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(153)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*2,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel1:" .. (self:GetPackedBool(153) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*2,GetColor(153, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(154)) - surface.DrawRect(0,3+22.8*3,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel2:" .. (self:GetPackedBool(154) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*3,GetColor(154, true)) - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*4,211,23) -- 120 - surface.SetAlphaMultiplier(1) - end)]] - - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",150,0,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",670,0,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - - -- Draw train numbers - local dc = render.GetLightColor(self:GetPos()) - self:DrawOnPanel("TrainNumber1",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - self:DrawOnPanel("TrainNumber2",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - local bp_press = self:GetPackedRatio(6) - local blocked_l = self:GetPackedBool(132) and 0 or 1 - local blocked_r = self:GetPackedBool(133) and 0 or 1 - if button == "ParkingBrakeLeft" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) - blocked_l*45 - end - if button == "ParkingBrakeRight" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) + blocked_r*45 - end - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end diff --git a/lua/entities/_obsolete/gmod_subway_ema/init.lua b/lua/entities/_obsolete/gmod_subway_ema/init.lua deleted file mode 100644 index f207b99..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema/init.lua +++ /dev/null @@ -1,958 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "E", - Name = "Ema", - WagType = 0, - ARS = { - HaveASNP = false, - } -} -function ENT:Initialize() - -- Set model and initialize - self:SetModel("models/metrostroi_train/em/ema.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(430,-39,-21.5),Angle(0,0,0)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 320,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-320,0,-80),Angle(0,0,0),false) - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_EQUAL] = "R_Program1Set", - [KEY_MINUS] = "R_Program2Set", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_N] = "VZ1Set", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_6] = "PneumaticBrakeSet6", - [KEY_PAD_7] = "PneumaticBrakeSet7", - [KEY_PAD_DIVIDE] = "KRPSet", - [KEY_PAD_MULTIPLY] = "KAHSet", - - [KEY_SPACE] = "PBSet", - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_PAD_DECIMAL] = "EPKToggle", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - - [KEY_A] = "DURASelectAlternate", - [KEY_D] = "DURASelectMain", - [KEY_V] = "DURAToggleChannel", - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - [KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_L] = "DriverValveDisconnect", - [KEY_F] = "BCCDSet", - [KEY_R] = "VZPSet", - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - [KEY_L] = "EPKToggle", - }, - [KEY_RALT] = { - [KEY_L] = "EPKToggle", - }, - } - - self.InteractionZones = { - { Pos = Vector(-471,-30,0), - Radius = 28, - ID = "RearDoor" - }, - { Pos = Vector(473,32,28), - Radius = 28, - ID = "FrontDoor1" - }, - { Pos = Vector(473,32,-28), - Radius = 28, - ID = "FrontDoor2" - }, - { Pos = Vector(383.02,31.85,2), - Radius = 28, - ID = "PassengerDoor1" - }, - { Pos = Vector(383.02,-31.85,2), - Radius = 28, - ID = "PassengerDoor2" - }, - { Pos = Vector(408.18,63.59,-26), - Radius = 16, - ID = "CabinDoor1" - }, - { Pos = Vector(408.18,63.59,6), - Radius = 16, - ID = "CabinDoor2" - }, - { Pos = Vector(408.18,63.59,38), - Radius = 16, - ID = "CabinDoor3" - }, - { Pos = Vector(458.18,63.59,-26), - Radius = 16, - ID = "CabinDoor4" - }, - { Pos = Vector(458.18,63.59,6), - Radius = 16, - ID = "CabinDoor5" - }, - { Pos = Vector(458.18,63.59,38), - Radius = 16, - ID = "CabinDoor6" - }, - } - - self.Lights = { - -- Head - [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100 }, - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [3] = { "glow", Vector(469.4,-45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Reverse - --[8] = { "light", Vector(458+11,-30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - --[9] = { "light", Vector(458+11, 30.7, 54.2), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector(435,0,20), Angle(0,-0,0), Color(255,107,50), brightness = 0.004, distance = 600, shadows = 1}, - - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 300 , fov=180,farz = 128 }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400, fov=180,farz = 128 }, - [13] = { "dynamiclight", Vector(-300, 0, 0), Angle(0,0,0), Color(255,95,10), brightness = 5, distance = 400 , fov=180,farz = 128 }, - - -- Side lights - --//[14] = { "light", Vector(390+12.15, 69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[15] = { "light", Vector(390+12.15, 69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[16] = { "light", Vector(390+12.15, 69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[17] = { "light", Vector(390+12.15, 69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - --[18] = { "light", Vector(390+12.15, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[19] = { "light", Vector(390+12.15, -69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[20] = { "light", Vector(390+12.15, -69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - --[21] = { "light", Vector(390+12.15, -69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [15] = { "light", Vector(402.202942,69.270073,44.79285), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [16] = { "light", Vector(402.202942,69.270073,41.509621), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [17] = { "light", Vector(402.202942,69.270073,37.3862), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - - --[19] = { "light", Vector(15, -69, 58.3), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[20] = { "light", Vector(12, -69, 58.3), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - --[21] = { "light", Vector(9, -69, 58.3), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "sprites/light_glow02.vmt" }, - [32] = { "headlight", Vector(450.70,-56.3,28), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - [33] = { "headlight", Vector(450.70,-56.3,32), Angle(-90,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 77 }, - - [34] = { "headlight", Vector(448.65,-56.40,22.60), Angle(-30,0,-45), Color(216,161,92), farz = 6, nearz = 4, shadows = 0, brightness = 2, fov = 140 }, - - [35] = { "headlight", Vector(450.6,-55.84,12.73), Angle(-90,-90,-180), Color(216,161,92), farz = 7, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [36] = { "headlight", Vector(455.2,-53.2,5.35), Angle(-90,-90,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 2, fov = 130 }, - - [37] = { "headlight", Vector(458.3,-20.32,19.6), Angle(-90,-120,-180), Color(216,161,92), farz = 4, nearz = 4, shadows = 0, brightness = 3, fov = 160 }, - - [38] = { "headlight", Vector( -20, 0, 30), Angle(90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - [39] = { "headlight", Vector( -20, 0, 10), Angle(-90,0,90), Color(255,95,10), brightness = 1, distance = 999,fov=179, shadows = 0, farz = 500}, - [70 ] = { "headlight", Vector( 450, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, - - } - self.NetworkSwitches = { - "VB","VBA", - - "KVT","VZP","VZD","KRZD", - - "KDL","DIPon","DIPoff","VozvratRP","KSN","KDP", - - "KU1","Ring","VUS","KAK","VAutodrive","VUD1", - - "RezMK", - - "VUD2","VUD2L","VDL", - - "VRU","VAH","VAD","OVT","KSD","DP","VKF", - - "OtklAVU","KRP", - - "RC1","RC2","VRD", - - "PB","VU3","VU1","VU2","AV8B","VU","KDLK","VDLK","KDPK","KAHK","L_3","RST","VSOSD", - } - self.Plombs = { - RST = true, - VAH = true, - VAD = true, - OVT = true, - RC1 = true, - RC2 = true, - Init = true, - } - -- Lights - --[[ - for i = 1,23 do - self.Lights[69+i] = { "light", Vector(-470 + 35*i, 0, 65), Angle(180,0,0), Color(255,220,180), brightness = 0.25, scale = 0.75} - --self:SetLightPower(69+i,RealTime()%1*2>1) - end]] - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - --- self.A5:TriggerInput("Set",0) - self:UpdateTextures() -end - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k,v in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - --self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - self:SetNW2String("texture",self.Texture) - self:SetNW2String("passtexture",self.PassTexture) - self:SetNW2String("cabtexture",self.CabTexture) -end - --------------------------------------------------------------------------------- -function ENT:Think() - self.RetVal = self.BaseClass.Think(self) - - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetLightPower(1, self.Panel["HeadLights3"] > 0.5,(math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25) - ) - --self:SetLightPower(2, self.Panel["HeadLights2"] > 0.5) - --self:SetLightPower(3, self.Panel["HeadLights2"] > 0.5) - --self:SetLightPower(4, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(5, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(6, self.Panel["HeadLights1"] > 0.5) - --self:SetLightPower(7, self.Panel["HeadLights2"] > 0.5) - -- Reverser lights - --self:SetLightPower(8, self.Panel["RedLightRight"] > 0.5) - --self:SetLightPower(9, self.Panel["RedLightLeft"] > 0.5) - self:SetPackedBool("HeadLights1",self.Panel["HeadLights1"] > 0.5) - self:SetPackedBool("HeadLights2",self.Panel["HeadLights2"] > 0.5) - self:SetPackedBool("RedLight",self.Panel["RedLightLeft"] > 0.5 or self.Panel["RedLightRight"] > 0.5) - -- Interior/cabin lights - self:SetLightPower(10, self.Panel["CabinLight"] > 0.5) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 or lightsActive2 - self:SetPackedBool("Lamps_emer",lightsActive1) - self:SetPackedBool("Lamps_full",lightsActive2) - --local I = math.Round((self.Electric.I24-150)/1000.0,1.5) - local Light - if self.Pneumatic.Compressor == 1 then - Light = (lightsActive2 and 0.6 or 0.3) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - else - Light = (lightsActive2 and 0.8 or 0.4) - --[[ - if I > 0 then - Light = Light*(1-math.abs(I*0.1)) - end - ]] - self:SetLightPower(11, lightsActive1, Light) - self:SetLightPower(12, lightsActive1, Light) - self:SetLightPower(13, lightsActive1, Light) - end - self:SetPackedRatio("LampsI",math.Round((self.Electric.I24-150)/1000.0,1.5)) - self.SOSD = self.Panel["SD"] <= 0 and self.Panel["V1"] > 0 and self.KV.ReverserPosition ~= 0 and self.VSOSD.Value > 0.5 - self:SetLightPower(70,self.SOSD) - --self:SetLightPower(12, lightsActive1,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - --self:SetLightPower(13, lightsActive2, 0.8) - --for i = 1,23 do - --self:SetLightPower(69+i,lightsActive2 and true or lightsActive1 and i%5==1 or false) - --end - --self:SetLightPower(12, self.Panel["EmergencyLight"] > 0.5) - --self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0) - - -- Side lights - --self:SetLightPower(15, self.Panel["TrainDoors"] > 0.5) - --self:SetLightPower(19, self.Panel["TrainDoors"] > 0.5) - - --self:SetLightPower(16, self.Panel["GreenRP"] > 0.5) - --self:SetLightPower(20, self.Panel["GreenRP"] > 0.5) - - --self:SetLightPower(17, self.Panel["TrainBrakes"] > 0.5) - --self:SetLightPower(21, self.Panel["TrainBrakes"] > 0.5) - - self:SetLightPower(32,self.L_3.Value > 0.5) - self:SetLightPower(33,self.L_3.Value > 0.5) - self:SetLightPower(34,self.L_3.Value > 0.5) - self:SetLightPower(35,self.L_3.Value > 0.5) - self:SetLightPower(36,self.L_3.Value > 0.5) - self:SetLightPower(37,self.L_3.Value > 0.5) - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end--(self.KV.ControllerPositionAutodrive == 0 and self.KV.ControllerPosition == 0) - self:SetPackedBool(35,TW18 > 0.5) - self:SetPackedBool(131,TW18 > 0) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - --self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - --self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - self:SetPackedBool(40,self.Panel["SD"] > 0.5) - -- OCh - self:SetPackedBool(41,self.ALS_ARS.NoFreq) - -- 0 - self:SetPackedBool(42,self.ALS_ARS.Signal0) - -- 40 - self:SetPackedBool(43,self.ALS_ARS.Signal40) - -- 60 - self:SetPackedBool(44,self.ALS_ARS.Signal60) - -- 75 - self:SetPackedBool(45,self.ALS_ARS.Signal70) - -- 80 - self:SetPackedBool(46,self.ALS_ARS.Signal80) - -- KT - self:SetPackedBool(47,self.ALS_ARS.LKT and self.Panel["V1"] > 0.5) - -- KVD - self:SetPackedBool(48,self.ALS_ARS.LVD) - self:SetPackedBool("DriverValveBLDisconnect",self.DriverValveBLDisconnect.Value == 1.0) - self:SetPackedBool("DriverValveTLDisconnect",self.DriverValveTLDisconnect.Value == 1.0) - self:SetPackedBool("EPK",self.EPK.Value == 1.0) - for i=1,#self.NetworkSwitches do - local switch = self.NetworkSwitches[i] - self:SetPackedBool(switch,self[switch].Value == 1.0) - end - self:SetPackedBool("VPR",self.RST.Value > 0 and self.Panel["V1"] > 0) - self:SetPackedBool("Lamp6",self:ReadTrainWire(6) > 0.5) - self:SetPackedBool("Lamp1",self:ReadTrainWire(1) > 0.5) - self:SetPackedBool("Lamp2",self:ReadTrainWire(2) > 0.5) - self:SetPackedBool("DoorsWag",self.BD.Value == 0.0 and self.Panel["V1"] > 0.5 and self.KSD.Value > 0.5) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - - if self.VUD2.Blocked > 0 and self.VUD2L.Value > 0.5 then - self.VUD2:TriggerInput("Block",0) - end - if self.VUD2.Blocked == 0 and self.VUD2L.Value == 0 then - self.VUD2:TriggerInput("Block",1) - end - if self.VUD2L.Blocked > 0 and self.VUD2.Value > 0 then - self.VUD2L:TriggerInput("Block",0) - end - if self.VUD2L.Blocked == 0 and self.VUD2.Value == 0 then - self.VUD2L:TriggerInput("Block",1) - end - self:SetPackedBool("VUD2Bl",self.VUD2.Blocked > 0) - self:SetPackedBool("VUD2LBl",self.VUD2L.Blocked > 0) - --[[ - -- LST - self:SetPackedBool(49,self:ReadTrainWire(6) > 0.5) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - self:SetPackedBool(165,self.PB.Value > 0) - - -- AV states - -- for i,v in ipairs(self.Panel.AVMap) do - -- if tonumber(v) - -- then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - -- elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - -- end - -- end - - self:SetPackedBool(62,self.L_3.Value > 0.5) - self:SetPackedBool(64+19,self.VU1.Value > 0.5) - self:SetPackedBool(64+12,self.VU.Value > 0.5) - self:SetPackedBool(64+24,self.RST.Value > 0.5) - self:SetPackedBool(64+7 ,self.AV8B.Value > 0.5) - self:SetPackedBool(64+36,self.VU2.Value > 0.5) - self:SetPackedBool(64+13,self.VU3.Value > 0.5) - self:SetPackedBool("VPR",self.RST.Value == 1.0 and self.Panel["V1"]) - ]] - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, math.min(2.7,self.Pneumatic.BrakeCylinderPressure + 4.0*self.ManualBrake)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, math.abs(self.Electric.I24)/1000.0) - --self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 82.0) - self:SetPackedRatio(11,IGLA_Temperature) - - -- Update ARS system - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/120) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = false - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - --self.RearBogey.ParkingBrake = self.ManualBrake.Value > 0.5 - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 70, math.random(96,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/bogey/chassis_"..math.random(1,5)..".wav", 70, math.random(96,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return self.RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "UAVAToggle" then - local state = self.UAVA.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UAVA!") - end - if button == "VRDToggle" then - local state = self.VRD.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VRD!") - end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveBLDisconnect:TriggerInput("Set",1) - return - end - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - else - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - end - return - end - - if button == "DriverValveBLDisconnectToggle" then - if self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - else - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - end - return - end - - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - - if (button == "UAVAToggle") then - if self.UAVA then - if self.UAVA.Value > 0.5 then - self:PlayOnce("uava_off","cabin") - else - self:PlayOnce("uava_off","cabin") - end - end - return - end - - - if button == "EPKToggle" and self.DriverValveBLDisconnect.Value == 1.0 then - if self.EPK.Value == 0.0 then - self:PlayOnce("epv_off","cabin",0.9) - else - self:PlayOnce("epv_on","cabin",0.9) - end - return - end -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" and self.VUD1.Value < 1 then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" and self.VUD1.Value < 1 then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" and self.VUD1.Value < 1 then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - - if (not string.find(button,"KVT")) and string.find(button,"KV") then return end - if string.find(button,"KRU") then return end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end diff --git a/lua/entities/_obsolete/gmod_subway_ema/shared.lua b/lua/entities/_obsolete/gmod_subway_ema/shared.lua deleted file mode 100644 index d5faa34..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema/shared.lua +++ /dev/null @@ -1,106 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameTranslated = "Entities.Ema" -ENT.Author = "Oldy" -ENT.Contact = "oldy702@gmail.com" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["relay_close2"] = nil - self.SoundNames["rvt_close"] = nil - self.SoundNames["r1_5_close"] = nil - self.SoundNames["rvt_open"] = nil - self.SoundNames["r1_5_open"] = nil - --[[self.SoundNames["relay_close4"] = {"subway_trains/new/relay_7.wav","subway_trains/new/lsd_4.wav"} - self.SoundNames["pneumo_switch"] = { - "subway_trains/pneumo_8.wav", - "subway_trains/pneumo_9.wav", - } - self.SoundNames["rk_spin"] = "subway_trains/rk_3.wav" - self.SoundNames["rk_stop"] = "subway_trains/rk_4.wav" - ]] -end - -function ENT:InitializeSystems() - -- Электросистема 81-710 - self:LoadSystem("Electric","81_704_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_117DM") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_70") - -- Контроллер резервного управления - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - self.Pneumatic.ValveType = 1 - -- Панель управления Е - self:LoadSystem("Panel","81_705_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - self:LoadSystem("DURA") - self:LoadSystem("ALS_ARS","BARS_Em") - self:LoadSystem("Horn") - self:LoadSystem("Announcer") - - - self:LoadSystem("UPO") - self:LoadSystem("Autodrive") - self:LoadSystem("KSAUP") - self:LoadSystem("ADoorDisable","Relay") - - --self:LoadSystem("Custom1","Relay","Switch") - --self:LoadSystem("Custom2","Relay","Switch") - --self:LoadSystem("Custom3","Relay","Switch") - --self:LoadSystem("CustomC","Relay","Switch") - --self:LoadSystem("CustomD","Relay","Switch") - --self:LoadSystem("CustomE","Relay","Switch") - --self:LoadSystem("CustomF","Relay","Switch") - --self:LoadSystem("CustomG","Relay","Switch") - - -end diff --git a/lua/entities/_obsolete/gmod_subway_ema508t/cl_init.lua b/lua/entities/_obsolete/gmod_subway_ema508t/cl_init.lua deleted file mode 100644 index 7958ec0..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema508t/cl_init.lua +++ /dev/null @@ -1,353 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(460.0,-45.0,-50.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-483.0,45.0,-50.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, -} -ENT.ButtonMap["Test1"] = { - pos = Vector(460.0,-15,46.5), - ang = Angle(0,90,90), - width = 32, - height = 96, - scale = 1, -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-180,70,-50), - ang = Angle(0,180,90), - width = 80, - height = 40, - scale = 0.1, -} - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(30,-67.6,-12), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(30+28,67.7,-12), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -ENT.ClientProps["train_line"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.10,-14.4,58), - ang = Angle(90,0,180) -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi/81-717/red_arrow.mdl", - pos = Vector(447.00,-14.4,58), - ang = Angle(90,0,180) -} -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos =Vector(447.10,-18.8,57.9), - ang = Angle(90,0,180) -} --------------------------------------------------------------------------------- -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.00,11.0,57.3), - ang = Angle(90,0,180) -} -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.00,15.5,57.3), - ang = Angle(90,0,180) -} -ENT.ClientProps["volt1"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.00,-9.7,58), - ang = Angle(90,0,180) -} --------------------------------------------------------------------------------- -ENT.ClientProps["battery"] = { - model = "models/metrostroi/81-717/switch01.mdl", - pos = Vector(446.0,0.0,55), - ang = Angle(90,0,180) -} -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(154,62.5+1.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(154,62.5+1.5,-65), - ang = Angle(0,0,0) -} --------------------------------------------------------------------------------- ---[[for x=0,11 do - for y=0,3 do - ENT.ClientProps["a"..(x+12*y)] = { - model = "models/metrostroi/81-717/circuit_breaker.mdl", - pos = Vector(393.8,-52.5+x*2.75,37.5-y*8), - ang = Angle(90,0,0) - } - end -end]]-- ---[[Metrostroi.ClientPropForButton("battery",{ - panel = "Battery", - button = "VBToggle", - model = "models/metrostroi/81-717/switch01.mdl", - z = -10.7, -})]]-- - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(351.0 - 34*k - 231*i,-65*(1-2*k),-2.8) - else return Vector(351.0 - 34*(1-k) - 231*i,-65*(1-2*k),-2.8) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi/e/em508_door1.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi/e/em508_door2.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi/e/em508_door5.mdl", - pos = Vector(455.5,0.5,-5), - ang = Angle(0,0,0) -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi/e/em508_door5.mdl", - pos = Vector(-479.5,.0,-5), - ang = Angle(0,180,0) -} - - -ENT.FrontDoor = 0 -ENT.RearDoor = 0 -ENT.PassengerDoor = 0 -ENT.CabinDoor = 0 --------------------------------------------------------------------------------- - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self:GetNW2String("texture")] - local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("passtexture")] - local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("cabtexture")] - for _,ent in pairs(self.ClientEnts) do - if not IsValid(ent) then continue end - for k,v in pairs(ent:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - ent:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - ent:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - ent:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end -end --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if self.Texture ~= self:GetNW2String("texture") then - self.Texture = self:GetNW2String("texture") - self:UpdateTextures() - end - if self.PassTexture ~= self:GetNW2String("passtexture") then - self.PassTexture = self:GetNW2String("passtexture") - self:UpdateTextures() - end - if self.CabinTexture ~= self:GetNW2String("cabtexture") then - self.CabinTexture = self:GetNW2String("cabtexture") - self:UpdateTextures() - end - - if self.RearDoor < 90 and self:GetPackedBool(156) or self.RearDoor > 0 and not self:GetPackedBool(156) then - local RearDoorData = self.ClientProps["door2"] - --RearDoor:SetLocalPos(RearDoorData.pos + Vector(-2,-0,0)) - self.RearDoor = math.max(0,math.min(90,self.RearDoor + (self:GetPackedBool(156) and 1 or -1)*self.DeltaTime*180)) - end - if not self.ClientPropsMatrix["door2"] or self.ClientPropsMatrix["door2"]:GetAngles().yaw ~= self.RearDoor then - self:ApplyMatrix("door2",Vector(0,-16,0),Angle(0,self.RearDoor,0)) - end - if self.FrontDoor < 90 and self:GetPackedBool(157) or self.FrontDoor > 0 and not self:GetPackedBool(157) then - local FrontDoorData = self.ClientProps["door1"] - --FrontDoor:SetLocalPos(FrontDoorData.pos + Vector(-2,-0,0)) - self.FrontDoor = math.max(0,math.min(90,self.FrontDoor + (self:GetPackedBool(157) and 1 or -1)*self.DeltaTime*180)) - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - end - if not self.ClientPropsMatrix["door1"] or self.ClientPropsMatrix["door1"]:GetAngles().yaw ~= self.FrontDoor then - self:ApplyMatrix("door1",Vector(0,-16,0),Angle(0,self.FrontDoor,0)) - end - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - -- Simulate pressure gauges getting stuck a little - --self:Animate("brake", self:GetPackedRatio(0)^0.5, 0.00, 0.65, 256,24) - --self:Animate("controller", self:GetPackedRatio(1), 0.30, 0.70, 384,24) - --self:Animate("reverser", 1-self:GetPackedRatio(2), 0.25, 0.75, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0.38,0.64) - --self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0.16, 0.84, 256)--,,2,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0.16, 0.84, 256)--,,2,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0.17, 0.86, 256)--,,2,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.38, 0.63) - self:Animate("ampermeter", self:GetPackedRatio(8), 0.38, 0.63) - --self:Animate("volt2", 0, 0.38, 0.63) - - self:Animate("battery", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - - -- Animate AV switches - for i,v in ipairs(self.Panel.AVMap) do - local value = self:GetPackedBool(64+(i-1)) and 1 or 0 - self:Animate("a"..(i-1),value,0,1,8,false) - end - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+2.0 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - -- Animate doors - for i=0,3 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - local animation = self:Animate(n_l,self:GetPackedBool(21+i+4-k*4) and 1 or 0,0,1, 0.8 + (-0.2+0.4*math.random()),0) - local offset_l = Vector(math.abs(31*animation),0,0) - local offset_r = Vector(math.abs(32*animation),0,0) - if self.ClientEnts[n_l] then - self.ClientEnts[n_l]:SetPos(self:LocalToWorld(self.ClientProps[n_l].pos + (1.0 - 2.0*k)*offset_l)) - self.ClientEnts[n_l]:SetSkin(self:GetSkin()) - end - if self.ClientEnts[n_r] then - self.ClientEnts[n_r]:SetPos(self:LocalToWorld(self.ClientProps[n_r].pos - (1.0 - 2.0*k)*offset_r)) - self.ClientEnts[n_r]:SetSkin(self:GetSkin()) - end - end - end - if self.ClientEnts["door1"] then self.ClientEnts["door1"]:SetSkin(self:GetSkin()) end - if self.ClientEnts["door2"] then self.ClientEnts["door2"]:SetSkin(self:GetSkin()) end - - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*((-0.6*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self.BrakeLineRamp1 = math.Clamp(self.BrakeLineRamp1,0,1) - self:SetSoundState("release2_w",self.BrakeLineRamp1^1.65,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 4.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 8.0*(0.1*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self.BrakeLineRamp2 = math.Clamp(self.BrakeLineRamp2,0,1) - self:SetSoundState("release3_w",self.BrakeLineRamp2 + math.max(0,self.BrakeLineRamp1/2-0.15),1.0) - - self:SetSoundState("cran1_w",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor_ezh",1,1) - else - self:SetSoundState("compressor_ezh",0,1) - self:SetSoundState("compressor_ezh_end",0,1) - self:SetSoundState("compressor_ezh_end",1,1) - --self:PlayOnce("compressor_e_end",nil,1,nil,true) - end - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - local state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk_spin",0.7,1,nil,0.75) - else - self:SetSoundState("rk_spin",0,0,nil,0.75) - self:SetSoundState("rk_stop",0,1,nil,0.75) - self:SetSoundState("rk_stop",0.7,1,nil,0.75) - end - end - - -- DIP sound - --self:SetSoundState("bpsn1",self:GetPackedBool(52) and 1 or 0,1.0) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - -function ENT:DrawPost() - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - draw.DrawText(self:GetPackedBool(160) and "Brake" or "Released","Trebuchet24",950,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - -- Draw train numbers - local dc = render.GetLightColor(self:GetPos()) - self:DrawOnPanel("TrainNumber1",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - self:DrawOnPanel("TrainNumber2",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - --render.DrawLine( self:LocalToWorld(self.ClientProps["door1"].pos - Vector(0,16,0)), self:LocalToWorld(self.ClientProps["door1"].pos + Vector(0,16,0)), Color(0,0,255), false) -end diff --git a/lua/entities/_obsolete/gmod_subway_ema508t/init.lua b/lua/entities/_obsolete/gmod_subway_ema508t/init.lua deleted file mode 100644 index fbb1eb9..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema508t/init.lua +++ /dev/null @@ -1,347 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "E", - Name = "Em508T", - Manufacturer = "MVM", - WagType = 2, -} - -function ENT:Initialize() - - -- Set model and initialize - self:SetModel("models/metrostroi/81/ema508t.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 325-20,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-325-10,0,-80),Angle(0,0,0),false) - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - self.InteractionZones = { - { Pos = Vector(458,-30,-55), - Radius = 16, - ID = "FrontBrakeLineIsolationToggle" }, - { Pos = Vector(458, 30,-55), - Radius = 16, - ID = "FrontTrainLineIsolationToggle" }, - { Pos = Vector(458, 60,-55), - Radius = 16, - ID = "ParkingBrakeToggle" }, - { Pos = Vector(-482,30,-55), - Radius = 16, - ID = "RearBrakeLineIsolationToggle" }, - { Pos = Vector(-482, -30,-55), - Radius = 16, - ID = "RearTrainLineIsolationToggle" }, - { Pos = Vector(154,62.5,-65), - Radius = 16, - ID = "GVToggle" }, - { Pos = Vector(446.0,0.0,50), - Radius = 16, - ID = "VBToggle" }, - { Pos = Vector(-180,68.5,-50), - Radius = 20, - ID = "AirDistributorDisconnectToggle" }, - { Pos = Vector(-482,-38,-1), - Radius = 24, - ID = "RearDoor" }, - { Pos = Vector(458,38,-1), - Radius = 24, - ID = "FrontDoor" }, - } - - -- Lights - self.Lights = { - -- Head - [1] = { "headlight", Vector(465,0,-20), Angle(0,0,0), Color(176,161,132), fov = 100 }, - [2] = { "glow", Vector(460, 51,-23), Angle(0,0,0), Color(255,255,255), brightness = 2 }, - [3] = { "glow", Vector(460,-51,-23), Angle(0,0,0), Color(255,255,255), brightness = 2 }, - [4] = { "glow", Vector(460,-8, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [5] = { "glow", Vector(460,-8, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [6] = { "glow", Vector(460, 2, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - [7] = { "glow", Vector(460, 2, 55), Angle(0,0,0), Color(255,255,255), brightness = 0.3 }, - - -- Reverse - [8] = { "light", Vector(458,-45, 55), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - [9] = { "light", Vector(458, 45, 55), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector( 420, 0, 35), Angle(0,0,0), Color(255,255,255), brightness = 0.1, distance = 550 }, - - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - [12] = { "dynamiclight", Vector( 0, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - [13] = { "dynamiclight", Vector(-250, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - - -- Side lights - [14] = { "light", Vector(-50, 68, 51.9), Angle(0,0,0), Color(255,0,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [15] = { "light", Vector(6, 68, 51.9), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [16] = { "light", Vector(3, 68, 51.9), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [17] = { "light", Vector(-0, 68, 51.9), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [18] = { "light", Vector(-50, -69, 51.9), Angle(0,0,0), Color(255,0,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [19] = { "light", Vector(6, -69, 51.9), Angle(0,0,0), Color(150,255,255), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [20] = { "light", Vector(3, -69, 51.9), Angle(0,0,0), Color(50,255,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [21] = { "light", Vector(-0, -69, 51.9), Angle(0,0,0), Color(255,255,0), brightness = 0.9, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - -- Green RP - [22] = { "light", Vector(439.4,12.5-9.6,-5.7), Angle(0,0,0), Color(100,255,0), brightness = 1.0, scale = 0.020 }, - -- AVU - [23] = { "light", Vector(441.2,12.5-20.3,-3.7), Angle(0,0,0), Color(255,40,0), brightness = 1.0, scale = 0.020 }, - -- LKTP - [24] = { "light", Vector(441.2,12.5-23.0,-3.7), Angle(0,0,0), Color(255,40,0), brightness = 1.0, scale = 0.020 }, - } - - for i = 1,23 do - self.Lights[69+i] = { "light", Vector(-470 + 35*i, 0, 65), Angle(180,0,0), Color(255,220,180), brightness = 0.25, scale = 0.75} - --self:SetLightPower(69+i,RealTime()%1*2>1) - end - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - self.RearDoor = false - self.FrontDoor = false - self:UpdateTextures() -end - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - - for k,v in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - - end - self:SetNW2String("texture",self.Texture) - self:SetNW2String("passtexture",self.PassTexture) -end - --------------------------------------------------------------------------------- -function ENT:Think() - local retVal = self.BaseClass.Think(self) - - self.Electric:TriggerInput("TrainMode",1) - - -- Interior/cabin lights --- self:SetLightPower(10, (self.Panel["CabinLight"] > 0.5)) - --self:SetLightPower(12, self.PowerSupply.XT3_4 > 65.0) --- self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0) - self:SetLightPower(11, self.PowerSupply.XT3_4 > 65.0, 0.8) - self:SetLightPower(12, self.Panel["EmergencyLight"] > 0.5,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0, 0.8) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 - self:SetLightPower(11, lightsActive2, 0.8) - self:SetLightPower(12, lightsActive1,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - self:SetLightPower(13, lightsActive2, 0.8) - for i = 1,23 do - self:SetLightPower(69+i,lightsActive2 and true or lightsActive1 and i%5==1 or false) - end - - -- Side lights - self:SetLightPower(15, self.Panel["TrainDoors"] > 0.5) - self:SetLightPower(19, self.Panel["TrainDoors"] > 0.5) - self:SetLightPower(16, (self.Panel["GreenRP"] or 0) > 0.5) - self:SetLightPower(20, (self.Panel["GreenRP"] or 0) > 0.5) - self:SetLightPower(17, self.Panel["TrainBrakes"] > 0.5) - self:SetLightPower(21, self.Panel["TrainBrakes"] > 0.5) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - self:SetPackedBool(5,self.GV.Value == 1.0) - self:SetPackedBool(7,self.VB.Value == 1.0) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - self:SetPackedBool(22,self.Pneumatic.LeftDoorState[2] > 0.5) - self:SetPackedBool(23,self.Pneumatic.LeftDoorState[3] > 0.5) - self:SetPackedBool(24,self.Pneumatic.LeftDoorState[4] > 0.5) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - self:SetPackedBool(26,self.Pneumatic.RightDoorState[2] > 0.5) - self:SetPackedBool(27,self.Pneumatic.RightDoorState[3] > 0.5) - self:SetPackedBool(28,self.Pneumatic.RightDoorState[4] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - - self:SetPackedBool(160,self.ParkingBrake) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - - -- BPSN - self:SetPackedBool(52,self.PowerSupply.XT3_1 > 0) - - -- AV states - for i,v in ipairs(self.Panel.AVMap) do - if tonumber(v) then - if self["A"..v].Value < 1 then - self["A"..v]:TriggerInput("Set",1) - end - self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - elseif self[v] then - if self[v].Value < 1 then - self[v]:TriggerInput("Set",1) - end - self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - end - end - - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/5) - --self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - --self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, self.Pneumatic.BrakeCylinderPressure/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, math.abs(self.Electric.I24)/1000.0) - --self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - --self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 100.0) - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 - end - - return retVal -end - - --------------------------------------------------------------------------------- -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end -function ENT:OnButtonPress(button,ply) - if button == "AirDistributorDisconnectToggle" then return end - if button == "VBToggle" then - if self.VB.Value == 1 then - self:PlayOnce("vu22_on",nil) - else - self:PlayOnce("vu22_off",nil) - end - return - end - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - -- Generic button or switch sound - if string.find(button,"Set") then - self:PlayOnce("switch") - end - if string.find(button,"Toggle") then - self:PlayOnce("switch2") - end - if button == "FrontDoor" then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button == "RearDoor" then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end -end diff --git a/lua/entities/_obsolete/gmod_subway_ema508t/shared.lua b/lua/entities/_obsolete/gmod_subway_ema508t/shared.lua deleted file mode 100644 index 60a547e..0000000 --- a/lua/entities/_obsolete/gmod_subway_ema508t/shared.lua +++ /dev/null @@ -1,82 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameTranslated = "Entities.Em508T" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["rvt_close"] = "subway_trains/sbor.wav" - self.SoundNames["r1_5_close"] = "subway_trains/sbor_hod.wav" - self.SoundNames["rvt_open"] = "subway_trains/rasbor_t.wav" - self.SoundNames["r1_5_open"] = "subway_trains/razbor_hod.wav" - self.SoundNames["rk_spin"] = "subway_trains/rk_3.wav" - self.SoundNames["rk_stop"] = "subway_trains/rk_4.wav" - self.SoundNames["switch_off"] = {"subway_trains/tumbler_1_off.wav","subway_trains/tumbler_2_off.wav","subway_trains/tumbler_3_off.wav"} - self.SoundNames["switch_on"] = {"subway_trains/tumbler_1_on.wav","subway_trains/tumbler_2_on.wav","subway_trains/tumbler_3_on.wav"} - self.SoundNames["av_on"] = { - "subway_trains/va21_2_1_on.wav", - "subway_trains/va21_2_2_on.wav", - } - self.SoundNames["av_off"] = { - "subway_trains/va21_2_1_off.wav", - "subway_trains/va21_2_2_off.wav", - } -end - -function ENT:InitializeSystems() - -- Электросистема 81-710 - self:LoadSystem("Electric","81_705_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_117DM") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - -- Пульт маневрнового передвижения - self:LoadSystem("PMP","PMP") - - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - - -- Панель управления 81-710 - self:LoadSystem("Panel","81_710_Panel") - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - self:LoadSystem("Announcer") -end diff --git a/lua/entities/_obsolete/gmod_subway_ezh3ru1/cl_init.lua b/lua/entities/_obsolete/gmod_subway_ezh3ru1/cl_init.lua deleted file mode 100644 index e74acfe..0000000 --- a/lua/entities/_obsolete/gmod_subway_ezh3ru1/cl_init.lua +++ /dev/null @@ -1,1610 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} - - --- Main panel -ENT.ButtonMap["Main"] = { - pos = Vector(445.5,-35.3,-1.0), - ang = Angle(0,-97.5,20), - width = 410, - height = 145, - scale = 0.0625, - - buttons = { - {ID = "DIPonSet", x=22, y=19, radius=20, tooltip="Включение ДИП и освещения\nTurn DIP and interior lights on"}, - {ID = "DIPoffSet", x=66, y=19, radius=20, tooltip="Выключение ДИП и освещения\nTurn DIP and interior lights off"}, - {ID = "VozvratRPSet", x=192, y=78, radius=20, tooltip="Возврат реле перегрузки\nReset overload relay"}, - {ID = "VMKToggle", x=22, y=73, radius=20, tooltip="Включение мотор-компрессора\nTurn motor-compressor on"}, - - {ID = "RezMKSet", x=66, y=80, radius=20, tooltip="Резервное включение мотор-компрессора\nEmergency motor-compressor startup"}, - {ID = "VAHToggle", x=187, y=19, radius=20, tooltip="ВАХ: Включение аварийного хода (неисправность реле педали безопасности)\nVAH: Emergency driving mode (failure of RPB relay)"}, - {ID = "VADToggle", x=226, y=19, radius=20, tooltip="ВАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)\nVAD: Emergency door close override (failure of KD relay)"}, - - {ID = "ARSToggle", x=187+77, y=19, radius=20, tooltip="АРС: Включение системы автоматического регулирования скорости\nARS: Automatic speed regulation"}, - {ID = "ALSToggle", x=226+77, y=19, radius=20, tooltip="АЛС: Включение системы автоматической локомотивной сигнализации\nALS: Automatic locomotive signalling"}, - - {ID = "OtklAVUToggle", x=349, y=19, radius=20, tooltip="Отключение автоматического выключения управления (неисправность реле АВУ)\nTurn off automatic control disable relay (failure of AVU relay)"}, - {ID = "KRZDSet", x=393, y=19, radius=20, tooltip="КРЗД: Кнопка резервного закрытия дверей\nKRZD: Emergency door closing"}, - {ID = "VUD1Toggle", x=393, y=73, radius=20, tooltip="ВУД1: Выключатель управления дверьми\nVUD1: Door control toggle (close doors)"}, - - {ID = "DoorSelectToggle",x=321, y=75, radius=20, tooltip="Выбор стороны открытия дверей\nSelect side on which doors will open"}, - {ID = "KDLSet", x=291, y=122, radius=20, tooltip="КДЛ: Кнопка левых дверей\nKDL: Left doors open"}, - {ID = "KDPSet", x=349, y=122, radius=20, tooltip="КДП: Кнопка правых дверей\nKDP: Right doors open"}, - - {ID = "KVTSet", x=240, y=122, radius=20, tooltip=""}, - {ID = "KSNSet", x=240, y=78, radius=20, tooltip="КСН: Кнопка сигнализации неисправности\nKSN: Failure indication button"}, - {ID = "KRPSet", x=192, y=122, radius=20, tooltip="КРП: Кнопка резервного пуска"}, - - {ID = "R_Program1Set", x=112, y=127, radius=20, tooltip="Программа 1\nProgram 1"}, - {ID = "R_Program2Set", x=149, y=127, radius=20, tooltip="Программа 2\nProgram 2"}, - - {ID = "R_GToggle", x=112, y=30, radius=20, tooltip="УНЧ: Усилитель низких частот\nUNCh: Low frequency amplifier (Sound in cabin enable)"}, - {ID = "R_ZSToggle", x=149, y=30, radius=20, tooltip="ЭС: Контроль экстренной связи\nES: Emergency communication control"}, - {ID = "R_RadioToggle", x=112, y=80, radius=20, tooltip="Радиоинформатор (встроеный)\nRadioinformator: Announcer (built-in)"}, - {ID = "R_VPRToggle", x=149, y=80, radius=20, tooltip="ВПР: Включение поездной радиосвязи\nVPR: Radiostation enable "}, - - } -} - --- Front panel -ENT.ButtonMap["Front"] = { - pos = Vector(447.6,-35.3,5.0), - ang = Angle(0,-97.4,74), - width = 410, - height = 95, - scale = 0.0625, - - buttons = { - {ID = "VUSToggle",x=400, y=75, radius=15, tooltip="ВУС: Выключатель усиленого света ходовых фар\nVUS: Head lights bright/dim"}, - {ID = "L_3Toggle",x=388, y=28, radius=15, tooltip="Освещение пульта\nPanel lighting"}, - {x=25, y=30, w=57, h=40, tooltip="Напряжение цепей управления\nControl circuits voltage"}, - } -} - --- ARS/Speedometer panel -ENT.ButtonMap["ARS"] = { - pos = Vector(449.1,-37.3,4.9), - ang = Angle(0,-97.9,69), - width = 410*10, - height = 95*10, - scale = 0.0625/10, - - buttons = { - {x=2045,y=406,tooltip="Индикатор скорости\nSpeed indicator",radius=130}, - {x=2610,y=363,tooltip="РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)",radius=120}, - {x=2982,y=363,tooltip="РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)",radius=120}, - {x=1070+320*0,y=780,tooltip="ЛхРК: Лампа хода реостатного контроллера\nLhRK: Rheostat controller motion light",radius=120}, - {x=1070+320*1,y=780,tooltip="КТ: Контроль тормоза\nKT: ARS braking indicator",radius=120}, - {x=1070+320*2,y=780,tooltip="КВД: Контроль выключения двигателей\nKVD: ARS engine shutdown indicator",radius=120}, - {x=1070+320*3,y=780,tooltip="НР1: Нулевое реле\nNR1: Zero relay state (high voltage enabled)",radius=120}, - {x=1070+320*4,y=780,tooltip="ВПР: Контроль включения поездной радиосвязи\nVPR: Train radio equipment enabled",radius=120}, - {x=1070+320*5,y=780,tooltip="ПЕЧЬ: Индикатор работы печи\nPECH: Cabin heating indicator",radius=120}, - {x=1070+320*6,y=780,tooltip="АВУ: Автоматический выключатель управления\nAVU: Automatic control disabler active",radius=120}, - - {x=1070+380*0,y=570,tooltip="ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency",radius=120}, - {x=1070+380*1,y=570,tooltip="0: Сигнал АРС остановки\n0: ARS stop signal",radius=120}, - {x=1070+380*2,y=570,tooltip="40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph",radius=120}, - {x=1070+380*3,y=570,tooltip="60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph",radius=120}, - {x=1070+380*4,y=570,tooltip="70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph",radius=120}, - {x=1070+380*5,y=570,tooltip="80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph",radius=120}, - - {x=1080+380*0,y=363,tooltip="СД: Сигнализация дверей\nSD: Door state light (doors are closed/door circuits are OK)",radius=120}, - {x=1080+380*1,y=363,tooltip="РП: Зелёная лампа реле перегрузки\nRP: Green overload relay light (overload relay open on current train)",radius=120}, - } -} - --- ARS/Speedometer panel -ENT.ButtonMap["Autodrive"] = { - pos = Vector(440.1,-37.3,4.9), - ang = Angle(0,-97.9,69), - width = 410*10, - height = 95*10, - scale = 0.0625/10, - - buttons = { - {x=1080+380*1,y=363,tooltip="РП: Зелёная лампа реле перегрузки\nRP: Green overload relay light (overload relay open on current train)",radius=120}, - } -} - --- AV panel -ENT.ButtonMap["AV"] = { - pos = Vector(394.0,-53.5,44.5), - ang = Angle(0,90,90), - width = 520, - height = 550, - scale = 0.0625, - - buttons = { - {ID = "A61Toggle", x=16+44*0, y=110+129*0, radius=30, tooltip="A61 Управление 6ым поездным проводом\nTrain wire 6 control"}, - {ID = "A55Toggle", x=16+44*1, y=110+129*0, radius=30, tooltip="A55 Управление проводом 10АС\nTrain wire 10AS control"}, - {ID = "A54Toggle", x=16+44*2, y=110+129*0, radius=30, tooltip="A54 Управление проводом 10АК\nTrain wire 10AK control"}, - {ID = "A56Toggle", x=16+44*3, y=110+129*0, radius=30, tooltip="A56 Включение аккумуляторной батареи\nTurn on battery power to control circuits"}, - {ID = "A27Toggle", x=16+44*4, y=110+129*0, radius=30, tooltip="A27 Turn on DIP and lighting"}, - {ID = "A21Toggle", x=16+44*5, y=110+129*0, radius=30, tooltip="A21 Door control"}, - {ID = "A10Toggle", x=16+44*6, y=110+129*0, radius=30, tooltip="A10 Motor-compressor control"}, - {ID = "A53Toggle", x=16+44*7, y=110+129*0, radius=30, tooltip="A53 KVC power supply"}, - {ID = "A43Toggle", x=16+44*8, y=110+129*0, radius=30, tooltip="A43 ARS 12V power supply"}, - {ID = "A45Toggle", x=16+44*9, y=110+129*0, radius=30, tooltip="A45 ARS train wire 10AU"}, - {ID = "A42Toggle", x=16+44*10, y=110+129*0, radius=30, tooltip="A42 ARS 75V power supply"}, - {ID = "A41Toggle", x=16+44*11, y=110+129*0, radius=30, tooltip="A41 ARS braking"}, - ------------------------------------------------------------------------ - {ID = "VUToggle", x=16+44*0, y=110+129*1, radius=30, tooltip="VU Train control"}, - {ID = "A64Toggle", x=16+44*1, y=110+129*1, radius=30, tooltip="A64 Cabin lighting"}, - {ID = "A63Toggle", x=16+44*2, y=110+129*1, radius=30, tooltip="A63 IGLA/BIS"}, - {ID = "A50Toggle", x=16+44*3, y=110+129*1, radius=30, tooltip="A50 Turn on DIP and lighting"}, - {ID = "A51Toggle", x=16+44*4, y=110+129*1, radius=30, tooltip="A51 Turn off DIP and lighting"}, - {ID = "A23Toggle", x=16+44*5, y=110+129*1, radius=30, tooltip="A23 Emergency motor-compressor turn on"}, - {ID = "A14Toggle", x=16+44*6, y=110+129*1, radius=30, tooltip="A14 Train wire 18"}, - {ID = "A75Toggle", x=16+44*7, y=110+129*1, radius=30, tooltip="A75 Cabin heating"}, - {ID = "A1Toggle", x=16+44*8, y=110+129*1, radius=30, tooltip="A1 XOD-1"}, - {ID = "A2Toggle", x=16+44*9, y=110+129*1, radius=30, tooltip="A2 XOD-2"}, - {ID = "A3Toggle", x=16+44*10, y=110+129*1, radius=30, tooltip="A3 XOD-3"}, - {ID = "A17Toggle", x=16+44*11, y=110+129*1, radius=30, tooltip="A17 Reset overload relay"}, - ------------------------------------------------------------------------ - {ID = "A62Toggle", x=16+44*0, y=110+129*2, radius=30, tooltip="A62 Radio communications"}, - {ID = "A29Toggle", x=16+44*1, y=110+129*2, radius=30, tooltip="A29 Radio broadcasting"}, - {ID = "A5Toggle", x=16+44*2, y=110+129*2, radius=30, tooltip="A5 "}, - {ID = "A6Toggle", x=16+44*3, y=110+129*2, radius=30, tooltip="A6 T-1"}, - {ID = "A8Toggle", x=16+44*4, y=110+129*2, radius=30, tooltip="A8 Pneumatic valves #1, #2"}, - {ID = "A20Toggle", x=16+44*5, y=110+129*2, radius=30, tooltip="A20 Drive/brake circuit control, train wire 20"}, - {ID = "A25Toggle", x=16+44*6, y=110+129*2, radius=30, tooltip="A25 Manual electric braking"}, - {ID = "A22Toggle", x=16+44*7, y=110+129*2, radius=30, tooltip="A22 Turn on KK"}, - {ID = "A30Toggle", x=16+44*8, y=110+129*2, radius=30, tooltip="A30 Rheostat controller motor power"}, - {ID = "A39Toggle", x=16+44*9, y=110+129*2, radius=30, tooltip="A39 Emergency control"}, - {ID = "A44Toggle", x=16+44*10, y=110+129*2, radius=30, tooltip="A44 Emergency train control"}, - {ID = "A80Toggle", x=16+44*11, y=110+129*2, radius=30, tooltip="A80 Power circuit mode switch motor power"}, - ------------------------------------------------------------------------ - {ID = "A65Toggle", x=16+44*0, y=110+129*3, radius=30, tooltip="A65 Interior lighting"}, - --{ID = "A00Toggle", x=16+44*1, y=110+129*3, radius=30, tooltip="A00"}, - {ID = "A24Toggle", x=16+44*2, y=110+129*3, radius=30, tooltip="A24 Battery charging"}, - {ID = "A32Toggle", x=16+44*3, y=110+129*3, radius=30, tooltip="A32 Open right doors"}, - {ID = "A31Toggle", x=16+44*4, y=110+129*3, radius=30, tooltip="A31 Open left doors"}, - {ID = "A16Toggle", x=16+44*5, y=110+129*3, radius=30, tooltip="A16 Close doors"}, - {ID = "A13Toggle", x=16+44*6, y=110+129*3, radius=30, tooltip="A13 Door alarm"}, - {ID = "A12Toggle", x=16+44*7, y=110+129*3, radius=30, tooltip="A12 Emergency door close"}, - {ID = "A7Toggle", x=16+44*8, y=110+129*3, radius=30, tooltip="A7 Red lamp"}, - {ID = "A9Toggle", x=16+44*9, y=110+129*3, radius=30, tooltip="A9 Red lamp"}, - {ID = "A46Toggle", x=16+44*10, y=110+129*3, radius=30, tooltip="A46 White lamp"}, - {ID = "A47Toggle", x=16+44*11, y=110+129*3, radius=30, tooltip="A47 White lamp"}, - } -} --- AV panel -ENT.ButtonMap["BPS"] = { - pos = Vector(392.0,-53.5,44.5), - ang = Angle(0,90,90), - width = 520, - height = 630, - scale = 0.0625, - - buttons = { - {ID = "BPSToggle", x=16+51*9, y=110+129*3+100, radius=30, tooltip="РЦ-БПС: Блок ПротивоСкатывания\nRC-BPS: Against Rolling System"}, - } -} --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(394.5,29.5-5,28.0+5-5), - ang = Angle(0,90,90), - width = 200+0, - height = 90+0/0.0625, - scale = 0.0625, - - buttons = { - {ID = "VBToggle", x=0, y=0, w=200+0/0.0625, h=90+0/0.0625, tooltip="ВБ: Выключатель батареи\nVB: Battery on/off"}, - } -} --- Battery panel -ENT.ButtonMap["RC1"] = { - pos = Vector(392.5,19.0,29), - ang = Angle(0,90,90), - width = 80, - height = 130, - scale = 0.0625, - - buttons = { - {ID = "RC1Toggle", x=40, y=30, radius=35, tooltip="РЦ-1: Разъединитель цепей АРС\nRC-1: ARS circuits disconnect"}, - {ID = "UOSToggle", x=40, y=100, radius=35, tooltip="РЦ-УОС: Устройство ограничения скорости\nRC-UOS: Speed Limitation Device"}, - } -} - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(447,41.0+12.5,2.0), - ang = Angle(0,-84,90), - width = 400, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=200, h=400, tooltip=""}, - {ID = "ParkingBrakeRight",x=200, y=0, w=200, h=400, tooltip=""}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(444.7,62,30.4), - ang = Angle(0,-50,90), - width = 64, - height = 144, - scale = 0.0625, - - buttons = { - {ID = "VUD2Toggle", x=32, y=42, radius=32, tooltip="ВУД2: Выключатель управления дверьми\nVUD2: Door control toggle (close doors)"}, - {ID = "VDLSet", x=32, y=108, radius=32, tooltip="ВДЛ: Выключатель левых дверей\nVDL: Left doors open"}, - } -} - --- Help panel -ENT.ButtonMap["Help"] = { - pos = Vector(445.0,-36.0,30.0), - ang = Angle(40+180,0,0), - width = 20, - height = 20, - scale = 1, - - buttons = { - {ID = "ShowHelp", x=10, y=10, radius=15, tooltip="Помощь в вождении поезда\nShow help on driving the train"}, - } -} - --- Pneumatic instrument panel -ENT.ButtonMap["PneumaticPanels"] = { - pos = Vector(448,-30,16.0), - ang = Angle(0,-77,90), - width = 140, - height = 160, - scale = 0.0625, - - buttons = { - {x=60,y=45,radius=30,tooltip="Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure"}, - {x=80,y=105,radius=30,tooltip="Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)"}, - } -} -ENT.ButtonMap["DriverValveDisconnect"] = { - pos = Vector(420,-57.0,-25), - ang = Angle(0,0,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="Клапан разобщения\nDriver valve disconnect valve"}, - } -} -ENT.ButtonMap["EPKDisconnect"] = { - pos = Vector(420.0+10.5,-58.5,-25), - ang = Angle(0,0,-90), - width = 200, - height = 120, - scale = 0.0625, - - buttons = { - {ID = "EPKToggle", x=0, y=0, w=200, h=120, tooltip="Кран ЭПВ\nEPK disconnect valve"}, - } -} -ENT.ButtonMap["DURA"] = { - pos = Vector(408+15,-58.0-5.3,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625, - - buttons = { - {ID = "DURASelectMain", x=145, y=43, radius=20, tooltip="DURA Основной путь\nDURA Select Main"}, -- NEEDS TRANSLATING - {ID = "DURASelectAlternate", x=180, y=43, radius=20, tooltip="DURA Альтернативный путь\nDURA Select Alternate"}, -- NEEDS TRANSLATING - {ID = "DURAToggleChannel", x=100, y=60, radius=20, tooltip="DURA Выбор канала\nDURA Toggle Channel"}, -- NEEDS TRANSLATING - {ID = "DURAPowerToggle", x=100, y=30, radius=20, tooltip="DURA Питание\nDURA Power"}, -- NEEDS TRANSLATING - - } -} -ENT.ButtonMap["DURADisplay"] = { - pos = Vector(408+15-0.75,-58.0-5.3+1.5625,-6.65), - ang = Angle(0,180,0), - width = 240, - height = 80, - scale = 0.0625/3.2, -} - -ENT.ButtonMap["Announcer"] = { - pos = Vector(449.3,-53,17.4), - ang = Angle(0,-127,90), - width = 170, - height = 100, - scale = 0.0625, - - buttons = { - - {ID = "Custom2Set", x=155, y=15, radius=15, tooltip="+"}, - {ID = "Custom1Set", x=155, y=42, radius=15, tooltip="-"}, - {ID = "Custom3Set", x=85, y=72, radius=20, tooltip="Меню\nMenu"}, - {ID = "CustomCToggle", x=20, y=28, radius=20, tooltip="Автоинформатор\nAutoannouncer"}, - - {ID = "CustomD", x=95+20*-3, y=72, radius=10, tooltip="Информатор: Конечная\nAnnouncer: Last statuon"}, - {ID = "CustomE", x=95+20*-2, y=72, radius=10, tooltip="Информатор: Платформа справа\nAnnouncer: Right side"}, - {ID = "CustomF", x=95+20*1, y=72, radius=10, tooltip="Информатор: Необходима настройка\nAnnouncer: Need setup"}, - {ID = "CustomG", x=95+20*2, y=72, radius=10, tooltip="Информатор: Проигрывание объявления\nAnnouncer: Playing announce"}, - } -} --- Announcer panel -ENT.ButtonMap["AnnouncerDisplay"] = { - pos = Vector(449.3,-53,17.4), - ang = Angle(0,-127,90), - width = 10, - height = 10, - scale = 0.012, -} -ENT.ButtonMap["IGLA"] = { - pos = Vector(404.6,-59.985,27.9), - ang = Angle(-0.5,180,90), - width = 440, - height = 100, - scale = 0.014, -} -ENT.ButtonMap["Meters"] = { - pos = Vector(449.3,-53,27.5), - ang = Angle(0,-125,90), - width = 170, - height = 110, - scale = 0.0625, - - buttons = { - {x=22, y=24, w=55, h=45, tooltip="Вольтметр высокого напряжения (кВ)\nHV voltmeter (kV)"}, - {x=90, y=24, w=58, h=45, tooltip="Амперметр (А)\nTotal ampermeter (A)"}, - } -} - - ---These values should be identical to those drawing the schedule -local col1w = 80 -- 1st Column width -local col2w = 32 -- The other column widths -local rowtall = 30 -- Row height, includes -only- the usable space and not any lines - -local rowamount = 20 -- How many rows to show (total) -ENT.ButtonMap["Schedule"] = { - pos = Vector(452.9,-19.7,41), - ang = Angle(0,-70,90), - width = (col1w + 2 + (1 + col2w) * 3), - height = (rowtall+1)*rowamount+1, - scale = 0.0625/2, - - buttons = { - {x=1, y=1, w=col1w, h=rowtall, tooltip="М №\nRoute number"}, - {x=1, y=rowtall*2+3, w=col1w, h=rowtall, tooltip="П №\nPath number"}, - - {x=col1w+2, y=1, w=col2w*3+2, h=rowtall, tooltip="ВРЕМЯ ХОДА\nTotal schedule time"}, - {x=col1w+2, y=rowtall+2, w=col2w*3+2, h=rowtall, tooltip="ИНТ\nTrain interval"}, - - {x=col1w+2, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="ЧАС\nHour"}, - {x=col1w+col2w+3, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="МИН\nMinute"}, - {x=col1w+col2w*2+4, y=rowtall*2+3, w=col2w, h=rowtall, tooltip="СЕК\nSecond"}, - {x=col1w+2, y=rowtall*3+4, w=col2w*3+2, h=(rowtall+1)*(rowamount-3)-1, tooltip="Arrival times"}, -- NEEDS TRANSLATING - - {x=1, y=rowtall*3+4, w=col1w, h=(rowtall+1)*(rowamount-3)-1, tooltip="Station name"}, -- NEEDS TRANSLATING - } -} - --- Temporary panels (possibly temporary) -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(459.0,-45.0,-50.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, -} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-481.0,45.0,-50.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, -} -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-180,70,-50), - ang = Angle(0,180,90), - width = 80, - height = 40, - scale = 0.1, -} - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(30,-67.7,-9.5), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(30+28,67.7,-9.5), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(393,54,-2), - ang = Angle(0,0,90), - width = 230, - height = 170, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=230/2, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа\nUAVA: Universal Automatic Autostop Disabler"}, - {ID = "UAVAContactSet",x=0, y=0, w=230/2, h=170, tooltip="УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)\nUAVA: Universal Automatic Autostop Disabler(contacts reset)"}, - } -} - - - --- Wagon numbers -ENT.ButtonMap["TrainNumber1"] = { - pos = Vector(30,-67.6,-10), - ang = Angle(0,0,90), - width = 130, - height = 55, - scale = 0.20, -} -ENT.ButtonMap["TrainNumber2"] = { - pos = Vector(30+28,67.7,-10), - ang = Angle(0,180,90), - width = 130, - height = 55, - scale = 0.20, -} - --- Front info table -ENT.ButtonMap["InfoTable"] = { - pos = Vector(458.0,-16.0,12.0), - ang = Angle(0,90,90), - width = 646, - height = 100, - scale = 0.1/2, -} -ENT.ButtonMap["InfoTableSelect"] = { - pos = Vector(454.0,-27.0,27.0), - ang = Angle(0,-90,90), - width = 250, - height = 100, - scale = 0.1, - - - buttons = { - {ID = "PrevSign",x=0,y=0,w=50,h=100, tooltip="Предыдущая надпись\nPrevious sign"}, - {ID = "NextSign",x=50,y=0,w=50,h=100, tooltip="Следующая надпись\nNext sign"}, - - {ID = "Num2P",x=150,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 2\nRoute: Increase 2nd number"}, - {ID = "Num2M",x=150,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 2\nRoute: Decrease 2nd number"}, - {ID = "Num1P",x=200,y=0,w=50,h=50, tooltip="Маршрут: Увеличить число 1\nRoute: Increase 1st number"}, - {ID = "Num1M",x=200,y=50,w=50,h=50, tooltip="Маршрут: Уменьшить число 1\nRoute: Decrease 1st number"}, - } -} - -ENT.ButtonMap["InfoRoute"] = { - pos = Vector(451.29,39.9,24.2), - ang = Angle(0,97.3,84), - width = 100, - height = 100, - scale = 0.115, -} - -ENT.ButtonMap["FrontDoor"] = { - pos = Vector(455,16,48.4), - ang = Angle(0,-90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=642,h=1900, tooltip="Передняя дверь\nFront door"}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(408.9,64,50.8), - ang = Angle(0,0,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor1",x=0,y=0,w=642,h=1900, tooltip="Дверь в кабину машиниста\nCabin door"}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(390,-16,48.4), - ang = Angle(0,90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=642,h=1900, tooltip="Дверь из салона\nPassenger door"}, - } -} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -ENT.ClientProps["brake013"] = { - model = "models/metrostroi/81-717/brake.mdl", - pos = Vector(431,-59.5,2.7), - ang = Angle(0,180,0) -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi/81-717/ezh_controller.mdl", - pos = Vector(447,-26,1.8), - ang = Angle(0,90+45,0) -} -ENT.ClientProps["reverser"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(447,-26,2.5), - ang = Angle(0,45,90) -} -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(429.5,-61.0,-25), - ang = Angle(-30,0,0) -} -ENT.ClientProps["EPK_disconnect"] = { - model = "models/metrostroi/81-717/uava.mdl", - pos = Vector(420.0+12.5,-57.5,-21.5), - ang = Angle(0,180,0) -} -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi/81-717/ezh_koleso.mdl", - pos = Vector(446,41.0,-10.0), - ang = Angle(-90,6,0) -} --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(449.20,-35.00,9.45), - ang = Angle(90,0,180-14) -} -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi/81-717/red_arrow.mdl", - pos = Vector(449.15,-35.05,9.45), - ang = Angle(90,0,180-14) -} -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(450.5,-32.9,13.4), - ang = Angle(90,0,180-18) -} --------------------------------------------------------------------------------- -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(445.5,-59.5,23.3), - ang = Angle(90,0,-45+180+80) -} -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(448.1,-55.7,23.3), - ang = Angle(90,0,-45+180+80) -} -ENT.ClientProps["volt1"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(447.10,-38.15,0.4), - ang = Angle(90-18,180,7) -} -ENT.ClientProps["volt2"] = { - model = "models/metrostroi/81-717/black_arrow.mdl", - pos = Vector(452.3,-19.4,18.2), - ang = Angle(90,0,180) -} - - - - --------------------------------------------------------------------------------- -ENT.ClientProps["headlights"] = { - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, - pos = Vector(443.1,-60.0,0.5), - ang = Angle(-74,0,0) -} -Metrostroi.ClientPropForButton("L_3",{ - panel = "Front", - button = "L_3Toggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) --------------------------------------------------------------------------------- -Metrostroi.ClientPropForButton("R_VPR",{ - panel = "Main", - button = "R_VPRToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("R_ZS",{ - panel = "Main", - button = "R_ZSToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("R_G",{ - panel = "Main", - button = "R_GToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("R_Radio",{ - panel = "Main", - button = "R_RadioToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("DIPon",{ - panel = "Main", - button = "DIPonSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("DIPoff",{ - panel = "Main", - button = "DIPoffSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 1, - z = -4.5, -}) -Metrostroi.ClientPropForButton("VozvratRP",{ - panel = "Main", - button = "VozvratRPSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("VMK",{ - panel = "Main", - button = "VMKToggle", - model = "models/metrostroi_train/81/vud.mdl", - ang = 0, - z = -15, -}) -Metrostroi.ClientPropForButton("RezMK",{ - panel = "Main", - button = "RezMKSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("VAH",{ - panel = "Main", - button = "VAHToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("VAD",{ - panel = "Main", - button = "VADToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("ALS",{ - panel = "Main", - button = "ALSToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("ARS",{ - panel = "Main", - button = "ARSToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("OtklAVU",{ - panel = "Main", - button = "OtklAVUToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("KRZD",{ - panel = "Main", - button = "KRZDSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("VUD1",{ - panel = "Main", - button = "VUD1Toggle", - model = "models/metrostroi_train/81/vud.mdl", - ang = 0, - z = -3, - z = -15, -}) -Metrostroi.ClientPropForButton("DoorSelect",{ - panel = "Main", - button = "DoorSelectToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 0 -}) -Metrostroi.ClientPropForButton("KDL",{ - panel = "Main", - button = "KDLSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 3, - z = -4.5, -}) -Metrostroi.ClientPropForButton("KDP",{ - panel = "Main", - button = "KDPSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 3, - z = -4.5, -}) -Metrostroi.ClientPropForButton("KVT",{ - panel = "Main", - button = "KVTSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z=-4.5, -}) -Metrostroi.ClientPropForButton("KSN",{ - panel = "Main", - button = "KSNSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 1, - z = -4.5, -}) -Metrostroi.ClientPropForButton("KRP",{ - panel = "Main", - button = "KRPSet", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("Program1",{ - panel = "Main", - button = "R_Program1Set", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("Program2",{ - panel = "Main", - button = "R_Program2Set", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) - -Metrostroi.ClientPropForButton("SelectMain",{ - panel = "DURA", - button = "DURASelectMain", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("SelectAlternate",{ - panel = "DURA", - button = "DURASelectAlternate", - model = "models/metrostroi_train/81/button.mdl", - skin = 0, - z = -4.5, -}) -Metrostroi.ClientPropForButton("SelectChannel",{ - panel = "DURA", - button = "DURAToggleChannel", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("DURAPower",{ - panel = "DURA", - button = "DURAPowerToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) -Metrostroi.ClientPropForButton("VUD2",{ - panel = "HelperPanel", - button = "VUD2Toggle", - model = "models/metrostroi_train/81/vud.mdl", - ang = 0, - z = -3, -}) -Metrostroi.ClientPropForButton("VDL",{ - panel = "HelperPanel", - button = "VDLSet", - model = "models/metrostroi_train/81/vud.mdl", - ang = 0, - z = -3, -}) -Metrostroi.ClientPropForButton("Custom1",{ - panel = "Announcer", - button = "Custom1Set", - model = "models/metrostroi/81-717/button10.mdl" -}) -Metrostroi.ClientPropForButton("Custom2",{ - panel = "Announcer", - button = "Custom2Set", - model = "models/metrostroi/81-717/button10.mdl" -}) -Metrostroi.ClientPropForButton("Custom3",{ - panel = "Announcer", - button = "Custom3Set", - model = "models/metrostroi/81-717/button07.mdl" -}) -Metrostroi.ClientPropForButton("CustomC",{ - panel = "Announcer", - button = "CustomCToggle", - model = "models/metrostroi_train/81/tumbler4.mdl", - ang = 90, -}) - -Metrostroi.ClientPropForButton("CustomD",{ - panel = "Announcer", - button = "CustomD", - model = "models/metrostroi/81-717/light01.mdl", -}) -Metrostroi.ClientPropForButton("CustomE",{ - panel = "Announcer", - button = "CustomE", - model = "models/metrostroi/81-717/light03.mdl", -}) -Metrostroi.ClientPropForButton("CustomF",{ - panel = "Announcer", - button = "CustomF", - model = "models/metrostroi/81-717/light04.mdl", -}) -Metrostroi.ClientPropForButton("CustomG",{ - panel = "Announcer", - button = "CustomG", - model = "models/metrostroi/81-717/light02.mdl", -}) - -Metrostroi.ClientPropForButton("rc1",{ - panel = "RC1", - button = "RC1Toggle", - model = "models/metrostroi/81-717/rc.mdl", -}) - -Metrostroi.ClientPropForButton("UOS",{ - panel = "RC1", - button = "UOSToggle", - model = "models/metrostroi/81-717/rc.mdl", -}) - -Metrostroi.ClientPropForButton("BPS",{ - panel = "BPS", - button = "BPSToggle", - model = "models/metrostroi/81-717/rc.mdl", -}) - --------------------------------------------------------------------------------- -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(154,62.5,-65), - ang = Angle(-90,0,-90) -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi/81-717/reverser.mdl", - pos = Vector(154,62.5,-65), - ang = Angle(0,0,0) -} --------------------------------------------------------------------------------- -for x=0,11 do - for y=0,3 do - ENT.ClientProps["a"..(x+12*y)] = { - model = "models/metrostroi/81-717/circuit_breaker.mdl", - pos = Vector(393.8,-52.5+x*2.75,37.5-y*8), - ang = Angle(90,0,0) - } - end -end -ENT.ClientProps["bat1"] = { - model = "models/metrostroi_train/81/vud.mdl", - pos = Vector(393.6,26.0+4.6*0,24.9), - ang = Angle(0,90,90) -} -ENT.ClientProps["bat2"] = { - model = "models/metrostroi_train/81/vud.mdl", - pos = Vector(393.6,26.0+4.6*1,24.9), - ang = Angle(0,90,90) -} -ENT.ClientProps["bat3"] = { - model = "models/metrostroi_train/81/vud.mdl", - pos = Vector(393.6,26.0+4.6*2,24.9), - ang = Angle(0,90,90) -} --------------------------------------------------------------------------------- -ENT.ClientProps["book"] = { - model = "models/props_lab/binderredlabel.mdl", - pos = Vector(449.0,-40.0,45.0), - ang = Angle(-135,0,85) -} - - - - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(353.0 - 35*k - 231*i,-65*(1-2*k),-1.8) - else return Vector(353.0 - 35*(1-k) - 231*i,-65*(1-2*k),-1.8) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi/e/em508_door1.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,180*k,0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi/e/em508_door2.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,180*k,0) - } - end -end -ENT.ClientProps["door1"] = { - model = "models/metrostroi/e/em508_door5.mdl", - pos = Vector(456.5,0.4,-3.8), - ang = Angle(0,0,0) -} -ENT.ClientProps["door2"] = { - model = "models/metrostroi/e/em508_door5.mdl", - pos = Vector(-479.5,-0.5,-3.8), - ang = Angle(0,180,0) -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi/e/em508_door4.mdl", - pos = Vector(386.5,0.4,5.2), - ang = Angle(0,0,0) -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi/e/em508_door3.mdl", - pos = Vector(425.6,65.2,-2.2), - ang = Angle(0,0,0) -} -ENT.ClientProps["UAVA"] = { - model = "models/metrostroi/81-717/uava_body.mdl", - pos = Vector(400,61,-8),--Vector(415.0,-58.5,-18.2), - ang = Angle(0,0,0) -} -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi/81-717/real_uava.mdl", - pos = Vector(404,60.7,-10.4), - ang = Angle(-30,90,90) -} - -ENT.FrontDoor = 0 -ENT.RearDoor = 0 -ENT.PassengerDoor = 0 -ENT.CabinDoor = 0 - -ENT.Texture = "7" -ENT.OldTexture = nil ---local X = Material( "metrostroi_skins/81-717/6.png") --------------------------------------------------------------------------------- - -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self:GetNW2String("texture")] - local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("passtexture")] - local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("cabtexture")] - for _,ent in pairs(self.ClientEnts) do - if not IsValid(ent) then continue end - for k,v in pairs(ent:GetMaterials()) do - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - ent:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - ent:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - ent:SetSubMaterial(k-1,texture.textures[tex]) - end - end - end -end --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if self.Texture ~= self:GetNW2String("texture") then - self.Texture = self:GetNW2String("texture") - self:UpdateTextures() - end - if self.PassTexture ~= self:GetNW2String("passtexture") then - self.PassTexture = self:GetNW2String("passtexture") - self:UpdateTextures() - end - if self.CabinTexture ~= self:GetNW2String("cabtexture") then - self.CabinTexture = self:GetNW2String("cabtexture") - self:UpdateTextures() - end - if not self.Animate then self.BaseClass = baseclass.Get("gmod_subway_base") end - --print(self.FrontDoor,self:GetPackedBool(114)) - --print(self.RearDoor,self:GetPackedBool(156)) - - local transient = (self.Transient or 0)*0.05 - if (self.Transient or 0) ~= 0.0 then self.Transient = 0.0 end - - -- Parking brake animation - self.ParkingBrakeAngle = self.ParkingBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ParkingBrakeAngle - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake013", self:GetPackedRatio(0)^0.5, 0.00, 0.65, 256,24) - self:Animate("controller", self:GetPackedRatio(1), 0.53, 0.80, 2,false) - self:Animate("reverser", self:GetPackedRatio(2), 0.20, 0.55, 4,false) - self:Animate("volt1", self:GetPackedRatio(10), 0.38,0.64) - self:ShowHide("reverser", self:GetPackedBool(0)) - - self:Animate("brake_line", self:GetPackedRatio(4), 0.16, 0.84, 256,2)--,,0.01) - self:Animate("train_line", self:GetPackedRatio(5)-transient, 0.16, 0.84, 256,2)--,,0.01) - self:Animate("brake_cylinder", self:GetPackedRatio(6), 0.17, 0.86, 256,2)--,,0.03) - self:Animate("voltmeter", self:GetPackedRatio(7), 0.38, 0.63) - self:Animate("ampermeter", self:GetPackedRatio(8), 0.38, 0.63) - self:Animate("volt2", 0, 0.38, 0.63) - - self:Animate("headlights", self:GetPackedBool(1) and 1 or 0, 0,1, 8, false) - self:Animate("L_3", self:GetPackedBool("L_3") and 1 or 0, 0,1, 8, false) - self:Animate("VozvratRP", self:GetPackedBool(2) and 1 or 0, 0,1, 16, false) - self:Animate("DIPon", self:GetPackedBool(3) and 1 or 0, 0,1, 16, false) - self:Animate("DIPoff", self:GetPackedBool(4) and 1 or 0, 0,1, 16, false) - self:Animate("brake_disconnect",self:GetPackedBool(6) and 1 or 0, 0,0.7, 3, false) - self:Animate("bat1", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - self:Animate("bat2", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - self:Animate("bat3", self:GetPackedBool(7) and 1 or 0, 0,1, 16, false) - self:Animate("RezMK", self:GetPackedBool(8) and 1 or 0, 0,1, 16, false) - self:Animate("VMK", self:GetPackedBool(9) and 0 or 1, 0,1, 16, false) - self:Animate("VAH", self:GetPackedBool(10) and 1 or 0, 0,1, 16, false) - self:Animate("VAD", self:GetPackedBool(11) and 1 or 0, 0,1, 16, false) - self:Animate("VUD1", self:GetPackedBool(12) and 1 or 0, 0,1, 16, false) - self:Animate("VUD2", self:GetPackedBool(13) and 1 or 0, 0,1, 16, false) - self:Animate("VDL", self:GetPackedBool(14) and 1 or 0, 0,1, 16, false) - self:Animate("KDL", self:GetPackedBool(15) and 1 or 0, 0,1, 16, false) - self:Animate("KDP", self:GetPackedBool(16) and 1 or 0, 0,1, 16, false) - self:Animate("KRZD", self:GetPackedBool(17) and 1 or 0, 0,1, 16, false) - self:Animate("KSN", self:GetPackedBool(18) and 1 or 0, 0,1, 16, false) - self:Animate("OtklAVU", self:GetPackedBool(19) and 1 or 0, 0,1, 16, false) - self:Animate("DURAPower", self:GetPackedBool(24) and 1 or 0, 0,1, 16, false) - self:Animate("SelectMain", self:GetPackedBool(29) and 1 or 0, 0,1, 16, false) - self:Animate("SelectAlternate", self:GetPackedBool(30) and 1 or 0, 0,1, 16, false) - self:Animate("SelectChannel", self:GetPackedBool(31) and 1 or 0, 0,1, 16, false) - self:Animate("ARS", self:GetPackedBool(56) and 1 or 0, 0,1, 16, false) - self:Animate("ALS", self:GetPackedBool(57) and 1 or 0, 0,1, 16, false) - self:Animate("KVT", self:GetPackedBool(28) and 1 or 0, 0,1, 16, false) - - self:Animate("Custom1", self:GetPackedBool(114) and 1 or 0, 0,1, 16, false) - self:Animate("Custom2", self:GetPackedBool(115) and 1 or 0, 0,1, 16, false) - self:Animate("Custom3", self:GetPackedBool(116) and 1 or 0, 0,1, 16, false) - --[[self:Animate("Custom4", self:GetPackedBool(117) and 1 or 0, 0,1, 16, false) - self:Animate("Custom5", self:GetPackedBool(118) and 1 or 0, 0,1, 16, false) - self:Animate("Custom6", self:GetPackedBool(119) and 1 or 0, 0,1, 16, false) - self:Animate("Custom7", self:GetPackedBool(120) and 1 or 0, 0,1, 16, false) - self:Animate("Custom8", self:GetPackedBool(121) and 1 or 0, 0,1, 16, false) - self:Animate("CustomA", self:GetPackedBool(122) and 1 or 0, 0,1, 16, false) - self:Animate("CustomB", self:GetPackedBool(123) and 1 or 0, 0,1, 16, false)]]-- - self:Animate("CustomC", self:GetPackedBool(124) and 1 or 0, 0,1, 16, false) - self:Animate("R_G", self:GetPackedBool(125) and 1 or 0, 0,1, 16, false) - self:Animate("R_Radio", self:GetPackedBool(126) and 1 or 0, 0,1, 16, false) - self:Animate("R_ZS", self:GetPackedBool(127) and 1 or 0, 0,1, 16, false) - self:Animate("R_VPR", self:GetPackedBool("R_VPR") and 1 or 0, 0,1, 16, false) - self:Animate("Program1", self:GetPackedBool(128) and 1 or 0, 0,1, 16, false) - self:Animate("Program2", self:GetPackedBool(129) and 1 or 0, 0,1, 16, false) - self:Animate("rc1", self:GetPackedBool(130) and 0.87 or 1, 0,1, 1, false) - self:Animate("UOS", self:GetPackedBool(134) and 0.87 or 1, 0,1, 1, false) - self:Animate("BPS", self:GetPackedBool(135) and 0.87 or 1, 0,1, 1, false) - self:Animate("UAVALever", self:GetPackedBool(152) and 1 or 0, 0,0.25, 128, 3,false) - self:Animate("EPK_disconnect", self:GetPackedBool(155) and 1 or 0,0,0.5, 3, false) - - -- Animate AV switches - for i,v in ipairs(self.Panel.AVMap) do - local value = self:GetPackedBool(64+(i-1)) and 1 or 0 - self:Animate("a"..(i-1),value,0,1,8,false) - end - - -- Main switch - if self.LastValue ~= self:GetPackedBool(5) then - self.ResetTime = CurTime()+1.5 - self.LastValue = self:GetPackedBool(5) - end - self:Animate("gv_wrench", (self:GetPackedBool(5) and 1 or 0), 0,0.51, 128, 1,false) - self:ShowHide("gv_wrench", CurTime() < self.ResetTime) - - -- Animate doors - for i=0,4 do - for k=0,1 do - local n_l = "door"..i.."x"..k.."a" - local n_r = "door"..i.."x"..k.."b" - local animation = self:Animate(n_l,self:GetPackedBool(21+(1-k)*4) and 1 or 0,0,1, 0.8 + (-0.2+0.4*math.random()),0) - local offset_l = Vector(math.abs(31*animation),0,0) - local offset_r = Vector(math.abs(32*animation),0,0) - if self.ClientEnts[n_l] then - self.ClientEnts[n_l]:SetPos(self:LocalToWorld(self.ClientProps[n_l].pos + (1.0 - 2.0*k)*offset_l)) - --self.ClientEnts[n_l]:SetSkin(self:GetSkin()) - end - if self.ClientEnts[n_r] then - self.ClientEnts[n_r]:SetPos(self:LocalToWorld(self.ClientProps[n_r].pos - (1.0 - 2.0*k)*offset_r)) - --self.ClientEnts[n_r]:SetSkin(self:GetSkin()) - end - end - end - --if self.ClientEnts["door1"] then self.ClientEnts["door1"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door2"] then self.ClientEnts["door2"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door3"] then self.ClientEnts["door3"]:SetSkin(self:GetSkin()) end - --if self.ClientEnts["door4"] then self.ClientEnts["door4"]:SetSkin(self:GetSkin()) end - - - -- Brake-related sounds - local brakeLinedPdT = self:GetPackedRatio(9) - local dT = self.DeltaTime - self.BrakeLineRamp1 = self.BrakeLineRamp1 or 0 - - if (brakeLinedPdT > -0.001) - then self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*(0-self.BrakeLineRamp1)*dT - else self.BrakeLineRamp1 = self.BrakeLineRamp1 + 4.0*((-0.6*brakeLinedPdT)-self.BrakeLineRamp1)*dT - end - self.BrakeLineRamp1 = math.Clamp(self.BrakeLineRamp1,0,1) - self:SetSoundState("release2",self.BrakeLineRamp1^1.65,1.0) - - self.BrakeLineRamp2 = self.BrakeLineRamp2 or 0 - if (brakeLinedPdT < 0.001) - then self.BrakeLineRamp2 = self.BrakeLineRamp2 + 4.0*(0-self.BrakeLineRamp2)*dT - else self.BrakeLineRamp2 = self.BrakeLineRamp2 + 8.0*(0.1*brakeLinedPdT-self.BrakeLineRamp2)*dT - end - self.BrakeLineRamp2 = math.Clamp(self.BrakeLineRamp2,0,1) - self:SetSoundState("release3",self.BrakeLineRamp2 + math.max(0,self.BrakeLineRamp1/2-0.15),1.0) - - self:SetSoundState("cran1",math.min(1,self:GetPackedRatio(4)/50*(self:GetPackedBool(6) and 1 or 0)),1.0) - - -- Compressor - local state = self:GetPackedBool(20) - self.PreviousCompressorState = self.PreviousCompressorState or false - if self.PreviousCompressorState ~= state then - self.PreviousCompressorState = state - if state then - self:SetSoundState("compressor_ezh",1,1) - else - self:SetSoundState("compressor_ezh",0,1) - self:SetSoundState("compressor_ezh_end",0,1) - self:SetSoundState("compressor_ezh_end",1,1) - --self:PlayOnce("compressor_e_end",nil,1,nil,true) - end - end - - -- ARS/ringer alert - local state = self:GetPackedBool(39) - self.PreviousAlertState = self.PreviousAlertState or false - if self.PreviousAlertState ~= state then - self.PreviousAlertState = state - if state then - self:SetSoundState("ring",0.95,1) - else - self:SetSoundState("ring",0,0) - self:SetSoundState("ring_end",0.95,1) - --self:PlayOnce("ring_end","cabin",0.45,101) - end - end - - local state = self:GetPackedBool("VPR") - self.PreviousVPRState = self.PreviousVPRState or false - if self.PreviousVPRState ~= state then - self.PreviousVPRState = state - if state then - self:SetSoundState("vpr",1,1) - else - self:SetSoundState("vpr",0,0) - self:PlayOnce("vpr_end","cabin",1) - end - end - - -- RK rotation - if self:GetPackedBool(112) then self.RKTimer = CurTime() end - local state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk_spin",0.7,1,nil,0.75) - else - self:SetSoundState("rk_spin",0,0,nil,0.75) - self:SetSoundState("rk_stop",0,1,nil,0.75) - self:SetSoundState("rk_stop",0.7,1,nil,0.75) - end - end - - -- DIP sound - --self:SetSoundState("bpsn2",self:GetPackedBool(32) and 1 or 0,1.0) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - -function ENT:DrawPost() - --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) - self:DrawOnPanel("InfoTable",function() - surface.SetDrawColor(0,0,0) --255*dc.x,250*dc.y,220*dc.z) - surface.DrawRect(50,0,540,100) - draw.Text({ - text = self:GetNW2String("FrontText",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 320, 50 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(250,200,20,255)}) - end) - - if self.InfoTableTimeout and (CurTime() < self.InfoTableTimeout) then - self:DrawOnPanel("InfoTableSelect",function() - draw.Text({ - text = self:GetNW2String("RouteNumber",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -50 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - draw.Text({ - text = self:GetNW2String("FrontText",""), - font = "MetrostroiSubway_InfoPanel",--..self:GetNW2Int("Style",1), - pos = { 140, -100 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(255,0,0,255)}) - end) - end - - - self:DrawOnPanel("InfoRoute",function() - surface.SetAlphaMultiplier(1) - surface.SetDrawColor(255,255,255) --255*dc.x,250*dc.y,220*dc.z) - --surface.DrawRect(0,100,88,70) - local rn = self:GetNW2String("RouteNumber","00") - surface.SetMaterial(Metrostroi.RouteTextures.m[rn[1]]) - surface.DrawTexturedRect(-2,100,44,70) - surface.SetMaterial(Metrostroi.RouteTextures.m[rn[2]]) - surface.DrawTexturedRect(46,100,44,70) - --[[ - draw.Text({ - text = self:GetNW2String("RouteNumber","00"), - font = "MetrostroiSubway_InfoRoute",--..self:GetNW2Int("Style",1), - pos = { 44, 135 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(0,0,0,255)}) - ]] - end)// - --[[ - self:DrawOnPanel("InfoRoute",function() - surface.SetDrawColor(142,132,101) --255*dc.x,250*dc.y,220*dc.z) - --surface.DrawRect(0,100,88,70) - draw.Text({ - text = self:GetNW2String("RouteNumber"," ")[1], - font = "MetrostroiSubway_InfoRoute",--..self:GetNW2Int("Style",1), - pos = { 20, 135 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(0,0,0,255)}) - draw.Text({ - text = self:GetNW2String("RouteNumber"," ")[2], - font = "MetrostroiSubway_InfoRoute",--..self:GetNW2Int("Style",1), - pos = { 68, 135 }, - xalign = TEXT_ALIGN_CENTER, - yalign = TEXT_ALIGN_CENTER, - color = Color(0,0,0,255)}) - end)]] - self:DrawOnPanel("ARS",function() - if not self:GetPackedBool(32) then return end - - local speed = self:GetPackedRatio(3)*100.0 - local d1 = math.floor(speed) % 10 - local d2 = math.floor(speed / 10) % 10 - self:DrawDigit((196+0) *10, 35*10, d2, 0.75, 0.55) - self:DrawDigit((196+10)*10, 35*10, d1, 0.75, 0.55) - - local b = self:Animate("light_rRP",self:GetPackedBool(35) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(253*10,33*10,16*10,8*10) - surface.SetAlphaMultiplier(1) - draw.DrawText("РП","MetrostroiSubway_LargeText",253*10+30,33*10-19,Color(0,0,0,255)) - end - - local b = self:Animate("light_rLSN",self:GetPackedBool(131) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(290*10,33*10,16*10,8*10) - draw.DrawText("РП","MetrostroiSubway_LargeText",290*10+30,33*10-19,Color(0,0,0,255)) - end - - b = self:Animate("light_gRP",self:GetPackedBool(36) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(140*10,33*10,16*10,8*10) - draw.DrawText("РП","MetrostroiSubway_LargeText",140*10+30,33*10-19,Color(0,0,0,255)) - end - - b = self:Animate("light_gKT",self:GetPackedBool(47) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(133*10,73*10,16*10,8*10) - draw.DrawText("КТ","MetrostroiSubway_LargeText",133*10+30,73*10-20,Color(0,0,0,255)) - end - - b = self:Animate("light_gKVD",self:GetPackedBool(48) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(165*10,73*10,16*10,8*10) - draw.DrawText("КВД","MetrostroiSubway_LargeText",165*10,73*10-20,Color(0,0,0,255)) - end - - b = self:Animate("light_LhRK",self:GetPackedBool(33) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(101*10,73*10,16*10,8*10) - end - - b = self:Animate("light_NR1",self:GetPackedBool(34) and 0 or 1,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(196*10,73*10,16*10,8*10) - draw.DrawText("НР1","MetrostroiSubway_LargeText",196*10,73*10-20,Color(0,0,0,255)) - end - - b = self:Animate("light_VPR",self:GetPackedBool("VPR") and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(0,255,50) - surface.DrawRect(228*10,73*10,16*10,8*10) - draw.DrawText("ВПР","MetrostroiSubway_LargeText",228*10,73*10-20,Color(0,0,0,255)) - end - - b = self:Animate("light_PECH",self:GetPackedBool(37) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,127,0) - surface.DrawRect(260*10,73*10,16*10,8*10) - draw.DrawText("ПЕЧЬ","MetrostroiSubway_SmallText",260*10,73*10-5,Color(0,0,0,255)) - end - - b = self:Animate("light_AVU",self:GetPackedBool(38) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(295*10,73*10,16*10,8*10) - draw.DrawText("АВУ","MetrostroiSubway_LargeText",295*10,73*10-20,Color(0,0,0,255)) - end - - b = self:Animate("light_SD",self:GetPackedBool(40) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(102*10,33*10,16*10,8*10) - draw.DrawText("СД","MetrostroiSubway_LargeText",102*10+30,33*10-20,Color(0,0,0,255)) - end - - ------------------------------------------------------------------------ - b = self:Animate("light_OCh",self:GetPackedBool(41) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(102*10,53*10,16*10,8*10) - draw.DrawText("ОЧ","MetrostroiSubway_LargeText",102*10+30,53*10-15,Color(0,0,0,255)) - end - - b = self:Animate("light_0",self:GetPackedBool(42) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,50,0) - surface.DrawRect(140*10,53*10,16*10,8*10) - draw.DrawText("0","MetrostroiSubway_LargeText",140*10+55,53*10-10,Color(0,0,0,255)) - end - - b = self:Animate("light_40",self:GetPackedBool(43) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(255,127,0) - surface.DrawRect(176*10,53*10,16*10,8*10) - draw.DrawText("40","MetrostroiSubway_LargeText",176*10+30,53*10-10,Color(0,0,0,255)) - end - - b = self:Animate("light_60",self:GetPackedBool(44) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(217*10,53*10,16*10,8*10) - draw.DrawText("60","MetrostroiSubway_LargeText",217*10+30,53*10-10,Color(0,0,0,255)) - end - - b = self:Animate("light_75",self:GetPackedBool(45) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(255*10,53*10,16*10,8*10) - draw.DrawText("70","MetrostroiSubway_LargeText",255*10+30,53*10-10,Color(0,0,0,255)) - end - - b = self:Animate("light_80",self:GetPackedBool(46) and 1 or 0,0,1,5,false) - if b > 0.0 then - surface.SetAlphaMultiplier(b) - surface.SetDrawColor(50,255,50) - surface.DrawRect(294*10,53*10,16*10,8*10) - draw.DrawText("80","MetrostroiSubway_LargeText",294*10+30,53*10-10,Color(0,0,0,255)) - end - - surface.SetAlphaMultiplier(1.0) - end) - - self:DrawOnPanel("IGLA",function() - local plus = ((not self:GetPackedBool(32) or not self:GetPackedBool(78)) and 1 or 0) - surface.SetDrawColor(50 - plus*40,255 - plus*220,40 - plus*40) - surface.DrawRect(0,-4,360,60) - if not self:GetPackedBool(32) or not self:GetPackedBool(78) then return end - local text1 = "" - local text2 = "" - local C1 = Color(0,0,0,255) - local C2 = Color(50,200,50,255) - local flash = false - local T = self:GetPackedRatio(11) - local Ptrain = self:GetPackedRatio(5)*16.0 - local Pcyl = self:GetPackedRatio(6)*6.0 - local date = os.date("!*t",os_time) - -- Default IGLA text - text1 = "IGLA-01K RK TEMP" - text2 = Format("%02d:%02d:%02d %3d C",date.hour,date.min,date.sec,T) - - -- Modifiers and conditions - if self:GetPackedBool(25) then text1 = " !! Right Doors !!" end - if self:GetPackedBool(21) then text1 = " !! Left Doors !!" end - - if T > 300 then text1 = "Temperature warning!" end - - if self:GetPackedBool(50) and (Pcyl > 1.1) then - text1 = "FAIL PNEUMATIC BRAKE" - flash = true - end - if self:GetPackedBool(35) and - self:GetPackedBool(28) then - text1 = "FAIL AVU/BRAKE PRESS" - flash = true - end - if self:GetPackedBool(35) and - (not self:GetPackedBool(40)) then - text1 = "FAIL SD/DOORS OPEN " - flash = true - end - if self:GetPackedBool(36) then - text1 = "FAIL OVERLOAD RELAY " - flash = true - end - if Ptrain < 5.5 then - text1 = "FAIL TRAIN LINE LEAK" - flash = true - end - - if T > 400 then flash = true end - if T > 500 then text1 = "!Disengage circuits!" end - if T > 750 then text1 = " !! PIZDA POEZDU !! " end - - -- Draw text - if flash and ((RealTime() % 1.0) > 0.5) then - C2,C1 = C1,C2 - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+4,16,22) - draw.DrawText(string.upper(text1[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+0,C1) - end - for i=1,20 do - surface.SetDrawColor(C2) - surface.DrawRect(3+(i-1)*17.7+1,0+24+4,16,22) - draw.DrawText(string.upper(text2[i] or ""),"MetrostroiSubway_IGLA",3+(i-1)*17.7,0+24,C1) - end - end) - - self:DrawOnPanel("AnnouncerDisplay",function(...) - local plus = (not self:GetPackedBool(32) and 1 or 0) - surface.SetDrawColor(83,140,82) - surface.DrawRect(230,80,450,150) - if not self:GetPackedBool(32) then return end - self.ASNP:AnnDisplay(self,true) - end) - - self:DrawOnPanel("DURADisplay",function() - if not self:GetPackedBool(32) or not self:GetPackedBool(24) then return end - local function GetColor(id, text) - if text then - return self:GetPackedBool(id) and Color(255,0,0) or Color(0,0,0) - else - return not self:GetPackedBool(id) and Color(255,255,255) or Color(0,0,0) - end - end - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*0,211,22.8) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("DURA V 1.0","MetrostroiSubway_IGLA",0,0+22.8*0, Color(0,0,0,255)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(31)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*1,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel:" .. (self:GetPackedBool(31) and "2" or "1"),"MetrostroiSubway_IGLA",0,0+22.8*1,GetColor(31, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(153)) surface.SetAlphaMultiplier(0.4) - surface.DrawRect(0,3+22.8*2,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel1:" .. (self:GetPackedBool(153) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*2,GetColor(153, true)) - - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(GetColor(154)) - surface.DrawRect(0,3+22.8*3,211,23) -- 120 - surface.SetAlphaMultiplier(1.0) - draw.DrawText("Channel2:" .. (self:GetPackedBool(154) and "Alt" or "Main"),"MetrostroiSubway_IGLA",0,0+22.8*3,GetColor(154, true)) - surface.SetAlphaMultiplier(0.4) - surface.SetDrawColor(255,255,255) - surface.DrawRect(0,3+22.8*4,211,23) -- 120 - surface.SetAlphaMultiplier(1) - end) - - self:DrawOnPanel("FrontPneumatic",function() - draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("RearPneumatic",function() - draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) - draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) - end) - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - - -- Draw train numbers - local dc = render.GetLightColor(self:GetPos()) - self:DrawOnPanel("TrainNumber1",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) - self:DrawOnPanel("TrainNumber2",function() - draw.DrawText(Format("%04d",self:EntIndex()),"MetrostroiSubway_LargeText3",0,0,Color(255*dc.x,255*dc.y,255*dc.z,255)) - end) -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - local bp_press = self:GetPackedRatio(6) - local blocked_l = self:GetPackedBool(132) and 0 or 1 - local blocked_r = self:GetPackedBool(133) and 0 or 1 - if button == "ParkingBrakeLeft" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) - blocked_l*45 - end - if button == "ParkingBrakeRight" then - self.ParkingBrakeAngle = (self.ParkingBrakeAngle or 0) + blocked_r*45 - end - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end - - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end diff --git a/lua/entities/_obsolete/gmod_subway_ezh3ru1/init.lua b/lua/entities/_obsolete/gmod_subway_ezh3ru1/init.lua deleted file mode 100644 index 1dc19dd..0000000 --- a/lua/entities/_obsolete/gmod_subway_ezh3ru1/init.lua +++ /dev/null @@ -1,979 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "E", - Name = "Ezh3", - Manufacturer = "MVM", - WagType = 0, - ARS = { - HaveASNP = true, - } -} - -function ENT:Initialize() - - -- Set model and initialize - self:SetModel("models/metrostroi/e/em508.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(418,-45,-28+4)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 325-10,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-325-10,0,-80),Angle(0,0,0),false) - local pneumoPow = 0.8+(math.random()^0.4)*0.3 - self.FrontBogey.PneumaticPow = pneumoPow - self.RearBogey.PneumaticPow = pneumoPow - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - [KEY_8] = "KRP", - - [KEY_EQUAL] = "R_Program1Set", - [KEY_MINUS] = "R_Program2Set", - - [KEY_G] = "VozvratRPSet", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - - [KEY_A] = "KDL", - [KEY_D] = "KDP", - [KEY_V] = "VUD1Toggle", - [KEY_L] = "HornEngage", - [KEY_N] = "VZ1Set", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_6] = "PneumaticBrakeSet6", - [KEY_PAD_7] = "PneumaticBrakeSet7", - [KEY_PAD_DIVIDE] = "KRPSet", - [KEY_PAD_MULTIPLY] = "KAHSet", - - [KEY_SPACE] = "PBSet", - [KEY_BACKSPACE] = "EmergencyBrake", - - [KEY_PAD_0] = "DriverValveDisconnectToggle", - [KEY_PAD_DECIMAL] = "EPKToggle", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - [KEY_SPACE] = "KVTSet", - [KEY_F] = "BCCDSet", - [KEY_R] = "VZPSet", - - [KEY_A] = "DURASelectAlternate", - [KEY_D] = "DURASelectMain", - [KEY_V] = "DURAToggleChannel", - [KEY_1] = "DIPonSet", - [KEY_2] = "DIPoffSet", - [KEY_4] = "KVSet0Fast", - [KEY_L] = "DriverValveDisconnectToggle", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_6] = "KVSetT1A", - - [KEY_PAD_7] = "BFSet", - [KEY_PAD_8] = "BUpSet", - [KEY_PAD_9] = "BMSet", - [KEY_PAD_4] = "BLeftSet", - [KEY_PAD_5] = "BDownSet", - [KEY_PAD_6] = "BRightSet", - [KEY_PAD_ENTER] = "BPSet", - }, - - [KEY_RSHIFT] = { - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV", - [KEY_0] = "KVWrench0", - [KEY_L] = "DriverValveDisconnectToggle", - - }, - [KEY_LALT] = { - [KEY_V] = "VUD1Toggle", - [KEY_L] = "EPKToggle", - [KEY_PAD_PLUS] = "Custom2Set", - [KEY_PAD_MINUS] = "Custom1Set", - [KEY_PAD_ENTER] = "Custom3Set", - [KEY_PAD_ENTER] = "Custom3Set", - [KEY_PAD_MULTIPLY] = "CustomCToggle", - }, - [KEY_RALT] = { - [KEY_L] = "EPKToggle", - }, - } - - self.InteractionZones = { - { Pos = Vector(458,-30,-55), - Radius = 32, - ID = "FrontBrakeLineIsolationToggle" }, - { Pos = Vector(458, 30,-55), - Radius = 32, - ID = "FrontTrainLineIsolationToggle" }, - { Pos = Vector(-482,30,-55), - Radius = 32, - ID = "RearBrakeLineIsolationToggle" }, - { Pos = Vector(-482, -30,-55), - Radius = 32, - ID = "RearTrainLineIsolationToggle" }, - { Pos = Vector(154,62.5,-65), - Radius = 32, - ID = "GVToggle" }, - { Pos = Vector(393.6,26.0+4.6*1,24.9), - Radius = 8, - ID = "VBToggle" }, - { Pos = Vector(-180,68.5,-50), - Radius = 20, - ID = "AirDistributorDisconnectToggle" }, - { Pos = Vector(-470,-38,9), - Radius = 28, - ID = "RearDoor" }, - { Pos = Vector(450,38,9), - Radius = 28, - ID = "FrontDoor1" }, - { Pos = Vector(450,38,-16), - Radius = 28, - ID = "FrontDoor2" }, - { Pos = Vector(382,38,9), - Radius = 28, - ID = "PassengerDoor" }, - { Pos = Vector(445,61,25), - Radius = 16, - ID = "CabinDoor1" }, - { Pos = Vector(445,61,-25), - Radius = 16, - ID = "CabinDoor2" }, - { Pos = Vector(380,67,25), - Radius = 28, - ID = "CabinDoor3" }, - { Pos = Vector(380,67,-25), - Radius = 28, - ID = "CabinDoor4" }, - } - - -- Lights - self.Lights = { - -- Head - [1] = { "headlight", Vector(465,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100 }, - [2] = { "glow", Vector(460, 49,-28), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [3] = { "glow", Vector(460,-49,-28), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458,-15, 57), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458,-5, 57), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458, 5, 57), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [7] = { "glow", Vector(458, 15, 57), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Reverse - [8] = { "light", Vector(458,-31, 58), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - [9] = { "light", Vector(458, 31, 58), Angle(0,0,0), Color(255,0,0), brightness = 10, scale = 1.0 }, - - -- Cabin - [10] = { "dynamiclight", Vector( 420, -40, 35), Angle(0,0,0), Color(255,255,255), brightness = 0.1, distance = 550 }, - - -- Interior - [11] = { "dynamiclight", Vector( 250, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - [12] = { "dynamiclight", Vector( 0, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - [13] = { "dynamiclight", Vector(-250, 0, 5), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 }, - - -- Side lights - [14] = { "light", Vector(390, 69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [15] = { "light", Vector(390, 69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [16] = { "light", Vector(390, 69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [17] = { "light", Vector(390, 69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [18] = { "light", Vector(390, -69, 54), Angle(0,0,0), Color(255,0,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [19] = { "light", Vector(390, -69, 51), Angle(0,0,0), Color(150,255,255), brightness = 0.6, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [20] = { "light", Vector(390, -69, 48), Angle(0,0,0), Color(50,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - [21] = { "light", Vector(390, -69, 45), Angle(0,0,0), Color(255,255,0), brightness = 0.5, scale = 0.10, texture = "models/metrostroi_signals/signal_sprite_002.vmt" }, - - [30] = { "headlight", Vector(447.8,-34.6,9.6), Angle(0,0,0), Color(255,161,40), farz = 3, nearz = 1, shadows = 0, brightness = 2, fov = 124 }, - [31] = { "headlight", Vector(449,-32.9,13.5), Angle(0,4,0), Color(237,161,73), farz = 3, nearz = 1, shadows = 0, brightness = 2, fov = 120 }, - [32] = { "headlight", Vector(445.6,-38.4,0.1), Angle(-65,-5,0), Color(20,161,20), farz = 5, nearz = 1, shadows = 0, brightness = 2, fov = 140 }, - [33] = { "headlight", Vector(446.5,-57.2,20.4), Angle(-90,0,0), Color(216,161,92), farz = 7.2, nearz = 1, shadows = 0, brightness = 2, fov = 120 }, - - -- Custom D - [35] = { "light", Vector(447.7,-54.5,17.4-4.4), Angle(0,-0,0), Color(255,0,0), brightness = 1.0, scale = 0.020 }, - -- Custom E - [36] = { "light", Vector(447,-55.5,17.4-4.4), Angle(0,0,0), Color(255,255,255), brightness = 1.0, scale = 0.020 }, - -- Custom F - [37] = { "light", Vector(444.7,-58.5,17.4-4.4), Angle(0,0,0), Color(255,160,0), brightness = 1.0, scale = 0.020 }, - -- Custom G - [38] = { "light", Vector(444,-59.5,17.4-4.4), Angle(0,0,0), Color(100,255,0), brightness = 1.0, scale = 0.020 }, - [70 ] = { "headlight", Vector( 430, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, - } - - for i = 1,23 do - self.Lights[69+i] = { "light", Vector(-470 + 35*i, 0, 65), Angle(180,0,0), Color(255,220,180), brightness = 0.25, scale = 0.75} - --self:SetLightPower(69+i,RealTime()%1*2>1) - end - - -- Cross connections in train wires - self.TrainWireInverts = { - [18] = true, - [34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- Setup door positions - self.LeftDoorPositions = {} - self.RightDoorPositions = {} - for i=0,3 do - table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) - table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) - end - - -- KV wrench mode - self.KVWrenchMode = 0 - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - - self.A5:TriggerInput("Set",0) - self:UpdateTextures() -end -function ENT:UpdateTextures() - local texture = Metrostroi.Skins["train"][self.Texture] - local passtexture = Metrostroi.Skins["pass"][self.PassTexture] - local cabintexture = Metrostroi.Skins["cab"][self.CabTexture] - - for k,v in pairs(self:GetMaterials()) do - self:SetSubMaterial(k-1,"") - end - for k,v in pairs(self:GetMaterials()) do - if v == "models/metrostroi_train/81/int02" then - if not Metrostroi.Skins["717_schemes"] or not Metrostroi.Skins["717_schemes"]["m"] then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"][""]) - else - if not self.Adverts or self.Adverts ~= 4 then - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].adv) - else - self:SetSubMaterial(k-1,Metrostroi.Skins["717_schemes"]["m"].clean) - end - end - end - local tex = string.Explode("/",v) - tex = tex[#tex] - if cabintexture and cabintexture.textures[tex] then - self:SetSubMaterial(k-1,cabintexture.textures[tex]) - end - if passtexture and passtexture.textures[tex] then - self:SetSubMaterial(k-1,passtexture.textures[tex]) - end - if texture and texture.textures[tex] then - self:SetSubMaterial(k-1,texture.textures[tex]) - end - end - self:SetNW2String("texture",self.Texture) - self:SetNW2String("passtexture",self.PassTexture) - self:SetNW2String("cabtexture",self.CabTexture) -end - -local LK = {} -local PKG = 0 -local RK = 0 -local KV = 0 -local OldTime --------------------------------------------------------------------------------- -function ENT:Think() - --[[ - if self.KV.ControllerPosition ~= KV then - if KV == 0 then OldTime = nil end - if self.KV.ControllerPosition == 0 then OldTime = nil end - if not OldTime then print("") end - KV = self.KV.ControllerPosition - print(Format("Controller moved:%d",KV)) - end - for i=1,5 do - if LK[i] ~= self["LK"..i].Value then - if not OldTime then OldTime = CurTime() end - print(Format("%.2f:LK%d = %d",CurTime()-OldTime,i,self["LK"..i].Value)) - LK[i] = self["LK"..i].Value - end - end - if RK ~= math.floor(self.RheostatController.Position+0.5) then - if not OldTime then OldTime = CurTime() end - RK = math.floor(self.RheostatController.Position+0.5) - print(Format("%.2f:RK = %d",CurTime()-OldTime,RK)) - end - if PKG ~= math.floor(self.PositionSwitch.Position+0.5) then - if not OldTime then OldTime = CurTime() end - local nPKG = math.floor(self.PositionSwitch.Position+0.5) - print(Format("%.2f:PK = %d->%d",CurTime()-OldTime,PKG,nPKG)) - PKG = nPKG - end - ]] - self.RetVal = self.BaseClass.Think(self) - -- Check if wrench was pulled out - if self.DriversWrenchPresent then - self.KV:TriggerInput("Enabled",self:IsWrenchPresent() and 1 or 0) - end - self:SetLightPower(1, self.Panel["HeadLights3"] > 0.5,(math.min(1,self.Panel["HeadLights1"])*0.50 + - math.min(1,self.Panel["HeadLights2"])*0.25 + - math.min(1,self.Panel["HeadLights3"])*0.25) - ) - self:SetLightPower(2, self.Panel["HeadLights3"] > 0.5) - self:SetLightPower(3, self.Panel["HeadLights3"] > 0.5) - self:SetLightPower(4, self.Panel["HeadLights2"] > 0.5) - self:SetLightPower(5, self.Panel["HeadLights1"] > 0.5) - self:SetLightPower(6, self.Panel["HeadLights1"] > 0.5) - self:SetLightPower(7, self.Panel["HeadLights2"] > 0.5) - -- Reverser lights - self:SetLightPower(8, self.Panel["RedLightRight"] > 0.5) - self:SetLightPower(9, self.Panel["RedLightLeft"] > 0.5) - - -- Interior/cabin lights - self:SetLightPower(10, self.Panel["CabinLight"] > 0.5) - - local lightsActive2 = self.PowerSupply.XT3_4 > 65.0 - local lightsActive1 = self.Panel["EmergencyLight"] > 0.5 - self:SetLightPower(11, lightsActive2, 0.8) - self:SetLightPower(12, lightsActive1,0.1 + ((self.PowerSupply.XT3_4 > 65.0) and 0.7 or 0)) - self:SetLightPower(13, lightsActive2, 0.8) - for i = 1,23 do - self:SetLightPower(69+i,lightsActive2 and true or lightsActive1 and i%5==1 or false) - end - self:SetLightPower(30, (self.L_3.Value > 0.5)) - self:SetLightPower(31, (self.L_3.Value > 0.5)) - self:SetLightPower(32, (self.L_3.Value > 0.5)) - self:SetLightPower(33, (self.L_3.Value > 0.5)) - --self:SetLightPower(12, self.Panel["EmergencyLight"] > 0.5) - --self:SetLightPower(13, self.PowerSupply.XT3_4 > 65.0) - - -- Side lights - self:SetLightPower(14, false) - self:SetLightPower(18, false) - - self:SetLightPower(15, self.Panel["TrainDoors"] > 0.5) - self:SetLightPower(19, self.Panel["TrainDoors"] > 0.5) - - self:SetLightPower(16, self.Panel["GreenRP"] > 0.5) - self:SetLightPower(20, self.Panel["GreenRP"] > 0.5) - - self:SetLightPower(17, self.Panel["TrainBrakes"] > 0.5) - self:SetLightPower(21, self.Panel["TrainBrakes"] > 0.5) - - -- Total temperature - local IGLA_Temperature = math.max(self.Electric.T1,self.Electric.T2) - - -- Switch and button states - self:SetPackedBool(0,self:IsWrenchPresent()) - self:SetPackedBool(1,self.VUS.Value == 1.0) - self:SetPackedBool("L_3",self.L_3.Value == 1.0) - self:SetPackedBool(2,self.VozvratRP.Value == 1.0) - self:SetPackedBool(3,self.DIPon.Value == 1.0) - self:SetPackedBool(4,self.DIPoff.Value == 1.0) - self:SetPackedBool(5,self.GV.Value == 1.0) - self:SetPackedBool(6,self.DriverValveDisconnect.Value == 1.0) - self:SetPackedBool(7,self.VB.Value == 1.0) - self:SetPackedBool(8,self.RezMK.Value == 1.0) - self:SetPackedBool(9,self.VMK.Value == 1.0) - self:SetPackedBool(10,self.VAH.Value == 1.0) - self:SetPackedBool(11,self.VAD.Value == 1.0) - self:SetPackedBool(12,self.VUD1.Value == 0.0) - self:SetPackedBool(13,self.VUD2.Value == 1.0) - self:SetPackedBool(14,self.VDL.Value == 1.0) - self:SetPackedBool(15,self.KDL.Value == 1.0) - self:SetPackedBool(16,self.KDP.Value == 1.0) - self:SetPackedBool(17,self.KRZD.Value == 1.0) - self:SetPackedBool(18,self.KSN.Value == 1.0) - self:SetPackedBool(19,self.OtklAVU.Value == 1.0) - self:SetPackedBool(20,self.Pneumatic.Compressor == 1.0) - self:SetPackedBool(21,self.Pneumatic.LeftDoorState[1] > 0.5) - --self:SetPackedBool(22,self.Pneumatic.LeftDoorState[2] > 0.5) - --self:SetPackedBool(23,self.Pneumatic.LeftDoorState[3] > 0.5) - --self:SetPackedBool(24,self.Pneumatic.LeftDoorState[4] > 0.5) - self:SetPackedBool(24,self.DURA.Power) - self:SetPackedBool(25,self.Pneumatic.RightDoorState[1] > 0.5) - --self:SetPackedBool(26,self.Pneumatic.RightDoorState[2] > 0.5) - --self:SetPackedBool(27,self.Pneumatic.RightDoorState[3] > 0.5) - self:SetPackedBool(27,self.KVWrenchMode == 2) - --self:SetPackedBool(28,self.Pneumatic.RightDoorState[4] > 0.5) - self:SetPackedBool(28,self.KVT.Value == 1.0) - --self:SetPackedBool(156,self.KB.Value == 1.0) - self:SetPackedBool(29,self.DURA.SelectAlternate == false) - self:SetPackedBool(30,self.DURA.SelectAlternate == true) - self:SetPackedBool(31,self.DURA.Channel == 2) - self:SetPackedBool(56,self.ARS.Value == 1.0) - self:SetPackedBool(57,self.ALS.Value == 1.0) - self:SetPackedBool(58,self.Panel["CabinLight"] > 0.5) - self:SetPackedBool(112,(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool(114,self.Custom1.Value == 1.0) - self:SetPackedBool(115,self.Custom2.Value == 1.0) - self:SetPackedBool(116,self.Custom3.Value == 1.0) - self:SetPackedBool(124,self.CustomC.Value == 1.0) - --[[self:SetPackedBool(117,self.Custom4.Value == 1.0) - self:SetPackedBool(118,self.Custom5.Value == 1.0) - self:SetPackedBool(119,self.Custom6.Value == 1.0) - self:SetPackedBool(120,self.Custom7.Value == 1.0) - self:SetPackedBool(121,self.Custom8.Value == 1.0) - self:SetPackedBool(122,self.CustomA.Value == 1.0) - self:SetPackedBool(124,self.CustomC.Value == 1.0)]]-- - self:SetLightPower(35,self.CustomD.Value == 1.0) - self:SetLightPower(36,self.CustomE.Value == 1.0) - self:SetLightPower(37,self.CustomF.Value == 1.0) - self:SetLightPower(38,self.CustomG.Value == 1.0) - self:SetPackedBool(125,self.R_G.Value == 1.0) - self:SetPackedBool(126,self.R_Radio.Value == 1.0) - self:SetPackedBool(127,self.R_ZS.Value == 1.0) - self:SetPackedBool("R_VPR",self.R_VPR.Value == 1.0) - self:SetPackedBool("VPR",self.R_VPR.Value == 1.0 and self.A29.Value == 1.0 and self.Panel["V1"]) - self:SetPackedBool(128,self.R_Program1.Value == 1.0) - self:SetPackedBool(129,self.R_Program2.Value == 1.0) - self:SetPackedBool(130,self.RC1.Value == 1.0) - self:SetPackedBool(132,self.ManualBrake <= 0.001) - self:SetPackedBool(133,self.ManualBrake >= 0.999) - self:SetPackedBool(134,self.UOS.Value == 1.0) - self:SetPackedBool(135,self.BPS.Value == 1.0) - self:SetPackedBool(152,self.UAVA.Value == 1.0) - self:SetPackedBool(153,self.DURA.Channel1Alternate) - self:SetPackedBool(154,self.DURA.Channel2Alternate) - self:SetPackedBool(155,self.EPK.Value == 1.0) - self:SetPackedBool(156,self.RearDoor) - self:SetPackedBool(157,self.FrontDoor) - self:SetPackedBool(158,self.PassengerDoor) - self:SetPackedBool(159,self.CabinDoor) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (self.Pneumatic.LeftDoorState[1] > 0.5) or - (self.Pneumatic.LeftDoorState[2] > 0.5) or - (self.Pneumatic.LeftDoorState[3] > 0.5) or - (self.Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (self.Pneumatic.RightDoorState[1] > 0.5) or - (self.Pneumatic.RightDoorState[2] > 0.5) or - (self.Pneumatic.RightDoorState[3] > 0.5) or - (self.Pneumatic.RightDoorState[4] > 0.5) - self:WriteTrainWire(35,(self.Pneumatic.BrakeCylinderPressure > 0.1) and 1 or 0) - - -- DIP/power - self:SetPackedBool(32,self.Panel["V1"] > 0.5) - -- LxRK - self:SetPackedBool(33,false)--self.RheostatController.MotorCoilState ~= 0.0) - -- NR1 - self:SetPackedBool(34,(self.NR.Value == 1.0) or (self.RPU.Value == 1.0)) - -- Red RP - local TW18 = self:GetTrainWire18() - if self:ReadTrainWire(20) == 0 or (self.Panel["V1"] < 0.5) then TW18 = 0 end--(self.KV.ControllerPositionAutodrive == 0 and self.KV.ControllerPosition == 0) - self:SetPackedBool(35,TW18 > 0.5) - self:SetPackedBool(131,TW18 > 0) - -- Green RP - self:SetPackedBool(36,self.Panel["GreenRP"] > 0.5) - -- Cabin heating - self:SetPackedBool(37,self.Panel["KUP"] > 0.5) - -- AVU - self:SetPackedBool(38,self.Panel["AVU"] > 0.5) - -- Ring - self:SetPackedBool(39,self.Panel["Ring"] > 0.5) - -- SD - self:SetPackedBool(40,self.Panel["SD"] > 0.5) - -- OCh - self:SetPackedBool(41,self.ALS_ARS.NoFreq) - -- 0 - self:SetPackedBool(42,self.ALS_ARS.Signal0) - -- 40 - self:SetPackedBool(43,self.ALS_ARS.Signal40) - -- 60 - self:SetPackedBool(44,self.ALS_ARS.Signal60) - -- 75 - self:SetPackedBool(45,self.ALS_ARS.Signal70) - -- 80 - self:SetPackedBool(46,self.ALS_ARS.Signal80) - -- KT - self:SetPackedBool(47,self.ALS_ARS.LKT) - -- KVD - self:SetPackedBool(48,self.ALS_ARS.LVD) - -- LVD - self:SetPackedBool(50,self:ReadTrainWire(1) > 0.5) - - -- AV states - for i,v in ipairs(self.Panel.AVMap) do - if tonumber(v) - then self:SetPackedBool(64+(i-1),self["A"..v].Value == 1.0) - elseif self[v] then self:SetPackedBool(64+(i-1),self[v].Value == 1.0) - end - end - self.SOSD = self.Panel["SD"] <= 0 and self.Panel["V1"] > 0 and self.KV.ReverserPosition ~= 0 - self:SetLightPower(70,self.SOSD) - - -- Feed packed floats - self:SetPackedRatio(0, 1-self.Pneumatic.DriverValvePosition/7) - self:SetPackedRatio(1, (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio(2, 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio(4, self.Pneumatic.BrakeLinePressure/16.0) - self:SetPackedRatio(5, self.Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio(6, (self.Pneumatic.BrakeCylinderPressure + 4.0*self.ManualBrake)/6.0) - self:SetPackedRatio(7, self.Electric.Power750V/1000.0) - self:SetPackedRatio(8, math.abs(self.Electric.I24)/1000.0) - --self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - if self.Pneumatic.TrainLineOpen then - self:SetPackedRatio(9, (-self.Pneumatic.TrainLinePressure_dPdT or 0)*6) - else - self:SetPackedRatio(9, self.Pneumatic.BrakeLinePressure_dPdT or 0) - end - self:SetPackedRatio(10,(self.Panel["V1"] * self.Battery.Voltage) / 100.0) - self:SetPackedRatio(11,IGLA_Temperature) - - -- Update ARS system - self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - if (self.ALS_ARS.Ring == true) then - self:SetPackedBool(39,true) - end - - -- RUT test - local weightRatio = math.max(0,math.min(1,(self:GetNW2Float("PassengerCount")/300))) - if math.abs(self:GetAngles().pitch) > 2.5 then weightRatio = weightRatio + 1.00 end - self.YAR_13A:TriggerInput("WeightLoadRatio",math.max(0,math.min(1.00,weightRatio))) - - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.RKR.Value > 0.5) - self.RearBogey.MotorForce = 30300+25000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.RKR.Value < 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - self.FrontBogey.PneumaticBrakeForce = 50000.0 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrake = false - self.RearBogey.PneumaticBrakeForce = 50000.0 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + 7.0*self.ManualBrake - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - --self.RearBogey.ParkingBrake = self.ManualBrake.Value > 0.5 - end - - -- Generate bogey sounds - local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) - self.PrevAcceleration = self.Acceleration - - if jerk > (2.0 + self.Speed/15.0) then - self.PrevTriggerTime1 = self.PrevTriggerTime1 or CurTime() - self.PrevTriggerTime2 = self.PrevTriggerTime2 or CurTime() - - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime1 > 1.5) then - self.PrevTriggerTime1 = CurTime() - self.FrontBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - if ((math.random() > 0.00) or (jerk > 10)) and (CurTime() - self.PrevTriggerTime2 > 1.5) then - self.PrevTriggerTime2 = CurTime() - self.RearBogey:EmitSound("subway_trains/chassis_"..math.random(1,3)..".wav", 70, math.random(90,110)) - end - end - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - if self:ReadTrainWire(5)*self:ReadTrainWire(4) > 0 and not self.RevCheck then - self.RevCheck = CurTime()+0.25 - end - if self.RevCheck and CurTime() - self.RevCheck > 0 then - if self:ReadTrainWire(5)*self:ReadTrainWire(4) > 0 then - self:TriggerInput("VUOpenBypass") - if self.VU.TargetValue == 0 then - --self:PlayOnce("av_off","cabin") - end - end - self.RevCheck = nil - end - return self.RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,(self.ManualBrake or 0) - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,(self.ManualBrake or 0) + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:find("FrontDoor") then - self.FrontDoor = not self.FrontDoor - if self.FrontDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("RearDoor") then - self.RearDoor = not self.RearDoor - if self.RearDoor then self:PlayOnce("door_open_tor") else self:PlayOnce("door_close_tor") end - end - if button:find("PassengerDoor") then - self.PassengerDoor = not self.PassengerDoor - if self.PassengerDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button:find("CabinDoor") then - self.CabinDoor = not self.CabinDoor - if self.CabinDoor then self:PlayOnce("door_open_tor","cabin") else self:PlayOnce("door_close_tor","cabin") end - end - if button == "VAHToggle" then - local state = self.VAH.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VAH!") - end - if button == "OtklAVUToggle" then - local state = self.OtklAVU.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." OtklAVU!") - end - if button == "VADToggle" then - local state = self.VAD.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." VAD!") - end - if button == "RC1Toggle" then - local state = self.RC1.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." RC1!") - end - if button == "UOSToggle" then - local state = self.UOS.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UOS!") - end - if button == "UAVAToggle" then - local state = self.UAVA.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." UAVA!") - end - if button == "BPSToggle" then - local state = self.BPS.TargetValue < 0.5 and "enabled" or "disabled" - RunConsoleCommand("say",ply:GetName().." "..state.." BPS!") - end - if button == "AirDistributorDisconnectToggle" then return end - if button == "NextSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex + 1 - if self.SignsIndex > #self.SignsList then self.SignsIndex = 1 end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - if button == "PrevSign" then - self:PrepareSigns() - self.SignsIndex = self.SignsIndex - 1 - if self.SignsIndex < 1 then self.SignsIndex = #self.SignsList end - - self:SetNW2String("FrontText",self.SignsList[self.SignsIndex][2]) - end - - if button == "Num1P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num1M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[2]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,2, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2P" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - if button == "Num2M" then - if not self.RouteNumber then self.RouteNumber = "00" end - local num = tonumber(self.RouteNumber[1]) - num = num - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,1, num) - self:SetNW2String("RouteNumber",self.RouteNumber) - local trn = self.WagonList[#self.WagonList] - if IsValid(trn) and trn ~= self then - trn.RouteNumber = self.RouteNumber - trn:SetNW2String("RouteNumber",self.RouteNumber) - end - end - - -- Parking brake - if button == "ManualBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.008) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ManualBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.008) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then - self.KRU:TriggerInput("Up",1) - self:OnButtonPress("KRUUp") - end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then - self.KRU:TriggerInput("Down",1) - self:OnButtonPress("KRUDown") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX1") then - self.KRU:TriggerInput("SetX1",1) - self:OnButtonPress("KRUSetX1") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then - self.KRU:TriggerInput("SetX2",1) - self:OnButtonPress("KRUSetX2") - end - if (self.KVWrenchMode == 2) and (button == "KVSetX3") then - self.KRU:TriggerInput("SetX3",1) - self:OnButtonPress("KRUSetX3") - end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then - self.KRU:TriggerInput("Set0",1) - self:OnButtonPress("KRUSet0") - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - timer.Simple(0.20,function() - self.KV:TriggerInput("ControllerSet",-2) - end) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVWrench0" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 1 then - if self.KVWrenchMode ~= 1 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 0 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKV" then - if self.KVWrenchMode == 3 or self.KVWrenchMode == 0 then - if self.KVWrenchMode ~= 0 then - self:PlayOnce("revers_in","cabin",0.7) - end - self.KVWrenchMode = 1 - self.DriversWrenchPresent = true - self.DriversWrenchMissing = false - self.KV:TriggerInput("Enabled",1) - self.KRU:TriggerInput("Enabled",0) - end - end - --THERE IS NO KRU IN THIS EZH MODEL - --[[ - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 3 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",1) - self.KRU:TriggerInput("LockX3",1) - end - end]] - if button == "KVWrenchNone" then - if self.KVWrenchMode ~= 3 and self.KV.ReverserPosition == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7,120.0) - else - self:PlayOnce("revers_out","cabin",0.7,120.0) - end - self.KVWrenchMode = 3 - self.DriversWrenchPresent = false - self.DriversWrenchMissing = true - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Close",1) end - if button == "KDL" then self.KDL:TriggerInput("Close",1) self:OnButtonPress("KDLSet") end - if button == "KDP" then self.KDP:TriggerInput("Close",1) self:OnButtonPress("KDPSet") end - if button == "VDL" then self.VDL:TriggerInput("Close",1) self:OnButtonPress("VDLSet") end - if button == "KRP" then - self.KRP:TriggerInput("Set",1) - self:OnButtonPress("KRPSet") - end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveDisconnect:TriggerInput("Set",1) - return - end - -- Special logic - if (button == "VDL") or (button == "KDL") or (button == "KDP") then - --self.VUD1:TriggerInput("Open",1) - end - if (button == "KDP") then - --self.DoorSelect:TriggerInput("Close",1) - end - if (button == "VUD1Set") or (button == "VUD1Toggle") or - (button == "VUD2Set") or (button == "VUD2Toggle") then - self.VDL:TriggerInput("Open",1) - self.KDL:TriggerInput("Open",1) - self.KDP:TriggerInput("Open",1) - end - - if button == "GVToggle" then - if self.GV.Value > 0.5 then - self:PlayOnce("revers_f",nil,0.7) - else - self:PlayOnce("revers_b",nil,0.7) - end - return - end - - if button == "DriverValveDisconnectToggle" then - if self.DriverValveDisconnect.Value == 1.0 then - self:PlayOnce("pneumo_disconnect2","cabin",0.9) - if self.EPK.Value == 1 then self:PlayOnce("epv_on","cabin",0.9) end - else - self:PlayOnce("pneumo_disconnect1","cabin",0.9) - if self.EPK.Value == 1 then self:PlayOnce("epv_off","cabin",0.9) end - end - return - end - - if button == "EPKToggle" and self.DriverValveDisconnect.Value == 1.0 then - if self.EPK.Value == 1.0 then - self:PlayOnce("epv_off","cabin",0.9) - else - self:PlayOnce("epv_on","cabin",0.9) - end - return - end -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - return - end - --if button == "KVT2Set" then self.KVT:TriggerInput("Open",1) end - if button == "KDL" then self.KDL:TriggerInput("Open",1) self:OnButtonRelease("KDLSet") end - if button == "KDP" then self.KDP:TriggerInput("Open",1) self:OnButtonRelease("KDPSet") end - if button == "VDL" then self.VDL:TriggerInput("Open",1) self:OnButtonRelease("VDLSet") end - - if button == "KRP" then - self.KRP:TriggerInput("Set",0) - self:OnButtonRelease("KRPSet") - end - --[[ - if (button == "PneumaticBrakeDown") and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - if self.Pneumatic.ValveType == 1 then - if (button == "PneumaticBrakeUp") and (self.Pneumatic.DriverValvePosition == 5) then - self.Pneumatic:TriggerInput("BrakeSet",4) - end - end - ]] - -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end diff --git a/lua/entities/_obsolete/gmod_subway_ezh3ru1/shared.lua b/lua/entities/_obsolete/gmod_subway_ezh3ru1/shared.lua deleted file mode 100644 index ca1b975..0000000 --- a/lua/entities/_obsolete/gmod_subway_ezh3ru1/shared.lua +++ /dev/null @@ -1,116 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintNameTranslated = "Entities.Ezh3" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["relay_close2"] = nil - self.SoundNames["relay_close3"] = nil - --[[self.SoundNames["relay_close4"] = {"subway_trains/new/relay_7.wav","subway_trains/new/lsd_4.wav"} - self.SoundNames["pneumo_switch"] = { - "subway_trains/pneumo_8.wav", - "subway_trains/pneumo_9.wav", - }]] - self.SoundNames["rvt_close"] = "subway_trains/sbor.wav" - self.SoundNames["r1_5_close"] = "subway_trains/sbor_hod.wav" - self.SoundNames["rvt_open"] = "subway_trains/rasbor_t.wav" - self.SoundNames["r1_5_open"] = "subway_trains/razbor_hod.wav" - self.SoundNames["rk_spin"] = "subway_trains/rk_3.wav" - self.SoundNames["rk_stop"] = "subway_trains/rk_4.wav" - self.SoundNames["switch_off"] = {"subway_trains/tumbler_1_off.wav","subway_trains/tumbler_2_off.wav","subway_trains/tumbler_3_off.wav"} - self.SoundNames["switch_on"] = {"subway_trains/tumbler_1_on.wav","subway_trains/tumbler_2_on.wav","subway_trains/tumbler_3_on.wav"} - self.SoundNames["av_on"] = { - "subway_trains/va21_2_1_on.wav", - "subway_trains/va21_2_2_on.wav", - } - self.SoundNames["av_off"] = { - "subway_trains/va21_2_1_off.wav", - "subway_trains/va21_2_2_off.wav", - } -end - -function ENT:InitializeSystems() - -- Электросистема 81-710 - self:LoadSystem("Electric","81_710RU1_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_117DM") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17B") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18B") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_70") - -- Контроллер резервного управления - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_37E") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_14X_Panels") - - -- Пневмосистема 81-710 - self:LoadSystem("Pneumatic","81_717_Pneumatic") - self.Pneumatic.ValveType = 2 - -- Панель управления 81-710 - self:LoadSystem("Panel","81_710RU1_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("PowerSupply","DIP_01K") - self:LoadSystem("DURA") - self:LoadSystem("ALS_ARS") - self:LoadSystem("Horn") - self:LoadSystem("Announcer") - self:LoadSystem("ASNP") - - self:LoadSystem("IGLA") - - self:LoadSystem("ASNP31","Relay","Switch") - self:LoadSystem("ASNP32","Relay","Switch") - - self:LoadSystem("Custom1","Relay","Switch") - self:LoadSystem("Custom2","Relay","Switch") - self:LoadSystem("Custom3","Relay","Switch") - self:LoadSystem("CustomC","Relay","Switch") - self:LoadSystem("CustomD","Relay","Switch") - self:LoadSystem("CustomE","Relay","Switch") - self:LoadSystem("CustomF","Relay","Switch") - self:LoadSystem("CustomG","Relay","Switch") - - -end diff --git a/lua/entities/_obsolete/gmod_track_arm_/cl_init.lua b/lua/entities/_obsolete/gmod_track_arm_/cl_init.lua deleted file mode 100644 index b682610..0000000 --- a/lua/entities/_obsolete/gmod_track_arm_/cl_init.lua +++ /dev/null @@ -1,700 +0,0 @@ -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} -ENT.ClientPropsInitialized = false - - -ENT.ButtonMap["ARM"] = { - pos = Vector(-4.9,9.1,50.3), - ang = Angle(0,-90-1,90), - width = 800, - height = 600, - scale = 0.02*1.2, - mouse = true -} -ENT.ClientProps["ARMPK"] = { - model = "models/cyber_metrostroi/pc_arm/pc_screen.mdl", - pos = Vector(-5,0,31.2), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMMonitor"] = { - model = "models/cyber_metrostroi/pc_arm/pc_body.mdl", - pos = Vector(-5,15,0), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMKeyboard"] = { - model = "models/cyber_metrostroi/pc_arm/pc_keyboard.mdl", - pos = Vector(-15,-2,31), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMMouse"] = { - model = "models/cyber_metrostroi/pc_arm/pc_mouse.mdl", - pos = Vector(-18,-20,32), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMBreen"] = { - model = "models/props_combine/breenglobe.mdl", - pos = Vector(-11,30,39.5), - ang = Angle(0,-180+45,0), -} - -function ENT:Initialize() - self.BaseClass.Initialize(self) - self.ARM = self:CreateRT("ARM",1024,1024) - for k,v in pairs(self.Types) do - for i,tex in pairs(v) do - if type(tex) == "table" and type(tex[1]) == "string" then - tex.mat = surface.GetTextureID(tex[1]) - end - end - end -end - -function ENT:CamMoved() - self:HandleMouse(false) - gui.EnableScreenClicker(self.CurrentCamera ~= 0) -end - -function ENT:Think() - self.BaseClass.Think(self) - if not self.RenderClientEnts or self.CreatingCSEnts then - return - end - - if not self.ARM then return end - --self.MouseX = 0 - --self.MouseY = 0 - self.MouseX = self:GetNW2Int("CursorX",0) - self.MouseY = self:GetNW2Int("CursorY",0) - render.PushRenderTarget(self.ARM,0,0,1024, 1024) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.OverrideAlphaWriteEnable(true, true) - surface.SetDrawColor(0,0,0) - surface.DrawRect(0,0,800,600) - self:ARMMonitor() - cam.End2D() - render.PopRenderTarget() -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - - -function ENT:DrawPost() - self.RTMaterial:SetTexture("$basetexture", self.ARM) - self:DrawOnPanel("ARM",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(512,512,1024,1024,0) - end) -end - - -local gray = Color(100,100,100) -local black = Color(0,0,0) -local white = Color(150,150,150) -local green = Color(0,50,0) - -local function GetTextures(segm,typ) - return segm[typ],segm.maintex or segm[typ] -end ---Get texture Width and Height -local function GetWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.w or dtex.w,tex.h or dtex.h -end ---Get real(original) texture Width and Height -local function GetRWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.rw or dtex.rw,tex.rh or dtex.rh -end ---Get X and Y adds -local function GetXYA(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end -local function drawSegment(w,h,u0,v0,u1,v1,segm,typ,align) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex,dtex = GetTextures(segm,typ) - if dtex.mat then - local sx,sy = GetXY(w,h) - local sw,sh = GetWH(segm,typ) - local sxa = tex.x or dtex.x or 0 - local xa,ya = GetXYA(segm,typ) - local rw,rh = GetRWH(segm,typ) - surface.SetDrawColor(tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) - end -end -local function drawElement(sx,sy,u0,v0,u1,v1,segm,typ,col) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex = segm[typ] - local dtex = segm.maintex or tex - --local sx,sy = 100+w*36,100+h*70 - local sw,sh = tex.w or dtex.w,tex.h or dtex.h - local sxa = tex.x or dtex.x or 0 - local xa,ya = tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 - local rw,rh = tex.rw or dtex.rw,tex.rh or dtex.rh - surface.SetDrawColor(col or tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0 ,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) -end - -local mouse = surface.GetTextureID("gui/info") - -local function createFont(name,font,size,weight) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = weight or 400, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) -end -createFont("Arial10","Arial",10,400) -createFont("Arial20","Arial",20,800) - -local colorConverter = { - r = Color(0,0,0), - y = Color(240,240,71), - g = Color(41,202,26), - b = Color(26,84,202), - w = Color(255,255,255), -} -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - -local function ARMFindNextSegm(station,csegm,alt,dir,deb) - if dir then - if alt and not csegm.segm.next_a then return end - if not alt and not csegm.segm.next_m then return end - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x <= csegm.x then continue end - local txa,tya = GetSegmPos(csegm,alt) - local tx,ty = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - - if not txa then continue end - --if tx then print(1,segm.x,segm.y,GetSegmPos2(csegm,alt),csegm.invertX,csegm.invertY) end - local sx,sy = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - --if not alt then print(2,x,y,sx,sy,tx,ty,txa,tya) end - if sx == tx and sy == ty then return segm,sx,sy end - if sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(segm,false) - --if sx and sx == tx and sy == ty then return segm,false end - --if deb then print(sx,x) end - if sx and sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(segm,true) - --if sx and sx == tx and sy == ty then return segm,false end - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm,sx,sy end - end - else - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x >= csegm.x then continue end - local txa,tya = GetSegmPos(segm,alt) - local tx,ty = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - - if not txa then continue end - - local sx,sy = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - if sx == tx and sy == ty then return segm,sx,sy end - if sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(csegm,false) - - if sx and sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(csegm,true) - - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm,sx,sy end - end - --[[ for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x >= csegm.x then continue end - local txa,tya = GetSegmPos(segm,alt) - local tx,ty = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - if not txa then continue end - --if tx then print(1,segm.x,segm.y,GetSegmPos2(csegm,alt),csegm.invertX,csegm.invertY) end - local sx,sy = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - --if not alt then print(2,x,y,sx,sy,tx,ty,txa,tya) end - if sx == tx and sy == ty then return segm end - if sx == txa and sy == tya then return segm end - sx,sy = GetSegmPos(csegm,false) - --if sx and sx == tx and sy == ty then return segm,false end - --if deb then print(sx,x) end - if sx and sx == txa and sy == tya then return segm end - sx,sy = GetSegmPos(csegm,true) - --if alt then print(3,x,y,sx,sy,tx,ty) end - --if sx and sx == tx and sy == ty then return segm,false end - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm end - end--]] - end -end - -local function ARMSetNextCompare(posX,posY,segm,nsegm) - local xp,yp = GetSegmPos(segm) - local x,y = GetSegmPos(nsegm) - if sx and posX == x and posY == y then - nsegm.prev = segm - return true - end - - sx,sy = GetSegmPos(nsegm,false) - if sx and posX == sx and posY == sy then - nsegm.next_m = segm - return true - end - if not nsegm.segm.next_a then return end - sx,sy = GetSegmPos(nsegm,true) - if x ~= xp and y ~= yp and sx and posX == sx and posY == sy then - nsegm.next_a = segm - if segm.id == 29 then - local x1,y1 = GetSegmPos(nsegm) - local x2,y2 = GetSegmPos(segm) - print(-2,x1,y1,x2,y2) - end - return true - end -end - -local function ARMSetNext(station) - for csegmid,csegm in ipairs(station) do - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - - local posX,posY = GetSegmPos(csegm) - if ARMSetNextCompare(posX,posY,csegm,segm) then - csegm.prev = segm - --break - end - local posOX,posOY = GetSegmPos(csegm,false) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_m = segm - --break - end - local posAЧ,posAY = GetSegmPos(segm) - if not csegm.segm.next_a or posX == posAX or posY == posAY then continue end - posOX,posOY = GetSegmPos(csegm,true) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_a = segm - --break - end - end - end -end -function ENT:ARMMonitor() - if self.FilterMag then - render.PopFilterMag() - render.PopFilterMin() - end - - render.PushFilterMag( TEXFILTER.POINT ) - render.PushFilterMin( TEXFILTER.POINT ) - self.FilterMag = true - surface.SetDrawColor(gray) - surface.DrawRect(0,0,800,600) - local station = self:GetNW2Int("ARM:Station",0) - --draw.SimpleText("АРМ ДЫЫСЦЫПЫ","Metrostroi_BUKPSpeed",400, 300,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if station > 0 and Metrostroi.ARMConfigGenerated and Metrostroi.ARMConfigGenerated[station] then - local armTable = Metrostroi.ARMConfigGenerated[station] - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"maintex") - ---[[ - local w,h = GetXY(segm.x+segm.width*u0,segm.y) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(w+5*u1-5*u0,h,w,h) - surface.DrawLine(w,h+5,w,h) - local w,h = GetSegmPos(segm,false) - surface.SetDrawColor(Color(255,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6,w,h) - local w,h = GetSegmPos(segm,true) - if w then - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6*v1+6*v0,w,h) - end--]] - end - local w,h = 0,0 - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if Metrostroi.GetARMInfo(station,id,"occup2") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_x") - end - if Metrostroi.GetARMInfo(station,id,"switch_m") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_m") - elseif Metrostroi.GetARMInfo(station,id,"switch_a") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_a") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_a") - elseif Metrostroi.GetARMInfo(station,id,"switch_na") then - if Metrostroi.GetARMInfo(station,id,"occup") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_an") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_mn") - else - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - end - if segm.signal1 then - local sig = segm.signal1 - local typ = self.Types["tl_"..sig.type] - - local x,y = 100+(segm.x+segm.width)*36,100+segm.y*70-(sig.top and -26 or 15) - local rw,rh = GetRWH(typ,"maintex") - local sx,sy = x-rw-2,y-rh-2 - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y-(sig.top and -7 or 15),Color(0,0,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_BOTTOM) - drawElement(sx,sy,0,0,1,1,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal1") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal1I") then - drawElement(sx+13*(sig.type-1),sy,0,0,1,1,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal1Y") then - drawElement(sx+13*(sig.type-2),sy,0,0,1,1,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx,sy,0,0,1,1,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - if segm.signal2 then - local sig = segm.signal2 - local typ = self.Types["tl_"..sig.type] - - local rw,rh = GetRWH(typ,"maintex") - local x,y = 100+(segm.x)*36+2,100+segm.y*70+(sig.top and -38 or 3) - local sx,sy = x-1,y+rh - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y+(sig.top and -2 or 20),Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_TOP) - drawElement(sx,sy,1,1,0,0,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal2") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal2I") then - drawElement(sx+rw-12-13*(sig.type-1),sy,1,1,0,0,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal2Y") then - drawElement(sx+rw-12-13*(sig.type-2),sy,1,1,0,0,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - end - for id,button in ipairs(armTable.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - local sw,sh = 15,25 - local xa,ya = 3,12 - if button.type=="r" then - sw,sh = 15,25 - xa,ya = 3,12 - end - local x,y = sx+xa,sy+ya - if Metrostroi.GetARMInfo(station,1000+id,"buttonSelected") then - surface.SetDrawColor(Color(80,80,180)) - elseif Metrostroi.GetARMInfo(station,1000+id,"buttonPressable") then - surface.SetDrawColor(Color(220,220,220)) - else - surface.SetDrawColor(Color(120,120,120)) - end - surface.DrawRect(x,y,sw,sh) - Metrostroi.DrawLine(x,y,x,y+sh,Color(240,240,240),2) - Metrostroi.DrawLine(x-1,y,x+sw,y,Color(240,240,240),2) - Metrostroi.DrawLine(x+sw,y,x+sw,y+sh,Color(60,60,60),2) - Metrostroi.DrawLine(x,y+sh,x+sw+1,y+sh,Color(60,60,60),2) - end - end - for i,v in ipairs(Metrostroi.ARMConfigGenerated) do - if i == station then - surface.SetDrawColor(Color(110,140,170)) - elseif math.InRangeXYR(self.MouseX,self.MouseY,20+(i-1)*30,20,30,20) then - surface.SetDrawColor(Color(80,110,140)) - else - surface.SetDrawColor(Color(100,130,160)) - end - - surface.DrawRect(20+(i-1)*31,20,30,20) - draw.SimpleText(v.shortname or v.id,"Metrostroi_Arial20",35+(i-1)*31, 30,Color(40,60,170),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - --if self.CurrentCamera == 0 then - surface.SetDrawColor(255,255,255) - surface.SetTexture(mouse) - surface.DrawTexturedRectRotated(self.MouseX,self.MouseY,8,8,0) - --end - surface.SetDrawColor(0,0,0,200) - surface.DrawRect(0,0,800,600) - render.PopFilterMag() - render.PopFilterMin() - self.FilterMag = false ---[=[ - local iter = 0 - local function ARMFindSegmSignals(station,segm,dir,signals,checked,restbl,trace,NextAlt) - if not restbl then restbl = {} end - if not checked then checked = {} end - if not trace then trace = {} end - if checked[segm] then return end - checked[segm] = true - local segmIndex = table.insert(trace,{segm.id}) - --trace[segm] = true - - iter = iter + 1 - if iter > 10000 then ARMGenError(Format("Routes generation error. Max iter reached!"),true) return false end - local segmt = segm.segm - local segmM,segmA = segmt.next_m,segmt.next_a - if not segmM then return end - - local NextM = ARMFindNextSegm(station,segm,not NextAlt,dir) - local NextA = ARMFindNextSegm(station,segm,NextAlt,dir) - - - local xp,yp = GetXY(segm.x,segm.y) - if NextA then - local trace= table.Copy(trace) - trace[segmIndex][2] = true - local xn,yn = GetXY(NextA.x,NextA.y) - local xa1,ya1 = GetSegmPos(segm,true) - local xa2,ya2 = GetSegmPos(NextA,true) - --trace[segmIndex][2] = true - local nxt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - --MsgN(Format("->A\n",segm.x,segm.y)) - local signal = dir and NextA.signal2 or NextA.signal1 - --print("A",segm.x,segm.y,NextA.x,NextA.y,signal and signal.name,dir) - if signal and table.HasValue(signals,signal.name) then--and not segmOnA.invertX then - table.insert(restbl,{signal,table.Copy(trace)}) - end - ARMFindSegmSignals(station,NextA,dir,signals,checked,restbl,trace,true) - end - if NextM then - local xn,yn = GetXY(NextM.x,NextM.y) - local xa1,ya1 = GetSegmPos(segm,true) - local xa2,ya2 = GetSegmPos(NextM,true) - local nxt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - local signal = dir and NextM.signal2 or NextM.signal1 - --print("M",segm.x,segm.y,NextM.x,NextM.y,signal and signal.name,dir) - if signal and table.HasValue(signals,signal.name) then--and not segmOnA.invertX then - table.insert(restbl,{signal,table.Copy(trace)}) - end - ARMFindSegmSignals(station,NextM,dir,signals,checked,restbl,table.Copy(trace)) - end - return restbl - end - local station = Metrostroi.ARMConfigGenerated[station] - for _,button in pairs(station.buttons,station.routes["PT64"]) do - if button.type == "r" and station.routes[button.signal] then - --button.pressable = true - local results = ARMFindSegmSignals(station,button.segm,false,station.routes[button.signal]) - if #results == 0 then - results = ARMFindSegmSignals(station,button.segm,true,station.routes[button.signal]) - end - for k,v in pairs(results) do - local i = 0 - for k,v in pairs(v[2]) do - print(v[2]) - end - end - --print(results[1][1].name,results[1][1].segm)--]] - --button.routes = results - end - end--]=] ---[=[ - local x = 0 - local founded = true - local stat = Metrostroi.ARMConfigGenerated[station] - local maxd = 3 - local x = 26-- or math.ceil((CurTime()%10)/10*#stat) - local dir = true-- or CurTime()%20 > 10 - local function findt(station,segm,dir,i,depth,px,py ) - depth = depth or 0 - i = i or 0 - local segmt = segm.segm - local segmM,segmA = segmt.next_m,segmt.next_a - local NextM,NextMX,NextMY = ARMFindNextSegm(station,segm,false,dir) - local NextA,NextAX,NextAY = ARMFindNextSegm(station,segm,true,dir) - local xp,yp = GetXY(segm.x,segm.y) - draw.SimpleText(i,"Metrostroi_Arial20",xp,yp,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.1f:%.1f",segm.x,segm.y),"Metrostroi_Arial10",xp,yp-20,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - local xa1,ya1 = GetSegmPos(segm,true) - if i==4 then print(xa1,ya1,px,py,xa1 == px and ya1 == py) end - local alt = px and py ~= yp and xa1 == px and ya1 == py - if NextA and depth+1 < maxd then - --if i==3 then print(1) end - local xn,yn = GetXY(NextA.x,NextA.y) - local xa2,ya2 = GetSegmPos(NextA,true) - local nalt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - if nalt or alt then surface.SetDrawColor(Color(255,0,0)) - else surface.SetDrawColor(Color(0,255,0)) end - surface.DrawLine(px or xp,py or yp,NextAX or xn,NextAY or yn) - if findt(station,NextA,dir,i+1,depth+1,NextAX,NextAY) then return end - --return true - --if i==5 then print("RES",segm.x,segm.y,NextA.x,NextA.y) end - end - if NextM and depth < maxd then - local xn,yn = GetXY(NextM.x,NextM.y) - local xa2,ya2 = GetSegmPos(NextM,true) - local nalt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - if alt then surface.SetDrawColor(Color(255,255,0)) - else surface.SetDrawColor(Color(0,255,0)) end - surface.DrawLine(px or xp,py or yp,NextMX or xn,NextMY or yn) - if findt(station,NextM,dir,i+1,depth,NextMX,NextMY) then return end - end - end - --findt(stat,stat[x],dir)--]=] - ---[==[ - if Metrostroi.ARMConfigGenerated[station] then - ARMSetNext(Metrostroi.ARMConfigGenerated[station]) - --[=[ for id,segm in ipairs(Metrostroi.ARMConfigGenerated[station]) do - local ws,hs = GetSegmPos(segm) - draw.SimpleText(segm.id,"Metrostroi_Arial20",ws,hs-15--[[ *(math.random()*5)--]] ,Color(0,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if segm.next_m then - local w,h = GetSegmPos(segm.next_m) - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(ws,hs,w,h) - surface.DrawLine(ws-6,hs-6,ws+6,hs+6) - surface.DrawLine(ws-6,hs+6,ws+6,hs-6) - surface.DrawLine(w-6,h-2,w+6,h+2) - surface.DrawLine(w-6,h+2,w+6,h-2) - else - local w,h = GetSegmPos(segm) - w = w+segm.width*36/2 - surface.SetDrawColor(Color(255,0,255)) - surface.DrawLine(w-4,h-4,w+4,h+4) - surface.DrawLine(w-4,h+4,w+4,h-4) - continue - end - if segm.next_a then - local w,h = GetSegmPos(segm.next_a) - draw.SimpleText(segm.id,"Metrostroi_Arial20",w,h+15,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(ws,hs,w,h) - surface.DrawLine(ws-7,hs-4,ws+7,hs+4) - surface.DrawLine(ws-7,hs+4,ws+7,hs-4) - surface.DrawLine(w-7,h-2,w+7,h+2) - surface.DrawLine(w-7,h+2,w+7,h-2) - end - end--]=] - local x = 0 - local founded = true - local stat = Metrostroi.ARMConfigGenerated[station] - local maxd = 2 - local x = 21-- or math.ceil((CurTime()%10)/10*#stat) - local dir = true-- or CurTime()%20 > 10 - local function findt(station,segm,dir,i,depth,last ) - depth = depth or 0 - i = i or 0 - local segmP = segm.prev - local segmM,segmA = segm.next_m,segm.next_a - local x,y = GetXY(segm.x,segm.y) - draw.SimpleText(i,"Metrostroi_Arial20",x,y,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.1f:%.1f",segm.x,segm.y),"Metrostroi_Arial10",x,y-20,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if i==7 and last.next_a then - draw.SimpleText(i,"Metrostroi_Arial20",x,y,Color(0,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - local x,y = GetXY(last.x,last.y) - draw.SimpleText(i-1,"Metrostroi_Arial20",x,y,Color(255,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --print(last.next_a,segm) - end - - if segmA and mainM and depth+1 < maxd then - --if i==3 then print(1) end - local xn,yn = GetXY(segmA.x,segmA.y) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(x,y,xn,yn) - if findt(station,segmA,dir,i+1,depth+1,segm) then return end - return true - --if i==5 then print("RES",segm.x,segm.y,NextA.x,NextA.y) end - end - if segmM and mainM and depth < maxd then - local xn,yn = GetXY(segmM.x,segmM.y) - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(x,y,xn,yn) - if findt(station,segmM,dir,i+1,depth,segm) then return end - end - if segmP and mainP and depth < maxd then - local xn,yn = GetXY(segmP.x,segmP.y) - local alt = last and segm.next_a == last or segmP.next_a == segm - if alt then surface.SetDrawColor(Color(255,255,0)) - else surface.SetDrawColor(Color(0,255,255)) end - surface.DrawLine(x,y,xn,yn) - if findt(station,segmP,dir,i+1,depth,segm) then return end - end - end - findt(stat,stat[x],dir) - end--]==] - --findt(stat,stat[6],false) -end -Metrostroi.GenerateClientProps() \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_track_arm_/init.lua b/lua/entities/_obsolete/gmod_track_arm_/init.lua deleted file mode 100644 index 70a0066..0000000 --- a/lua/entities/_obsolete/gmod_track_arm_/init.lua +++ /dev/null @@ -1,169 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -function ENT:Initialize() - self:SetModel("models/props_combine/breendesk.mdl") - self.BaseClass.Initialize(self) - self.DriverSeat = self:CreateSeat("driver", Vector(-40, 0, 0), Angle(0, 0, 0), "models//nova/chair_office02.mdl") - self.CursorX = 0 - self.CursorY = 0 - self:CursorMove(0, 0) - self.Station = 0 -end - -hook.Add("AcceptInput", "metrostroi_arm_trigger_check", function(ent, inputName, activator, called, data) - if inputName == "ARMStartTouch" then - called.ARMTriggered = true - print(called, called:GetName(), activator, "Enable") - end - - if inputName == "ARMEndTouch" then - called.ARMTriggered = false - print(called, called:GetName(), activator, "Disable") - end -end) - - -local function GetOccupation(tbl) - for sID,signame in ipairs(tbl) do - if signame[1] == "@" then - local trigger = Metrostroi.ARMGet(signame:sub(2,-1), "trigger") - if not trigger or trigger.ARMTriggered then - return true - end - elseif signame ~= "" then - local signal = Metrostroi.ARMGet(signame, "signal") - if not signal or signal.OccupiedBy and signal.OccupiedBy ~= signal then - return true - end - end - end - return false -end - -function ENT:Think() - local armTbl = Metrostroi.ARMTable - local armConf = Metrostroi.ARMConfigGenerated - local station = armConf[self.Station] - local armTblStation = armTbl[self.Station] - if not station then return end - if not armTblStation or (IsValid(armTblStation.Controller) and armTblStation.Controller ~= self) then return end - armTblStation.Controller = self - for buttonID,button in ipairs(station.buttons) do - --print(button,button.selected) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonPressable",button.pressable) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonSelected",button.selected) - end - for segmID, segm in ipairs(station) do - if type(segm) == "table" then - if segm.occup then - Metrostroi.ARMSync(self.Station, segmID, "occup", GetOccupation(segm.occup) or segm.occupAlt and GetOccupation(segm.occupAlt)) - end - - if segm.occup2 then - Metrostroi.ARMSync(self.Station, segmID, "occup2", GetOccupation(segm.occup2)) - end - Metrostroi.ARMSync(self.Station, segmID, "route", segm.route and true) - - - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - local main = switch and switch.MainTrack and not switch.AlternateTrack - local alt = switch and not switch.MainTrack and switch.AlternateTrack - Metrostroi.ARMSync(self.Station, segmID, "switch_m", main) - Metrostroi.ARMSync(self.Station, segmID, "switch_a", alt) - Metrostroi.ARMSync(self.Station, segmID, "switch_na", not main and not alt) - end - if segm.signal1 then - local signal = Metrostroi.ARMGet(segm.signal1.name, "signal") - local colors = signal and signal.Colors - if segm.signal1.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal1I", signal and signal.InvationSignal) end - if segm.signal1.type > 2 then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal1Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal1", colors) - end - if segm.signal2 then - local signal = Metrostroi.ARMGet(segm.signal2.name, "signal") - local colors = signal and signal.Colors - if segm.signal2.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal2I", signal and signal.InvationSignal) end - if segm.signal2.type > 2 then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal2Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal2", colors) - end - end - end - - self:NextThink(CurTime() + 0.5) - - return true -end - -function ENT:OnRemove() -end - -function ENT:CursorMove(sys, dX, dY) - self.CursorX = sys == "" and math.Clamp(self.CursorX + dX * 200, 0, 800) or dX - self.CursorY = sys == "" and math.Clamp(self.CursorY + dY * 200, 0, 600) or dY - self:SetNW2Int("CursorX", math.floor(self.CursorX)) - self:SetNW2Int("CursorY", math.floor(self.CursorY)) -end - -function ENT:PanelTouch(state, x, y) - for i, v in ipairs(Metrostroi.ARMConfig) do - if math.InRangeXYR(self.CursorX, self.CursorY, 20 + (i - 1) * 30, 20, 30, 20) then - self.Station = i - self:SetNW2Int("ARM:Station", i) - end - end - if not state then return end - local RouteChoosing = self.RouteChoosing - self.RouteChoosing = nil - if RouteChoosing then - print("DISABLE") - for k,v in pairs(RouteChoosing.routes) do - if v[1].button then - v[1].button.selected = false - elseif v[1].isbutton then - v[1].selected = false - end - end - end - local confGenStation = Metrostroi.ARMConfigGenerated[self.Station] - for k,button in pairs(confGenStation.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - if button.type == "r" then - local sw,sh = 15,25 - local xa,ya = 3,12 - local x,y = sx+xa,sy+ya - if RouteChoosing then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - for k,v in ipairs(RouteChoosing.routes) do - if v[1].button and button == v[1].button or v[1].isbutton and button==v[1] then - Metrostroi.CentralisationPrepareRoute(self.Station,v) - end - end - end - elseif not self.RouteChoosing and button.pressable then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - self.RouteChoosing = button - for k,v in ipairs(button.routes) do - print(v[1],v[1].name,v[1].button) - if v[1].button then - v[1].button.selected = true - elseif v[1].isbutton then - v[1].selected = true - print(2) - end - end - end - end - end - end -end \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_track_arm_/shared.lua b/lua/entities/_obsolete/gmod_track_arm_/shared.lua deleted file mode 100644 index 604429a..0000000 --- a/lua/entities/_obsolete/gmod_track_arm_/shared.lua +++ /dev/null @@ -1,656 +0,0 @@ -ENT.Type = "anim" - ---Inherit subway base for some need functions -ENT.Base = "gmod_subway_base" -ENT.NoTrain = true - -ENT.PrintNameTranslated = "Entities.ARM" -ENT.Category = "Metrostroi" - -ENT.Spawnable = false -ENT.AdminSpawnable = true - -ENT.Cameras = { - {Vector(-18+3,0,43+2),Angle(0,0,0),"ARM.Monitor1",true}, -} -ENT.Types = { - --Main segments - [0.25]={ - maintex = {"metrostroi_arm/sec025",w=8,h=8,rw=7,rh=8,}, - occup_m = {"metrostroi_arm/sec025_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec025_m",col=Color(39,103,63)}, - width = 0.25, - next_m = {x=0.25,y=0} - }, - [0.5]={ - maintex = {"metrostroi_arm/sec05",w=16,h=8,rw=16,rh=8,}, - occup_m = {"metrostroi_arm/sec05_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec05_m",col=Color(39,103,63)}, - width = 0.5, - next_m = {x=0.5,y=0} - }, - [1]={ - maintex = {"metrostroi_arm/sec1",w=64,h=8,rw=34,rh=8,}, - occup_m = {"metrostroi_arm/sec1_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec1_m",col=Color(39,103,63)}, - width = 1, - next_m = {x=1,y=0} - }, - [2]={ - maintex = {"metrostroi_arm/sec2",w=128,h=8,rw=70,rh=8,}, - occup_m = {"metrostroi_arm/sec2_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec2_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=0} - }, - [3]={ - maintex = {"metrostroi_arm/sec3",w=128,h=8,rw=106,rh=8,}, - occup_m = {"metrostroi_arm/sec3_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec3_m",col=Color(39,103,63)}, - width = 3, - next_m = {x=3,y=0} - }, - [4]={ - maintex = {"metrostroi_arm/sec4",w=256,h=8,rw=142,rh=8,}, - occup_m = {"metrostroi_arm/sec4_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec4_m",col=Color(39,103,63)}, - width = 4, - next_m = {x=4,y=0} - }, - [5]={ - maintex = {"metrostroi_arm/sec5",w=256,h=8,rw=178,rh=8,}, - occup_m = {"metrostroi_arm/sec5_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec5_m",col=Color(39,103,63)}, - width = 5, - next_m = {x=5,y=0} - }, - --Switches and helpers - sw = { - maintex = {"metrostroi_arm/switch",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/switch_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/switch_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/switch_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/switch_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/switch_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/switch_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/switch_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/switch_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - ["2sw"] = { - maintex = {"metrostroi_arm/2-switch_half",w=128,h=256,rw=70,rh=143,}, - occup_m = {"metrostroi_arm/2-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch_half_as",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch_half_ms",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - }, - ["2swm"] = { - maintex = {"metrostroi_arm/2-switch-middle_half",w=128,h=128,rw=70,rh=73,}, - occup_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch-middle_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch-middle_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=1.5,y=1}, - }, - ["4sw"] = { - maintex = {"metrostroi_arm/4-switch_quarter",w=128,h=256,rw=73,rh=143,x=-3,}, - occup_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(39,103,63)}, - occup_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(255,255,255)}, - route_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/4-switch_quarter_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - acc_x = ">", - acc_y = "!", - }, - ["4sws"] = { - maintex = {"metrostroi_arm/4-switch_quarter_small",w=64,h=128,rw=53,rh=78,x=-1,}, - occup_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(255,255,255),x=-1,}, - route_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(39,103,63),x=-1,}, - occup_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(255,255,255),x=-1,}, - route_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(39,103,63),x=-1,}, - switch_m = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(200,50,50)}, - width = 1.5, - next_m = {x=1.5,y=0}, - next_a = {x=1.5,y=1}, - acc_x = ">", - acc_y = "!", - }, - ofd = { - maintex = {"metrostroi_arm/offset_down",w=64,h=256,rw=57,rh=143,}, - occup_m = {"metrostroi_arm/offset_down_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offset_down_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=2}, - }, - ofds = { - maintex = {"metrostroi_arm/offsed_down_small",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/offsed_down_small_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offsed_down_small_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=1}, - }, - ysw = { - maintex = {"metrostroi_arm/Y-switch_half",w=128,h=128,rw=70,rh=108,}, - occup_m = {"metrostroi_arm/Y-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/Y-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/Y-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/Y-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/Y-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/Y-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/Y-switch_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/Y-switch_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - --Signals - tl_1 = { - maintex = {"metrostroi_arm/tl_1",w=32,h=16,rw=21,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_2 = { - maintex = {"metrostroi_arm/tl_2",w=64,h=16,rw=34,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_3 = { - maintex = {"metrostroi_arm/tl_3",w=64,h=16,rw=47,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, -} -if CLIENT then - for i,segm in pairs(ENT.Types) do - for k,tex in pairs(segm) do - if type(tex) ~= "table" or type(tex[1]) ~= "string" then continue end - tex.mat = surface.GetTextureID(tex[1]) - end - segm.id = i - end -end - --------------- --- Syntax of table --- { --- station = "ID,abbreviation,full name" --- First line of segments --- {"segment type:occupation checkers,...,occupation checkers:lights:...:lights"}, --- Second line of segments --- {x=x indent,skip=y indent(skips y segments vertically),"segment type:occupation checkers main,...,occupation checkers main:occupation checkers alt,...,occupation checkers alt:lights:...:lights"}, --- } --- segment type can have > or ! on start, when we want mirror it vertically or horisontally --- Occupation checkers can be triggers(have @ in start of trigger name) or signals --- Lights can be empty, if we want take light name from occupation checkers --- Lights can have ! when stay in right direction or !! when stay in opposite direction --- Lights can have > when we want switch light location from bottom to top --- Examples ---{ --- station = "001,ST,Station name", --- { --- {"1:L1:!","1:L3:!","sw:@sw1trigger:@sw3trigger"} --- {x=1,"1:L2",">sw:@sw2trigger:@sw3rigger"}, --- } ---} --------------- -Metrostroi.ARMConfig = { - { - station = "451,ВБ,Уоллеса брина", - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","sw:1","3:1","3:1"}, - {x=7,"0.5:1","4sws:1",">4sws:1","1:1","1:1"},{skip=1}, - {x=7,"0.5:1","!4sws:1",">!4sws:1","1:1","1:1"}, - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","!sw:1","3:1","3:1"}, - },{ - station="915,РЧ,Речная", - {x=3.5,"0.5:RX22","1:RX22","1:RX20","0.5:RX98","4sw:::RX1:0",">4sw:::RX3:","1","2","2","1","1"},{skip=3}, - {"1:201","0.5:203","0.5:205","0.5:207","0.5:209","0.5:211","0.5:213","1:215","1:217","0.5:219","!4sw:::RX2::!!2RX95",">!4sw:::RX4:","1","2","2","1","1"}, - },{ - station="110,МД,Международная", - {"1:19:!1","1:17:!1","1:15:!1","1:13:!1","3:11:!>1","sw:@wt_md_s1_1,@wt_md_s1_2:@wt_md_s1_3:MD1:!!>2D:!>2G","5:@wt_md_t1"}, - {x=9,"4sws:@wt_md_s3::MD3",">4sws:@wt_md_s5::MD5:!2MD1","2:@wt_md_t3"},{skip=1}, - {x=9,"!4sws:@wt_md_s4::MD4",">!4sws:@wt_md_s6::MD6:!>2MD2","2:@wt_md_t4"}, - {"1:MD16:!!2","1:MD14:!!2","1:MD12:!!2","1:MD10:!!2:!1 OP","1:MD8:!!2","1:MD8A","1:MD8B","!sw:@wt_md_s2_1,@wt_md_s2_2:@wt_md_s2_3:MD2:!!2MD6:!2E","5:@wt_md_t2"}, - buttons = { - {type="r",y=4-0.6 ,x=4, signal=" OP"}, - {type="r",y=4 ,x=6+0.4, signal="MD6"}, - {type="r",y=4-0.6 ,x=9, signal="E"}, - {type="r",y=3 ,x=14, signal="4I",target={12,3}}, - {type="r",y=1-0.6 ,x=14, signal="3I",target={12,1}}, - {type="r",y=3 ,x=12, signal="MD2"}, - {type="r",y=1-0.6 ,x=12, signal="MD1"}, - --{type="r",y=0-0.6 ,x=4, signal="13"}, - {type="r",y=0-0.6 ,x=6+0.4, signal="D",target={4,0}}, - {type="r",y=0 ,x=9, signal="G"}, - }, - routes = { - MD6={"4I","3I"}, - E={" OP"}, - MD2={" OP","D"}, - MD1={" OP","13"}, - D={"4I","3I"}, - G={"13"}, - } - },{ - station="112,ПТ,Политехническая", - {x=1,"1:PT2TB","2:PT2TA","2:PT2T:!!2PT2","2:PT4SA:!!2PT4",">2swm:@wt_pt_s4_1,@wt_pt_s4_2,@wt_pt_s4_3::PT4:!3PT968M:!!2G ","1:PT966A","2:PT966:!>2","sw:@wt_pt_s6_2,@wt_pt_s6_3::PT6:!>2PT964:!!>3A","1:962"}, - {x=15,"1:PT6SS","1:963"}, - {x=1,"1:77:!1","1:75:!1","1:73:!1","1:71:!>1",">2swm:@wt_pt_s1_1::PT1:!!>2B","!2swm:@wt_pt_s3_1:@wt_pt_s3_2:PT3:!>2PT69","1:PT67M:!2","1:PT65B","1:PT65A","1:PT65:!2","1:PT63:!2:!!1 OP ","1:PT61:!2","1:PT59:!2","1:PT57:!2"},{skip=1}, - {"1:PT70:!!2:!1 OP2 ","1:PT68:!!2","2:@wt_pt_s2_3:!!2PT66","!2swm:@wt_pt_s2_1:@wt_pt_s2_2:PT2:!!3PT64","2","2:62:!!1","1:60:!!1","2:60A","1:58M:!!1","1:56:!!1","1:54:!!1","1: 52:!!1"}, - {}, - labels = { - - }, - buttons = { - {type="r",y=0-0.6 ,x=1, signal="3T",target={1,0},flip=true}, - {type="r",y=0 ,x=3+0.4,signal="PT2",target={1,0},flip=true}, - - {type="r",y=4-0.6 ,x=1, signal=" OP2 "}, - {type="r",y=4 ,x=-1+0.4, signal="PT70"}, - {type="r",y=4 ,x=3+0.4, signal="2P",target={6,4}}, - --{type="r",y=4 ,x=7+0.4, signal="62"}, - {type="r",y=2 ,x=5, signal="71"}, - {type="r",y=2-0.6 ,x=4+0.4, signal="B",target={5,2}}, - {type="r",y=2-0.6 ,x=17, signal="PT57"}, - {type="r",y=2-0.6 ,x=10, signal="PT67M"}, - {type="r",y=2 ,x=12+0.4,signal=" OP "}, - {type="r",y=0-0.6 ,x=10, signal="PT968M",flip=true}, - {type="r",y=0 ,x=15, signal="PT964",flip=true}, - {type="r",y=1-0.6 ,x=15, signal="4O",target={15,1},flip=true}, - {type="r",y=0-0.6 ,x=12+0.4,signal="A",flip=true}, - }, - routes = { - PT2 = {"A"}, - PT70 = {" OP ","A","2P"}, - --PT64 = {" OP ","A","PT64"}, - B = {" OP ","A"}, - PT57 = {"PT67M"}, - PT964 = {"PT968M"}, - PT67M = {"71"," OP2 "}, - PT968M = {"3T","71"," OP2 "}, - A={"4O"} - } - },{ - station="115,ОК,Октябрьская", - {"1","1","1","1","3","sw:::OK1","1"}, - {x=9,"4sws:::OK3",">4sws:::OK5","1"},{skip=1}, - {x=9,"!4sws:::OK4",">!4sws:::OK6","1"}, - {"1","1","1","1","3","!sw:::OK2","5"}, - } -} - -print("MetrostroiARM:Generating ARM table...") -local errors,warnings = 0,0 -local function ARMGenError(text,err) - MsgC(Color(255,err and 0 or 255,0),"MetrostroiARM:"..text.."\n") - ErrorNoHalt() - if err then errors = errors + 1 else warnings = warnings + 1 end -end - -local function ParseARMTable(text,station,line,segm) - local resultTbl = {} - - local tbl = string.Explode(":",text) - - local typ = tbl[1] - if typ:find("^[>!]") then - resultTbl.invertX = typ:find(">") - resultTbl.invertY = typ:find("!") - typ = typ:gsub("^[>!]+","") - end - local segmTyp = ENT.Types[tonumber(typ) or typ] - if not segmTyp then return {error = 1,type = tbl[1]} end - table.remove(tbl,1) - - for i,str in ipairs(tbl) do - if str:find(",") then - tbl[i] = string.Explode(",",str) - end - if str:sub(1,2) == "!!" then - resultTbl.signal2 = str:sub(3,-1) - elseif str[1] == "!" then - resultTbl.signal1 = str:sub(2,-1) - end - end - resultTbl.occup = type(tbl[1]) == "table" and tbl[1] or {tbl[1]} - if segmTyp.occup_a then - resultTbl.occupAlt = type(tbl[2]) == "table" and tbl[2] or {tbl[2]} - resultTbl.switch = tbl[3] - if segmTyp.occup_x then - resultTbl.occup2 = type(tbl[4]) == "table" and tbl[4] or {tbl[4]} - end - end - - if resultTbl.signal1 then - local signal = resultTbl.signal1:gsub("^[>]+","") - local top = resultTbl.signal1:find("^>") - - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal1 = {name=name,type=typ or 1,top = top,segm=resultTbl} - end - if resultTbl.signal2 then - local signal = resultTbl.signal2:gsub("^[>]+","") - local top = resultTbl.signal2:find("^>") - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal2 = {name=name,type=typ or 1,top = top,segm=resultTbl} - end - resultTbl.type = typ - resultTbl.width = segmTyp.width or 1 - resultTbl.segm = segmTyp - return resultTbl -end - - -Metrostroi.ARMConfigGenerated = {} -local id = 0 -for i,station in ipairs(Metrostroi.ARMConfig) do - if not Metrostroi.ARMConfigGenerated[i] then Metrostroi.ARMConfigGenerated[i] = {} end - local genStation = Metrostroi.ARMConfigGenerated[i] - local y = 0 - - MsgC(Color(0, 222, 255),"MetrostroiARM:Solving station ",i,"\n") - if #station == 0 then ARMGenError(Format("Parser warning. Empty station %d! Skipping...",i),false) continue end - if not station.station then ARMGenError(Format("Parser error. Can't find station name in station %d! Skipping...",i),true) continue end - - local stationTbl = string.Explode(",",station.station) - if not stationTbl or #stationTbl < 3 or not tonumber(stationTbl[1]) then ARMGenError(Format("Parser error. Malformed station data in station %d! Skipping...",i),true) continue end - - genStation.id = stationTbl[1] - genStation.shortname = stationTbl[2] - genStation.name = stationTbl[3] - genStation.buttons = {} - genStation.routes = station.routes or {} - for lineID,line in ipairs(station) do - local x = line.x or 0 - for segmID,segm in ipairs(line) do - if type(segm) ~= "string" then - ARMGenError(Format("Parser error on station %d line %d segm %d, excepted string,got %s. Skipping segment...",i,lineID,segmID,type(segm)),true) - continue - end - local segmTbl= ParseARMTable(segm,i,lineID,segmID) - if segmTbl.error then - ARMGenError(Format("Parser warning. Skipping station %d line %d segm %d segment, type error(type '%s' not found)",i,lineID,segmID,segmTbl.type),false) - continue - end - segmTbl.x = x - segmTbl.y = y - segmTbl.id = table.insert(genStation,segmTbl) - x = x + (segmTbl.width or 1) - end - y = y + (line.skip or 1) - end - if station.buttons then - for _,button in pairs(station.buttons) do - button.pressable = false - button.selected = false - button.isbutton = true - if button.type == "r" then - button.segm = ENT.Types.button_normal - for k,v in ipairs(genStation) do - if v.signal1 and v.signal1.name == button.signal then - button.segm = v - v.signal1.button = button - break - end - if v.signal2 and v.signal2.name == button.signal then - button.segm = v - v.signal2.button = button - break - end - if button.target and button.target[1] == v.x and button.target[2] == v.y then - button.segm = v - v.button = button - if v.button then - v.button = nil - v.buttons = {v.button,button} - end - break - end - end - end - table.insert(genStation.buttons,button) - end - end -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end - -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - - - -local function ARMSetNextCompare(posX,posY,segm,nsegm) - local xp,yp = GetSegmPos(segm) - local x,y = GetSegmPos(nsegm) - if sx and posX == x and posY == y then - nsegm.prev = segm - return true - end - - sx,sy = GetSegmPos(nsegm,false) - if sx and posX == sx and posY == sy then - nsegm.next_m = segm - return true - end - if not nsegm.segm.next_a then return end - sx,sy = GetSegmPos(nsegm,true) - if x ~= xp and y ~= yp and sx and posX == sx and posY == sy then - nsegm.next_a = segm - if segm.id == 29 then - local x1,y1 = GetSegmPos(nsegm) - local x2,y2 = GetSegmPos(segm) - print(-2,x1,y1,x2,y2) - end - return true - end -end - -local function ARMSetNext(station) - for csegmid,csegm in ipairs(station) do - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - - local posX,posY = GetSegmPos(csegm) - if ARMSetNextCompare(posX,posY,csegm,segm) then - csegm.prev = segm - --break - end - local posOX,posOY = GetSegmPos(csegm,false) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_m = segm - --break - end - local posAX,posAY = GetSegmPos(segm) - if not csegm.segm.next_a or posX == posAX or posY == posAY then continue end - posOX,posOY = GetSegmPos(csegm,true) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_a = segm - --break - end - end - end -end -for i,st in ipairs(Metrostroi.ARMConfigGenerated) do ARMSetNext(st) end - - -local function tcopy(from) - local t = {} - for k,v in pairs(from) do - t[k] = v - end - return t -end -local iter = 1 -local function ARMFindSegmSignals(station,segm,dir,signals,last,checked,restbl,trace) - if not restbl then restbl = {} end - if not checked then checked = {} end - if not trace then trace = {} end - if checked[segm] then return end - checked[segm] = true - local segmIndex = table.insert(trace,{segm.id}) - --trace[segm] = true - - iter = iter + 1 - if iter > 10000 then ARMGenError(Format("Routes generation error. Max iter reached!"),true) return false end - local segmM,segmA = segm.next_m,segm.next_a - local segmP = segm.prev - - - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if segmA and mainM then - local trace= table.Copy(trace) - - trace[segmIndex][2] = true - local signal = dir and segmA.signal2 or segmA.signal1 - local button = segmA.button - - if signal and table.HasValue(signals,signal.name) then - table.insert(restbl,{signal,table.Copy(trace)}) - elseif button and table.HasValue(signals,button.signal) then - table.insert(trace,{segmA.id}) - table.insert(restbl,{button,table.Copy(trace)}) - end - ARMFindSegmSignals(station,segmA,dir,signals,segm,checked,restbl,trace) - end - if segmM and mainM then - local signal = dir and segmM.signal2 or segmM.signal1 - local button = segmM.button - if signal and table.HasValue(signals,signal.name) then - table.insert(restbl,{signal,table.Copy(trace)}) - elseif button and table.HasValue(signals,button.signal) then - table.insert(trace,{segmM.id}) - table.insert(restbl,{button,table.Copy(trace)}) - end - ARMFindSegmSignals(station,segmM,dir,signals,segm,checked,restbl,trace) - end - if segmP and mainP then - trace[segmIndex][2] = last and segm.next_a == last or nil-- or segmP.next_a == segm or nil - local signal = dir and segmP.signal2 or segmP.signal1 - local button = segmP.button - if signal and table.HasValue(signals,signal.name) then - table.insert(restbl,{signal,table.Copy(trace)}) - elseif button and table.HasValue(signals,button.signal) then - table.insert(trace,{segmP.id}) - table.insert(restbl,{button,table.Copy(trace)}) - end - ARMFindSegmSignals(station,segmP,dir,signals,segm,checked,restbl,trace) - end - return restbl -end - -for i,station in ipairs(Metrostroi.ARMConfigGenerated) do - print("STATION",i) - for _,button in pairs(station.buttons) do - if button.type == "r" and station.routes[button.signal] then - print(button.signal,button.segm) - button.pressable = true - local results = ARMFindSegmSignals(station,button.segm,false,station.routes[button.signal]) - if #results == 0 then - results = ARMFindSegmSignals(station,button.segm,true,station.routes[button.signal]) - end - for k,v in pairs(results) do - local i = 0 - for k,v in pairs(v[2]) do i = i + 1 end - print("--",k,v,v[1],v[2],i) - end - --print(results[1][1].name,results[1][1].segm)--]] - button.routes = results - end - --[[ if segm.signal2 then - local result = ARMFindNextSegm(station,segm,true,nil,nil,segm.signal2.name=="PT640") - if result and #result > 0 then - print(segm.signal2.name.."->") - for k,v in ipairs(result) do print(" "..v.name) end - end - end - if segm.signal1 then - local result = ARMFindNextSegm(station,segm,false,nil,nil,segm.signal1.name=="MD01") - if result and #result > 0 then - print(segm.signal1.name.."->") - for k,v in ipairs(result) do print(" "..v.name) end - end - end--]] - end - -end -if errors == 0 and warnings == 0 then - MsgC(Color(0,255,0),"MetrostroiARM:Generate finished without errors and warnings.\n") -elseif errors == 0 then - MsgC(Color(255,255,0),"MetrostroiARM:Generate finished with "..warnings.." warnings.\n") -else - MsgC(Color(255,0,0),"MetrostroiARM:Generate finished with "..errors.." errors and "..warnings.." warnings!\n") -end ---PrintTable(Metrostroi.ARMConfigGenerated) - -for k,v in ipairs(Metrostroi.ARMConfigGenerated) do - Metrostroi.ARMTable[k] = { - occChecks = {}, - net = {}, - signal = {}, - switch = {}, - routes = {}, - } -end \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_track_arm__/cl_init.lua b/lua/entities/_obsolete/gmod_track_arm__/cl_init.lua deleted file mode 100644 index 7b9ac56..0000000 --- a/lua/entities/_obsolete/gmod_track_arm__/cl_init.lua +++ /dev/null @@ -1,700 +0,0 @@ -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} -ENT.ClientPropsInitialized = false - - -ENT.ButtonMap["ARM"] = { - pos = Vector(-4.9,9.1,50.3), - ang = Angle(0,-90-1,90), - width = 800, - height = 600, - scale = 0.02*1.2, - mouse = true -} -ENT.ClientProps["ARMPK"] = { - model = "models/cyber_metrostroi/pc_arm/pc_screen.mdl", - pos = Vector(-5,0,31.2), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMMonitor"] = { - model = "models/cyber_metrostroi/pc_arm/pc_body.mdl", - pos = Vector(-5,15,0), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMKeyboard"] = { - model = "models/cyber_metrostroi/pc_arm/pc_keyboard.mdl", - pos = Vector(-15,-2,31), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMMouse"] = { - model = "models/cyber_metrostroi/pc_arm/pc_mouse.mdl", - pos = Vector(-18,-20,32), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMBreen"] = { - model = "models/props_combine/breenglobe.mdl", - pos = Vector(-11,30,39.5), - ang = Angle(0,-180+45,0), -} - -function ENT:Initialize() - self.BaseClass.Initialize(self) - self.ARM = self:CreateRT("ARM",1024,1024) - for k,v in pairs(self.Types) do - for i,tex in pairs(v) do - if type(tex) == "table" and type(tex[1]) == "string" then - tex.mat = surface.GetTextureID(tex[1]) - end - end - end -end - -function ENT:CamMoved() - self:HandleMouse(false) - gui.EnableScreenClicker(self.CurrentCamera ~= 0) -end - -function ENT:Think() - self.BaseClass.Think(self) - if not self.RenderClientEnts or self.CreatingCSEnts then - return - end - - if not self.ARM then return end - --self.MouseX = 0 - --self.MouseY = 0 - self.MouseX = self:GetNW2Int("CursorX",0) - self.MouseY = self:GetNW2Int("CursorY",0) - render.PushRenderTarget(self.ARM,0,0,1024, 1024) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.OverrideAlphaWriteEnable(true, true) - surface.SetDrawColor(0,0,0) - surface.DrawRect(0,0,800,600) - self:ARMMonitor() - cam.End2D() - render.PopRenderTarget() -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - - -function ENT:DrawPost() - self.RTMaterial:SetTexture("$basetexture", self.ARM) - self:DrawOnPanel("ARM",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(512,512,1024,1024,0) - end) -end - - -local gray = Color(100,100,100) -local black = Color(0,0,0) -local white = Color(150,150,150) -local green = Color(0,50,0) - -local function GetTextures(segm,typ) - return segm[typ],segm.maintex or segm[typ] -end ---Get texture Width and Height -local function GetWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.w or dtex.w,tex.h or dtex.h -end ---Get real(original) texture Width and Height -local function GetRWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.rw or dtex.rw,tex.rh or dtex.rh -end ---Get X and Y adds -local function GetXYA(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end -local function drawSegment(w,h,u0,v0,u1,v1,segm,typ,align) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex,dtex = GetTextures(segm,typ) - if dtex.mat then - local sx,sy = GetXY(w,h) - local sw,sh = GetWH(segm,typ) - local sxa = tex.x or dtex.x or 0 - local xa,ya = GetXYA(segm,typ) - local rw,rh = GetRWH(segm,typ) - surface.SetDrawColor(tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) - end -end -local function drawElement(sx,sy,u0,v0,u1,v1,segm,typ,col) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex = segm[typ] - local dtex = segm.maintex or tex - --local sx,sy = 100+w*36,100+h*70 - local sw,sh = tex.w or dtex.w,tex.h or dtex.h - local sxa = tex.x or dtex.x or 0 - local xa,ya = tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 - local rw,rh = tex.rw or dtex.rw,tex.rh or dtex.rh - surface.SetDrawColor(col or tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0 ,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) -end - -local mouse = surface.GetTextureID("gui/info") - -local function createFont(name,font,size,weight) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = weight or 400, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) -end -createFont("Arial10","Arial",10,400) -createFont("Arial20","Arial",20,800) - -local colorConverter = { - r = Color(0,0,0), - y = Color(240,240,71), - g = Color(41,202,26), - b = Color(26,84,202), - w = Color(255,255,255), -} -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - -local function ARMFindNextSegm(station,csegm,alt,dir,deb) - if dir then - if alt and not csegm.segm.next_a then return end - if not alt and not csegm.segm.next_m then return end - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x <= csegm.x then continue end - local txa,tya = GetSegmPos(csegm,alt) - local tx,ty = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - - if not txa then continue end - --if tx then print(1,segm.x,segm.y,GetSegmPos2(csegm,alt),csegm.invertX,csegm.invertY) end - local sx,sy = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - --if not alt then print(2,x,y,sx,sy,tx,ty,txa,tya) end - if sx == tx and sy == ty then return segm,sx,sy end - if sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(segm,false) - --if sx and sx == tx and sy == ty then return segm,false end - --if deb then print(sx,x) end - if sx and sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(segm,true) - --if sx and sx == tx and sy == ty then return segm,false end - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm,sx,sy end - end - else - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x >= csegm.x then continue end - local txa,tya = GetSegmPos(segm,alt) - local tx,ty = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - - if not txa then continue end - - local sx,sy = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - if sx == tx and sy == ty then return segm,sx,sy end - if sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(csegm,false) - - if sx and sx == txa and sy == tya then return segm,sx,sy end - sx,sy = GetSegmPos(csegm,true) - - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm,sx,sy end - end - --[[ for segmid,segm in ipairs(station) do - if segm == csegm then continue end - if segm.x >= csegm.x then continue end - local txa,tya = GetSegmPos(segm,alt) - local tx,ty = GetXY(segm.x+segm.width*(segm.invertX or 0),segm.y) - if not txa then continue end - --if tx then print(1,segm.x,segm.y,GetSegmPos2(csegm,alt),csegm.invertX,csegm.invertY) end - local sx,sy = GetXY(csegm.x+csegm.width*(csegm.invertX or 0),csegm.y) - --if not alt then print(2,x,y,sx,sy,tx,ty,txa,tya) end - if sx == tx and sy == ty then return segm end - if sx == txa and sy == tya then return segm end - sx,sy = GetSegmPos(csegm,false) - --if sx and sx == tx and sy == ty then return segm,false end - --if deb then print(sx,x) end - if sx and sx == txa and sy == tya then return segm end - sx,sy = GetSegmPos(csegm,true) - --if alt then print(3,x,y,sx,sy,tx,ty) end - --if sx and sx == tx and sy == ty then return segm,false end - if sx and sx == txa and sy == tya and (not alt or segm.y ~= csegm.y) then return segm end - end--]] - end -end - -local function ARMSetNextCompare(posX,posY,segm,nsegm) - local xp,yp = GetSegmPos(segm) - local x,y = GetSegmPos(nsegm) - if sx and posX == x and posY == y then - nsegm.prev = segm - return true - end - - sx,sy = GetSegmPos(nsegm,false) - if sx and posX == sx and posY == sy then - nsegm.next_m = segm - return true - end - if not nsegm.segm.next_a then return end - sx,sy = GetSegmPos(nsegm,true) - if x ~= xp and y ~= yp and sx and posX == sx and posY == sy then - nsegm.next_a = segm - if segm.id == 29 then - local x1,y1 = GetSegmPos(nsegm) - local x2,y2 = GetSegmPos(segm) - print(-2,x1,y1,x2,y2) - end - return true - end -end - -local function ARMSetNext(station) - for csegmid,csegm in ipairs(station) do - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - - local posX,posY = GetSegmPos(csegm) - if ARMSetNextCompare(posX,posY,csegm,segm) then - csegm.prev = segm - --break - end - local posOX,posOY = GetSegmPos(csegm,false) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_m = segm - --break - end - local _,posAY = GetSegmPos(segm) - if not csegm.segm.next_a or posX == posAX or posY == posAY then continue end - posOX,posOY = GetSegmPos(csegm,true) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_a = segm - --break - end - end - end -end -function ENT:ARMMonitor() - if self.FilterMag then - render.PopFilterMag() - render.PopFilterMin() - end - - render.PushFilterMag( TEXFILTER.POINT ) - render.PushFilterMin( TEXFILTER.POINT ) - self.FilterMag = true - surface.SetDrawColor(gray) - surface.DrawRect(0,0,800,600) - local station = self:GetNW2Int("ARM:Station",0) - --draw.SimpleText("АРМ ДЫЫСЦЫПЫ","Metrostroi_BUKPSpeed",400, 300,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if station > 0 and Metrostroi.ARMConfigGenerated and Metrostroi.ARMConfigGenerated[station] then - local armTable = Metrostroi.ARMConfigGenerated[station] - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"maintex") - ---[[ - local w,h = GetXY(segm.x+segm.width*u0,segm.y) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(w+5*u1-5*u0,h,w,h) - surface.DrawLine(w,h+5,w,h) - local w,h = GetSegmPos(segm,false) - surface.SetDrawColor(Color(255,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6,w,h) - local w,h = GetSegmPos(segm,true) - if w then - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6*v1+6*v0,w,h) - end--]] - end - local w,h = 0,0 - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if Metrostroi.GetARMInfo(station,id,"occup2") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_x") - end - if Metrostroi.GetARMInfo(station,id,"switch_m") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_m") - elseif Metrostroi.GetARMInfo(station,id,"switch_a") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_a") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_a") - elseif Metrostroi.GetARMInfo(station,id,"switch_na") then - if Metrostroi.GetARMInfo(station,id,"occup") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_an") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_mn") - else - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - end - if segm.signal1 then - local sig = segm.signal1 - local typ = self.Types["tl_"..sig.type] - - local x,y = 100+(segm.x+segm.width)*36,100+segm.y*70-(sig.top and -26 or 15) - local rw,rh = GetRWH(typ,"maintex") - local sx,sy = x-rw-2,y-rh-2 - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y-(sig.top and -7 or 15),Color(0,0,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_BOTTOM) - drawElement(sx,sy,0,0,1,1,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal1") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal1I") then - drawElement(sx+13*(sig.type-1),sy,0,0,1,1,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal1Y") then - drawElement(sx+13*(sig.type-2),sy,0,0,1,1,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx,sy,0,0,1,1,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - if segm.signal2 then - local sig = segm.signal2 - local typ = self.Types["tl_"..sig.type] - - local rw,rh = GetRWH(typ,"maintex") - local x,y = 100+(segm.x)*36+2,100+segm.y*70+(sig.top and -38 or 3) - local sx,sy = x-1,y+rh - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y+(sig.top and -2 or 20),Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_TOP) - drawElement(sx,sy,1,1,0,0,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal2") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal2I") then - drawElement(sx+rw-12-13*(sig.type-1),sy,1,1,0,0,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal2Y") then - drawElement(sx+rw-12-13*(sig.type-2),sy,1,1,0,0,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - end - for id,button in ipairs(armTable.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - local sw,sh = 15,25 - local xa,ya = 3,12 - if button.type=="r" then - sw,sh = 15,25 - xa,ya = 3,12 - end - local x,y = sx+xa,sy+ya - if Metrostroi.GetARMInfo(station,1000+id,"buttonSelected") then - surface.SetDrawColor(Color(80,80,180)) - elseif Metrostroi.GetARMInfo(station,1000+id,"buttonPressable") then - surface.SetDrawColor(Color(220,220,220)) - else - surface.SetDrawColor(Color(120,120,120)) - end - surface.DrawRect(x,y,sw,sh) - Metrostroi.DrawLine(x,y,x,y+sh,Color(240,240,240),2) - Metrostroi.DrawLine(x-1,y,x+sw,y,Color(240,240,240),2) - Metrostroi.DrawLine(x+sw,y,x+sw,y+sh,Color(60,60,60),2) - Metrostroi.DrawLine(x,y+sh,x+sw+1,y+sh,Color(60,60,60),2) - end - end - for i,v in ipairs(Metrostroi.ARMConfigGenerated) do - if i == station then - surface.SetDrawColor(Color(110,140,170)) - elseif math.InRangeXYR(self.MouseX,self.MouseY,20+(i-1)*30,20,30,20) then - surface.SetDrawColor(Color(80,110,140)) - else - surface.SetDrawColor(Color(100,130,160)) - end - - surface.DrawRect(20+(i-1)*31,20,30,20) - draw.SimpleText(v.shortname or v.id,"Metrostroi_Arial20",35+(i-1)*31, 30,Color(40,60,170),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - --if self.CurrentCamera == 0 then - surface.SetDrawColor(255,255,255) - surface.SetTexture(mouse) - surface.DrawTexturedRectRotated(self.MouseX,self.MouseY,8,8,0) - --end - surface.SetDrawColor(0,0,0,200) - surface.DrawRect(0,0,800,600) - render.PopFilterMag() - render.PopFilterMin() - self.FilterMag = false ---[=[ - local iter = 0 - local function ARMFindSegmSignals(station,segm,dir,signals,checked,restbl,trace,NextAlt) - if not restbl then restbl = {} end - if not checked then checked = {} end - if not trace then trace = {} end - if checked[segm] then return end - checked[segm] = true - local segmIndex = table.insert(trace,{segm.id}) - --trace[segm] = true - - iter = iter + 1 - if iter > 10000 then ARMGenError(Format("Routes generation error. Max iter reached!"),true) return false end - local segmt = segm.segm - local segmM,segmA = segmt.next_m,segmt.next_a - if not segmM then return end - - local NextM = ARMFindNextSegm(station,segm,not NextAlt,dir) - local NextA = ARMFindNextSegm(station,segm,NextAlt,dir) - - - local xp,yp = GetXY(segm.x,segm.y) - if NextA then - local trace= table.Copy(trace) - trace[segmIndex][2] = true - local xn,yn = GetXY(NextA.x,NextA.y) - local xa1,ya1 = GetSegmPos(segm,true) - local xa2,ya2 = GetSegmPos(NextA,true) - --trace[segmIndex][2] = true - local nxt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - --MsgN(Format("->A\n",segm.x,segm.y)) - local signal = dir and NextA.signal2 or NextA.signal1 - --print("A",segm.x,segm.y,NextA.x,NextA.y,signal and signal.name,dir) - if signal and table.HasValue(signals,signal.name) then--and not segmOnA.invertX then - table.insert(restbl,{signal,table.Copy(trace)}) - end - ARMFindSegmSignals(station,NextA,dir,signals,checked,restbl,trace,true) - end - if NextM then - local xn,yn = GetXY(NextM.x,NextM.y) - local xa1,ya1 = GetSegmPos(segm,true) - local xa2,ya2 = GetSegmPos(NextM,true) - local nxt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - local signal = dir and NextM.signal2 or NextM.signal1 - --print("M",segm.x,segm.y,NextM.x,NextM.y,signal and signal.name,dir) - if signal and table.HasValue(signals,signal.name) then--and not segmOnA.invertX then - table.insert(restbl,{signal,table.Copy(trace)}) - end - ARMFindSegmSignals(station,NextM,dir,signals,checked,restbl,table.Copy(trace)) - end - return restbl - end - local station = Metrostroi.ARMConfigGenerated[station] - for _,button in pairs(station.buttons,station.routes["PT64"]) do - if button.type == "r" and station.routes[button.signal] then - --button.pressable = true - local results = ARMFindSegmSignals(station,button.segm,false,station.routes[button.signal]) - if #results == 0 then - results = ARMFindSegmSignals(station,button.segm,true,station.routes[button.signal]) - end - for k,v in pairs(results) do - local i = 0 - for k,v in pairs(v[2]) do - print(v[2]) - end - end - --print(results[1][1].name,results[1][1].segm)--]] - --button.routes = results - end - end--]=] ---[=[ - local x = 0 - local founded = true - local stat = Metrostroi.ARMConfigGenerated[station] - local maxd = 3 - local x = 26-- or math.ceil((CurTime()%10)/10*#stat) - local dir = true-- or CurTime()%20 > 10 - local function findt(station,segm,dir,i,depth,px,py ) - depth = depth or 0 - i = i or 0 - local segmt = segm.segm - local segmM,segmA = segmt.next_m,segmt.next_a - local NextM,NextMX,NextMY = ARMFindNextSegm(station,segm,false,dir) - local NextA,NextAX,NextAY = ARMFindNextSegm(station,segm,true,dir) - local xp,yp = GetXY(segm.x,segm.y) - draw.SimpleText(i,"Metrostroi_Arial20",xp,yp,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.1f:%.1f",segm.x,segm.y),"Metrostroi_Arial10",xp,yp-20,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - local xa1,ya1 = GetSegmPos(segm,true) - if i==4 then print(xa1,ya1,px,py,xa1 == px and ya1 == py) end - local alt = px and py ~= yp and xa1 == px and ya1 == py - if NextA and depth+1 < maxd then - --if i==3 then print(1) end - local xn,yn = GetXY(NextA.x,NextA.y) - local xa2,ya2 = GetSegmPos(NextA,true) - local nalt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - if nalt or alt then surface.SetDrawColor(Color(255,0,0)) - else surface.SetDrawColor(Color(0,255,0)) end - surface.DrawLine(px or xp,py or yp,NextAX or xn,NextAY or yn) - if findt(station,NextA,dir,i+1,depth+1,NextAX,NextAY) then return end - --return true - --if i==5 then print("RES",segm.x,segm.y,NextA.x,NextA.y) end - end - if NextM and depth < maxd then - local xn,yn = GetXY(NextM.x,NextM.y) - local xa2,ya2 = GetSegmPos(NextM,true) - local nalt = xa1==xn and ya1==yn or - xa2==xn and ya2==yn or - xa1==xp and ya1==yp or - xa2==xp and ya2==yp or - xa1 and xa2 and xa1==xa2 and ya1==ya2 - if alt then surface.SetDrawColor(Color(255,255,0)) - else surface.SetDrawColor(Color(0,255,0)) end - surface.DrawLine(px or xp,py or yp,NextMX or xn,NextMY or yn) - if findt(station,NextM,dir,i+1,depth,NextMX,NextMY) then return end - end - end - --findt(stat,stat[x],dir)--]=] - --[==[ - if Metrostroi.ARMConfigGenerated[station] then - ARMSetNext(Metrostroi.ARMConfigGenerated[station]) - --[=[ for id,segm in ipairs(Metrostroi.ARMConfigGenerated[station]) do - local ws,hs = GetSegmPos(segm) - draw.SimpleText(segm.id,"Metrostroi_Arial20",ws,hs-15--[[ *(math.random()*5)--]] ,Color(0,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if segm.next_m then - local w,h = GetSegmPos(segm.next_m) - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(ws,hs,w,h) - surface.DrawLine(ws-6,hs-6,ws+6,hs+6) - surface.DrawLine(ws-6,hs+6,ws+6,hs-6) - surface.DrawLine(w-6,h-2,w+6,h+2) - surface.DrawLine(w-6,h+2,w+6,h-2) - else - local w,h = GetSegmPos(segm) - w = w+segm.width*36/2 - surface.SetDrawColor(Color(255,0,255)) - surface.DrawLine(w-4,h-4,w+4,h+4) - surface.DrawLine(w-4,h+4,w+4,h-4) - continue - end - if segm.next_a then - local w,h = GetSegmPos(segm.next_a) - draw.SimpleText(segm.id,"Metrostroi_Arial20",w,h+15,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(ws,hs,w,h) - surface.DrawLine(ws-7,hs-4,ws+7,hs+4) - surface.DrawLine(ws-7,hs+4,ws+7,hs-4) - surface.DrawLine(w-7,h-2,w+7,h+2) - surface.DrawLine(w-7,h+2,w+7,h-2) - end - end--]=] - local x = 0 - local founded = true - local stat = Metrostroi.ARMConfigGenerated[station] - local maxd = 2 - local x = 21-- or math.ceil((CurTime()%10)/10*#stat) - local dir = true-- or CurTime()%20 > 10 - local function findt(station,segm,dir,i,depth,last ) - depth = depth or 0 - i = i or 0 - local segmP = segm.prev - local segmM,segmA = segm.next_m,segm.next_a - local x,y = GetXY(segm.x,segm.y) - draw.SimpleText(i,"Metrostroi_Arial20",x,y,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.1f:%.1f",segm.x,segm.y),"Metrostroi_Arial10",x,y-20,Color(255,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if i==7 and last.next_a then - draw.SimpleText(i,"Metrostroi_Arial20",x,y,Color(0,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - local x,y = GetXY(last.x,last.y) - draw.SimpleText(i-1,"Metrostroi_Arial20",x,y,Color(255,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --print(last.next_a,segm) - end - - if segmA and mainM and depth+1 < maxd then - --if i==3 then print(1) end - local xn,yn = GetXY(segmA.x,segmA.y) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(x,y,xn,yn) - if findt(station,segmA,dir,i+1,depth+1,segm) then return end - return true - --if i==5 then print("RES",segm.x,segm.y,NextA.x,NextA.y) end - end - if segmM and mainM and depth < maxd then - local xn,yn = GetXY(segmM.x,segmM.y) - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(x,y,xn,yn) - if findt(station,segmM,dir,i+1,depth,segm) then return end - end - if segmP and mainP and depth < maxd then - local xn,yn = GetXY(segmP.x,segmP.y) - local alt = last and segm.next_a == last or segmP.next_a == segm - if alt then surface.SetDrawColor(Color(255,255,0)) - else surface.SetDrawColor(Color(0,255,255)) end - surface.DrawLine(x,y,xn,yn) - if findt(station,segmP,dir,i+1,depth,segm) then return end - end - end - findt(stat,stat[x],dir) - end--]==] - --findt(stat,stat[6],false) -end -Metrostroi.GenerateClientProps() \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_track_arm__/init.lua b/lua/entities/_obsolete/gmod_track_arm__/init.lua deleted file mode 100644 index 55498ac..0000000 --- a/lua/entities/_obsolete/gmod_track_arm__/init.lua +++ /dev/null @@ -1,189 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -function ENT:Initialize() - self:SetModel("models/props_combine/breendesk.mdl") - self.BaseClass.Initialize(self) - self.DriverSeat = self:CreateSeat("driver", Vector(-40, 0, 0), Angle(0, 0, 0), "models//nova/chair_office02.mdl") - self.CursorX = 0 - self.CursorY = 0 - self:CursorMove(0, 0) - self.Station = 0 -end - -hook.Add("AcceptInput", "metrostroi_arm_trigger_check", function(ent, inputName, activator, called, data) - if inputName == "ARMStartTouch" then - called.ARMTriggered = true - print(called, called:GetName(), activator, "Enable") - end - - if inputName == "ARMEndTouch" then - called.ARMTriggered = false - print(called, called:GetName(), activator, "Disable") - end -end) - - -local function GetOccupation(tbl) - for sID,signame in ipairs(tbl) do - if signame[1] == "@" then - local trigger = Metrostroi.ARMGet(signame:sub(2,-1), "trigger") - if not trigger or trigger.ARMTriggered then - return true - end - elseif signame ~= "" then - local signal = Metrostroi.ARMGet(signame, "signal") - if not signal or signal.OccupiedBy and signal.OccupiedBy ~= signal then - return true - end - end - end - return false -end - -function ENT:Think() - local armTbl = Metrostroi.ARMTable - local armConf = Metrostroi.ARMConfigGenerated - local station = armConf[self.Station] - local armTblStation = armTbl[self.Station] - if not station then return end - if not armTblStation or (IsValid(armTblStation.Controller) and armTblStation.Controller ~= self) then return end - armTblStation.Controller = self - for buttonID,button in ipairs(station.buttons) do - --print(button,button.selected) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonPressable",button.pressable) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonSelected",button.selected) - end - for segmID, segm in ipairs(station) do - if type(segm) == "table" then - if segm.occup then - Metrostroi.ARMSync(self.Station, segmID, "occup", segm.occupied) - end - - if segm.occup2 then - Metrostroi.ARMSync(self.Station, segmID, "occup2", segm._occup or GetOccupation(segm.occup2)) - end - Metrostroi.ARMSync(self.Station, segmID, "route", segm.route and true) - - - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - local main = switch and switch.MainTrack and not switch.AlternateTrack - local alt = switch and not switch.MainTrack and switch.AlternateTrack - Metrostroi.ARMSync(self.Station, segmID, "switch_m", main) - Metrostroi.ARMSync(self.Station, segmID, "switch_a", alt) - Metrostroi.ARMSync(self.Station, segmID, "switch_na", not main and not alt) - end - if segm.signal1 then - local signal = Metrostroi.ARMGet(segm.signal1.name, "signal") - local colors = signal and signal.Colors - if segm.signal1.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal1I", signal and signal.InvationSignal) end - if segm.signal1.type > 2 and colors then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal1Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal1", colors) - end - if segm.signal2 then - local signal = Metrostroi.ARMGet(segm.signal2.name, "signal") - local colors = signal and signal.Colors - if segm.signal2.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal2I", signal and signal.InvationSignal) end - if segm.signal2.type > 2 and colors then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal2Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal2", colors) - end - end - end - - self:NextThink(CurTime() + 0.5) - - return true -end - -function ENT:OnRemove() -end - -function ENT:CursorMove(sys, dX, dY) - self.CursorX = sys == "" and math.Clamp(self.CursorX + dX * 200, 0, 800) or dX - self.CursorY = sys == "" and math.Clamp(self.CursorY + dY * 200, 0, 600) or dY - self:SetNW2Int("CursorX", math.floor(self.CursorX)) - self:SetNW2Int("CursorY", math.floor(self.CursorY)) -end - -local function GetTextures(segm,typ) - return segm[typ],segm.maintex or segm[typ] -end ---Get real(original) texture Width and Height -local function GetRWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.rw or dtex.rw,tex.rh or dtex.rh -end -local function GetXY(x,y) - return 100+x*36,100+y*70 -end -function ENT:PanelTouch(state, x, y) - for i, v in ipairs(Metrostroi.ARMConfig) do - if math.InRangeXYR(self.CursorX, self.CursorY, 20 + (i - 1) * 30, 20, 30, 20) then - self.Station = i - self:SetNW2Int("ARM:Station", i) - end - end - if not state then return end - local RouteChoosing = self.RouteChoosing - self.RouteChoosing = nil - if RouteChoosing then - print("DISABLE") - for k,v in pairs(RouteChoosing.routes) do - if v[1].button then - v[1].button.selected = false - elseif v[1].isbutton then - v[1].selected = false - end - end - end - local confGenStation = Metrostroi.ARMConfigGenerated[self.Station] - for k,button in pairs(confGenStation.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - if button.type == "r" then - local sw,sh = 15,25 - local xa,ya = 3,12 - local x,y = sx+xa,sy+ya - if RouteChoosing then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - for k,v in ipairs(RouteChoosing.routes) do - if v[1].button and button == v[1].button or v[1].isbutton and button==v[1] then - Metrostroi.CentralisationPrepareRoute(self.Station,v) - end - end - end - elseif not self.RouteChoosing and button.pressable then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - self.RouteChoosing = button - for k,v in ipairs(button.routes) do - if v[1].button then - v[1].button.selected = true - elseif v[1].isbutton then - v[1].selected = true - print(2) - end - end - end - end - end - end - if not self.RouteChoosing and not RouteChoosing then - for k,segm in ipairs(confGenStation) do - local x,y = GetXY(segm.x,segm.y) - local w,h = GetRWH(segm.segm,"maintex") - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,w,h) then - segm._occup = not segm._occup - print(segm) - end - end - end -end \ No newline at end of file diff --git a/lua/entities/_obsolete/gmod_track_arm__/shared.lua b/lua/entities/_obsolete/gmod_track_arm__/shared.lua deleted file mode 100644 index 1d918f4..0000000 --- a/lua/entities/_obsolete/gmod_track_arm__/shared.lua +++ /dev/null @@ -1,753 +0,0 @@ -ENT.Type = "anim" - ---Inherit subway base for some need functions -ENT.Base = "gmod_subway_base" -ENT.NoTrain = true - -ENT.PrintNameTranslated = "Entities.ARM" -ENT.Category = "Metrostroi" - -ENT.Spawnable = false -ENT.AdminSpawnable = true - -ENT.Cameras = { - {Vector(-18+3,0,43+2),Angle(0,0,0),"ARM.Monitor1",true}, -} -ENT.Types = { - --Main segments - [0.25]={ - maintex = {"metrostroi_arm/sec025",w=8,h=8,rw=7,rh=8,}, - occup_m = {"metrostroi_arm/sec025_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec025_m",col=Color(39,103,63)}, - width = 0.25, - next_m = {x=0.25,y=0} - }, - [0.5]={ - maintex = {"metrostroi_arm/sec05",w=16,h=8,rw=16,rh=8,}, - occup_m = {"metrostroi_arm/sec05_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec05_m",col=Color(39,103,63)}, - width = 0.5, - next_m = {x=0.5,y=0} - }, - [1]={ - maintex = {"metrostroi_arm/sec1",w=64,h=8,rw=34,rh=8,}, - occup_m = {"metrostroi_arm/sec1_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec1_m",col=Color(39,103,63)}, - width = 1, - next_m = {x=1,y=0} - }, - [2]={ - maintex = {"metrostroi_arm/sec2",w=128,h=8,rw=70,rh=8,}, - occup_m = {"metrostroi_arm/sec2_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec2_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=0} - }, - [3]={ - maintex = {"metrostroi_arm/sec3",w=128,h=8,rw=106,rh=8,}, - occup_m = {"metrostroi_arm/sec3_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec3_m",col=Color(39,103,63)}, - width = 3, - next_m = {x=3,y=0} - }, - [4]={ - maintex = {"metrostroi_arm/sec4",w=256,h=8,rw=142,rh=8,}, - occup_m = {"metrostroi_arm/sec4_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec4_m",col=Color(39,103,63)}, - width = 4, - next_m = {x=4,y=0} - }, - [5]={ - maintex = {"metrostroi_arm/sec5",w=256,h=8,rw=178,rh=8,}, - occup_m = {"metrostroi_arm/sec5_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec5_m",col=Color(39,103,63)}, - width = 5, - next_m = {x=5,y=0} - }, - --Switches and helpers - sw = { - maintex = {"metrostroi_arm/switch",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/switch_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/switch_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/switch_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/switch_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/switch_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/switch_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/switch_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/switch_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - ["2sw"] = { - maintex = {"metrostroi_arm/2-switch_half",w=128,h=256,rw=70,rh=143,}, - occup_m = {"metrostroi_arm/2-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch_half_as",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch_half_ms",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - }, - ["2swm"] = { - maintex = {"metrostroi_arm/2-switch-middle_half",w=128,h=128,rw=70,rh=73,}, - occup_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch-middle_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch-middle_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=1.5,y=1}, - }, - ["4sw"] = { - maintex = {"metrostroi_arm/4-switch_quarter",w=128,h=256,rw=73,rh=143,x=-3,}, - occup_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(39,103,63)}, - occup_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(255,255,255)}, - route_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/4-switch_quarter_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - acc_x = ">", - acc_y = "!", - }, - ["4sws"] = { - maintex = {"metrostroi_arm/4-switch_quarter_small",w=64,h=128,rw=53,rh=78,x=-1,}, - occup_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(255,255,255),x=-1,}, - route_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(39,103,63),x=-1,}, - occup_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(255,255,255),x=-1,}, - route_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(39,103,63),x=-1,}, - switch_m = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(200,50,50)}, - width = 1.5, - next_m = {x=1.5,y=0}, - next_a = {x=1.5,y=1}, - acc_x = ">", - acc_y = "!", - }, - ofd = { - maintex = {"metrostroi_arm/offset_down",w=64,h=256,rw=57,rh=143,}, - occup_m = {"metrostroi_arm/offset_down_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offset_down_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=2}, - }, - ofds = { - maintex = {"metrostroi_arm/offsed_down_small",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/offsed_down_small_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offsed_down_small_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=1}, - }, - ysw = { - maintex = {"metrostroi_arm/Y-switch_half",w=128,h=128,rw=70,rh=108,}, - occup_m = {"metrostroi_arm/Y-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/Y-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/Y-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/Y-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/Y-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/Y-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/Y-switch_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/Y-switch_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - --Signals - tl_1 = { - maintex = {"metrostroi_arm/tl_1",w=32,h=16,rw=21,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_2 = { - maintex = {"metrostroi_arm/tl_2",w=64,h=16,rw=34,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_3 = { - maintex = {"metrostroi_arm/tl_3",w=64,h=16,rw=47,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, -} -if CLIENT then - for i,segm in pairs(ENT.Types) do - for k,tex in pairs(segm) do - if type(tex) ~= "table" or type(tex[1]) ~= "string" then continue end - tex.mat = surface.GetTextureID(tex[1]) - end - segm.id = i - end -end - --------------- --- Syntax of table --- { --- station = "ID,abbreviation,full name" --- First line of segments --- {"segment type:occupation checkers,...,occupation checkers:lights:...:lights"}, --- Second line of segments --- {x=x indent,skip=y indent(skips y segments vertically),"segment type:occupation checkers main,...,occupation checkers main:occupation checkers alt,...,occupation checkers alt:lights:...:lights"}, --- } --- segment type can have > or ! on start, when we want mirror it vertically or horisontally --- Occupation checkers can be triggers(have @ in start of trigger name) or signals --- Lights can be empty, if we want take light name from occupation checkers --- Lights can have ! when stay in right direction or !! when stay in opposite direction --- Lights can have > when we want switch light location from bottom to top --- Examples ---{ --- station = "001,ST,Station name", --- { --- {"1:L1:!","1:L3:!","sw:@sw1trigger:@sw3trigger"} --- {x=1,"1:L2",">sw:@sw2trigger:@sw3rigger"}, --- } ---} --------------- -Metrostroi.ARMConfig = { - ---[=[ - { - station = "451,ВБ,Уоллеса брина", - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","sw:1","3:1","3:1"}, - {x=7,"0.5:1","4sws:1",">4sws:1","1:1","1:1"},{skip=1}, - {x=7,"0.5:1","!4sws:1",">!4sws:1","1:1","1:1"}, - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","!sw:1","3:1","3:1"}, - },{ - station="915,РЧ,Речная", - {x=3.5,"0.5:RX22","1:RX22","1:RX20","0.5:RX98","4sw:::RX1:0",">4sw:::RX3:","1","2","2","1","1"},{skip=3}, - {"1:201","0.5:203","0.5:205","0.5:207","0.5:209","0.5:211","0.5:213","1:215","1:217","0.5:219","!4sw:::RX2::!!2RX95",">!4sw:::RX4:","1","2","2","1","1"}, - },{ - station="110,МД,Международная", - {"1:145//:!1","1:143:!1","1:141//:!1","0.5:RC137","0.5:139M:!1","3:137:!>1","sw:@wt_md_s1:@wt_md_s1:MD1:!!>2D:!>2G","3:@wt_md_t1_1::!2MD3","2:@wt_md_t1_2"}, - {x=9,"4sws:@wt_md_s3::MD3",">4sws:@wt_md_s5::MD5:!2MD1","2:@wt_md_t3"},{skip=1}, - {x=9,"!4sws:@wt_md_s4::MD4",">!4sws:@wt_md_s6::MD6:!>2MD2","2:@wt_md_t4"}, - {"1:MD148:!!2","1:MD146:!!2","1:MD144:!!2","1:MD142:!!2:!1 OP","1:MD140:!!2","1:RC144A","1:RC142","!sw:@wt_md_s2:@wt_md_s2:MD2:!!2MD138G:!1E","3:@wt_md_t2_1::!>2MD4","2:@wt_md_t2_2"}, - buttons = { - {type="r",y=4-0.6 ,x=4, signal=" OP",target={3,4}}, - {type="r",y=4 ,x=-1+0.4, signal="MD148"}, - {type="r",y=4 ,x=6+0.4, signal="MD138G"}, - {type="r",y=4-0.6 ,x=9, signal="E"}, - {type="r",y=3 ,x=14, signal="4I",target={12,3}}, - {type="r",y=1-0.6 ,x=14, signal="3I",target={12,1}}, - {type="r",y=3 ,x=12, signal="MD2"}, - {type="r",y=1-0.6 ,x=12, signal="MD1"}, - --{type="r",y=0-0.6 ,x=4, signal="13"}, - {type="r",y=0-0.6 ,x=6+0.4, signal="D",target={4,0}}, - {type="r",y=0 ,x=9, signal="G"}, - }, - routes = { - MD148={" OP"}, - [" OP"]={"MD138G"}, - MD138G={"4I","3I"}, - E={" OP"}, - MD2={" OP","D"}, - MD1={" OP","D"}, - D={"4I","3I"}, - G={"D"}, - }, - signals = { - --"LensesStr": "YYG-RW", - MD148={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD146={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD144={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD142={ - Mode=1, --AB 1/5 - R="3",RY="31",Y="1",G="2",IS="4", --Lenses ID - Autostop = true,AO = false,bs=4, - }, - MD140={ - Mode=1, --AB 1/5 - R="4",RY="42",--[[ Y="1",--]] YG="13",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD138G={ - Mode=1, --AB 1/5 - R="3",RY="32",W="1",IS="4", --Lenses ID - Autostop = true,AO = false,bs=1, - }, - MD3={ - Mode=1, --AB 1/5 - R="1",IS="2", - Autostop = true,AO = false, - }, - MD4={ - Mode=1, --AB 1/5 - R="1",IS="2", - Autostop = true,AO = false, - }, - MD1={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - MD2={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - E={ - Mode=1, --AB 1/5 - R="2",W="1", - Autostop = true,AO = false, - }, - G={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - D={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - } - },{ - station="112,ПТ,Политехническая", - {x=1,"1:PT2TB","2:PT2TA","2:PT2T:!!2PT2","2:PT4SA:!!2PT4",">2swm:@wt_pt_t4::PT4:!3PT968M:!!2G ","1:PT966A","2:PT966:!>2","sw:@wt_pt_t6::PT6:!>2PT964:!!>3A","1:962"}, - {x=15,"1:PT6SS","1:963"}, - {x=1,"1:77:!1","1:75:!1","1:73:!1","1:71:!>1",">2swm:@wt_pt_t1::PT1:!!>2B","!2swm:@wt_pt_t3::PT3:!>2PT69","1:PT67M:!2","1:PT65B","1:PT65A","1:PT65:!2","1:PT63:!2:!!1 OP ","1:PT61:!2","1:PT59:!2","1:PT57:!2"},{skip=1}, - {"1:PT70:!!2:!1 OP2 ","1:PT68:!!2","2:@wt_pt_t2:!!2PT66","!2swm:@wt_pt_t4::PT2:!!3PT64","2","2:62:!!1","1:60:!!1","2:60A","1:58M:!!1","1:56:!!1","1:54:!!1","1: 52:!!1"}, - {}, - labels = { - - }, - buttons = { - {type="r",y=0-0.6 ,x=1, signal="3T",target={1,0},flip=true}, - {type="r",y=0 ,x=3+0.4,signal="PT2",target={1,0},flip=true}, - - {type="r",y=4-0.6 ,x=1, signal=" OP2 "}, - {type="r",y=4 ,x=-1+0.4, signal="PT70"}, - {type="r",y=4 ,x=3+0.4, signal="2P",target={8,4}}, - --{type="r",y=4 ,x=7+0.4, signal="62"}, - {type="r",y=2 ,x=5, signal="71"}, - {type="r",y=2-0.6 ,x=4+0.4, signal="B",target={5,2}}, - {type="r",y=2-0.6 ,x=17, signal="PT57"}, - {type="r",y=2-0.6 ,x=10, signal="PT67M"}, - {type="r",y=2 ,x=12+0.4,signal=" OP "}, - {type="r",y=0-0.6 ,x=10, signal="PT968M",flip=true}, - {type="r",y=0 ,x=15, signal="PT964",flip=true}, - {type="r",y=1-0.6 ,x=15, signal="4O",target={15,1},flip=true}, - {type="r",y=0-0.6 ,x=12+0.4,signal="A",flip=true}, - }, - routes = { - PT2 = {"A"}, - PT70 = {" OP ","A","2P"}, - --PT64 = {" OP ","A","PT64"}, - B = {" OP ","A"}, - PT57 = {"PT67M"}, - PT964 = {"PT968M"}, - PT67M = {"71"," OP2 "}, - PT968M = {"3T","71"," OP2 "}, - A={"4O"} - }, - signals = { - --"LensesStr": "YYG-RW", - PT70={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT68={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT66={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT64={ --"YWY-GRW - Mode=1, --AB 1/5 - R="5",RY="51",Y="3",YG="34",G="4",IS="6",W="2",YY="13",YbY="1b3", --Lenses ID - Autostop = true,AO = false, - routes = { - [" OP "]={path=2,mode=3},--Path-2, Mode: W - A={path=3,mode=2},--Path-2, Mode: YY - } - } - } - },{ - station="115,ОК,Октябрьская", - {"1","1","1","1","3","sw:::OK1","1"}, - {x=9,"4sws:::OK3",">4sws:::OK5","1"},{skip=1}, - {x=9,"!4sws:::OK4",">!4sws:::OK6","1"}, - {"1","1","1","1","3","!sw:::OK2","5"}, - }--]=] -} - -print("MetrostroiARM:Generating ARM table...") -local errors,warnings = 0,0 -local function ARMGenError(text,err) - MsgC(Color(255,err and 0 or 255,0),"MetrostroiARM:"..text.."\n") - ErrorNoHalt() - if err then errors = errors + 1 else warnings = warnings + 1 end -end - -local function ParseARMTable(text,station,line,segm) - local resultTbl = {} - - local tbl = string.Explode(":",text) - - local typ = tbl[1] - if typ:find("^[>!]") then - resultTbl.invertX = typ:find(">") - resultTbl.invertY = typ:find("!") - typ = typ:gsub("^[>!]+","") - end - local segmTyp = ENT.Types[tonumber(typ) or typ] - if not segmTyp then return {error = 1,type = tbl[1]} end - table.remove(tbl,1) - - for i,str in ipairs(tbl) do - if str:find(",") then - tbl[i] = string.Explode(",",str) - end - if str:sub(1,2) == "!!" then - resultTbl.signal2 = str:sub(3,-1) - elseif str[1] == "!" then - resultTbl.signal1 = str:sub(2,-1) - end - end - resultTbl.occup = type(tbl[1]) == "table" and tbl[1] or {tbl[1]} - if segmTyp.occup_a then - resultTbl.occupAlt = type(tbl[2]) == "table" and tbl[2] or {tbl[2]} - resultTbl.switch = tbl[3] - if segmTyp.occup_x then - resultTbl.occup2 = type(tbl[4]) == "table" and tbl[4] or {tbl[4]} - end - end - - if resultTbl.signal1 then - local signal = resultTbl.signal1:gsub("^[>]+","") - local top = resultTbl.signal1:find("^>") - - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal1 = {name=name,type=typ or 1,top = top,segm=resultTbl} - end - if resultTbl.signal2 then - local signal = resultTbl.signal2:gsub("^[>]+","") - local top = resultTbl.signal2:find("^>") - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal2 = {name=name,type=typ or 1,top = top,segm=resultTbl} - end - resultTbl.type = typ - resultTbl.width = segmTyp.width or 1 - resultTbl.segm = segmTyp - return resultTbl -end - - -Metrostroi.ARMConfigGenerated = {} -local id = 0 -for i,station in ipairs(Metrostroi.ARMConfig) do - if not Metrostroi.ARMConfigGenerated[i] then Metrostroi.ARMConfigGenerated[i] = {} end - local genStation = Metrostroi.ARMConfigGenerated[i] - local y = 0 - - MsgC(Color(0, 222, 255),"MetrostroiARM:Solving station ",i,"\n") - if #station == 0 then ARMGenError(Format("Parser warning. Empty station %d! Skipping...",i),false) continue end - if not station.station then ARMGenError(Format("Parser error. Can't find station name in station %d! Skipping...",i),true) continue end - - local stationTbl = string.Explode(",",station.station) - if not stationTbl or #stationTbl < 3 or not tonumber(stationTbl[1]) then ARMGenError(Format("Parser error. Malformed station data in station %d! Skipping...",i),true) continue end - - genStation.id = stationTbl[1] - genStation.shortname = stationTbl[2] - genStation.name = stationTbl[3] - genStation.buttons = {} - genStation.routes = station.routes or {} - genStation.signals = station.signals or {} - for lineID,line in ipairs(station) do - local x = line.x or 0 - for segmID,segm in ipairs(line) do - if type(segm) ~= "string" then - ARMGenError(Format("Parser error on station %d line %d segm %d, excepted string,got %s. Skipping segment...",i,lineID,segmID,type(segm)),true) - continue - end - local segmTbl= ParseARMTable(segm,i,lineID,segmID) - if segmTbl.error then - ARMGenError(Format("Parser warning. Skipping station %d line %d segm %d segment, type error(type '%s' not found)",i,lineID,segmID,segmTbl.type),false) - continue - end - segmTbl.x = x - segmTbl.y = y - segmTbl.id = table.insert(genStation,segmTbl) - x = x + (segmTbl.width or 1) - end - y = y + (line.skip or 1) - end - if station.buttons then - for _,button in pairs(station.buttons) do - button.pressable = false - button.selected = false - button.isbutton = true - if button.type == "r" then - button.segm = ENT.Types.button_normal - for k,v in ipairs(genStation) do - if button.target and button.target[1] == v.x and button.target[2] == v.y then - button.segm = v - if v.button and not v.buttons then - v.buttons = {v.button,button} - v.button = nil - elseif v.buttons then - table.insert(v.buttons,button) - else - v.button = button - end - break - end - if not button.segm and v.signal1 and v.signal1.name == button.signal then - button.segm = v - v.signal1.button = button - end - if not button.segm and v.signal2 and v.signal2.name == button.signal then - button.segm = v - v.signal2.button = button - end - end - end - table.insert(genStation.buttons,button) - end - end -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end - -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - - - -local function ARMSetNextCompare(posX,posY,segm,nsegm) - local xp,yp = GetSegmPos(segm) - local x,y = GetSegmPos(nsegm) - if sx and posX == x and posY == y then - nsegm.prev = segm - return true - end - - sx,sy = GetSegmPos(nsegm,false) - if sx and posX == sx and posY == sy then - nsegm.next_m = segm - return true - end - if not nsegm.segm.next_a then return end - sx,sy = GetSegmPos(nsegm,true) - if x ~= xp and y ~= yp and sx and posX == sx and posY == sy then - nsegm.next_a = segm - if segm.id == 29 then - local x1,y1 = GetSegmPos(nsegm) - local x2,y2 = GetSegmPos(segm) - print(-2,x1,y1,x2,y2) - end - return true - end -end - -local function ARMSetNext(station) - for csegmid,csegm in ipairs(station) do - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - - local posX,posY = GetSegmPos(csegm) - if ARMSetNextCompare(posX,posY,csegm,segm) then - csegm.prev = segm - --break - end - local posOX,posOY = GetSegmPos(csegm,false) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_m = segm - --break - end - local posAX,posAY = GetSegmPos(segm) - if not csegm.segm.next_a or posX == posAX or posY == posAY then continue end - posOX,posOY = GetSegmPos(csegm,true) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_a = segm - --break - end - end - end -end -for i,st in ipairs(Metrostroi.ARMConfigGenerated) do ARMSetNext(st) end - - -local function tcopy(from) - local t = {} - for k,v in pairs(from) do - t[k] = v - end - return t -end -local iter = 1 -local function ARMAddSignal(segm,dir,signals,trace,restbl) - local signal = dir and segm.signal2 or not dir and segm.signal1 - local button,buttons = segm.button,segm.buttons - if button then print(bitton,button.signal) end - if signal and table.HasValue(signals,signal.name) then - table.insert(restbl,{signal,table.Copy(trace),dir}) - elseif button and table.HasValue(signals,button.signal) then - table.insert(trace,{segm.id}) - table.insert(restbl,{button,table.Copy(trace),dir}) - elseif buttons then - for k,button in pairs(buttons) do - if table.HasValue(signals,button.signal) then - table.insert(trace,{segm.id}) - table.insert(restbl,{button,table.Copy(trace),dir}) - end - end - end -end -local function ARMFindSegmSignals(station,segm,dir,signals,last,checked,restbl,trace) - if not restbl then restbl = {} end - if not checked then checked = {} end - if not trace then trace = {} end - if not segm or checked[segm] then return restbl end - checked[segm] = true - local segmIndex = table.insert(trace,{segm.id}) - --trace[segm] = true - - iter = iter + 1 - if iter > 10000 then ARMGenError(Format("Routes generation error. Max iter reached!"),true) return false end - local segmM,segmA = segm.next_m,segm.next_a - local segmP = segm.prev - - - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if segmA and mainM then - local trace= table.Copy(trace) - - trace[segmIndex][2] = true - ARMAddSignal(segmA,dir,signals,trace,restbl) - ARMFindSegmSignals(station,segmA,dir,signals,segm,checked,restbl,trace) - end - if segmM and mainM then - ARMAddSignal(segmM,dir,signals,trace,restbl) - ARMFindSegmSignals(station,segmM,dir,signals,segm,checked,restbl,trace) - end - if segmP and mainP then - trace[segmIndex][2] = last and segm.next_a == last or nil-- or segmP.next_a == segm or nil - ARMAddSignal(segmP,dir,signals,trace,restbl) - ARMFindSegmSignals(station,segmP,dir,signals,segm,checked,restbl,trace) - end - return restbl -end - -for i,station in ipairs(Metrostroi.ARMConfigGenerated) do - print("STATION",i) - for _,button in pairs(station.buttons) do - if button.type == "r" and station.routes[button.signal] then - print(button.signal,button.segm) - button.pressable = true - local results1 = ARMFindSegmSignals(station,button.segm,false,station.routes[button.signal]) - local results2 = ARMFindSegmSignals(station,button.segm,true,station.routes[button.signal]) - - table.Add( results2, results1 ) - --print(results[1][1].name,results[1][1].segm)--]] - for k,v in pairs(results1) do - local i = 0 - for k,v in pairs(v[2]) do i = i + 1 end - print("--",k,v,v[1],v[2],i) - end - button.routes = results2 - end - --[[ if segm.signal2 then - local result = ARMFindNextSegm(station,segm,true,nil,nil,segm.signal2.name=="PT640") - if result and #result > 0 then - print(segm.signal2.name.."->") - for k,v in ipairs(result) do print(" "..v.name) end - end - end - if segm.signal1 then - local result = ARMFindNextSegm(station,segm,false,nil,nil,segm.signal1.name=="MD01") - if result and #result > 0 then - print(segm.signal1.name.."->") - for k,v in ipairs(result) do print(" "..v.name) end - end - end--]] - end - -end -if errors == 0 and warnings == 0 then - MsgC(Color(0,255,0),"MetrostroiARM:Generate finished without errors and warnings.\n") -elseif errors == 0 then - MsgC(Color(255,255,0),"MetrostroiARM:Generate finished with "..warnings.." warnings.\n") -else - MsgC(Color(255,0,0),"MetrostroiARM:Generate finished with "..errors.." errors and "..warnings.." warnings!\n") -end ---PrintTable(Metrostroi.ARMConfigGenerated) - -for k,v in ipairs(Metrostroi.ARMConfigGenerated) do - Metrostroi.ARMTable[k] = { - occChecks = {}, - net = {}, - signal = {}, - switch = {}, - routes = {}, - } -end \ No newline at end of file diff --git a/lua/entities/gmod_mus_clock_analog/cl_init.lua b/lua/entities/gmod_mus_clock_analog/cl_init.lua index d8ab24f..4d3b1ce 100644 --- a/lua/entities/gmod_mus_clock_analog/cl_init.lua +++ b/lua/entities/gmod_mus_clock_analog/cl_init.lua @@ -23,9 +23,9 @@ function ENT:Think() self:EmitSound("mus/clock_click"..math.random(1,8)..".wav",65,math.random(95,105),0.5) self.OldSec = d.sec self.SecPull = RealTime()+0.05 - self.Arrows[1]:SetPoseParameter("position",(0.5+d.hour/24+d.min/1440)%1) - self.Arrows[2]:SetPoseParameter("position",d.min/60+d.sec/3600) - end + self.Arrows[1]:SetPoseParameter("position",(0.5+d.hour/24+d.min/1440)%1) + self.Arrows[2]:SetPoseParameter("position",d.min/60+d.sec/3600) + end if RealTime()-self.SecPull > 0 or d.sec < 30 then self.Arrows[3]:SetPoseParameter("position",d.sec/60) else diff --git a/lua/entities/gmod_subway_81-501/cl_init.lua b/lua/entities/gmod_subway_81-501/cl_init.lua index d3ac393..930fc12 100644 --- a/lua/entities/gmod_subway_81-501/cl_init.lua +++ b/lua/entities/gmod_subway_81-501/cl_init.lua @@ -42,7 +42,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} local function addTW10Cosume(panelName,ignores) @@ -72,7 +71,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -86,16 +85,13 @@ ENT.ButtonMap["Main"] = { buttons = { {ID = "!GRP", x=25+41.7*3,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(98,178,178),z = 10, var="GRP",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(40,255,100),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(140,255,255),z = 10, var="GRP",} }}, {ID = "!RRP", x=25+41.7*4,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(178,112,112),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,60,60),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(255,160,160),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, {ID = "!SD", x=25+41.7*5,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(91,91,178),z = 10, var="DoorsWC",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(100,120,255),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(255,255,255),z = 10, var="DoorsWC",} }}, {ID = "LOnSet", x=30+40*0, y=100, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",ang = 180-30,z=0,vmin=1,vmax=0, @@ -146,7 +142,6 @@ ENT.ButtonMap["Main"] = { var="VUD",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -182,7 +177,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -194,15 +189,15 @@ ENT.ClientProps["stopkran"] = { ENT.ClientSounds["EmergencyBrakeValve"] = {{"stopkran",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} ENT.ButtonMap["AVMain"] = { - pos = Vector(403.5,40.3,42), + pos = Vector(403.5,40.8,42), ang = Angle(0,90,90), width = 290, - height = 300, + height = 270, scale = 0.0625, hide = 0.8, buttons = { - {ID = "AVToggle", x=0, y=0, w=290, h=300, tooltip="", model = { + {ID = "AVToggle", x=0, y=0, w=290, h=270, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_av8r.mdl",x=-35, y=140, z=55, ang = Angle(90,0,0), var="AV",speed=0.85, vmin=0.73,vmax=0.80, sndvol = 1, snd = function(val) return val and "av8_on" or "av8_off" end, @@ -273,8 +268,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -306,7 +301,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -318,7 +313,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["HVMeters"] = { @@ -330,8 +325,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesVoltage", x=0,y=0,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!EnginesCurrent", x=0,y=79,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, + {ID = "!EnginesVoltage", x=0,y=0,w=66,h=72,tooltip=""}, + {ID = "!EnginesCurrent", x=0,y=79,w=66,h=72,tooltip=""}, } } ENT.ButtonMap["DriverValveBLDisconnect"] = { @@ -346,7 +341,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -362,7 +356,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -373,10 +366,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -399,10 +395,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -432,7 +431,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -461,7 +459,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -501,7 +499,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -517,7 +514,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -539,6 +535,13 @@ ENT.ButtonMap["AV"] = { sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), }}, + {ID = "KPVUToggle",x=85*5,y=0,w=85,h=120 , tooltip="", model = { + model = "models/metrostroi_train/equipment/vu22_black.mdl", z=20, ang = 180, + labels={{model="models/metrostroi_train/81-502/labels/vu_labels.mdl",skin=10,ang=90,z=20.9,x=0,y=-12.5}}, + var="KPVU",speed=6, + sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, + sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), + }}, } } @@ -553,7 +556,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -569,7 +571,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -585,7 +586,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -611,7 +611,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -942,36 +941,7 @@ ENT.ClientProps["tab"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(169,130,88), brightness = 3 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [22] = { "headlight", Vector(445,-55,40), Angle(75, 70,45), Color(190, 130, 88), hfov=110, vfov=110,farz=65,brightness = 2,shadows = 1, texture = "effects/flashlight/soft", hidden="Lamps_pult"}, - - -- Head - [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, - [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, - - -- Cabin - [23] = { "dynamiclight", Vector(425,-10.0,30), Angle(0,0,0), Color(255,255,255), brightness = 0.0003, distance = 600, hidden="Ema_salon"}, - -- Interior - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - - [15] = { "light",Vector(414.5,69.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(414.5,69.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(414.5,69.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(414.5,-66.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(414.5,-66.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(414.5,-66.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(446.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(445,-55,40), Angle(75, 70,45), Color(190, 130, 88), hfov=110, vfov=110,farz=65,brightness = 2,shadows = 1, texture = "effects/flashlight/soft"}, } function ENT:Initialize() @@ -1010,32 +980,17 @@ function ENT:Think() end local Lamps = self:GetPackedRatio("LampsStrength") - - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",emer1) - self:ShowHideSmooth("Lamps_emer2",emer2) + local half1 = self:GetPackedBool("Lamps_half1") + local half2 = self:GetPackedBool("Lamps_half2") + local emer1 = self:GetPackedBool("lamps_emer1") + local emer2 = self:GetPackedBool("Lamps_emer2") + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",(not half1 and emer1) and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false)) + local half1 = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) + local half2 = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, emer1 > 0,emer1) - self:SetLightPower("Lamps_cab", emer1 > 0,emer1) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end -- Parking brake animation self.TrueBrakeAngle = self.TrueBrakeAngle or 0 @@ -1056,14 +1011,10 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower("Lamps_pult",PL>0,PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -1086,12 +1037,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15,Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18,Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16,Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19,Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17,Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20,Bortlamp_y > 0, Bortlamp_y) self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 0 or 1,0.25,0.5, 4,false) self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.25,0, 4,false) @@ -1306,18 +1251,14 @@ function ENT:Think() end end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and self:GetNW2Float("UPOVolume",0.6)*volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) diff --git a/lua/entities/gmod_subway_81-501/init.lua b/lua/entities/gmod_subway_81-501/init.lua index 707b74c..c3c5e18 100644 --- a/lua/entities/gmod_subway_81-501/init.lua +++ b/lua/entities/gmod_subway_81-501/init.lua @@ -111,7 +111,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -173,6 +173,34 @@ function ENT:Initialize() }, } + self.Lights = { + -- Head + [2] = { "glow", Vector(469.4, 45.43,-30.7), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [4] = { "glow", Vector(458+9,-14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, + [5] = { "glow", Vector(458+9,0, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, + [6] = { "glow", Vector(458+9, 14.86, 58), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 0.5 }, + + -- Cabin + [23] = { "dynamiclight", Vector(425,-10.0,30), Angle(0,0,0), Color(255,255,255), brightness = 0.0003, distance = 600}, + -- Interior + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + + [15] = { "light",Vector(414.5,69.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(414.5,69.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(414.5,69.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(414.5,-66.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(414.5,-66.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(414.5,-66.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { [15]=true, @@ -183,6 +211,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -214,59 +250,75 @@ end function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic - self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 - self:SetPackedBool("Lamps_emer1",emerActive1 > 0) + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 + self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) local TW18 = 0 - if Panel.SSN > 0 then + if self.Panel.SSN > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end - self:SetPackedBool("CPS_AV",Panel.SSD > 0) + self:SetPackedBool("CPS_AV",self.Panel.SSD > 0) self:SetPackedRatio("CPS_SN1",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("CPS_6",Panel.S6 > 0) - self:SetPackedBool("CPS_1",Panel.S1 > 0) - self:SetPackedBool("CPS_2",Panel.S2 > 0) - self:SetPackedBool("CPS_RP",Panel.GreenRP > 0) - self:SetPackedBool("CPS_SD",Panel.SSD > 0) + self:SetPackedBool("CPS_6",self.Panel.S6 > 0) + self:SetPackedBool("CPS_1",self.Panel.S1 > 0) + self:SetPackedBool("CPS_2",self.Panel.S2 > 0) + self:SetPackedBool("CPS_RP",self.Panel.GreenRP > 0) + self:SetPackedBool("CPS_SD",self.Panel.SSD > 0) self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrY",Panel.BrY > 0) - self:SetPackedBool("DoorsWC",Panel.DoorsWC > 0) + self:SetLightPower(15,self.Panel.DoorsW > 0) + self:SetLightPower(16,self.Panel.GreenRP > 0) + self:SetLightPower(17,self.Panel.BrY > 0) + self:SetLightPower(18,self.Panel.DoorsW > 0) + self:SetLightPower(19,self.Panel.GreenRP > 0) + self:SetLightPower(20,self.Panel.BrY > 0) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrY",self.Panel.BrY > 0) + self:SetPackedBool("DoorsWC",self.Panel.DoorsWC > 0) local TW18 = 0 - if Panel.SSN > 0 then + if self.Panel.SSN > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags @@ -282,24 +334,24 @@ function ENT:Think() self.BD2:TriggerInput("Set",self.PassengerDoor and 1 or 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0)) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) --self:SetPackedBool("VPR",self.RST.Value > 0 and self.Panel["V1"] > 0) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", Pneumatic.BrakeCylinderPressure/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) @@ -327,12 +379,12 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end @@ -411,22 +463,23 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 + self.DriversWrenchMissing = false self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then self:PlayOnce("revers_out","cabin",0.7) self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -512,4 +565,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-501/shared.lua b/lua/entities/gmod_subway_81-501/shared.lua index e9d40df..58f1403 100644 --- a/lua/entities/gmod_subway_81-501/shared.lua +++ b/lua/entities/gmod_subway_81-501/shared.lua @@ -24,15 +24,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.6}, {Vector(-3,-60, 62),300,0.6}, @@ -437,8 +428,6 @@ function ENT:PostInitializeSystems() self.Electric:TriggerInput("Type",self.Electric.NVL) end -ENT.NumberRanges = {{6027,6128}} - ENT.SubwayTrain = { Type = "E", Name = "Ema", diff --git a/lua/entities/gmod_subway_81-502/cl_init.lua b/lua/entities/gmod_subway_81-502/cl_init.lua index 19551a7..dbf6a92 100644 --- a/lua/entities/gmod_subway_81-502/cl_init.lua +++ b/lua/entities/gmod_subway_81-502/cl_init.lua @@ -46,7 +46,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ClientProps["pult1"] = { model = "models/metrostroi_train/81-502/controller_b.mdl", @@ -71,75 +70,63 @@ ENT.ClientProps["panel2"] = { ENT.ClientProps["panel1_04"] = { model = "models/metrostroi_train/81-502/indicators/ars_nch.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel1_0"] = { model = "models/metrostroi_train/81-502/indicators/ars_0.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel1_40"] = { model = "models/metrostroi_train/81-502/indicators/ars_40.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel1_60"] = { model = "models/metrostroi_train/81-502/indicators/ars_60.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel1_70"] = { model = "models/metrostroi_train/81-502/indicators/ars_70.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel1_80"] = { model = "models/metrostroi_train/81-502/indicators/ars_80.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_04"] = { model = "models/metrostroi_train/81-502/indicators/indicator_nch.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_0"] = { model = "models/metrostroi_train/81-502/indicators/indicator_0.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_40"] = { model = "models/metrostroi_train/81-502/indicators/indicator_40.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_60"] = { model = "models/metrostroi_train/81-502/indicators/indicator_60.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_70"] = { model = "models/metrostroi_train/81-502/indicators/indicator_70.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["panel2_80"] = { model = "models/metrostroi_train/81-502/indicators/indicator_80.mdl", pos = Vector(0,0,0), - ang = Angle(0,0,0), - color = Color(200,200,200), + ang = Angle(0,0,0) } ENT.ClientProps["Ema_salon2"] = { model = "models/metrostroi_train/81-508/81-508_underwagon.mdl", @@ -167,44 +154,28 @@ ENT.ButtonMap["Lamps1_1"] = { buttons = { {ID = "!LLampAutodrive", x=12, y=16, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160) ,var="CPS_AV", - lcolor = Color(255,180,160),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,180,160),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160) ,var="CPS_AV"} }}, {ID = "!LLamp2", x=12, y=16 + 38.9*1, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_2", - lcolor = Color(255,150,110),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,150,110),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_2"} }}, {ID = "!LLamp1", x=12, y=16 + 38.9*2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_1", - lcolor = Color(105,217,115),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_1"} }}, {ID = "!LLamp6", x=12, y=16 + 38.9*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_6", - lcolor = Color(255,150,110),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,150,110),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_6"} }}, {ID = "!LDoorsWag", x=12, y=16 + 38.9*4, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(80,150,255) ,var="DoorsWC", - lcolor = Color(80,150,255),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(80,150,255),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(80,150,255) ,var="DoorsWC"} }}, {ID = "!LDoors", x=12, y=16 + 38.9*5, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160),var="CPS_SD", - lcolor = Color(255,180,160),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,180,160),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160),var="CPS_SD"} }}, {ID = "!LGreenRP", x=12, y=16 + 38.9*6, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",color = Color(105,217,115),z = 0,var="CPS_RP", - lcolor = Color(105,217,115),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",color = Color(105,217,115),z = 0,var="CPS_RP"} }}, {ID = "!LRedRP", x=12, y=16 + 38.9*7, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",color = Color(255,100,60) ,z = 0,var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end, - lcolor = Color(255,100,60) ,lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,100,60),z=3, } + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",color = Color(255,100,60) ,z = 0,var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end} }}, } } @@ -218,44 +189,28 @@ ENT.ButtonMap["Lamps1_2"] = { buttons = { {ID = "!RLampAutodrive", x=12, y=16, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160) ,var="CPS_AV", - lcolor = Color(255,180,160),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,180,160),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160) ,var="CPS_AV"} }}, {ID = "!RLamp2", x=12, y=16 + 38.9*1, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_2", - lcolor = Color(255,150,110),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,150,110),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110),var="CPS_2"} }}, {ID = "!RLamp1", x=12, y=16 + 38.9*2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_1", - lcolor = Color(105,217,115),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_1"} }}, {ID = "!RLamp6", x=12, y=16 + 38.9*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110) ,var="CPS_6", - lcolor = Color(255,150,110),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,150,110),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,150,110) ,var="CPS_6"} }}, {ID = "!RDoorsWag", x=12, y=16 + 38.9*4, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(80,150,255) ,var="DoorsWC", - lcolor = Color(80,150,255),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(80,150,255),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(80,150,255) ,var="DoorsWC"} }}, {ID = "!RDoors", x=12, y=16 + 38.9*5, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160),var="CPS_SD", - lcolor = Color(255,180,160),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,180,160),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,180,160),var="CPS_SD"} }}, {ID = "!RGreenRP", x=12, y=16 + 38.9*6, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_RP", - lcolor = Color(105,217,115),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(105,217,115),var="CPS_RP"} }}, {ID = "!RRedRP", x=12, y=16 + 38.9*7, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,100,60) ,var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end, - lcolor = Color(255,100,60),lz = 20,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.1,size=0.25,scale=0.09,color=Color(255,100,60),z=3, } + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 0,color = Color(255,100,60) ,var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end} }}, } } @@ -270,78 +225,61 @@ ENT.ButtonMap["Lamps2_1"] = { buttons = { {ID = "!CPS_KS",x=19.2+5.9, y=36.8+24.75*-1+2.2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(105,217,115), var="CPS_KS"}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(105,217,115),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(105,217,115), var="CPS_KS"} }}, {ID = "!CPS_AV",x=19.2+23.8*2-6.2, y=36.8+24.75*-1+2.2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(105,217,115), var="CPS_AV"}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(105,217,115),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(105,217,115), var="CPS_AV"} }}, {ID = "!CPS_4", x=19.2+23.8*0, y=36.8+24.75*0, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,50,45), var="CPS_4",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,50,45),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,50,45), var="CPS_4"} }}, {ID = "!CPS_5", x=19.2+23.8*1, y=36.8+24.75*0, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_5",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_5"} }}, {ID = "!CPS_DT",x=19.2+23.8*2, y=36.8+24.75*0, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_DT",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,180,100),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_DT"} }}, {ID = "!CPS_1", x=19.2+23.8*0, y=36.8+24.75*1, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_1",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_1"} }}, {ID = "!CPS_20",x=19.2+23.8*1, y=36.8+24.75*1, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_20",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_20"} }}, {ID = "!CPS_6", x=19.2+23.8*2, y=36.8+24.75*1, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_6",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,180,100),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_6"} }}, {ID = "!CPS_2", x=19.2+23.8*1, y=36.8+24.75*2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_2",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,180,100),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_2"} }}, {ID = "!CPS_1P",x=19.2+23.8*2, y=36.8+24.75*2, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_1P",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,180,100),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_1P"} }}, {ID = "!CPS_SN1",x=19.2+23.8*0-4.1, y=36.8+24.75*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(255,50,45), var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(255,50,45),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(255,50,45), var="CPS_SN1",getfunc = function(ent,_,_,var) return ent:GetPackedRatio(var) end} }}, {ID = "!CPS_SN2",x=19.2+23.8*0+3.7, y=36.8+24.75*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(255,50,45), var="CPS_SN2"}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(255,50,45),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(255,50,45), var="CPS_SN2"} }}, {ID = "!CPS_3", x=19.2+23.8*1, y=36.8+24.75*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_3",}, - sprite = {bright=0.2,size=0.25,scale=0.03,color=Color(255,180,100),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,180,100), var="CPS_3"} }}, {ID = "!CPS_SD1",x=19.2+23.8*2-4.1, y=36.8+24.75*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(80,140,255), var="CPS_SD"}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(80,140,255),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(80,140,255), var="CPS_SD"} }}, {ID = "!CPS_SD2",x=19.2+23.8*2+3.7, y=36.8+24.75*3, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(80,140,255), var="CPS_SD"}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(80,140,255),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3,color = Color(80,140,255), var="CPS_SD"} }}, {ID = "!CPS_RP", x=19.2+23.8*0, y=36.8+24.75*4, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_RP",}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(105,217,115),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(105,217,115), var="CPS_RP"} }}, {ID = "!CPS_DV", x=19.2+23.8*2, y=36.8+24.75*4, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,50,45), var="CPS_DV",}, - sprite = {bright=0.2,size=0.25,scale=0.015,color=Color(255,50,45),z=3,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -4,color = Color(255,50,45), var="CPS_DV"} }}, } } @@ -364,19 +302,6 @@ local function addTW10Cosume(panelName,ignores) end end - -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} ENT.ButtonMap["Lamps2_2"] = { pos = Vector(461.5-0.9,-15,10.5+8), ang = Angle(0,-90+14.315,90), @@ -388,43 +313,21 @@ ENT.ButtonMap["Lamps2_2"] = { buttons = { {ID = "!Speedometer1", x=90,y=18,w=19,h=29,tooltip="", model = { name="SSpeed2",model = "models/metrostroi_train/81-502/indicators/indicators.mdl", color=Color(175,250,20),skin=0,z=-1,ang=Angle(0,0,90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("CPS_Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.055,vscale=0.065,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetNW2Int("ALSSpeed")*0.1)%10] - end} }}, {ID = "!Speedometer2", x=113,y=18,w=19,h=29,tooltip="", model = { name="SSpeed1",model = "models/metrostroi_train/81-502/indicators/indicators.mdl", color=Color(175,250,20),skin=0,z=-1,ang=Angle(0,0,90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("CPS_Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.055,vscale=0.065,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetNW2Int("ALSSpeed"))%10] - end} }}, {ID = "!CPS_Pd",x=64, y=85, radius=5, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -2,color = Color(255,50,45), var="CPS_Pd"}, - sprite = {bright=0.4,size=0.25,scale=0.015,color=Color(255,50,45),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -2,color = Color(255,50,45), var="CPS_Pd"} }}, - {ID = "!ALS_04",x=29, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(255, 77, 97),z=0,lamp = "light_04", hidden = "panel2_04"}, - }}, - {ID = "!ALS_00",x=60+18.5*0, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(255, 77, 97),z=0,lamp = "light_0", hidden = "panel2_0"}, - }}, - {ID = "!ALS_40",x=60+18.5*1, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(255, 255, 134),z=0,lamp = "light_40", hidden = "panel2_40"}, - }}, - {ID = "!ALS_60",x=60+18.5*2, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(94, 255, 213),z=0,lamp = "light_60", hidden = "panel2_60"}, - }}, - {ID = "!ALS_70",x=60+18.5*3, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(94, 255, 213),z=0,lamp = "light_70", hidden = "panel2_70"}, - }}, - {ID = "!ALS_80",x=60+18.5*4, y=91, w=13,h=13, tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.04,color=Color(94, 255, 213),z=0,lamp = "light_80", hidden = "panel2_80"}, - }}, + {ID = "!ALS_04",x=29, y=91, w=13,h=13, tooltip=""}, + + {ID = "!ALS_00",x=60+18.5*0, y=91, w=13,h=13, tooltip=""}, + {ID = "!ALS_40",x=60+18.5*1, y=91, w=13,h=13, tooltip=""}, + {ID = "!ALS_60",x=60+18.5*2, y=91, w=13,h=13, tooltip=""}, + {ID = "!ALS_70",x=60+18.5*3, y=91, w=13,h=13, tooltip=""}, + {ID = "!ALS_80",x=60+18.5*4, y=91, w=13,h=13, tooltip=""}, } } @@ -436,7 +339,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -451,12 +354,10 @@ ENT.ButtonMap["Main1_2"] = { buttons = { {ID = "!LMK2", x=56, y=14, radius=15, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,180,100), var="LMK" }, - sprite = {bright=0.2,size=0.25,scale=0.04,color=Color(255,180,100),z=2,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,180,100), var="LMK" } }}, {ID = "!LVRD2", x=93, y=14, radius=15, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(105,217,115), var="CPS_Pd"}, - sprite = {bright=0.2,size=0.25,scale=0.04,color=Color(105,217,115),z=2,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(105,217,115), var="CPS_Pd"} }}, } } @@ -470,16 +371,13 @@ ENT.ButtonMap["BPS"] = { buttons = { {ID = "!BPSon", x=14, y=19, radius=15, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(105,217,115), var="BPSon"}, - sprite = {bright=0.2,size=0.25,scale=0.04,color=Color(105,217,115),z=2,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(105,217,115), var="BPSon"} }}, {ID = "!BPSErr", x=14, y=57, radius=15, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,180,100), var="BPSErr"}, - sprite = {bright=0.2,size=0.25,scale=0.04,color=Color(255,180,100),z=2,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,180,100), var="BPSErr"} }}, {ID = "!BPSFail", x=14, y=95, radius=15, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,50,45), var="BPSFail"}, - sprite = {bright=0.2,size=0.25,scale=0.04,color=Color(255,50,45),z=2,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_big_502.mdl",z = -7,color = Color(255,50,45), var="BPSFail"} }}, } } @@ -493,12 +391,10 @@ ENT.ButtonMap["NMnUAVA"] = { buttons = { {ID = "!NMPressureLow", x=20, y=7, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="NMLow"}, - sprite = {bright=0.5,size=0.25,scale=0.015,color=Color(255,50,45),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="NMLow"} }}, {ID = "!UAVATriggered", x=20, y=34, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="UAVATriggered"}, - sprite = {bright=0.5,size=0.25,scale=0.015,color=Color(255,50,45),z=0,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="UAVATriggered"} }}, } } @@ -525,14 +421,11 @@ ENT.ButtonMap["Main1"] = { }}, {ID = "!LKTLight", x=128.3, y=19.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 5,color = Color(240,200,160), var="CPS_DT" , - lcolor=Color(255,170,140),lz = 20,lbright=1.5,lfov=110,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=0.25,scale=0.06,color=Color(255,170,140),z=6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 5,color = Color(240,200,160), var="CPS_DT" } }}, {ID = "!LKVDLight", x=128.3, y=45, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", ignorepanel = true, skin = 2, z = -10, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=22.0,var="LKVD",color=Color(255,1,50)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,1,50)}, }}, @@ -612,7 +505,6 @@ ENT.ButtonMap["Main1"] = { var="VUD",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -633,9 +525,7 @@ ENT.ButtonMap["Main2"] = { sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "!LMK", x=30+37, y=40-3.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.8,color = Color(255,255,255), var="LMK", - lcolor=Color(20,255,50),lz = 20,lbright=0.5,lfov=110,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=0.25,scale=0.06,color=Color(20,255,50),z=6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.8,color = Color(255,255,255), var="LMK" } }}, {ID = "VZPToggle", x=30+40*2, y=40-3.3, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-502/buttons/tumbler_w_a.mdl",ang = 180,z=1, @@ -649,9 +539,7 @@ ENT.ButtonMap["Main2"] = { sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "!L16", x=30+40*4+6.3, y=40-3.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.8,color = Color(255,255,255), var="L16", - lcolor=Color(20,255,50),lz = 20,lbright=0.5,lfov=110,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=0.25,scale=0.06,color=Color(20,255,50),z=6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.8,color = Color(255,255,255), var="L16" } }}, {ID = "KRZDSet", x=30+40*5, y=40-3.3, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_button_metal.mdl",ang = 180-30,z=0,vmin=1,vmax=0, @@ -693,7 +581,6 @@ ENT.ButtonMap["Main2"] = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = 180-20,z=11,vmin=0,vmax=0.25, var="KDPK",speed=2,disableinv="KDPSet", sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - noTooltip = true, }}, @@ -704,8 +591,7 @@ ENT.ButtonMap["Main2"] = { sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, {ID = "!RU", x=30+40*1-3, y=155.5, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 4.6,color = Color(240,200,160), var="LRU" }, - sprite = {bright=0.2,size=0.25,scale=0.06,color=Color(240,200,160),z=6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_w_502.mdl",z = 4.6,color = Color(240,200,160), var="LRU" } }}, {ID = "RingSet", x=30+40*2-7, y=155, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_button_metal.mdl",ang = 180-30,z=0,vmin=1,vmax=0, @@ -734,7 +620,6 @@ ENT.ButtonMap["Main2"] = { var="VUD",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -838,7 +723,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -851,16 +736,16 @@ ENT.ClientSounds["EmergencyBrakeValve"] = {{"stopkran",function() return "discon ENT.ButtonMap["AVMain"] = { - pos = Vector(402.3,38.8-1,36.3), + pos = Vector(403.5,40.8,42), ang = Angle(0,90,90), - width = 335, - height = 380, + width = 290, + height = 270, scale = 0.0625, - hide=0.8, + hide = 0.8, buttons = { - {ID = "AVToggle", x=0, y=0, w=300, h=380, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_av8r.mdl", z=80, ang = Angle(90,0,0), + {ID = "AVToggle", x=0, y=0, w=290, h=270, tooltip="", model = { + model = "models/metrostroi_train/81-710/ezh3_av8r.mdl",x=-35, y=140, z=55, ang = Angle(90,0,0), var="AV",speed=0.85, vmin=0.73,vmax=0.80, sndvol = 1, snd = function(val) return val and "av8_on" or "av8_off" end, }}, @@ -901,9 +786,7 @@ ENT.ButtonMap["VRD2"] = { sndvol = 0.10, snd = function(val) return val and "button1_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "!LVRD", x=20, y=60, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.5,color = Color(255,255,255),var="LVRD", - lcolor=Color(20,255,50),lz = 20,lbright=1.5,lfov=110,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=0.25,scale=0.06,color=Color(20,255,50),z=6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/lamp_g_502.mdl",z = 3.5,color = Color(255,255,255),var="LVRD"} }}, } } @@ -1039,8 +922,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -1080,7 +963,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -1092,7 +975,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["HVMeters"] = { @@ -1104,8 +987,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesVoltage", x=0,y=0,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!EnginesCurrent", x=0,y=79,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, + {ID = "!EnginesVoltage", x=0,y=0,w=66,h=72,tooltip=""}, + {ID = "!EnginesCurrent", x=0,y=79,w=66,h=72,tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -1117,18 +1000,18 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0,y=0,w=100,h=85,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0,y=0,w=100,h=85,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { - pos = Vector(404,32.6,23.2), - ang = Angle(0,89,90), + pos = Vector(403.4,36.9,23.2), + ang = Angle(0,267,90), width = 68, height = 74, scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=68,h=74,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=68,h=74,tooltip=""}, } } ENT.ButtonMap["ALSPanel"] = { @@ -1140,24 +1023,12 @@ ENT.ButtonMap["ALSPanel"] = { scale = 0.0625, buttons = { - {ID = "!ALS_80", x=25,y=28+39.5*0,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(94, 255, 213),z=5,lamp = "light_80", hidden = "panel1_80"}, - }}, - {ID = "!ALS_70", x=25,y=28+39.5*1,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(94, 255, 213),z=5,lamp = "light_70", hidden = "panel1_70"}, - }}, - {ID = "!ALS_60", x=25,y=28+39.5*2,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(94, 255, 213),z=5,lamp = "light_60", hidden = "panel1_60"}, - }}, - {ID = "!ALS_40", x=25,y=28+39.5*3,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(255, 255, 134),z=5,lamp = "light_40", hidden = "panel1_40"}, - }}, - {ID = "!ALS_00", x=25,y=28+39.5*4,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(255, 77, 97),z=5,lamp = "light_0", hidden = "panel1_0"}, - }}, - {ID = "!ALS_04", x=25,y=28+39.5*5,radius=25,tooltip="", model = { - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(255, 77, 97),z=5,lamp = "light_04", hidden = "panel1_04"}, - }}, + {ID = "!ALS_80", x=25,y=28+39.5*0,radius=25,tooltip=""}, + {ID = "!ALS_70", x=25,y=28+39.5*1,radius=25,tooltip=""}, + {ID = "!ALS_60", x=25,y=28+39.5*2,radius=25,tooltip=""}, + {ID = "!ALS_40", x=25,y=28+39.5*3,radius=25,tooltip=""}, + {ID = "!ALS_00", x=25,y=28+39.5*4,radius=25,tooltip=""}, + {ID = "!ALS_04", x=25,y=28+39.5*5,radius=25,tooltip=""}, } } @@ -1316,7 +1187,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1332,7 +1202,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 0.2, snd = function(val) return val and "pneumo_TL_open_background" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1343,10 +1212,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -1369,10 +1241,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -1402,7 +1277,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -1431,7 +1305,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -1450,7 +1324,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } @@ -1491,7 +1365,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1507,7 +1380,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1523,7 +1395,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1549,7 +1420,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1995,34 +1865,10 @@ ENT.ClientProps["WhiteLights"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(169,130,88), brightness = 3 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(465,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [20] = { "headlight", Vector( 425,-56,-70),Angle(0,-90,0),Color(255,220,180),brightness = 0.3,distance = 300 ,fov=120,shadows = 1, texture="effects/flashlight/soft", hidden="Ema_salon2" }, - [21] = { "headlight", Vector(445,-55,40), Angle(75, 70,45), Color(190, 130, 88), fov=125,farz=80,brightness = 1.5,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden="Lamps_pult"}, - [22] = { "headlight", Vector(440,-60,31), Angle(20, 25,0), Color(200, 140, 98), fov=120,farz=100,brightness = 1,shadows = 1, texture = "models/metrostroi_train/equipment/headlight2", hidden="Lamps_pult"}, - -- Interior - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - -- Cabin - [23] = { "dynamiclight", Vector(425,-10.0,40), Angle(0,0,0), Color(255,255,255), brightness = 0.0003, distance = 300, hidden="Ema_salon2"}, - - - [15] = { "light",Vector(414.5,69.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(414.5,69.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(414.5,69.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(414.5,-66.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(414.5,-66.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(414.5,-66.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [5] = { "light",Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2}, - [6] = { "light",Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2}, - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2}, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2}, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2}, - - Lamps_pult = {"light", Vector(446.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [12] = { "headlight",Vector( 425,-56,-70),Angle(0,-90,0),Color(255,220,180),brightness = 0.3,distance = 300 ,fov=120,shadows = 1, texture="effects/flashlight/soft" }, + [22] = { "headlight", Vector(445,-55,40), Angle(75, 70,45), Color(190, 130, 88), fov=125,farz=80,brightness = 1.5,shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, + [23] = { "headlight", Vector(440,-60,31), Angle(20, 25,0), Color(200, 140, 98), fov=120,farz=100,brightness = 1,shadows = 1, texture = "models/metrostroi_train/equipment/headlight2"}, + --[24] = { "headlight", Vector(440,-51,-14), Angle(45, 0,0), Color(200, 140, 98), fov=45,farz=50,brightness = 0.5,shadows = 0,}, } function ENT:Initialize() @@ -2060,34 +1906,20 @@ function ENT:Think() return end - local Lamps = self:GetPackedRatio("LampsStrength") - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) + local Lamps = self:GetPackedRatio("LampsStrength") + local half1 = self:GetPackedBool("Lamps_half1") + local half2 = self:GetPackedBool("Lamps_half2") + local emer1 = self:GetPackedBool("lamps_emer1") + local emer2 = self:GetPackedBool("Lamps_emer2") + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",(not half1 and emer1) and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false)) + local half1 = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) + local half2 = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end - self:SetLightPower(20,self:GetPackedBool("SOSD")) + self:SetLightPower(12,IsValid(self.ClientEnts.Ema_salon) and self:GetPackedBool("SOSD")) -- Parking brake animation self.TrueBrakeAngle = self.TrueBrakeAngle or 0 @@ -2104,78 +1936,52 @@ function ENT:Think() end local typ = self:GetNW2Int("EMAType",1) - if self.Type ~= typ then - self:ShowHide("pult1",typ == 1) - self:ShowHide("pult2",typ >= 2) - self:HidePanel("Main1",typ ~= 1) - self:HidePanel("Main1_2",typ ~= 1) - self:HidePanel("BPS",typ ~= 1) - self:HidePanel("NMnUAVA",typ ~= 1) - self:HidePanel("Speedometer",typ == 3) - self:HidePanel("ALSPanel",typ == 3) - self:HidePanel("VRD",typ ~= 1) - self:HidePanel("VRD2",typ == 1) - self:HidePanel("VBA",typ == 1) - self:HidePanel("Main2",typ < 2) - self:ShowHide("panel1",typ < 3) - self:ShowHide("panel2",typ == 3) - self:ShowHide("panel1_04",typ < 3) - self:ShowHide("panel1_0",typ < 3) - self:ShowHide("panel1_40",typ < 3) - self:ShowHide("panel1_60",typ < 3) - self:ShowHide("panel1_70",typ < 3) - self:ShowHide("panel1_80",typ < 3) - self:ShowHide("panel2_04",typ == 3) - self:ShowHide("panel2_0",typ == 3) - self:ShowHide("panel2_40",typ == 3) - self:ShowHide("panel2_60",typ == 3) - self:ShowHide("panel2_70",typ == 3) - self:ShowHide("panel2_80",typ == 3) - self:HidePanel("Lamps1_1",typ == 3) - self:HidePanel("Lamps1_2",typ == 3) - self:HidePanel("Lamps2_1",typ ~= 3) - self:HidePanel("Lamps2_2",typ ~= 3) - self:ShowHide("speed_o",typ ~= 3) - self:HidePanel("RCAV3",typ==1) - self:HidePanel("RCAV4",typ==1) - self:HidePanel("RCAV5",typ==1) - self:HidePanel("RCARS",typ~=1) - self:HidePanel("RCBPS",typ~=1) - self:ShowHide("rcars_wrench",typ == 1) - self:ShowHide("rcbps_wrench",typ == 1) - self:ShowHide("rcav3_wrench",typ == 1) - self:ShowHide("rcav4_wrench",typ ~= 1) - self:ShowHide("rcav5_wrench",typ ~= 1) - end - local light_04 = self:Animate("light_04",self:GetPackedBool("ARS_04") and 1 or 0,0,1,5,false) - local light_0 = self:Animate("light_0" ,self:GetPackedBool("ARS_00") and 1 or 0,0,1,5,false) - local light_40 = self:Animate("light_40",self:GetPackedBool("ARS_40") and 1 or 0,0,1,5,false) - local light_60 = self:Animate("light_60",self:GetPackedBool("ARS_60") and 1 or 0,0,1,5,false) - local light_80 = self:Animate("light_80",self:GetPackedBool("ARS_70") and 1 or 0,0,1,8,false) - local light_70 = self:Animate("light_70",self:GetPackedBool("ARS_80") and 1 or 0,0,1,6,false) + self:ShowHide("pult1",typ == 1) + self:ShowHide("pult2",typ >= 2) + self:HidePanel("Main1",typ ~= 1) + self:HidePanel("Main1_2",typ ~= 1) + self:HidePanel("BPS",typ ~= 1) + self:HidePanel("NMnUAVA",typ ~= 1) + self:HidePanel("Speedometer",typ == 3) + self:HidePanel("ALSPanel",typ == 3) + self:HidePanel("VRD",typ ~= 1) + self:HidePanel("VRD2",typ == 1) + self:HidePanel("VBA",typ == 1) + self:HidePanel("Main2",typ < 2) + self:ShowHide("panel1",typ < 3) + self:ShowHide("panel2",typ == 3) + self:ShowHide("panel1_04",typ < 3 and self:GetPackedBool("ARS_04")) + self:ShowHide("panel1_0",typ < 3 and self:GetPackedBool("ARS_00")) + self:ShowHide("panel1_40",typ < 3 and self:GetPackedBool("ARS_40")) + self:ShowHide("panel1_60",typ < 3 and self:GetPackedBool("ARS_60")) + self:ShowHide("panel1_70",typ < 3 and self:GetPackedBool("ARS_70")) + self:ShowHide("panel1_80",typ < 3 and self:GetPackedBool("ARS_80")) + self:ShowHide("panel2_04",typ == 3 and self:GetPackedBool("ARS_04")) + self:ShowHide("panel2_0",typ == 3 and self:GetPackedBool("ARS_00")) + self:ShowHide("panel2_40",typ == 3 and self:GetPackedBool("ARS_40")) + self:ShowHide("panel2_60",typ == 3 and self:GetPackedBool("ARS_60")) + self:ShowHide("panel2_70",typ == 3 and self:GetPackedBool("ARS_70")) + self:ShowHide("panel2_80",typ == 3 and self:GetPackedBool("ARS_80")) + self:HidePanel("Lamps1_1",typ == 3) + self:HidePanel("Lamps1_2",typ == 3) + self:HidePanel("Lamps2_1",typ ~= 3) + self:HidePanel("Lamps2_2",typ ~= 3) + self:ShowHide("speed_o",typ ~= 3) + self:HidePanel("RCAV3",typ~=3) + self:HidePanel("RCAV4",typ~=3) + self:HidePanel("RCAV5",typ~=3) + self:HidePanel("RCARS",typ==3) + self:HidePanel("RCBPS",typ==3) + self:ShowHide("rcav3_wrench",typ == 3 and self.RCAV3ResetTime and CurTime()-self.RCAV3ResetTime<1.5) + self:ShowHide("rcav4_wrench",typ == 3 and self.RCAV4ResetTime and CurTime()-self.RCAV4ResetTime<1.5) + self:ShowHide("rcav5_wrench",typ == 3 and self.RCAV5ResetTime and CurTime()-self.RCAV5ResetTime<1.5) + self:ShowHide("rcars_wrench",typ ~= 3 and self.RCARSResetTime and CurTime()-self.RCARSResetTime<1.5) + self:ShowHide("rcbps_wrench",typ ~= 3 and self.RCBPSResetTime and CurTime()-self.RCBPSResetTime<1.5) if typ < 3 then self:Animate("speed_o",self:GetPackedRatio("Speed"),0.337,0.663,60,3) - self:ShowHideSmooth("panel1_04", light_04) - self:ShowHideSmooth("panel1_0", light_0) - self:ShowHideSmooth("panel1_40", light_40) - self:ShowHideSmooth("panel1_60", light_60) - self:ShowHideSmooth("panel1_70", light_80) - self:ShowHideSmooth("panel1_80", light_70) - else - self:ShowHideSmooth("panel2_04", light_04) - self:ShowHideSmooth("panel2_0", light_0) - self:ShowHideSmooth("panel2_40", light_40) - self:ShowHideSmooth("panel2_60", light_60) - self:ShowHideSmooth("panel2_70", light_80) - self:ShowHideSmooth("panel2_80", light_70) - end - if typ == 1 then - self:ShowHide("rcars_wrench",self.RCARSResetTime and CurTime()-self.RCARSResetTime<1.5) - self:ShowHide("rcbps_wrench",self.RCBPSResetTime and CurTime()-self.RCBPSResetTime<1.5) if IsValid(self.ClientEnts.rcars_wrench) and self.Anims.RCARSToggle then self.ClientEnts.rcars_wrench:SetPoseParameter("position",1-self.Anims.RCARSToggle.value) end - if IsValid(self.ClientEnts.rcbps_wrench) and self.Anims.RCBPSToggle then self.ClientEnts.rcbps_wrench:SetPoseParameter("position",1-self.Anims.RCBPSToggle.value) end @@ -2188,9 +1994,6 @@ function ENT:Think() self.LastRCBPSValue = self:GetPackedBool("RCBPS") end else - self:ShowHide("rcav3_wrench",self.RCAV3ResetTime and CurTime()-self.RCAV3ResetTime<1.5) - self:ShowHide("rcav4_wrench",self.RCAV4ResetTime and CurTime()-self.RCAV4ResetTime<1.5) - self:ShowHide("rcav5_wrench",self.RCAV5ResetTime and CurTime()-self.RCAV5ResetTime<1.5) if IsValid(self.ClientEnts.rcav3_wrench) and self.Anims.RCAV3Toggle then self.ClientEnts.rcav3_wrench:SetPoseParameter("position",1-self.Anims.RCAV3Toggle.value) end @@ -2229,17 +2032,11 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0,RL) - self:SetLightPower(6,RL > 0,RL) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) - self:SetLightPower("Lamps_pult",PL>0,PL) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower(21,PL>0,PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(23,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -2263,12 +2060,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17, Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20, Bortlamp_y > 0, Bortlamp_y) ---PB self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) @@ -2375,7 +2166,7 @@ function ENT:Think() self:ShowHide("SSpeed2",self:GetPackedBool("LUDS")) local speed = self:GetPackedRatio("CPS_Speed")*100.0 if IsValid(self.ClientEnts["SSpeed1"])then self.ClientEnts["SSpeed1"]:SetSkin(math.floor(speed)%10) end - if IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed/10)%10) end + if IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed/10)) end -- Brake-related sounds local dT = self.DeltaTime @@ -2497,18 +2288,14 @@ function ENT:Think() end end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and self:GetNW2Float("UPOVolume",0.6)*volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) @@ -2572,9 +2359,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-502/init.lua b/lua/entities/gmod_subway_81-502/init.lua index 88b32ac..7ab0d61 100644 --- a/lua/entities/gmod_subway_81-502/init.lua +++ b/lua/entities/gmod_subway_81-502/init.lua @@ -15,7 +15,7 @@ ENT.SyncTable = { "ALS","ARS","Headlights","VSOSD","KB","DriverValveBLDisconnect","DriverValveTLDisconnect", "GV", "R_UPO", - "UAVA","UAVAC","EmergencyBrakeValve" + "UAVA","EmergencyBrakeValve" } ENT.SyncFunctions = { "" @@ -72,7 +72,6 @@ function ENT:Initialize() end self.FrontBogey:SetNWInt("MotorSoundType",0) self.RearBogey:SetNWInt("MotorSoundType",0) - self.FrontCouple.EKKDisconnected = true self.LeftAutoCoil = self:AddAutodriveCoil(self.FrontBogey,false) self.RightAutoCoil = self:AddAutodriveCoil(self.FrontBogey,true) @@ -122,7 +121,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", [KEY_SPACE] = "PB", @@ -185,6 +184,34 @@ function ENT:Initialize() }, } + self.Lights = { + -- Interior + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + -- Cabin + [23] = { "dynamiclight", Vector(425,-10.0,40), Angle(0,0,0), Color(255,255,255), brightness = 0.0001, distance = 300}, + + + [15] = { "light",Vector(414.5,69.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(414.5,69.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(414.5,69.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(414.5,-66.4,37+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(414.5,-66.4,37-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(414.5,-66.4,37-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [5] = { "light",Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [6] = { "light",Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + + [70] = { "headlight", Vector( 450, -60, -47), Angle(45,-90,0), Color(255,255,255), brightness = 0.5, distance = 400 , fov=120, shadows = 1 }, + + } + -- Cross connections in train wires self.TrainWireInverts = { [15] = true, @@ -195,6 +222,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -243,45 +278,57 @@ end function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic - self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("RedLight",Panel.RedLights>0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + local redlights = self.Panel.RedLights>0 + self:SetPackedBool("RedLight",redlights) + self:SetLightPower(5,redlights) + self:SetLightPower(6,redlights) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + self:SetLightPower(23, emerActive1 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) local TW18 = 0 - if Panel.SSN > 0 then + if self.Panel.SSN > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end if self.EMAType == 1 then - self:SetPackedBool("CPS_AV",Panel.SSD > 0) + self:SetPackedBool("CPS_AV",self.Panel.SSD > 0) self:SetPackedBool("BPSon",self.BPS.PowerLamp > 0) self:SetPackedBool("BPSErr",self.BPS.ErrorLamp > 0) self:SetPackedBool("BPSFail",self.BPS.FailLamp > 0) @@ -293,10 +340,11 @@ function ENT:Think() self:SetPackedBool("ARS_70",self.MARS.F2 > 0) self:SetPackedBool("ARS_80",self.MARS.F1 > 0) self:SetPackedBool("KSRing",false) - self:SetPackedBool("MRing",Panel.Ring > 0) + self:SetPackedBool("MRing",self.Panel.Ring > 0) self:SetPackedBool("LKVD",self.MARS.KVD > 0) - self:SetPackedBool("NMLow",Panel.NMLow > 0) - self:SetPackedBool("UAVATriggered",Panel.UAVATriggered > 0 and CurTime()%0.4>0.2) + self:SetPackedBool("NMLow",self.Panel.NMLow > 0) + self:SetPackedBool("UAVATriggered",self.Panel.UAVATriggered > 0 and CurTime()%0.4>0.2) + else self:SetPackedBool("CPS_AV",false) @@ -307,7 +355,7 @@ function ENT:Think() self:SetPackedBool("ARS_60",self.ALSCoil.F3) self:SetPackedBool("ARS_70",self.ALSCoil.F2) self:SetPackedBool("ARS_80",self.ALSCoil.F1) - self:SetPackedBool("KSRing",Panel.Ring > 0) + self:SetPackedBool("KSRing",self.Panel.Ring > 0) self:SetPackedBool("MRing",false) if self.PB.Value > 0 and not self:GetDriver() then self.PB:TriggerInput("Set",0) end end @@ -316,33 +364,39 @@ function ENT:Think() --print(self.RRT.Value,self.RUT.Value)--self.Scheme["25A"],self["RRTpod"]) self:SetPackedRatio("CPS_SN1",math.Clamp(TW18^0.7,0,1)) self:SetPackedBool("CPS_KS",self.KSAUP.Power > 0) - self:SetPackedBool("CPS_4",Panel.S4 > 0) - self:SetPackedBool("CPS_5",Panel.S5 > 0) - self:SetPackedBool("CPS_20",Panel.S20 > 0) - self:SetPackedBool("CPS_6",Panel.S6 > 0) - self:SetPackedBool("CPS_1",Panel.S1 > 0) - self:SetPackedBool("CPS_1P",Panel.S1P > 0) - self:SetPackedBool("CPS_3",Panel.S3 > 0) - self:SetPackedBool("CPS_2",Panel.S2 > 0) - self:SetPackedBool("CPS_RP",Panel.GreenRP > 0) - self:SetPackedBool("CPS_SD",Panel.SSD > 0) - self:SetPackedBool("CPS_DT",Panel.SDT > 0) + self:SetPackedBool("CPS_4",self.Panel.S4 > 0) + self:SetPackedBool("CPS_5",self.Panel.S5 > 0) + self:SetPackedBool("CPS_20",self.Panel.S20 > 0) + self:SetPackedBool("CPS_6",self.Panel.S6 > 0) + self:SetPackedBool("CPS_1",self.Panel.S1 > 0) + self:SetPackedBool("CPS_1P",self.Panel.S1P > 0) + self:SetPackedBool("CPS_3",self.Panel.S3 > 0) + self:SetPackedBool("CPS_2",self.Panel.S2 > 0) + self:SetPackedBool("CPS_RP",self.Panel.GreenRP > 0) + self:SetPackedBool("CPS_SD",self.Panel.SSD > 0) + self:SetPackedBool("CPS_DT",self.Panel.SDT > 0) --print(self.Electric.Cosume) self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("LMK",Panel.LMK > 0) - self:SetPackedBool("L16",Panel.L16 > 0) - self:SetPackedBool("LRU",Panel.LRU > 0) - self:SetPackedBool("LVRD",Panel.RD > 0) - self.SOSD = Panel.SOSD > 0 + self:SetPackedBool("LMK",self.Panel.LMK > 0) + self:SetPackedBool("L16",self.Panel.L16 > 0) + self:SetPackedBool("LRU",self.Panel.LRU > 0) + self:SetPackedBool("LVRD",self.Panel.RD > 0) + self.SOSD = self.Panel.SOSD > 0 self:SetPackedBool("SOSD",self.SOSD) - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrY",Panel.BrY > 0) - self:SetPackedBool("DoorsWC",Panel.DoorsWC > 0) - self:SetPackedBool("CPS_4",Panel.S4 > 0) - self:SetPackedBool("CPS_4",Panel.S4 > 0) + self:SetLightPower(15,self.Panel.DoorsW > 0) + self:SetLightPower(16,self.Panel.GreenRP > 0) + self:SetLightPower(17,self.Panel.BrY > 0) + self:SetLightPower(18,self.Panel.DoorsW > 0) + self:SetLightPower(19,self.Panel.GreenRP > 0) + self:SetLightPower(20,self.Panel.BrY > 0) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrY",self.Panel.BrY > 0) + self:SetPackedBool("DoorsWC",self.Panel.DoorsWC > 0) + self:SetPackedBool("CPS_4",self.Panel.S4 > 0) + self:SetPackedBool("CPS_4",self.Panel.S4 > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -352,26 +406,26 @@ function ENT:Think() self.BD2:TriggerInput("Set",self.PassengerDoor and 1 or 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0)) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) - self:SetPackedBool("VPR",Panel.VPR > 0) - self:SetPackedBool("LUDS",Panel.V1 > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) + self:SetPackedBool("VPR",self.Panel.VPR > 0) + self:SetPackedBool("LUDS",self.Panel.V1 > 0) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", Pneumatic.BrakeCylinderPressure/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) @@ -403,12 +457,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -483,22 +537,23 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 + self.DriversWrenchMissing = false self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then self:PlayOnce("revers_out","cabin",0.7) self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -632,3 +687,16 @@ function ENT:OnCouple(train,isfront) end self.BaseClass.OnCouple(self,train,isfront) end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-502/shared.lua b/lua/entities/gmod_subway_81-502/shared.lua index eda8d53..f5a76dd 100644 --- a/lua/entities/gmod_subway_81-502/shared.lua +++ b/lua/entities/gmod_subway_81-502/shared.lua @@ -25,15 +25,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.6}, {Vector(-3,-60, 62),300,0.6}, @@ -499,11 +490,8 @@ ENT.Spawner = { }, spawnfunc = function(i,tbls,tblt) local WagNum = tbls.WagNum - if tbls.EWagons and i==1 then - tbls.EID = 2+math.floor(math.random()*(WagNum-2)) - end if 11 and (tbls.EID==i or math.random()>0.9)) and "gmod_subway_81-703_int" or "gmod_subway_81-501" + return (tbls.EWagons and tbls.EMAType>1 and math.random()>0.9) and "gmod_subway_81-703_int" or "gmod_subway_81-501" else return "gmod_subway_81-502" end @@ -561,7 +549,6 @@ ENT.Spawner = { ent.PassengerDoor = val==4 ent.RearDoor = val==4 else - ent.VU2:TriggerInput("Set",0) ent.FrontDoor = val==4 ent.RearDoor = val==4 end diff --git a/lua/entities/gmod_subway_81-702/cl_init.lua b/lua/entities/gmod_subway_81-702/cl_init.lua index 00430b4..6dff2b9 100644 --- a/lua/entities/gmod_subway_81-702/cl_init.lua +++ b/lua/entities/gmod_subway_81-702/cl_init.lua @@ -40,7 +40,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["PanelLamp"] = { @@ -51,7 +50,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -67,16 +66,13 @@ ENT.ButtonMap["MainL"] = { buttons = { ----Лампы {ID = "!RedRP", x=10,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",z=1,color = Color(178,112,112), var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(255,60,60),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",z=1,color = Color(255,160,160), var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, {ID = "!GreenRP", x=40.71,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",z=1,color = Color(98,178,178), var="GRP"}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(40,255,100),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",z=1,color = Color(140,255,255), var="GRP"} }}, {ID = "!Blue", x=73.50,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",z=1,color = Color(112,140,178), var="SD",}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(60,200,255),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",z=1,color = Color(160,200,255), var="SD",} }}, } } @@ -96,7 +92,6 @@ ENT.ButtonMap["MainB"] = { var="KU7",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, { ID = "KU6Set", x=0+56*1, y=0, w=50,h=90, tooltip="", model = { @@ -207,7 +202,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } @@ -323,8 +318,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -351,7 +346,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU8",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "R_Program1Set",x=0, y=200,w=60,h=100, tooltip="", model = { model = "models/metrostroi_train/81-702/buttons/vu_13b.mdl", z=-3, ang=Angle(-90,0,0), @@ -379,7 +373,7 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesVoltage", x=0, y=0, w=55, h=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesVoltage", x=0, y=0, w=55, h=55, tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -390,7 +384,7 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0, y=0, w=135, h=135, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0, y=0, w=135, h=135, tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -401,7 +395,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=60,y=60,radius=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=60,y=60,radius=60,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -413,7 +407,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=34,y=34,radius=34,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=34,y=34,radius=34,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -424,7 +418,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*100) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip=""}, } } @@ -440,7 +434,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -456,7 +449,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -491,10 +483,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -517,10 +512,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -550,7 +548,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -579,7 +576,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -593,12 +590,12 @@ ENT.ButtonMap["UAVAPanel"] = { buttons = { {ID = "UAVAToggle",x=0, y=0, w=60, h=170, tooltip="", model = { - plomb = {var="UAVAPl", ID="UAVAPl"}, + plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl"}, var="UAVA", sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=170, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=170, tooltip=""}, } } @@ -637,7 +634,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -653,7 +649,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -669,7 +664,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -695,7 +689,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -887,8 +880,8 @@ ENT.ButtonMap["RRI"] = { }}, {ID = "!RRIOn",x=70,y=12.5,radius=10,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13, - lamp = { model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255), getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255)}, + getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }}, } } @@ -918,58 +911,18 @@ ENT.ClientProps["sunprotectors"] = { hide = 2, } ----G Type only preview ----Delete later -ENT.ClientProps["Gglass"] = { - model = "models/metrostroi_train/81-701/glass.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, -} - -ENT.ClientProps["GBluelamp"] = { - model = "models/metrostroi_train/81-701/blue_lamp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, -} - -ENT.ClientProps["GBluelamp2"] = { - model = "models/metrostroi_train/81-701/green_lamp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, -} - -ENT.ClientProps["GBluelamp3"] = { - model = "models/metrostroi_train/81-701/red_lamp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, -} ----Delete here - ENT.ClientProps["mirrors"] = { model = "models/metrostroi_train/81-702/mirrors_d.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 2, } - ---[[ENT.ClientProps["salon2"] = { +ENT.ClientProps["salon2"] = { model = "models/metrostroi_train/81-702/81-702_cabine.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 2, -}]] - -ENT.ClientProps["salon2"] = { - model = "models/metrostroi_train/81-701/81-701_salon.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, } - ENT.ClientProps["Lamps_pult"] = { model = "models/metrostroi_train/equipment/lamp_gauges_d.mdl", pos = Vector(0,0,0), @@ -1198,25 +1151,8 @@ ENT.ClientProps["route2"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(188,130,88), brightness = 5 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(465,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [21] = { "headlight", Vector(450,-55.0,32.2), Angle(45,0,0), Color(255,130,88), fov=125, farz=65,brightness = 1,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - [22] = { "headlight", Vector(450,-40.5,40.2), Angle(90,0,0), Color(255,130,88), fov=125,farz=80,brightness = 2,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - - [23] = { "dynamiclight", Vector(425,0,35), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "salon2"}, - -- Interior - [5] = { "light",Vector(465+5,-32, 46), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [6] = { "light",Vector(465+5, 32, 46), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [30] = { "light", Vector(465+5 , -47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 46), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(450,-55,31), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(412,0,42.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(450,-40.5,40.2), Angle(90,0,0), Color(255,130,88), fov=125,farz=80,brightness = 2,shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, + [23] = { "headlight", Vector(450,-55.0,32.2), Angle(45,0,0), Color(255,130,88), fov=125, farz=65,brightness = 1,shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1278,40 +1214,19 @@ function ENT:Think() end self.BrakeAngleSND = BAsnd end - local Lamps = self:GetPackedRatio("LampsStrength") local half1 = self:GetPackedBool("Lamps_half1") local half2 = self:GetPackedBool("Lamps_half2") local emer1 = self:GetPackedBool("lamps_emer1") local emer2 = self:GetPackedBool("Lamps_emer2") + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",(not half2 and emer1) and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false)) + local half1 = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) + local half2 = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) + self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) + self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - local emer1S = self:Animate("lamps_emer1",(not half2 and emer1) and 1 or 0,0,1,5,false) - local cab1S = self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false) - local emer2S = self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false) - local half1S = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2S = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1S) - self:ShowHideSmooth("Lamps_cab1",cab1S) - self:ShowHideSmooth("Lamps_emer2",emer2S) - self:ShowHideSmooth("Lamps_half1",half1S,Color(255,105+half1S*150,105+half1S*150)) - self:ShowHideSmooth("Lamps_half2",half2S,Color(255,105+half2S*150,105+half2S*150)) - - self:SetLightPower(23, cab1S > 0,cab1S) - self:SetLightPower("Lamps_cab", cab1S > 0,cab1S) - if not half1 then - self:SetLightPower(9,emer1S > 0,emer1S*0.2+emer2S*0.8) - self:SetLightPower(10,emer2S > 0,emer2S) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1S > 0, half1S*0.3+half2S*0.7) - self:SetLightPower(12, half1S > 0, half1S*0.3+half2S*0.7) - self:SetLightPower(13, half1S > 0, half1S*0.3+half2S*0.7) - end self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("EmergencyBrakeValve", self:GetPackedBool("EmergencyBrakeValve") and 1 or 0, 0.5,0, 64, 3,false) @@ -1326,18 +1241,12 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) self:ShowHideSmooth("trafaret_l",HL2) - self:SetLightPower(30,HL1 > 0,HL1) - self:SetLightPower(31,HL1 > 0,HL1) - self:SetLightPower(32,HL2 > 0,HL2) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0, RL) - self:SetLightPower(6,RL > 0, RL) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower("Lamps_pult",PL>0,PL) - self:SetLightPower(21,PL>0,PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(23,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -1468,6 +1377,7 @@ function ENT:Think() --self.StreetCoeff = 0 local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) local rollings = math.max(self.TunnelCoeff*1,self.StreetCoeff) + --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end -- Brake-related sounds local dT = self.DeltaTime local speed = self:GetPackedRatio("Speed")*100.0 @@ -1560,10 +1470,10 @@ function ENT:Think() self:SetSoundState("ring_old",self:GetPackedBool("Ring") and 0.4 or 0,0.76) local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 self.AnnLamp = self.AnnLamp or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1580,22 +1490,18 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) - if self.CurrentCamera == 5 then + if true or self.CurrentCamera == 5 then self.RTMaterial:SetTexture("$basetexture", self.RRIScreen) self:DrawOnPanel("RRIScreen",function(...) surface.SetMaterial(self.RTMaterial) @@ -1659,9 +1565,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-702/init.lua b/lua/entities/gmod_subway_81-702/init.lua index aa358ad..8cb6ce7 100644 --- a/lua/entities/gmod_subway_81-702/init.lua +++ b/lua/entities/gmod_subway_81-702/init.lua @@ -6,7 +6,7 @@ ENT.BogeyDistance = 650 -- Needed for gm trainspawner --"DURASelectMain","DURASelectAlternate","DURAToggleChannel","DURAPowerToggle", ENT.SyncTable = { - "VB","AV","VU","VU1","VU2","VU3","KU1","KU2","KU3","KU5","KU6","KU7","KU8","KU9","KU10","SN","VRP","UAVA","EmergencyBrakeValve","GV","VZ","UAVAC", + "VB","AV","VU","VU1","VU2","VU3","KU1","KU2","KU3","KU5","KU6","KU7","KU8","KU9","KU10","SN","VRP","UAVA","EmergencyBrakeValve","GV","VZ", "RRIEnable","RRIAmplifier", "R_Program1","R_Program2", "DriverValveBLDisconnect","DriverValveTLDisconnect", @@ -58,7 +58,6 @@ function ENT:Initialize() self.RearBogey:SetNWInt("MotorSoundType",0) self.FrontBogey.PneumaticPow = 1.5 self.RearBogey.PneumaticPow = 1.5 - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -107,7 +106,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -175,6 +174,23 @@ function ENT:Initialize() Pos = Vector(-224.5, 50, -66), Radius = 20, }, } + + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + + [23] = { "dynamiclight", Vector(425,0,35), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + -- Interior + [5] = { "light",Vector(465+5,-32, 46), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [6] = { "light",Vector(465+5, 32, 46), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [30] = { "light", Vector(465+5 , -47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 46), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = {} self.TrainWireCrossConnections = { @@ -182,6 +198,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- Parking brake ratio self.ManualBrake = 0.0 self.RearDoor = false @@ -194,8 +218,8 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- @@ -204,51 +228,65 @@ function ENT:Think() --self.ExtraSeat1:SetPos(Vector(443,0,-53)) --self.ExtraSeat2:SetPos(Vector(420,-20,-53)) local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("RedLight",Panel.RedLights>0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + local redlights = self.Panel.RedLights>0 + self:SetPackedBool("RedLight",redlights) + self:SetLightPower(5,redlights) + self:SetLightPower(6,redlights) - local lightsActive2 = math.min(1,Panel.MainLights2)^2 - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.2+emerActive2*0.8) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false)-- and emerActive1 > 0 and lightsActive2 <= 0,emerActive1*0.5) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + end self:SetPackedRatio("LampsStrength",lightsActive1)--math.Round((self.Electric.I24-150)/1000.0,1.5)) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) self:SetPackedBool("RRIOn",self.RRI_VV.Power>0) self:SetPackedRatio("RRIRewind",self.RRIRewind.Value/2) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) -- Red RP local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end self:SetPackedRatio("RRP",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -256,9 +294,9 @@ function ENT:Think() self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("VPR",Panel.VPR > 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) - self:SetPackedBool("Ring",Panel.Ring > 0.5) + self:SetPackedBool("VPR",self.Panel.VPR > 0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) + self:SetPackedBool("Ring",self.Panel.Ring > 0.5) self:SetPackedBool("RearDoor",self.RearDoor) @@ -268,16 +306,16 @@ function ENT:Think() -- Feed packed floats self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", 1-Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", 1-self.Pneumatic.DriverValvePosition/7) self:SetNW2Int("ControllerPosition", self.KV.ControllerPosition+3) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/82.0) + self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/82.0) --print(self.LK1.Value,self.LK2.Value,self.LK3.Value,self.LK4.Value,self.LK5.Value,self.TSH.Value) --print(self.LK1.Value,self.LK2.Value,self.LK3.Value,self.LK4.Value,self.LK5.Value,self.TSH.Value) -- Update ARS system (no ars on E) @@ -306,12 +344,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end @@ -377,19 +415,18 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) + self.KVWrenchMode = 1 end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("rcu_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then if self.KVWrenchMode == 3 then self:PlayOnce("rcu_out","cabin",0.7) @@ -397,6 +434,7 @@ function ENT:OnButtonPress(button,ply) self:PlayOnce("revers_out","cabin",0.7) end self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -474,4 +512,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights1"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-702/shared.lua b/lua/entities/gmod_subway_81-702/shared.lua index ce2ad8e..a88d78b 100644 --- a/lua/entities/gmod_subway_81-702/shared.lua +++ b/lua/entities/gmod_subway_81-702/shared.lua @@ -26,20 +26,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.MirrorCams = { - Vector(441,75,9),Angle(1,180,0),15, - Vector(441,-75,9),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { {Vector(431,-38.2 ,45),80,0.2}, {Vector(-3,-60, 62),300,0.3}, @@ -503,15 +489,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end - + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -683,7 +664,6 @@ ENT.Spawner = { ent.PassengerDoor = val==4 ent.RearDoor = val==4 else - ent.VU2:TriggerInput("Set",0) ent.FrontDoor = val==4 ent.RearDoor = val==4 end diff --git a/lua/entities/gmod_subway_81-702_int/cl_init.lua b/lua/entities/gmod_subway_81-702_int/cl_init.lua index 041d9fd..864a39e 100644 --- a/lua/entities/gmod_subway_81-702_int/cl_init.lua +++ b/lua/entities/gmod_subway_81-702_int/cl_init.lua @@ -40,7 +40,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["PanelLamp"] = { @@ -51,7 +50,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -67,16 +66,13 @@ ENT.ButtonMap["MainL"] = { buttons = { ----Лампы {ID = "!RedRP", x=10,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",z=1,color = Color(178,112,112), var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(255,60,60),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",z=1,color = Color(255,160,160), var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, {ID = "!GreenRP", x=40.71,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",z=1,color = Color(98,178,178), var="GRP"}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(40,255,100),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",z=1,color = Color(140,255,255), var="GRP"} }}, {ID = "!Blue", x=73.50,y=10, radius=10, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",z=1,color = Color(112,140,178), var="SD",}, - sprite = {bright=0.1,size=0.25,scale=0.07,color=Color(60,200,255),z=3,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",z=1,color = Color(160,200,255), var="SD",} }}, } } @@ -96,7 +92,6 @@ ENT.ButtonMap["MainB"] = { var="KU7",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, { ID = "KU6Set", x=0+56*1, y=0, w=50,h=90, tooltip="", model = { @@ -190,7 +185,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } @@ -300,8 +295,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -328,7 +323,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU8",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -342,7 +336,7 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesVoltage", x=0, y=0, w=55, h=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesVoltage", x=0, y=0, w=55, h=55, tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -353,7 +347,7 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0, y=0, w=135, h=135, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0, y=0, w=135, h=135, tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -364,7 +358,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=60,y=60,radius=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=60,y=60,radius=60,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -376,7 +370,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=34,y=34,radius=34,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=34,y=34,radius=34,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -387,7 +381,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*100) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip=""}, } } @@ -403,7 +397,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -419,7 +412,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -454,10 +446,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -480,10 +475,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -513,7 +511,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -543,7 +540,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -557,12 +554,12 @@ ENT.ButtonMap["UAVAPanel"] = { buttons = { {ID = "UAVAToggle",x=0, y=0, w=60, h=170, tooltip="", model = { - plomb = {var="UAVAPl", ID="UAVAPl"}, + plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl"}, var="UAVA", sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=170, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=170, tooltip=""}, } } @@ -601,7 +598,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -617,7 +613,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -633,7 +628,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -659,7 +653,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -966,22 +959,7 @@ ENT.ClientProps["WhiteLights"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(188,130,88), brightness = 5 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [22] = { "headlight", Vector(450,-40.5,40.2), Angle(90,0,0), Color(255,130,88), fov=125,farz=80,brightness = 2,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - - [23] = { "dynamiclight", Vector(425,0,35), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "salon2"}, - -- Interior - [30] = { "light", Vector(465+5 , -47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 46), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(450,-55,31), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(412,0,42.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(450,-40.5,40.2), Angle(90,0,0), Color(255,130,88), hfov=90, vfov=90,farz=62,brightness = 5,shadows = 1, texture = "models/metrostroi_train/equipment/headlight2"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1034,40 +1012,18 @@ function ENT:Think() end self.BrakeAngleSND = BAsnd end - local Lamps = self:GetPackedRatio("LampsStrength") local half1 = self:GetPackedBool("Lamps_half1") local half2 = self:GetPackedBool("Lamps_half2") local emer1 = self:GetPackedBool("lamps_emer1") local emer2 = self:GetPackedBool("Lamps_emer2") - - local emer1S = self:Animate("lamps_emer1",(not half2 and emer1) and 1 or 0,0,1,5,false) - local cab1S = self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false) - local emer2S = self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false) - local half1S = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2S = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1S) - self:ShowHideSmooth("Lamps_cab1",cab1S) - self:ShowHideSmooth("Lamps_emer2",emer2S) - self:ShowHideSmooth("Lamps_half1",half1S,Color(255,105+half1S*150,105+half1S*150)) - self:ShowHideSmooth("Lamps_half2",half2S,Color(255,105+half2S*150,105+half2S*150)) - - self:SetLightPower(23, cab1S > 0,cab1S) - self:SetLightPower("Lamps_cab", cab1S > 0,cab1S) - if not half1 then - self:SetLightPower(9,emer1S > 0,emer1S*0.2+emer2S*0.8) - self:SetLightPower(10,emer2S > 0,emer2S) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1S > 0, half1S*0.3+half2S*0.7) - self:SetLightPower(12, half1S > 0, half1S*0.3+half2S*0.7) - self:SetLightPower(13, half1S > 0, half1S*0.3+half2S*0.7) - end + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",(not half2 and emer1) and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab1",emer1 and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",(not half2 and not half1 and emer2) and 1 or 0,0,1,5,false)) + local half1 = self:Animate("lamps_half1",half1 and 0.4+Lamps*0.6 or 0,0,1,5,false) + local half2 = self:Animate("lamps_half2",half2 and 0.4+Lamps*0.6 or 0,0,1,5,false) + self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) + self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("EmergencyBrakeValve", self:GetPackedBool("EmergencyBrakeValve") and 1 or 0, 0.5,0, 64, 3,false) @@ -1080,14 +1036,10 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) - self:SetLightPower(30,HL1 > 0,HL1) - self:SetLightPower(31,HL1 > 0,HL1) - self:SetLightPower(32,HL2 > 0,HL2) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower(22,PL>0,PL) - self:SetLightPower("Lamps_pult",PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -1214,6 +1166,7 @@ function ENT:Think() --self.StreetCoeff = 0 local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) local rollings = math.max(self.TunnelCoeff*1,self.StreetCoeff) + --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end -- Brake-related sounds local dT = self.DeltaTime local speed = self:GetPackedRatio("Speed")*100.0 @@ -1291,9 +1244,9 @@ function ENT:Think() self:SetSoundState("rk",(CurTime() - (self.RKTimer or 0)) < 0.2 and 0.7 or 0,1) local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1304,18 +1257,14 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) @@ -1373,9 +1322,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-702_int/init.lua b/lua/entities/gmod_subway_81-702_int/init.lua index 492544a..de49a4b 100644 --- a/lua/entities/gmod_subway_81-702_int/init.lua +++ b/lua/entities/gmod_subway_81-702_int/init.lua @@ -6,7 +6,7 @@ ENT.BogeyDistance = 650 -- Needed for gm trainspawner --"DURASelectMain","DURASelectAlternate","DURAToggleChannel","DURAPowerToggle", ENT.SyncTable = { - "VB","AV","VU","VU1","VU2","VU3","KU1","KU2","KU3","KU4","KU5","KU6","KU7","KU8","KU9","KU10","SN","VRP","UAVA","EmergencyBrakeValve","GV","UAVAC", + "VB","AV","VU","VU1","VU2","VU3","KU1","KU2","KU3","KU4","KU5","KU6","KU7","KU8","KU9","KU10","SN","VRP","UAVA","EmergencyBrakeValve","GV", "R_Program1","R_Program2", "DriverValveBLDisconnect","DriverValveTLDisconnect", } @@ -105,7 +105,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -168,6 +168,20 @@ function ENT:Initialize() }, } + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + + [23] = { "dynamiclight", Vector(425,0,35), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + -- Interior + [30] = { "light", Vector(465+5 , -47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 47, -41), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 46), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = {} self.TrainWireCrossConnections = { @@ -175,6 +189,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- Parking brake ratio self.ManualBrake = 0.0 self.RearDoor = false @@ -187,18 +209,15 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + self:SetPackedBool("RedLight",(self.Panel["RedLights"] > 0.5)) self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 @@ -206,22 +225,37 @@ function ENT:Think() local emerActive1 = self.Panel.EmergencyLights1 local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) - self:SetPackedRatio("LampsStrength",lightsActive1) + + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.2+emerActive2*0.8) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false)-- and emerActive1 > 0 and lightsActive2 <= 0,emerActive1*0.5) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.3+lightsActive2*0.7) + end + self:SetPackedRatio("LampsStrength",lightsActive1)--math.Round((self.Electric.I24-150)/1000.0,1.5)) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) @@ -245,7 +279,7 @@ function ENT:Think() self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) self:SetPackedBool("VPR",self.Panel.VPR > 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) @@ -255,13 +289,13 @@ function ENT:Think() -- Feed packed floats self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", 1-Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", 1-self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/82.0) @@ -293,12 +327,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end @@ -364,19 +398,18 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) + self.KVWrenchMode = 1 end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("rcu_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then if self.KVWrenchMode == 3 then self:PlayOnce("rcu_out","cabin",0.7) @@ -384,6 +417,7 @@ function ENT:OnButtonPress(button,ply) self:PlayOnce("revers_out","cabin",0.7) end self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -452,4 +486,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights1"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-702_int/shared.lua b/lua/entities/gmod_subway_81-702_int/shared.lua index 4ded6cf..aa43ba8 100644 --- a/lua/entities/gmod_subway_81-702_int/shared.lua +++ b/lua/entities/gmod_subway_81-702_int/shared.lua @@ -26,26 +26,12 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.2}, {Vector(-3,-60, 62),300,0.3}, {Vector(-3,60 ,62),300,0.3}, } -ENT.MirrorCams = { - Vector(441,75,9),Angle(1,180,0),15, - Vector(441,-75,9),Angle(1,180,0),15, -} - ENT.Cameras = { {Vector(407.5+25,32,25),Angle(0,180,0),"Train.702.Breakers1"}, {Vector(407.5+27,46,21),Angle(0,180,0),"Train.702.Breakers2"}, @@ -499,14 +485,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", diff --git a/lua/entities/gmod_subway_81-703/cl_init.lua b/lua/entities/gmod_subway_81-703/cl_init.lua index ff17bea..313e35c 100644 --- a/lua/entities/gmod_subway_81-703/cl_init.lua +++ b/lua/entities/gmod_subway_81-703/cl_init.lua @@ -42,7 +42,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["PanelLamp"] = { @@ -53,7 +52,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -71,29 +70,14 @@ ENT.ButtonMap["Main"] = { --{ID = "RK", x=41.0+41.7*2,y=58.4, radius=20, tooltip="", model = { -- lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red2.mdl",color = Color(255,160,160),z = 10, var="RK"} --}}, - {ID = "PP1", x=42.0+41.7*0,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(98,178,178),z = 10, var="PP1"}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(40,255,100),z=12,} + {ID = "GRP", x=41.0+41.7*3,y=58.4, radius=20, tooltip="", model = { + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(140,255,255),z = 10, var="GRP"} }}, - {ID = "PP6", x=42.5+41.7*1,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(178,126,84),z = 10, var="PP6"}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,180,160),z=12,} + {ID = "RRP", x=41.0+41.7*4,y=58.4, radius=20, tooltip="", model = { + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(255,160,160),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, - {ID = "RRP", x=42.0+41.7*2,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(178,112,112),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,60,60),z=12,} - }}, - {ID = "GRP", x=41.0+41.7*3,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(98,178,178),z = 10, var="GRP"}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(40,255,100),z=12,} - }}, - {ID = "SD", x=41.3+41.7*4,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(91,91,178),z = 10, var="SD",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(100,120,255),z=12,} - }}, - {ID = "SDW", x=40.9+41.7*5,y=58.3, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(178,126,112),z = 10, var="SDW",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,180,160),z=12,} + {ID = "SD", x=41.0+41.7*5,y=58.4, radius=20, tooltip="", model = { + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(130,130,255),z = 10, var="SD",} }}, ----Кнопки { ID = "KU4Set", x=35.8+44*0, y=127.3, radius=20, tooltip="", model = { @@ -135,7 +119,6 @@ ENT.ButtonMap["Main"] = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = 110,z=11,vmin=0.21,vmax=0.0, var="KU7K",speed=1.5,disableinv="KU7Set", sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - varTooltip = true, }}, { ID = "KU6Set", x=96.8, y=171.8, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=2, @@ -146,7 +129,6 @@ ENT.ButtonMap["Main"] = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = 180-10,z=11,vmin=0,vmax=0.21, var="KU6K",speed=1.5,disableinv="KU6Set", sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - varTooltip = true, }}, { ID = "KU1Toggle", x=49,y=190,radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -159,7 +141,6 @@ ENT.ButtonMap["Main"] = { var="KU2",speed=6, vmin=1,vmax=0, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, { ID = "KU12Toggle", x=145,y=190,radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -237,7 +218,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -356,8 +337,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -384,7 +365,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU3",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "R_Program1Set", x=14, y=235, radius=15, tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = 0, @@ -411,8 +391,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0, y=0, w=64, h=60, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!EnginesVoltage", x=0, y=68, w=64, h=60, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0, y=0, w=64, h=60, tooltip=""}, + {ID = "!EnginesVoltage", x=0, y=68, w=64, h=60, tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -423,7 +403,7 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0, y=0, w=150, h=150, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0, y=0, w=150, h=150, tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -434,7 +414,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=57,y=57,radius=57,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=57,y=57,radius=57,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -446,7 +426,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=39,y=39,radius=39,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=39,y=39,radius=39,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -457,7 +437,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*100) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip=""}, } } @@ -474,7 +454,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -490,7 +469,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -501,10 +479,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -527,10 +508,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -560,7 +544,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -589,7 +572,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -609,7 +592,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } @@ -648,7 +631,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -664,7 +646,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -680,7 +661,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -706,7 +686,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -828,7 +807,7 @@ ENT.ClientProps["salon"] = { } ENT.ClientProps["E_informator"] = { model = "models/metrostroi_train/equipment/rri_informator_portable.mdl", - pos = Vector(404.7-5.1,-51,1), + pos = Vector(404.7-5.2,-51,1), ang = Angle(0,0,0), hideseat=0.2, } @@ -877,8 +856,8 @@ ENT.ButtonMap["RRI"] = { }}, {ID = "!RRIOn",x=70,y=12.5,radius=10,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13, - lamp = { model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255), getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255)}, + getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }}, } } @@ -1149,27 +1128,8 @@ ENT.ClientProps["route2"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(188,130,88), brightness = 5 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(465,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [21] = { "headlight", Vector(441,-40.0,40.2), Angle(75,-25,0), Color(255,130,88), fov=125, farz=80,brightness = 4,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - [22] = { "headlight", Vector(441,-55.0,35.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 6,shadows = 0, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - - -- Emergency lit - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - -- Cabin - [23] = { "dynamiclight", Vector(425,0,40), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0007, distance = 600, hidden = "salon3"}, - - [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [30] = { "light", Vector(465+5,-45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5, 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5, 0 , 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(436.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(399,1.2,57.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, - Lamp_RTM = {"light", Vector(407.801178,-58.29,19.73), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden = "Lamp_RTM"}, + [22] = { "headlight", Vector(441,-40.0,40.2), Angle(75,-25,0), Color(255,130,88), fov=125, farz=80,brightness = 4,shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, + [23] = { "headlight", Vector(441,-55.0,35.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 6,shadows = 0, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1224,32 +1184,14 @@ function ENT:Think() end local Lamps = self:GetPackedRatio("LampsStrength") - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("stopkran", self:GetPackedBool("EmergencyBrakeValve") and 1 or 0, 0,0.25, 256, 3,false) @@ -1264,11 +1206,6 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0,RL) - self:SetLightPower(6,RL > 0,RL) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -1276,9 +1213,8 @@ function ENT:Think() local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower("Lamps_pult",PL>0,PL) - self:SetLightPower(21,PL>0,PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(23,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) if IsValid(self.GlowingLights[1]) then if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then @@ -1308,7 +1244,12 @@ function ENT:Think() self:Animate("voltmeter", voltage >= 0.7 and voltage-(voltage/12*(voltage-(voltage >= 0.85 and 0.3 or 0.5))) or voltage, 0.62875,0.367,92,2) self:Animate("ampermeter", current<0.49 and current-current/((1-current)*10+current*10) or current, 0.617,0.383, nil, nil, 92,20,3) + local wheel_radius = 0.5*44.1 -- units local speed = self:GetPackedRatio("Speed")*100 + local ang_vel = speed/(2*math.pi*wheel_radius+math.random(0,40)) + + self.Angle = ((self.Angle or math.random()) + ang_vel*self.DeltaTime*1) % 1.0 + --Speedo swing local vec = -(self:LocalToWorld(Vector(445.7,-56.2,15.7))*self:GetUp()).z local posdelta = math.Clamp((vec-self.OldZPos)*(2+speed/90),-0.4,0.4) @@ -1405,6 +1346,7 @@ function ENT:Think() --self.StreetCoeff = 0 local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) local rollings = math.max(self.TunnelCoeff*1,self.StreetCoeff) + --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end -- Brake-related sounds local dT = self.DeltaTime local speed = self:GetPackedRatio("Speed")*100.0 @@ -1492,16 +1434,14 @@ function ENT:Think() -- ARS/ringer alert self:SetSoundState("ring_old",self:GetPackedBool("Ring") and 0.4 or 0,0.98) - local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false) - self:SetLightPower("Lamp_RTM",lamps_rtm > 0,lamps_rtm) - self:ShowHideSmooth("Lamp_RTM",lamps_rtm) + self:ShowHideSmooth("Lamp_RTM",self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false)) self:SetSoundState("vpr",self:GetPackedBool("VPR") and 1 or 0,1) local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 self.AnnLamp = self.AnnLamp or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1518,18 +1458,14 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) @@ -1583,9 +1519,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-703/init.lua b/lua/entities/gmod_subway_81-703/init.lua index e599913..69afe6b 100644 --- a/lua/entities/gmod_subway_81-703/init.lua +++ b/lua/entities/gmod_subway_81-703/init.lua @@ -11,7 +11,7 @@ ENT.SyncTable = { "RRIEnable","RRIAmplifier", "DriverValveBLDisconnect","DriverValveTLDisconnect","EmergencyBrakeValve", "GV", - "R_Program1","R_Program2","UAVA","UAVAC", + "R_Program1","R_Program2","UAVA" } ENT.SyncFunctions = { "" @@ -63,7 +63,6 @@ function ENT:Initialize() self.RearBogey:SetNWInt("MotorSoundType",0) self.FrontBogey.PneumaticPow = 1.5 self.RearBogey.PneumaticPow = 1.5 - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -112,7 +111,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -183,6 +182,22 @@ function ENT:Initialize() }, } + self.Lights = { + -- Emergency lit + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + -- Cabin + [23] = { "dynamiclight", Vector(425,0,40), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0007, distance = 600}, + + [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } -- Cross connections in train wires self.TrainWireInverts = { @@ -194,6 +209,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -208,60 +231,70 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("RedLight",Panel.RedLights>0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + local redlights = self.Panel.RedLights>0 + self:SetPackedBool("RedLight",redlights) + self:SetLightPower(5,redlights) + self:SetLightPower(6,redlights) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - self:SetPackedBool("Lamps_emer1",Panel.EmergencyLights1 > 0 and lightsActive1 == 0) - self:SetPackedBool("Lamps_cab",Panel.EmergencyLights1 > 0) - self:SetPackedBool("Lamps_emer2",Panel.EmergencyLights2 > 0) + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 + self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) + self:SetPackedBool("Lamps_cab",emerActive1 > 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) + self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedBool("Lamps_half2",lightsActive2 > 0) self:SetPackedRatio("LampsStrength",lightsActive1)--math.Round((self.Electric.I24-150)/1000.0,1.5)) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) -- Red RP local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end self:SetPackedRatio("RRP",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) - self:SetPackedBool("PP1",Panel.PP1 > 0) - self:SetPackedBool("PP6",Panel.PP6 > 0) - self:SetPackedBool("SDW",Panel.SDW > 0) - - - + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -269,10 +302,10 @@ function ENT:Think() self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("VPR",Panel.VPR > 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("VPR",self.Panel.VPR > 0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool("Ring",Panel.Ring > 0.5) + self:SetPackedBool("Ring",self.Panel.Ring > 0.5) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) @@ -281,20 +314,20 @@ function ENT:Think() self:SetPackedBool("RRIOn",self.RRI_VV.Power>0) self:SetPackedRatio("RRIRewind",self.RRIRewind.Value/2) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) --KRR --self:SetPackedBool("KRR",self.KRR.Value > 0.5) --print(self.LK1.Value,self.LK2.Value,self.LK3.Value,self.LK4.Value,self.RheostatController.Position,self.PositionSwitch.Position,self.KSH1.Value,self.KSH2.Value) --print(self.PositionSwitch.SelectedPosition,self.RheostatController.SelectedPosition)--self.Engines.E13/2,self.Engines.RotationRate) -- Feed packed floats self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", 1-Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", 1-self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/82.0) @@ -327,12 +360,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -402,19 +435,18 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) + self.KVWrenchMode = 1 end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("rcu_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then if self.KVWrenchMode == 3 then self:PlayOnce("rcu_out","cabin",0.7) @@ -422,6 +454,7 @@ function ENT:OnButtonPress(button,ply) self:PlayOnce("revers_out","cabin",0.7) end self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -496,3 +529,16 @@ function ENT:OnCouple(train,isfront) end self.BaseClass.OnCouple(self,train,isfront) end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-703/shared.lua b/lua/entities/gmod_subway_81-703/shared.lua index 5eebc47..654fd37 100644 --- a/lua/entities/gmod_subway_81-703/shared.lua +++ b/lua/entities/gmod_subway_81-703/shared.lua @@ -25,26 +25,12 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(420,-38.2 ,35),80,0.4}, {Vector(-3,-60, 62),300,0.3}, {Vector(-3,60 ,62),300,0.3}, } -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.Cameras = { {Vector(407.5+15,32,16) ,Angle(0,180,0),"Train.703.Breakers1"}, {Vector(407.5+13,48,21) ,Angle(0,180,0),"Train.703.Breakers2"}, @@ -454,14 +440,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -623,7 +605,6 @@ ENT.Spawner = { ent.PassengerDoor = val==4 ent.RearDoor = val==4 else - ent.VU2:TriggerInput("Set",0) ent.FrontDoor = val==4 ent.RearDoor = val==4 end diff --git a/lua/entities/gmod_subway_81-7036/cl_init.lua b/lua/entities/gmod_subway_81-7036/cl_init.lua deleted file mode 100644 index a474c63..0000000 --- a/lua/entities/gmod_subway_81-7036/cl_init.lua +++ /dev/null @@ -1,181 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} ---[[ -ENT.ButtonMap["TestDraw"] = { - pos = Vector(455,5,7), - ang = Angle(0,-90,80), - width = 512, - height = 512, - scale = 0.024, -}]] - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false - -ENT.ClientProps["door1"] = { - model = "models/props_junk/PopCan01a.mdl", - pos = Vector(410,71.1,55.2), - ang = Angle(90,-0,0) -} --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(349.0 - 32*k - 230*i,-65*(1-2*k),-2.8) - else return Vector(349.0 - 32*(1-k) - 230*i,-65*(1-2*k),-2.8) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi/81/81-7036_door1.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,180*(1-k),0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi/81/81-7036_door2.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,180*(1-k),0) - } - end -end -table.insert(ENT.ClientProps,{ - model = "models/metrostroi/81/81-7036_door4.mdl", - pos = Vector(-487.0,-2.2,-4.5), - ang = Angle(0,0,0) -}) -table.insert(ENT.ClientProps,{ - model = "models/metrostroi/81/81-7036_door3.mdl", - pos = Vector(414.0,65.0,-1.8), - ang = Angle(0,0,0) -}) -table.insert(ENT.ClientProps,{ - model = "models/metrostroi/81/81-7036_door5.mdl", - pos = Vector(414.3,-65.0,-1.8), - ang = Angle(0,0,0) -}) - - -Metrostroi.RTQuele = { - entries = {} -} -Metrostroi.RTQueleFrame = 0 -Metrostroi.PixVisHandle = util.GetPixelVisibleHandle() -local drawn = true -hook.Add("RenderScene","MetrostroiParallelView",function() - Metrostroi.RTQueleFrame = Metrostroi.RTQueleFrame + 1 - if #Metrostroi.RTQuele > 0 and Metrostroi.RTQueleFrame > 1/FrameTime()/20*#Metrostroi.RTQuele then - local id = table.remove(Metrostroi.RTQuele,1) - Metrostroi.RTQuele.entries[id]() - Metrostroi.RTQuele.entries[id] = nil - Metrostroi.RTQueleFrame = 0 - --print("draw",1/FrameTime()) - drawn = false - else - --print("nodraw",1/FrameTime()) - end -end) -function Metrostroi.CanRenderCam(RT,func,draw) - if not Metrostroi.RTQuele.entries[RT] and draw then - table.insert(Metrostroi.RTQuele,RT) - Metrostroi.RTQuele.entries[RT] = func - return true - end - return false -end --------------------------------------------------------------------------------- -function ENT:Initialize() - self.BaseClass.Initialize(self) - --[[ - self.Cams = {} - for i=1,3 do - self.Cams[i] = self:CreateRT("cam"..i,false,128,128) - end - self.Test = self:CreateRT("cam",true)]] -end -function ENT:Think() - self.BaseClass.Think(self) - --[[ - Metrostroi.CanRenderCam("7036cam1", function() - if not IsValid(self) then return end - render.PushRenderTarget(self.Cams[1].rt,0,0,128, 128) - render.Clear(0, 0, 0, 0) - cam.Start2D() - surface.SetDrawColor(200,0,0) - surface.DrawRect(0,0,64,64) - render.RenderView({ - origin = self:LocalToWorld(Vector(410,73.1,55.2)), -- change to your liking - angles = self:LocalToWorldAngles(Angle( 0, 180+10, 0 )), -- change to your liking - x = 0, - y = 0, - w = 128, - h = 128, - fov = 70, - } ) - surface.SetDrawColor(255,0,0) - surface.DrawRect(0,0,64,64) - cam.End2D() - render.PopRenderTarget() - end,self) - Metrostroi.CanRenderCam("7036cam2", function() - if not IsValid(self) then return end - render.PushRenderTarget(self.Cams[2].rt,0,0,128, 128) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.RenderView({ - origin = self:LocalToWorld(Vector(410,-73.1,55.2)), -- change to your liking - angles = self:LocalToWorldAngles(Angle( 0, 180-10, 0 )), -- change to your liking - x = 0, - y = 0, - w = 128, - h = 128, - fov = 70, - } ) - cam.End2D() - render.PopRenderTarget() - end,self) - Metrostroi.CanRenderCam("7036cam3", function() - if not IsValid(self) then return end - render.PushRenderTarget(self.Cams[3].rt,0,0,128, 128) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.RenderView( { - origin = self:LocalToWorld(Vector(410,0,55.2)), -- change to your liking - angles = self:LocalToWorldAngles(Angle( 0, 180-10, 0 )), -- change to your liking - x = 0, - y = 0, - w = 128, - h = 128, - fov = 70, - } ) - cam.End2D() - render.PopRenderTarget() - end)]] -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end -function ENT:DrawPost(special) - --[[self:DrawOnPanel("TestDraw",function(...) - surface.SetMaterial(self.Cams[1].mat) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRect(0,0,256,256,0) - surface.SetMaterial(self.Cams[2].mat) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRect(256,0,256,256,0) - surface.SetMaterial(self.Cams[3].mat) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRect(0,256,256,256,0) - end)]] -end - -function ENT:OnButtonPressed(button) - if button == "ShowHelp" then - RunConsoleCommand("metrostroi_train_manual") - end -end diff --git a/lua/entities/gmod_subway_81-7036/init.lua b/lua/entities/gmod_subway_81-7036/init.lua deleted file mode 100644 index 6182674..0000000 --- a/lua/entities/gmod_subway_81-7036/init.lua +++ /dev/null @@ -1,46 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "81", - Name = "81-7036", - WagType = 1, - Manufacturer = "KVZ", -} - -function ENT:Initialize() - - -- Set model and initialize - self:SetModel("models/metrostroi/81/81-7036.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(420,-2,-22)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(410,35,-20)) - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 325-20,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-325-10,0,-80),Angle(0,0,0),false) -end - - --------------------------------------------------------------------------------- -function ENT:Think() - local retVal = self.BaseClass.Think(self) - return retVal -end \ No newline at end of file diff --git a/lua/entities/gmod_subway_81-7036/shared.lua b/lua/entities/gmod_subway_81-7036/shared.lua deleted file mode 100644 index c8d245f..0000000 --- a/lua/entities/gmod_subway_81-7036/shared.lua +++ /dev/null @@ -1,24 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSystems() - self:LoadSystem("KK","Relay","Switch") - self:LoadSystem("Pneumatic","81_717_Pneumatic") -end diff --git a/lua/entities/gmod_subway_81-7037/cl_init.lua b/lua/entities/gmod_subway_81-7037/cl_init.lua deleted file mode 100644 index e2ae52b..0000000 --- a/lua/entities/gmod_subway_81-7037/cl_init.lua +++ /dev/null @@ -1,53 +0,0 @@ -include("shared.lua") - - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} - --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false - --------------------------------------------------------------------------------- --- Add doors -local function GetDoorPosition(i,k,j) - if j == 0 - then return Vector(347.5 - 32*k - 230*i,-65*(1-2*k),-2.8) - else return Vector(347.5 - 32*(1-k) - 230*i,-65*(1-2*k),-2.8) - end -end -for i=0,3 do - for k=0,1 do - ENT.ClientProps["door"..i.."x"..k.."a"] = { - model = "models/metrostroi/81/81-7036_door1.mdl", - pos = GetDoorPosition(i,k,0), - ang = Angle(0,180*(1-k),0) - } - ENT.ClientProps["door"..i.."x"..k.."b"] = { - model = "models/metrostroi/81/81-7036_door2.mdl", - pos = GetDoorPosition(i,k,1), - ang = Angle(0,180*(1-k),0) - } - end -end -table.insert(ENT.ClientProps,{ - model = "models/metrostroi/81/81-7036_door4.mdl", - pos = Vector(-487.0,-2.2,-4.5), - ang = Angle(0,0,0) -}) -table.insert(ENT.ClientProps,{ - model = "models/metrostroi/81/81-7036_door4.mdl", - pos = Vector(461.0,1.2,-4.5), - ang = Angle(0,180,0) -}) - - - --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end \ No newline at end of file diff --git a/lua/entities/gmod_subway_81-7037/init.lua b/lua/entities/gmod_subway_81-7037/init.lua deleted file mode 100644 index be3968e..0000000 --- a/lua/entities/gmod_subway_81-7037/init.lua +++ /dev/null @@ -1,38 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---------------------------------------------------- --- Defined train information --- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim ---------------------------------------------------- -ENT.SubwayTrain = { - Type = "81", - Name = "81-7037", - WagType = 2, - Manufacturer = "KVZ", -} - -function ENT:Initialize() - - -- Set model and initialize - self:SetModel("models/metrostroi/81/81-7037.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create bogeys - self.FrontBogey = self:CreateBogey(Vector( 325-20,0,-80),Angle(0,180,0),true) - self.RearBogey = self:CreateBogey(Vector(-325-10,0,-80),Angle(0,0,0),false) -end - - --------------------------------------------------------------------------------- -function ENT:Think() - local retVal = self.BaseClass.Think(self) - return retVal -end \ No newline at end of file diff --git a/lua/entities/gmod_subway_81-7037/shared.lua b/lua/entities/gmod_subway_81-7037/shared.lua deleted file mode 100644 index c8d245f..0000000 --- a/lua/entities/gmod_subway_81-7037/shared.lua +++ /dev/null @@ -1,24 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" - -ENT.Spawnable = false --NOT FINISHED -ENT.AdminSpawnable = false --NOT FINISHED - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-45),Vector(380,30,-45) -end - -function ENT:InitializeSystems() - self:LoadSystem("KK","Relay","Switch") - self:LoadSystem("Pneumatic","81_717_Pneumatic") -end diff --git a/lua/entities/gmod_subway_81-703_int/cl_init.lua b/lua/entities/gmod_subway_81-703_int/cl_init.lua index 51c5143..bbe1d70 100644 --- a/lua/entities/gmod_subway_81-703_int/cl_init.lua +++ b/lua/entities/gmod_subway_81-703_int/cl_init.lua @@ -42,7 +42,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["PanelLamp"] = { @@ -53,7 +52,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -67,17 +66,18 @@ ENT.ButtonMap["Main"] = { hideseat=0.2, buttons = { + ----Лампы + --{ID = "RK", x=41.0+41.7*2,y=58.4, radius=20, tooltip="", model = { + -- lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red2.mdl",color = Color(255,160,160),z = 10, var="RK"} + --}}, {ID = "GRP", x=41.0+41.7*3,y=58.4, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(98,178,178),z = 10, var="GRP"}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(40,255,100),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(140,255,255),z = 10, var="GRP"} }}, {ID = "RRP", x=41.0+41.7*4,y=58.4, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(178,112,112),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,60,60),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(255,160,160),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, {ID = "SD", x=41.0+41.7*5,y=58.4, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(91,91,178),z = 10, var="SD",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(100,120,255),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(130,130,255),z = 10, var="SD",} }}, ----Кнопки { ID = "KU4Set", x=35.8+44*0, y=127.3, radius=20, tooltip="", model = { @@ -115,22 +115,20 @@ ENT.ButtonMap["Main"] = { var="KU7",speed=16, sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - { ID = "KU7KToggle", x=35.8+44*5, y=127.3-34, radius=15, tooltip="", model = { + { ID = "KU7KToggle", x=35.8+44*5, y=127.3-34, radius=10, tooltip="", model = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = 110,z=11,vmin=0.21,vmax=0.0, var="KU7K",speed=1.5,disableinv="KU7Set", sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - varTooltip = true, }}, { ID = "KU6Set", x=96.8, y=171.8, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-703/cabin_button_black.mdl",ang = 180,z=2, var="KU6",speed=16, sndvol = 0.10, snd = function(val) return val and "button2_on" or "button2_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - { ID = "KU6KToggle", x=96.8+5, y=171.8-34, radius=15, tooltip="", model = { + { ID = "KU6KToggle", x=96.8+5, y=171.8-34, radius=10, tooltip="", model = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = 180-10,z=11,vmin=0,vmax=0.21, var="KU6K",speed=1.5,disableinv="KU6Set", sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - varTooltip = true, }}, { ID = "KU1Toggle", x=49,y=190,radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -143,7 +141,6 @@ ENT.ButtonMap["Main"] = { var="KU2",speed=6, vmin=1,vmax=0, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, { ID = "KU12Toggle", x=145,y=190,radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -222,7 +219,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -322,8 +319,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=170, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=170, y=0, w=170, h=400, tooltip=""}, } } @@ -350,7 +347,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU3",speed=6, sndvol = 1, snd = function(val) return val and "vu13a_on" or "vu13a_off" end, sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -364,8 +360,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0, y=0, w=64, h=60, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!EnginesVoltage", x=0, y=68, w=64, h=60, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0, y=0, w=64, h=60, tooltip=""}, + {ID = "!EnginesVoltage", x=0, y=68, w=64, h=60, tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -376,7 +372,7 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0, y=0, w=150, h=150, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0, y=0, w=150, h=150, tooltip=""}, } } ENT.ButtonMap["BLTLPressure"] = { @@ -387,7 +383,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=57,y=57,radius=57,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=57,y=57,radius=57,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -399,7 +395,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=39,y=39,radius=39,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=39,y=39,radius=39,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -410,7 +406,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*100) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=60,h=60,tooltip=""}, } } @@ -427,7 +423,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -443,7 +438,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -454,10 +448,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -480,10 +477,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -513,7 +513,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -542,7 +541,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -562,7 +561,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } @@ -601,7 +600,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -617,7 +615,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -633,7 +630,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -659,7 +655,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -829,55 +824,6 @@ ENT.ClientProps["Lamps_half2"] = { nohide = true, } -ENT.ClientProps["bortlamps1"] = { - model = "models/metrostroi_train/81-502/bort_lamps_body.mdl", - pos = Vector(408,68.5,34), - ang = Angle(0,0,0), - hide = 2, -} -ENT.ClientProps["bortlamp1_w"] = { - model = "models/metrostroi_train/equipment/bort_lamps_b.mdl", - pos = Vector(408,69.4,34+3.25), - ang = Angle(0,0,0), - nohide = true, -} -ENT.ClientProps["bortlamp1_g"] = { - model = "models/metrostroi_train/equipment/bort_lamps_g.mdl", - pos = Vector(408,69.4,34-0.02), - ang = Angle(0,0,0), - nohide = true, -} -ENT.ClientProps["bortlamp1_y"] = { - model = "models/metrostroi_train/equipment/bort_lamps_y.mdl", - pos = Vector(408,69.4,34-3.3), - ang = Angle(0,0,0), - nohide = true, -} -ENT.ClientProps["bortlamps2"] = { - model = "models/metrostroi_train/81-502/bort_lamps_body.mdl", - pos = Vector(408,-65.5,34), - ang = Angle(0,180,0), - hide = 2, -} -ENT.ClientProps["bortlamp2_w"] = { - model = "models/metrostroi_train/equipment/bort_lamps_b.mdl", - pos = Vector(408,-66.4,34+3.25), - ang = Angle(0,180,0), - nohide = true, -} -ENT.ClientProps["bortlamp2_g"] = { - model = "models/metrostroi_train/equipment/bort_lamps_g.mdl", - pos = Vector(408,-66.4,34-0.02), - ang = Angle(0,180,0), - nohide = true, -} -ENT.ClientProps["bortlamp2_y"] = { - model = "models/metrostroi_train/equipment/bort_lamps_y.mdl", - pos = Vector(408,-66.4,34-3.3), - ang = Angle(0,180,0), - nohide = true, -} - -------------------------------------------------------------------------------- -- Add doors --[[ local function GetDoorPosition(i,k,j) @@ -1007,31 +953,8 @@ ENT.ClientProps["WhiteLights"] = { ENT.Lights = { [1] = { "headlight", Vector(475,0,-20), Angle(0,0,0), Color(188,130,88), brightness = 5 ,fov = 90, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [21] = { "headlight", Vector(441,-40.0,40.2), Angle(75,-25,0), Color(255,130,88), fov=125, farz=80,brightness = 4,shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - [22] = { "headlight", Vector(441,-55.0,35.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 6,shadows = 0, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - - -- Emergency lit - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 2, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 260}, - -- Cabin - [23] = { "dynamiclight", Vector(425,0,40), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0007, distance = 600, hidden = "salon3"}, - - [30] = { "light", Vector(465+5,-45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5, 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5, 0 , 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - [15] = { "light",Vector(408,69.4,34+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(408,69.4,34-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(408,69.4,34-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(408,-66.4,34+3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(408,-66.4,34-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(408,-66.4,34-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - Lamps_pult = {"light", Vector(436.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(399,1.2,57.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(441,-40.0,40.2), Angle(75,-25,0), Color(255,130,88), fov=125, farz=80,brightness = 4,shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, + [23] = { "headlight", Vector(441,-55.0,35.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 6,shadows = 0, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1044,10 +967,6 @@ function ENT:Initialize() self.EmergencyValveRamp = 0 self.EmergencyValveEPKRamp = 0 self.EmergencyBrakeValveRamp = 0 - - self.OldZPos = 0 - self.OldSpeedoDelta = 0 - self.SpeedoDelta = 0 end function ENT:UpdateWagonNumber() for i=0,3 do @@ -1085,32 +1004,14 @@ function ENT:Think() end local Lamps = self:GetPackedRatio("LampsStrength") - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("stopkran", self:GetPackedBool("EmergencyBrakeValve") and 1 or 0, 0,0.25, 256, 3,false) @@ -1123,51 +1024,15 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower("Lamps_pult",PL>0,PL) - self:SetLightPower(22,PL>0,PL) - self:SetLightPower(23,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(23,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) - local em = self:GetNW2Int("EMAType",-1) ~= -1 - if self.Em ~= em then - self.Em = em - self:ShowHide("bortlamps1",em) - self:ShowHide("bortlamps2",em) - self:ShowHideSmooth("bortlamp1_w",em and 1 or 0) - self:ShowHideSmooth("bortlamp1_g",em and 1 or 0) - self:ShowHideSmooth("bortlamp1_y",em and 1 or 0) - self:ShowHideSmooth("bortlamp2_w",em and 1 or 0) - self:ShowHideSmooth("bortlamp2_g",em and 1 or 0) - self:ShowHideSmooth("bortlamp2_y",em and 1 or 0) - end - if em then - local Bortlamp_w = em and self:Animate("Bortlamp_w",self:GetPackedBool("SD") and 1 or 0,0,1,16,false) or 0 - local Bortlamp_g = em and self:Animate("Bortlamp_g",self:GetPackedBool("GRP") and 1 or 0,0,1,16,false) or 0 - local Bortlamp_y = em and self:Animate("Bortlamp_y",self:GetPackedBool("BrY") and 1 or 0,0,1,16,false) or 0 - self:ShowHide("bortlamps1",em) - self:ShowHide("bortlamps2",em) - self:ShowHideSmooth("bortlamp1_w",Bortlamp_w) - self:ShowHideSmooth("bortlamp1_g",Bortlamp_g) - self:ShowHideSmooth("bortlamp1_y",Bortlamp_y) - self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) - self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) - self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15,Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18,Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16,Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19,Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17,Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20,Bortlamp_y > 0, Bortlamp_y) - end - if IsValid(self.GlowingLights[1]) then if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then self.GlowingLights[1]:SetFarZ(3144) @@ -1194,17 +1059,14 @@ function ENT:Think() self:Animate("voltmeter", voltage >= 0.7 and voltage-(voltage/12*(voltage-(voltage >= 0.85 and 0.3 or 0.5))) or voltage, 0.62875,0.367,92,2) self:Animate("ampermeter", current<0.49 and current-current/((1-current)*10+current*10) or current, 0.617,0.383, nil, nil, 92,20,3) + local wheel_radius = 0.5*44.1 -- units local speed = self:GetPackedRatio("Speed")*100 - --Speedo swing - local vec = -(self:LocalToWorld(Vector(445.7,-56.2,15.7))*self:GetUp()).z - local posdelta = math.Clamp((vec-self.OldZPos)*(2+speed/90),-0.4,0.4) - local delta = (self.OldSpeedoDelta-posdelta) + local ang_vel = speed/(2*math.pi*wheel_radius+math.random(0,40)) - self.SpeedoDelta = self.SpeedoDelta+(delta-self.SpeedoDelta)*2*0.02--*self.DeltaTime - local speed1 = math.Clamp(self:GetPackedRatio("Speed")+self.SpeedoDelta,0,1) - self.OldZPos = vec - self.OldSpeedoDelta = posdelta + self.Angle = ((self.Angle or math.random()) + ang_vel*self.DeltaTime*1) % 1.0 + local speed1 = math.min(1,self:GetPackedRatio("Speed")) + --print(speed1+math.sin(math.pi*12*self.Angle)-(speed1/12*(speed1-(speed1 > 0.9 and 1 or 0.6875)))) -- Rotate wheel self:Animate("speed1", speed1 > 0.41 and speed1-(speed1/12*(speed1-(speed1 > 0.95 and 0.634 or 0.3))) or speed1, 0.76, 0.97895, nil, nil, 256,2,0.01) @@ -1291,6 +1153,7 @@ function ENT:Think() --self.StreetCoeff = 0 local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) local rollings = math.max(self.TunnelCoeff*1,self.StreetCoeff) + --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end -- Brake-related sounds local dT = self.DeltaTime local speed = self:GetPackedRatio("Speed")*100.0 @@ -1379,12 +1242,12 @@ function ENT:Think() local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerNoise",false) or self:GetNW2Int("AnnouncerBuzz",-1) + local noise = self:GetNW2Int("AnnouncerNoise",false) or self:GetNW2Bool("AnnouncerBuzz",false) or -1 local volume = self:GetNW2Float("UPOVolume",1) local noisevolume = self:GetNW2Float("UPONoiseVolume",1) self.BPSNBuzzVolume = self.BPSNBuzzVolume or 0 local buzzvolume = volume - if not self:GetNW2Int("AnnouncerNoise",false) then + if noise == true then if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.BPSNBuzzVolume > noisevolume then self.BPSNBuzzVolume = math.Clamp(self.BPSNBuzzVolume + 8*(noisevolume-self.BPSNBuzzVolume)*dT,0.1,1) @@ -1415,19 +1278,15 @@ function ENT:Think() end end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3] or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3] or 0) end end end end -function ENT:OnAnnouncer(volume,id) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) @@ -1481,9 +1340,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-703_int/init.lua b/lua/entities/gmod_subway_81-703_int/init.lua index 9cacdc2..52a19ea 100644 --- a/lua/entities/gmod_subway_81-703_int/init.lua +++ b/lua/entities/gmod_subway_81-703_int/init.lua @@ -11,7 +11,7 @@ ENT.SyncTable = { "RRIEnable","RRIAmplifier", "DriverValveBLDisconnect","DriverValveTLDisconnect","EmergencyBrakeValve", "GV", - "R_Program1","R_Program2","UAVA","UAVAC", + "R_Program1","R_Program2","UAVA" } ENT.SyncFunctions = { "" @@ -109,7 +109,7 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -176,6 +176,21 @@ function ENT:Initialize() }, } + self.Lights = { + -- Emergency lit + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + -- Cabin + [23] = { "dynamiclight", Vector(425,0,40), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0007, distance = 600}, + + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { --[18] = true, @@ -187,6 +202,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -200,55 +223,65 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local lightsActive2 = math.min(1,Panel.MainLights2) - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) self:SetPackedBool("Lamps_cab",emerActive1 > 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedBool("Lamps_half2",lightsActive2 > 0) self:SetPackedRatio("LampsStrength",lightsActive1)--math.Round((self.Electric.I24-150)/1000.0,1.5)) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) -- Red RP local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end self:SetPackedRatio("RRP",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) - self:SetPackedBool("BrY",Panel.BrY > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -258,8 +291,8 @@ function ENT:Think() self.BD2:TriggerInput("Set",self.PassengerDoor and 1 or 0) self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("VPR",Panel.VPR > 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("VPR",self.Panel.VPR > 0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0)) self:SetPackedBool("RearDoor",self.RearDoor) @@ -267,20 +300,20 @@ function ENT:Think() self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) --KRR --self:SetPackedBool("KRR",self.KRR.Value > 0.5) --print(self.LK1.Value,self.LK2.Value,self.LK3.Value,self.LK4.Value,self.RheostatController.Position,self.PositionSwitch.Position,self.KSH1.Value,self.KSH2.Value) --print(self.PositionSwitch.SelectedPosition,self.RheostatController.SelectedPosition)--self.Engines.E13/2,self.Engines.RotationRate) -- Feed packed floats self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", 1-Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", 1-self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/82.0) @@ -313,12 +346,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -384,19 +417,18 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) + self.KVWrenchMode = 1 end end if button == "KVWrenchNone" then if self.KVWrenchMode == 0 then self:PlayOnce("rcu_in","cabin",0.7) self.KVWrenchMode = 3 + self.DriversWrenchMissing = false elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 then if self.KVWrenchMode == 3 then self:PlayOnce("rcu_out","cabin",0.7) @@ -404,6 +436,7 @@ function ENT:OnButtonPress(button,ply) self:PlayOnce("revers_out","cabin",0.7) end self.KVWrenchMode = 0 + self.DriversWrenchMissing = true self.KV:TriggerInput("Enabled",0) end end @@ -478,3 +511,16 @@ function ENT:OnCouple(train,isfront) end self.BaseClass.OnCouple(self,train,isfront) end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_81-703_int/shared.lua b/lua/entities/gmod_subway_81-703_int/shared.lua index 5cfe91d..f89dda5 100644 --- a/lua/entities/gmod_subway_81-703_int/shared.lua +++ b/lua/entities/gmod_subway_81-703_int/shared.lua @@ -25,20 +25,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.4}, {Vector(-3,-60, 62),300,0.3}, @@ -478,14 +464,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", diff --git a/lua/entities/gmod_subway_81-714_lvz/cl_init.lua b/lua/entities/gmod_subway_81-714_lvz/cl_init.lua index cfbc70d..cb90c13 100644 --- a/lua/entities/gmod_subway_81-714_lvz/cl_init.lua +++ b/lua/entities/gmod_subway_81-714_lvz/cl_init.lua @@ -43,7 +43,6 @@ ENT.ClientProps = {} ENT.ButtonMap = {} ENT.ClientSounds = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientProps["salon"] = { model = "models/metrostroi_train/81-717/interior_mvm_int.mdl", @@ -89,9 +88,6 @@ ENT.ClientProps["seats_new"] = { pos = Vector(0,0,0), ang = Angle(0,0,0), hide=1.5, - callback = function(ent) - ent.NewBlueSeats = false - end, } ENT.ClientProps["handrails_new"] = { model = "models/metrostroi_train/81-717/handlers_new_int.mdl", @@ -116,18 +112,12 @@ ENT.ClientProps["seats_new_cap"] = { pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat=0.8, - callback = function(ent) - ent.NewBlueSeats = false - end, } ENT.ClientProps["seats_new_cap_o"] = { model = "models/metrostroi_train/81-717/couch_new_cap.mdl", pos = Vector(-285,410,13), ang = Angle(0,70,-70), hideseat=0.8, - callback = function(ent) - ent.NewBlueSeats = false - end, } ENT.ClientProps["otsek_cap_l"] = { model = "models/metrostroi_train/81-717/otsek_cap_l.mdl", @@ -148,10 +138,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -176,11 +169,14 @@ ENT.ButtonMap["RearPneumatic"] = { width = 1050, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip="",var="ParkingBrake"}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -215,7 +211,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -244,7 +239,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } @@ -265,32 +260,6 @@ ENT.ButtonMap["Battery"] = { }}, } } -ENT.ButtonMap["Voltages"] = { - pos = Vector(-464.3,-15.2,60.7), - ang = Angle(0,90,90), - width = 145, - height = 75, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BatteryVoltage", x=0, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, - {ID = "!BatteryCurrent", x=72.5, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryCurrent"),ent:GetPackedRatio("BatteryCurrent")*500) end}, - } -} -ENT.ButtonMap["Pressures"] = { - pos = Vector(-464.3,6.3,61), - ang = Angle(0,90,90), - width = 160, - height = 80, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BCPressure", x=0, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, - {ID = "!BLTLPressure", x=80, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - } -} ENT.ButtonMap["couch_cap"] = { pos = Vector(-460,60,0), ang = Angle(0,0,70), @@ -321,7 +290,7 @@ ENT.ButtonMap["Stopkran"] = { scale = 0.0625, hide=0.8, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=1000,h=600,tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=1000,h=600,tooltip=""}, } } ENT.ButtonMap["AV_S"] = { @@ -420,13 +389,11 @@ ENT.ButtonMap["DriverValveBLTLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, {ID = "DriverValveTLDisconnectToggle", x=80, y=0, w=80, h=140, tooltip="", model = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -504,8 +471,8 @@ ENT.ButtonMap["Shunt"] = { var="RV",speed=2,min=1,max=0.5,getfunc = function(ent) return ent:GetPackedRatio("RV") end, sndvol = 0.8, snd = function(_,val) return val%2>0 and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - {ID="RV-",x=176-30, y=140-30, w=30,h=60, tooltip="ВТПР(влево)",states={"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("RV") end,}, - {ID="RV+",x=176 , y=140-30, w=30,h=60, tooltip="ВТПР(вправо)",states={"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("RV") end,}, + {ID="RV-",x=176-30, y=140-30, w=30,h=60, tooltip="ВТПР(влево)"}, + {ID="RV+",x=176 , y=140-30, w=30,h=60, tooltip="ВТПР(вправо)"}, } } @@ -539,7 +506,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -561,7 +527,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -818,29 +783,6 @@ for i=0,4 do end, } end - --- Lights -ENT.Lights = { - -- Interior - [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [21] = { "light",Vector(-6.5,67,51.2)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [22] = { "light",Vector(-6.5,67,51.2)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [23] = { "light",Vector(-6.5,67,51.2)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [24] = { "light",Vector(-6.5,-67,51.2)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [25] = { "light",Vector(-6.5,-67,51.2)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [26] = { "light",Vector(-6.5,-67,51.2)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, -} -------------------------------------------------------------------------------- function ENT:UpdateWagonNumber() local count = math.max(4,math.ceil(math.log10(self.WagonNumber+1))) @@ -894,18 +836,6 @@ function ENT:Think() self.ClientEnts.schemes:SetSubMaterial(1,scheme and scheme[1]) self.PassSchemesDone = true end - if self.NewBlueSeats ~= self:GetNW2Bool("NewSeatsBlue") then - self.NewBlueSeats = self:GetNW2Bool("NewSeatsBlue") - if IsValid(self.ClientEnts.seats_new) then - self.ClientEnts.seats_new:SetSubMaterial(0,self.NewBlueSeats and "models/metrostroi_train/81-717/interior_kvr_blue" or "") - end - if IsValid(self.ClientEnts.seats_new_cap_o) then - self.ClientEnts.seats_new_cap_o:SetSubMaterial(0,self.NewBlueSeats and "models/metrostroi_train/81-717/interior_kvr_blue" or "") - end - if IsValid(self.ClientEnts.seats_new_cap) then - self.ClientEnts.seats_new_cap:SetSubMaterial(0,self.NewBlueSeats and "models/metrostroi_train/81-717/interior_kvr_blue" or "") - end - end local Bortlamp_w = self:Animate("Bortlamp_w",self:GetPackedBool("DoorsW") and 1 or 0,0,1,16,false) local Bortlamp_g = self:Animate("Bortlamp_g",self:GetPackedBool("GRP") and 1 or 0,0,1,16,false) @@ -922,12 +852,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp4_w",Bortlamp_w) self:ShowHideSmooth("bortlamp4_g",Bortlamp_g) self:ShowHideSmooth("bortlamp4_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17, Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20, Bortlamp_y > 0, Bortlamp_y) local kvr = self:GetNW2Bool("KVR") local newSeats = self:GetNW2Bool("NewSeats") @@ -965,28 +889,19 @@ function ENT:Think() self:Animate("train_line", self:GetPackedRatio("TLPressure"),0.14, 0.875, 256,2)--,,0.01) self:Animate("brake_cylinder", self:GetPackedRatio("BCPressure"),0.14, 0.875, 256,2)--,,0.03) self:Animate("voltmeter", self:GetPackedRatio("BatteryVoltage"),0.601, 0.400) - self:Animate("ampermeter", 0.5+self:GetPackedRatio("BatteryCurrent"),0.604, 0.398) + if self:GetPackedRatio("BatteryVoltage") > 0 then + self:Animate("ampermeter", 0.47+math.Clamp((self:GetPackedRatio("BatteryVoltage")-0.44)/1.3,0,1),0.604, 0.398) + else + self:Animate("ampermeter", 0.5,0.604, 0.398) + end if self.LampType ~= self:GetNW2Int("LampType",1) then self.LampType = self:GetNW2Int("LampType",1) end - local activeLights = 0 for i = 1,13 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,(self:GetPackedBool("lightsActive"..i)) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/13) - end + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,(self:GetPackedBool("lightsActive"..i)) and 1 or 0,0,1,6,false),col) end local door1 = self:Animate("door1", self:GetPackedBool("FrontDoor") and 0.99 or 0,0,0.25, 4, 0.5) @@ -1200,14 +1115,10 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_buzz%d_%d",i,k),(work and i==buzz) and v[3]*volume*self.BPSNBuzzVolume*self:GetNW2Float("UPOBuzzVolume",1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*volume or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and self:GetNW2Float("UPOVolume",1)*volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end @@ -1239,16 +1150,8 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid:sub(1,4) == "IGLA" then return range > 0 and "igla_on" or "igla_off",location,1,pitch end - if soundid == "lk2c" then - local speed = self:GetPackedRatio("Speed") - self.SoundPositions[soundid][1] = 350-Lerp(speed/0.1,0,250) - return soundid,location,1-Lerp(speed/10,0.2,0.8),pitch - end if soundid == "LK2" then local speed = self:GetPackedRatio("Speed") - if range == 0 and speed < 20 and self:GetPackedRatio("EnginesCurrent") > 0.55 then - self:PlayOnce("lk2c","bass",1,pitch) - end local id = range > 0 and "lk2_on" or "lk2_off" self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) return id,location,1-Lerp(speed/10,0.2,0.8),pitch diff --git a/lua/entities/gmod_subway_81-714_lvz/init.lua b/lua/entities/gmod_subway_81-714_lvz/init.lua index fa41cd6..f5a1eb6 100644 --- a/lua/entities/gmod_subway_81-714_lvz/init.lua +++ b/lua/entities/gmod_subway_81-714_lvz/init.lua @@ -129,6 +129,29 @@ function ENT:Initialize() }, } + -- Lights + self.Lights = { + -- Interior + [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [21] = { "light",Vector(-6.5,67,51.2)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [22] = { "light",Vector(-6.5,67,51.2)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [23] = { "light",Vector(-6.5,67,51.2)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [24] = { "light",Vector(-6.5,-67,51.2)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [25] = { "light",Vector(-6.5,-67,51.2)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [26] = { "light",Vector(-6.5,-67,51.2)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { @@ -140,6 +163,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- BPSN type self.BPSNType = self.BPSNType or 2+math.floor(Metrostroi.PeriodRandomNumber()*7+0.5) self:SetNW2Int("BPSNType",self.BPSNType) @@ -175,9 +206,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%4==0 then local id = 10+math.ceil(i/4) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end @@ -212,10 +244,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%8.3<1 then local id = 9+math.ceil(i/8.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -253,26 +285,13 @@ function ENT:TrainSpawnerUpdate() passtex = kvr and (math.random()>0.5 and "Def_717SPBCyan") or "Def_717SPBWhite" end - local bpsn = math.ceil(math.random()*4) self:SetNW2Int("BPSNType",math.random()>0.2 and 5 or bpsn) self:SetNW2Int("Crane",kvr and 1 or 0) self:SetNW2Bool("KVR",kvr) - if not self.CustomSettings then - self:SetNW2String("Texture","Def_717SPBDef") - self:SetNW2String("PassTexture",passtex) - self:SetNW2String("CabTexture",cabtex) - self:SetNW2Bool("NewSeats",seats) - else - self:SetNW2Bool("NewSeats",self:GetNW2Int("SeatType") == 4 or self:GetNW2Int("SeatType") == 3 or self:GetNW2Int("SeatType") == 1 and math.random()>0.5)--(kvr or seats)) - self:SetNW2Bool("NewSeatsBlue",self:GetNW2Int("SeatType") == 4 or self:GetNW2Bool("NewSeats") and self:GetNW2Int("SeatType") == 1 and math.random()>0.5) - local typ = self:GetNW2Int("BodyType") - if typ==3 or typ==1 and math.random() > 0.5 then - self:SetModel("models/metrostroi_train/81-717/81-717_spb_int_m.mdl") - else - self:SetModel("models/metrostroi_train/81-717/81-717_spb_int.mdl") - end - end + self:SetNW2String("PassTexture",passtex) + self:SetNW2String("CabTexture",cabtex) + self:SetNW2Bool("NewSeats",seats) self.Pneumatic.ValveType = self:GetNW2Int("Crane",1)+1 self.Announcer.AnnouncerType = self:GetNW2Int("Announcer",1) self:UpdateTextures() @@ -298,10 +317,10 @@ end function ENT:Think() local retVal = self.BaseClass.Think(self) local Panel = self.Panel - local Pneumatic = self.Pneumatic local lightsActive1 = Panel.EmergencyLights > 0 local lightsActive2 = Panel.MainLights > 0.0 + local mul = 0 local LampCount = self.LampType==2 and 27 or 13 local Ip = self.LampType==2 and 7 or 3.6 local Im = self.LampType==2 and 2 or 1 @@ -312,74 +331,65 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrW",Panel.BrW > 0) - --[[if not self.KEKTimer or CurTime()-self.KEKTimer > 3 then - self.KEKTimer = CurTime() - local text = "" - if Panel.DoorsW > 0 then text = text .." белая лампа дверей" end - if Panel.BrW > 0 then text = text .." желтая лампа пневмотормоза" end - if Panel.GreenRP > 0 then text = text .." зелёная лампа РП" end - if text ~= "" then text = " горит"..text end - if self.Speed <= 0.5 then text = text .." он стоит" - elseif self.Electric.I13 > 10 then text = text.." он разгоняется" - elseif self.Electric.I13 < -10 then text = text.." он тормозит ЭДТ" - elseif self.Pneumatic.BrakeCylinderPressure > 0.2 then - if self.Electric.I13 < -10 then - text = text.." и пневматикой" - else - text = text.." он тормозит пневматикой" - end - else text = text .." он едет" end - if self.Speed > 0.5 then text = text..Format(" со скоростью %02d км/ч и ускорением %.1f м/c",self.Speed, self.Acceleration) end + self:SetLightPower(11, mul > 0,mul/LampCount) + self:SetLightPower(12, mul > 0,mul/LampCount) + self:SetLightPower(13, mul > 0,mul/LampCount) + -- Side lights + self:SetLightPower(15, Panel.DoorsW > 0.5) + self:SetLightPower(18, Panel.DoorsW > 0.5) + self:SetLightPower(16, Panel.GreenRP > 0.5) + self:SetLightPower(19, Panel.GreenRP > 0.5) + self:SetLightPower(17, Panel.BrW > 0.5) + self:SetLightPower(20, Panel.BrW > 0.5) + + --self:SetLightPower(21, Panel.DoorsW > 0.5) + --self:SetLightPower(24, Panel.DoorsW > 0.5) + --self:SetLightPower(22, Panel.GreenRP > 0.5) + --self:SetLightPower(25, Panel.GreenRP > 0.5) + --self:SetLightPower(23, Panel.BrW > 0.5) + --self:SetLightPower(26, Panel.BrW > 0.5) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrW",self.Panel.BrW > 0) - if text ~= "" then RunConsoleCommand("say","ВНИМАНИЕ ВСЕМ!!! У "..self:CPPIGetOwner():GetName().." вагон "..self:GetWagonNumber()..text.."!!!") end - end - if Panel.GreenRP > 0 and (not self.KEKTimer or CurTime()-self.KEKTimer > 3) then - self.KEKTimer = CurTime() - RunConsoleCommand("say","ВНИМАНИЕ ВСЕМ!!! У "..self:CPPIGetOwner():GetName().." ВАГОН"..self:GetWagonNumber().." СЛУЧИЛОСЬ ЗНАМЕНАТЕЛЬНОЕ СОБЫТИЕ!!! У НЕГО ЗАГОРЕЛАСЬ ЗЕЛЁНАЯЛ ЛАМПА РП!!!") - end]] self:SetPackedBool("M1_3",Panel.M1_3 > 0) self:SetPackedBool("M4_7",Panel.M4_7 > 0) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) - --self:SetPackedRatio("Crane", Pneumatic.RealDriverValvePosition) + --self:SetPackedRatio("Crane", self.Pneumatic.RealDriverValvePosition) --self:SetPackedRatio("Controller", (self.KV.ControllerPosition+3)/7) - if Pneumatic.ValveType == 1 then - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) + if self.Pneumatic.ValveType == 1 then + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) else - self:SetPackedRatio("BLPressure", Pneumatic.BrakeLinePressure/16.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.BrakeLinePressure/16.0) end - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", Pneumatic.BrakeCylinderPressure/6.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) - self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/150.0) - self:SetPackedRatio("BatteryCurrent",Panel["V1"]*math.Clamp((self.Battery.Voltage-75)*0.01,-0.01,1)) - self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - - self:SetPackedBool("Compressor",Pneumatic.Compressor > 0) + self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor > 0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("BPSN",self.PowerSupply.X2_2 > 0) self:SetPackedRatio("RV",self.RV.Value/2) - self:SetPackedRatio("CranePosition", Pneumatic.RealDriverValvePosition) + self:SetPackedRatio("CranePosition", self.Pneumatic.RealDriverValvePosition) self:SetPackedBool("RZP",Panel.RZP > 0) @@ -416,13 +426,12 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end @@ -454,7 +463,7 @@ function ENT:OnButtonPress(button,ply) if self.CouchCap and self.Pneumatic.DriverValvePosition>2 then return end self.CouchCap = not self.CouchCap end - if not self.CouchCap and (not button:find("VB") and not button:find("GV") and not button:find("Isolation") and not button:find("Parking") and not button:find("Air")) then return true end + if not self.CouchCap and (not button:find("VB") and not button:find("GV") and not button:find("Isolation") and not button:find("Parking")) then return true end if button == "DriverValveDisconnect" then if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then diff --git a/lua/entities/gmod_subway_81-714_lvz/shared.lua b/lua/entities/gmod_subway_81-714_lvz/shared.lua index fdd6eec..ce8b27f 100644 --- a/lua/entities/gmod_subway_81-714_lvz/shared.lua +++ b/lua/entities/gmod_subway_81-714_lvz/shared.lua @@ -24,20 +24,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.MirrorCams = { - Vector(-441,75,15),Angle(1,0,0),75, - Vector(-441,-75,15),Angle(1,0,0),75, -} - ENT.AnnouncerPositions = { {Vector(-3,-60, 62),300,0.2}, {Vector(-3,60 ,62),300,0.2}, @@ -88,26 +74,23 @@ function ENT:InitializeSounds() self.SoundNames["bpsn2"] = {"subway_trains/717/bpsn/bpsn_spb.wav", loop=true} self.SoundNames["bpsn3"] = {"subway_trains/717/bpsn/bpsn_nnov.wav", loop=true} self.SoundNames["bpsn4"] = {"subway_trains/717/bpsn/bpsn_1.wav", loop=true} - self.SoundPositions["bpsn1"] = {600,1e9,Vector(0,45,-448),0.04} - self.SoundPositions["bpsn2"] = {600,1e9,Vector(0,45,-448),0.025} - self.SoundPositions["bpsn3"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn4"] = {600,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn1"] = {500,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn2"] = {500,1e9,Vector(0,45,-448),0.025} + self.SoundPositions["bpsn3"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn4"] = {500,1e9,Vector(0,45,-448),0.02} --Подвагонка self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" self.SoundNames["lk5_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk2c"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundNames["lk3_on"] = "subway_trains/717/pneumo/lk3_on.mp3" self.SoundNames["lk3_off"] = "subway_trains/717/pneumo/lk3_off.mp3" --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["lk5_on"] = {440,1e9,Vector(-60,-40,-66),0.30} self.SoundPositions["lk2_off"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk2c"] = {440,1e9,Vector(-60,-40,-66),0.6} self.SoundPositions["lk3_on"] = self.SoundPositions["lk2_on"] self.SoundPositions["lk3_off"] = self.SoundPositions["lk2_on"] - --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] self.SoundNames["compressor"] = {loop=2.0,"subway_trains/d/pneumatic/compressor/compessor_d_start.wav","subway_trains/d/pneumatic/compressor/compessor_d_loop.wav", "subway_trains/d/pneumatic/compressor/compessor_d_end.wav"} self.SoundNames["compressor2"] = {loop=1.79,"subway_trains/717/compressor/compressor_717_start2.wav","subway_trains/717/compressor/compressor_717_loop2.wav", "subway_trains/717/compressor/compressor_717_stop2.wav"} @@ -279,9 +262,9 @@ function ENT:InitializeSounds() for k=0,1 do self.SoundNames["door"..i.."x"..k.."r"] = {"subway_trains/common/door/door_roll.wav",loop=true} self.SoundPositions["door"..i.."x"..k.."r"] = {150,1e9,GetDoorPosition(i,k),0.11} - self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end1.mp3","subway_trains/common/door/door_open_end2.mp3","subway_trains/common/door/door_open_end3.mp3","subway_trains/common/door/door_open_end4.mp3"} + self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end5.mp3","subway_trains/common/door/door_open_end6.mp3","subway_trains/common/door/door_open_end7.mp3"} self.SoundPositions["door"..i.."x"..k.."o"] = {350,1e9,GetDoorPosition(i,k),2} - self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end3.mp3","subway_trains/common/door/door_close_end4.mp3"} + self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end2.mp3","subway_trains/common/door/door_close_end3.mp3","subway_trains/common/door/door_close_end4.mp3","subway_trains/common/door/door_close_end5.mp3"} self.SoundPositions["door"..i.."x"..k.."c"] = {400,1e9,GetDoorPosition(i,k),2} end end @@ -362,15 +345,6 @@ ENT.SubwayTrain = { EKKType = 717, } ---[[ -7874-8189 (белый пластик с синими\зелеными вставками, преимущественно старые сидухи, либо синие) -8190-8202 (пластик под дерево, преимущественно старые сидухи, либо коричневые) -8308-8319 (зеленый пластик, старые сидухи) -8320-8399 (пластик под дерево, преимущественно страые сидухи, либо синие) -8868-8964 (.5 - светлый пластик под дерево, преимущественно старые сидухи, либо коричневые) -11000-11306 (белый пластик с зелеными вставками, преимущественно старые сидухи, либо синие) -11322-11378 (пластик под дерево с белыми вставками, коричневые сидухи) -]] ENT.NumberRanges = { { true, diff --git a/lua/entities/gmod_subway_81-714_mvm/cl_init.lua b/lua/entities/gmod_subway_81-714_mvm/cl_init.lua index 6aee5a0..d311076 100644 --- a/lua/entities/gmod_subway_81-714_mvm/cl_init.lua +++ b/lua/entities/gmod_subway_81-714_mvm/cl_init.lua @@ -43,7 +43,6 @@ ENT.ClientProps = {} ENT.ButtonMap = {} ENT.ClientSounds = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientProps["salon"] = { model = "models/metrostroi_train/81-717/interior_mvm_int.mdl", @@ -145,10 +144,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -173,11 +175,14 @@ ENT.ButtonMap["RearPneumatic"] = { width = 1050, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip="",var="ParkingBrake"}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -212,7 +217,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -241,7 +245,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } @@ -262,32 +266,6 @@ ENT.ButtonMap["Battery"] = { }}, } } -ENT.ButtonMap["Voltages"] = { - pos = Vector(-464.3,-15.2,60.7), - ang = Angle(0,90,90), - width = 145, - height = 75, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BatteryVoltage", x=0, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, - {ID = "!BatteryCurrent", x=72.5, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryCurrent"),ent:GetPackedRatio("BatteryCurrent")*500) end}, - } -} -ENT.ButtonMap["Pressures"] = { - pos = Vector(-464.3,6.3,61), - ang = Angle(0,90,90), - width = 160, - height = 80, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BCPressure", x=0, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, - {ID = "!BLTLPressure", x=80, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - } -} ENT.ButtonMap["couch_cap"] = { pos = Vector(-460,60,0), ang = Angle(0,0,70), @@ -318,7 +296,7 @@ ENT.ButtonMap["Stopkran"] = { scale = 0.0625, hide=0.8, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=1000,h=600,tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=1000,h=600,tooltip=""}, } } ENT.ButtonMap["AV_S"] = { @@ -338,8 +316,8 @@ ENT.ButtonMap["AV_S"] = { {ID = "A23Toggle",x=25*5,y=80*0,w=25,h=45,tooltip=""}, {ID = "A14Toggle",x=25*6,y=80*0,w=25,h=45,tooltip=""}, {ID = "A13Toggle",x=25*7,y=80*0,w=25,h=45,tooltip=""}, - {ID = "A32Toggle",x=25*8,y=80*0,w=25,h=45,tooltip=""}, - {ID = "A31Toggle",x=25*9,y=80*0,w=25,h=45,tooltip=""}, + {ID = "A31Toggle",x=25*8,y=80*0,w=25,h=45,tooltip=""}, + {ID = "A32Toggle",x=25*9,y=80*0,w=25,h=45,tooltip=""}, {ID = "A16Toggle",x=25*10,y=80*0,w=25,h=45,tooltip=""}, {ID = "A12Toggle",x=25*11,y=80*0,w=25,h=45,tooltip=""}, {ID = "A49Toggle",x=25*12,y=80*0,w=25,h=45,tooltip=""}, @@ -395,11 +373,10 @@ ENT.ButtonMap["AV_T"] = { {ID = "AV3Toggle",x=25*2,y=0,w=25,h=45,tooltip=""}, {ID = "AV4Toggle",x=25*3,y=0,w=25,h=45,tooltip=""}, {ID = "AV5Toggle",x=25*4,y=0,w=25,h=45,tooltip=""}, - {ID = "A18Toggle",x=25*5,y=0,w=25,h=45,tooltip=""}, - --{ID = "A81Toggle",x=25*5,y=0,w=25,h=45,tooltip=""}, + {ID = "A81Toggle",x=25*5,y=0,w=25,h=45,tooltip=""}, {ID = "AV6Toggle",x=25*6,y=0,w=25,h=45,tooltip=""}, {ID = "A80Toggle",x=25*7,y=0,w=25,h=45,tooltip=""}, - --{ID = "A18Toggle",x=25*8,y=0,w=25,h=45,tooltip=""}, + {ID = "A18Toggle",x=25*8,y=0,w=25,h=45,tooltip=""}, } } for i,button in pairs(ENT.ButtonMap.AV_T.buttons) do @@ -423,13 +400,11 @@ ENT.ButtonMap["DriverValveBLTLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, {ID = "DriverValveTLDisconnectToggle", x=80, y=0, w=80, h=140, tooltip="", model = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -512,8 +487,8 @@ ENT.ButtonMap["Shunt"] = { var="RV",speed=2,min=1,max=0.5,getfunc = function(ent) return ent:GetPackedRatio("RV") end, sndvol = 0.8, snd = function(_,val) return val%2>0 and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - {ID="RV-",x=176-30, y=140-30, w=30,h=60, tooltip="ВТПР(влево)",states={"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("RV") end,}, - {ID="RV+",x=176 , y=140-30, w=30,h=60, tooltip="ВТПР(вправо)",states={"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("RV") end,}, + {ID="RV-",x=176-30, y=140-30, w=30,h=60, tooltip="ВТПР(влево)"}, + {ID="RV+",x=176 , y=140-30, w=30,h=60, tooltip="ВТПР(вправо)"}, } } @@ -547,7 +522,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -569,7 +543,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -846,27 +819,6 @@ for i=0,4 do end, } end -ENT.Lights = { - -- Interior - [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [21] = { "light",Vector(-6.5,67,51.2)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [22] = { "light",Vector(-6.5,67,51.2)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [23] = { "light",Vector(-6.5,67,51.2)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [24] = { "light",Vector(-6.5,-67,51.2)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [25] = { "light",Vector(-6.5,-67,51.2)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [26] = { "light",Vector(-6.5,-67,51.2)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, -} -------------------------------------------------------------------------------- function ENT:UpdateWagonNumber() local count = math.max(4,math.ceil(math.log10(self.WagonNumber+1))) @@ -899,19 +851,6 @@ function ENT:Initialize() self.VentG1 = 0 self.VentG2 = 0 - - self.Door1 = false - self.Door2 = false - - self.ParkingBrake1 = true - self.ParkingBrake2 = true - self.DoorStates = {} - self.DoorLoopStates = {} - for i=0,3 do - for k=0,1 do - self.DoorStates[(k==1 and "DoorL" or "DoorR")..(i+1)] = false - end - end end -------------------------------------------------------------------------------- local Cpos = { @@ -950,12 +889,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp4_w",Bortlamp_w) self:ShowHideSmooth("bortlamp4_g",Bortlamp_g) self:ShowHideSmooth("bortlamp4_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17, Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20, Bortlamp_y > 0, Bortlamp_y) local dot5 = self:GetNW2Bool("Dot5") local lvz = self:GetNW2Bool("LVZ") @@ -995,7 +928,11 @@ function ENT:Think() self:Animate("train_line", self:GetPackedRatio("TLPressure"),0.14, 0.875, 256,2)--,,0.01) self:Animate("brake_cylinder", self:GetPackedRatio("BCPressure"),0.14, 0.875, 256,2)--,,0.03) self:Animate("voltmeter", self:GetPackedRatio("BatteryVoltage"),0.601, 0.400) - self:Animate("ampermeter", 0.5+self:GetPackedRatio("BatteryCurrent"),0.604, 0.398) + if self:GetPackedRatio("BatteryVoltage") > 0 then + self:Animate("ampermeter", 0.47+math.Clamp((self:GetPackedRatio("BatteryVoltage")-0.44)/1.3,0,1),0.604, 0.398) + else + self:Animate("ampermeter", 0.5,0.604, 0.398) + end local typ = self:GetNW2Int("LampType",1) if self.LampType ~= typ then @@ -1009,40 +946,22 @@ function ENT:Think() self:ShowHide("lamps1",typ==1) self:ShowHide("lamps2",typ==2) end - local activeLights = 0 - local maxLights if typ == 1 then for i = 1,13 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end - maxLights = 13 else for i = 1,27 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp2_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp2_"..i,state,col) - activeLights = activeLights + state - end - maxLights = 27 - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/maxLights) + self:ShowHideSmooth("lamp2_"..i,self:Animate("Lamp2_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end end local door1 = self:Animate("door1", self:GetPackedBool("FrontDoor") and 0.99 or 0,0,0.25, 4, 0.5) - local door2 = self:Animate("door2", self:GetPackedBool("RearDoor") and (capOpened and 0.25 or 0.99) or 0,0,0.25, 4, 0.5) + local door2 = self:Animate("door2", self:GetPackedBool("RearDoor") and (self:GetPackedBool("CouchCap") and 0.25 or 0.99) or 0,0,0.25, 4, 0.5) if self.Door1 ~= (door1 > 0) then self.Door1 = door1 > 0 @@ -1245,23 +1164,17 @@ function ENT:Think() end local work = self:GetPackedBool("AnnPlay") - local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Int("AnnouncerBuzz",-1) > 0 - local buzz_old = self:GetNW2Int("AnnouncerBuzz",-1) == 2 + local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Bool("AnnouncerBuzz") for k in ipairs(self.AnnouncerPositions) do - self:SetSoundState("announcer_buzz"..k,(buzz and work and not buzz_old) and 1 or 0,1) - self:SetSoundState("announcer_buzz_o"..k,(buzz and work and buzz_old) and 1 or 0,1) + self:SetSoundState("announcer_buzz"..k,(buzz and work) and 1 or 0,1) end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end @@ -1293,16 +1206,8 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid:sub(1,4) == "IGLA" then return range > 0 and "igla_on" or "igla_off",location,1,pitch end - if soundid == "lk2c" then - local speed = self:GetPackedRatio("Speed") - self.SoundPositions[soundid][1] = 350-Lerp(speed/0.1,0,250) - return soundid,location,1-Lerp(speed/10,0.2,0.8),pitch - end if soundid == "LK2" then local speed = self:GetPackedRatio("Speed") - if range == 0 and speed < 20 and self:GetPackedRatio("EnginesCurrent") > 0.55 then - self:PlayOnce("lk2c","bass",1,pitch) - end local id = range > 0 and "lk2_on" or "lk2_off" self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) return id,location,1-Lerp(speed/10,0.2,0.8),pitch diff --git a/lua/entities/gmod_subway_81-714_mvm/init.lua b/lua/entities/gmod_subway_81-714_mvm/init.lua index 204f581..9b7c06a 100644 --- a/lua/entities/gmod_subway_81-714_mvm/init.lua +++ b/lua/entities/gmod_subway_81-714_mvm/init.lua @@ -49,7 +49,7 @@ function ENT:Initialize() self.RearCouple = self:CreateCouple(Vector(-421,0,-66),Angle(0,180,0),false,"717") end - local pneumoPow = 0.8+(math.random()^1.55)*0.4 + local pneumoPow = 1.3+(math.random()^1.2)*0.3 self.FrontBogey.PneumaticPow = pneumoPow self.RearBogey.PneumaticPow = pneumoPow @@ -132,6 +132,30 @@ function ENT:Initialize() }, } + -- Lights + self.Lights = { + -- Interior + [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [21] = { "light",Vector(-6.5,67,51.2)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [22] = { "light",Vector(-6.5,67,51.2)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [23] = { "light",Vector(-6.5,67,51.2)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [24] = { "light",Vector(-6.5,-67,51.2)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [25] = { "light",Vector(-6.5,-67,51.2)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [26] = { "light",Vector(-6.5,-67,51.2)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + } + + -- Cross connections in train wires self.TrainWireInverts = { [28] = true, @@ -142,6 +166,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + self.Lamps = { broken = {}, } @@ -175,10 +207,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%4==0 then local id = 10+math.ceil(i/4) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end @@ -214,10 +246,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%8.3<1 then local id = 9+math.ceil(i/8.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -233,19 +265,19 @@ function ENT:TrainSpawnerUpdate() if self.CustomSettings then local dot5 = self:GetNW2Int("Type")==2 local typ = self:GetNW2Int("BodyType") - self:SetNW2Int("Crane",self:GetNW2Int("Cran")) + self:SetNW2Int("Crane",typ==1 and self:GetNW2Int("Cran") or 2) local lampType = self:GetNW2Int("LampType") local BPSNType = self:GetNW2Int("BPSNType") local SeatType = self:GetNW2Int("SeatType") self:SetNW2Bool("Dot5",dot5) - self:SetNW2Int("LampType",lampType==1 and (math.random()>0.5 and 2 or 1) or lampType-1) - self:SetNW2Int("BPSNType",BPSNType==1 and math.ceil(math.random()*12+0.5) or BPSNType-1) - if SeatType==1 then - self:SetNW2Bool("NewSeats",math.random()>0.5) - else - self:SetNW2Bool("NewSeats",SeatType==3) - end + self:SetNW2Int("LampType",lampType==1 and (math.random()>0.5 and 2 or 1) or lampType-1) + self:SetNW2Int("BPSNType",BPSNType==1 and math.ceil(math.random()*12+0.5) or BPSNType-1) + if SeatType==1 then + self:SetNW2Bool("NewSeats",math.random()>0.5) + else + self:SetNW2Bool("NewSeats",SeatType==3) + end else local num = self.WagonNumber local typ = self.WagonNumberConf or {} @@ -291,15 +323,15 @@ function ENT:TrainSpawnerUpdate() self:UpdateTextures() self:UpdateLampsColors() - local pneumoPow = 0.8+(math.random()^1.55)*0.4 + local pneumoPow = 1.3+(math.random()^1.2)*0.3 if IsValid(self.FrontBogey) then self.FrontBogey.PneumaticPow = pneumoPow end if IsValid(self.RearBogey) then self.RearBogey.PneumaticPow = pneumoPow end - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.4 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.4 and 0.9+math.random()*0.2 math.randomseed(os.time()) end @@ -307,10 +339,10 @@ end function ENT:Think() local retVal = self.BaseClass.Think(self) local Panel = self.Panel - local Pneumatic = self.Pneumatic local lightsActive1 = Panel.EmergencyLights > 0 local lightsActive2 = Panel.MainLights > 0.0 + local mul = 0 local LampCount = self.LampType==2 and 27 or 13 local Ip = self.LampType==2 and 7 or 3.6 local Im = self.LampType==2 and 2 or 1 @@ -321,49 +353,63 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end + self:SetLightPower(11, mul > 0,mul/LampCount) + self:SetLightPower(12, mul > 0,mul/LampCount) + self:SetLightPower(13, mul > 0,mul/LampCount) + -- Side lights + self:SetLightPower(15, Panel.DoorsW > 0.5) + self:SetLightPower(18, Panel.DoorsW > 0.5) + self:SetLightPower(16, Panel.GreenRP > 0.5) + self:SetLightPower(19, Panel.GreenRP > 0.5) + self:SetLightPower(17, Panel.BrW > 0.5) + self:SetLightPower(20, Panel.BrW > 0.5) - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrW",Panel.BrW > 0) + --self:SetLightPower(21, Panel.DoorsW > 0.5) + --self:SetLightPower(24, Panel.DoorsW > 0.5) + --self:SetLightPower(22, Panel.GreenRP > 0.5) + --self:SetLightPower(25, Panel.GreenRP > 0.5) + --self:SetLightPower(23, Panel.BrW > 0.5) + --self:SetLightPower(26, Panel.BrW > 0.5) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrW",self.Panel.BrW > 0) self:SetPackedBool("M1_3",Panel.M1_3 > 0) self:SetPackedBool("M4_7",Panel.M4_7 > 0) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) - --self:SetPackedRatio("Crane", Pneumatic.RealDriverValvePosition) + --self:SetPackedRatio("Crane", self.Pneumatic.RealDriverValvePosition) --self:SetPackedRatio("Controller", (self.KV.ControllerPosition+3)/7) - if Pneumatic.ValveType == 1 then - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) + if self.Pneumatic.ValveType == 1 then + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) else - self:SetPackedRatio("BLPressure", Pneumatic.BrakeLinePressure/16.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.BrakeLinePressure/16.0) end - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", Pneumatic.BrakeCylinderPressure/6.0) - self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/150.0) - self:SetPackedRatio("BatteryCurrent",Panel["V1"]*math.Clamp((self.Battery.Voltage-75)*0.01,-0.01,1)) - self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - - self:SetPackedBool("Compressor",Pneumatic.Compressor > 0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) + self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor > 0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("BPSN",self.PowerSupply.X2_2 > 0) self:SetPackedRatio("RV",self.RV.Value/2) - self:SetPackedRatio("CranePosition", Pneumatic.RealDriverValvePosition) + self:SetPackedRatio("CranePosition", self.Pneumatic.RealDriverValvePosition) self:SetPackedBool("RZP",Panel.RZP > 0) @@ -399,13 +445,12 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end @@ -436,7 +481,7 @@ function ENT:OnButtonPress(button,ply) if self.CouchCap and self.Pneumatic.DriverValvePosition>2 then return end self.CouchCap = not self.CouchCap end - if not self.CouchCap and (not button:find("VB") and not button:find("GV") and not button:find("Isolation") and not button:find("Parking") and not button:find("Air")) then return true end + if not self.CouchCap and (not button:find("VB") and not button:find("GV") and not button:find("Isolation") and not button:find("Parking")) then return true end if button == "DriverValveDisconnect" then if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then diff --git a/lua/entities/gmod_subway_81-714_mvm/shared.lua b/lua/entities/gmod_subway_81-714_mvm/shared.lua index 8255f54..dcdfa46 100644 --- a/lua/entities/gmod_subway_81-714_mvm/shared.lua +++ b/lua/entities/gmod_subway_81-714_mvm/shared.lua @@ -24,25 +24,10 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=1,4 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i-1,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i-1,0)) -end - ENT.AnnouncerPositions = { {Vector(-3,-60, 62),300,0.3}, {Vector(-3,60 ,62),300,0.3}, } - -ENT.MirrorCams = { - Vector(-441,75,15),Angle(1,0,0),75, - Vector(-441,-75,15),Angle(1,0,0),75, -} - ENT.Cameras = { {Vector(-434,20,-13),Angle(0,135,0),"Train.714.Shunt","Shunt"}, {Vector(450+7,0,30),Angle(60,0,0),"Train.Common.CouplerCamera"}, @@ -100,34 +85,31 @@ function ENT:InitializeSounds() self.SoundNames["bpsn10"] = {"subway_trains/717/bpsn/bpsn_2.wav", loop=true} self.SoundNames["bpsn11"] = {"subway_trains/717/bpsn/bpsn_piter.wav", loop=true} self.SoundNames["bpsn12"] = {"subway_trains/717/bpsn/bpsn1.wav", loop=true} - self.SoundPositions["bpsn1"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn2"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn3"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn4"] = {600,1e9,Vector(0,45,-448),0.025} - self.SoundPositions["bpsn5"] = {600,1e9,Vector(0,45,-448),0.08} - self.SoundPositions["bpsn6"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn7"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn8"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn9"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn10"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn11"] = {600,1e9,Vector(0,45,-448),0.04} - self.SoundPositions["bpsn12"] = {600,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn1"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn2"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn3"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn4"] = {500,1e9,Vector(0,45,-448),0.025} + self.SoundPositions["bpsn5"] = {500,1e9,Vector(0,45,-448),0.08} + self.SoundPositions["bpsn6"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn7"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn8"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn9"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn10"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn11"] = {500,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn12"] = {500,1e9,Vector(0,45,-448),0.04} --Подвагонка self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" self.SoundNames["lk5_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk2c"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundNames["lk3_on"] = "subway_trains/717/pneumo/lk3_on.mp3" self.SoundNames["lk3_off"] = "subway_trains/717/pneumo/lk3_off.mp3" --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["lk5_on"] = {440,1e9,Vector(-60,-40,-66),0.30} self.SoundPositions["lk2_off"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk2c"] = {440,1e9,Vector(-60,-40,-66),0.6} self.SoundPositions["lk3_on"] = self.SoundPositions["lk2_on"] self.SoundPositions["lk3_off"] = self.SoundPositions["lk2_on"] - --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] self.SoundNames["compressor"] = {loop=2.0,"subway_trains/d/pneumatic/compressor/compessor_d_start.wav","subway_trains/d/pneumatic/compressor/compessor_d_loop.wav", "subway_trains/d/pneumatic/compressor/compessor_d_end.wav"} self.SoundNames["compressor2"] = {loop=1.79,"subway_trains/717/compressor/compressor_717_start2.wav","subway_trains/717/compressor/compressor_717_loop2.wav", "subway_trains/717/compressor/compressor_717_stop2.wav"} @@ -277,14 +259,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(-420,45,-30),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(-420,45,-30),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -316,10 +294,7 @@ function ENT:InitializeSounds() for k,v in ipairs(self.AnnouncerPositions) do self.SoundNames["announcer_buzz"..k] = {loop=true,"subway_announcers/asnp/bpsn_ann.wav"} - self.SoundPositions["announcer_buzz"..k] = {v[2] or 600,1e9,v[1],v[3]/6} - self.SoundNames["announcer_buzz_o"..k] = {loop=true,"subway_announcers/upo/noiseT2.wav"} - --self.SoundNames["announcer_buzz_o"..k] = {loop=true,"subway_announcers/riu/bpsn_ann.wav"} - self.SoundPositions["announcer_buzz_o"..k] = {v[2] or 600,1e9,v[1],v[3]/6} + self.SoundPositions["announcer_buzz"..k] = {v[2] or 600,1e9,v[1],v[3]/4} end end function ENT:InitializeSystems() @@ -348,7 +323,7 @@ function ENT:InitializeSystems() self:LoadSystem("BV","BV_630") self:LoadSystem("LK_755A") self:LoadSystem("YAR_13B") - self:LoadSystem("YAR_27",nil,"MSK") + self:LoadSystem("YAR_27") self:LoadSystem("YAK_36") self:LoadSystem("YAK_37E") self:LoadSystem("YAS_44V") @@ -396,18 +371,18 @@ ENT.NumberRanges = { }, { true, - {0623,0624,0625,0626,0627,0628,0629,0630,0631,0632,0633,0634,0635,0636,0637,0638,0639,0640,0641,0642,0643,0644,0645,0646,0647,0648,0649,0650,0651,0652,0653,0654,0655,0656,0657,0658,0662,0663,0664,0665,0666,0667,0668,0669,0670,0671,0672,0673,0674,0682,0684,0685,0686,0687,0688,0689,0690,0691,0692,0693,0694,0695,0696,0697,0698,0699,0703,0704,0705,0712,0713,0714,0715,0722,0723,0724,0725,0726,0727,0728,0729,0730,0731,0732,0733,0734,0735,0736,0737,0738,0739,0752,0753,0754,0755,0756,0757,0758,0759,0760,0761,0762,0763,0764,0765,0766,0767,0768,0769,0770,0771,0781,0782,0783,0786,0787,0788,0795,0796,0797,0798,0802,0803,0804,0805,0806,0807,0808,0809,0810,0811,0812,0813,0814,0818,0819,0820,0821,0822,0823,0824,0825,0826,0827,0828,0829,0830,0831,0833,0834,0835,0836,0837,0838,0839,0840,0841,0842,0843,0844,0845,0846,0847,0848,0849,0855,0856,0857,0858,0859,0860,0861,0862,0863,0864,0867,0872,0874,0875,0876,0877,0880,0881,0882,0883,0884,0885,0886,0887,0890,0891,0892,0893,0894,0895,0896,0897,0902,0903,0904,0905,0906,0907,0908,0909,0916,0917,0918}, + {0623,0624,0625,0626,0627,0628,0629,0630,0631,0632,0633,0634,0635,0636,0637,0638,0639,0640,0641,0642,0643,0644,0645,0646,0647,0648,0649,0650,0651,0652,0653,0654,0655,0656,0657,0658,0662,0663,0664,0665,0666,0667,0668,0669,0670,0671,0672,0673,0674,0682,0684,0685,0686,0687,0688,0689,0690,0691,0692,0693,0694,0695,0696,0697,0698,0699,0703,0704,0705,0712,0713,074,0715,0722,0723,0724,0725,0726,0727,0728,0729,0730,0731,0732,0733,0734,0735,0736,0737,0738,0739,0752,0753,0754,0755,0756,0757,0758,0759,0760,0761,0762,0763,0764,0765,0766,0767,0768,0769,0770,0771,0781,0782,0783,0786,0787,0788,0795,0796,0797,0798,0802,0803,0804,0805,0806,0807,0808,0809,0810,0811,0812,0813,0814,0818,0819,0820,0821,0822,0823,0824,0825,0826,0827,0828,0829,0830,0831,0833,0834,0835,0836,0837,0838,0839,0840,0841,0842,0843,0844,0845,0846,0847,0848,0849,0855,0856,0857,0858,0859,0860,0861,0862,0863,0864,0867,0872,0874,0875,0876,0877,0880,0881,0882,0883,0884,0885,0886,0887,0890,0891,0892,0893,0894,0895,0896,0897,0902,0903,0904,0905,0906,0907,0908,0909,0916,0917,0918}, {false, true,true ,true,{"Def_717MSKWhite","Def_717MSKWood4"}} }, --717.5 ЛВЗ { true, - {8204,8205,8207,8208,8209,8210,8211,8212,8213,8214,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8270,8271,8272,8273,8274,8275,8276,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8309,8312,8343,8360,8361,8362,8363,8364,8365,8366,8367,8368,8368,8370,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388}, + {8204,8205,8207,8208,8209,8210,8211,8212,8213,8214,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8270,8271,8272,8273,8274,8275,8276,8278,8279,8280,8281,8282,8283,8284,828,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8309,8312,8343,8360,8361,8362,8363,8364,8365,8366,8367,8368,8368,8370,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388}, {true , true,false,true,{"Def_717MSKWhite","Def_717MSKWood4"}} }, { true, - {11021,11022,11023,11024,11025,11026,11029,11030,11031,11032,11033,11034,11035,11036,11037,11038,11039,11040,11075,11076,11079,11089,11092,11093,11094,11095,11096,11097,11098,11099,11119,11120,11121,11122,11123,1112411125,11126,11127,11128,11129,11130,11131,11132,11133,11139,11140,11142,11143,11144,11145,11146,11147,11148,11149,11150,11151,11152,11153,11154,11155,11158,11159,11160,11161,11162,11163,11164,11165,11166,11169,11170,11171,11172,11175,11176,11177,11178,11179,11180,11183,11184,11185,11186,11193,11194,11195,11197,11198,11199,11200,11201,11202,11203,11204,11205,11206,11207,11208,11212,11213,11214,11216,11217,11218,11219,11221,11222,11223,11224,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11248,11250,11251,11252,11253,11256,11257,11264,11265,11266,11267,11268,11269,11270,11272,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11286,11287,11288,11289,11290,11291,11295,11299,11307,11308,11309,11310,11311,11312,11313,11314,11315,11317,11318,11319,11320,11321,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11358,11359,11361,11363,11365,11366,11376}, + {11021,11022,11023,11024,11025,11026,11029,11030,11031,11032,11033,11034,11035,11036,11037,11038,11039,11040,11075,11076,11079,11089,11092,11093,11094,11095,11096,11097,11098,11099,1117,11119,11120,11121,11122,11123,1112411125,11126,11127,11128,11129,11130,11131,11132,11133,11139,11140,11142,11143,11144,11145,11146,11147,11148,11149,11150,11151,11152,11153,11154,11155,11158,11159,11160,11161,11162,11163,11164,11165,11166,11169,11170,11171,11172,11175,11176,11177,11178,11179,11180,11183,11184,11185,11186,11193,11194,11195,11197,11198,11199,11200,11201,11202,11203,11204,11205,11206,11207,11208,11212,11213,11214,11216,11217,11218,11219,11221,11222,11223,11224,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11248,11250,11251,11252,11253,11256,11257,11264,11265,11266,11267,11268,11269,11270,11272,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11286,11287,11288,11289,11290,11291,11295,11299,11307,11308,11309,11310,11311,11312,11313,11314,11315,11317,11318,11319,11320,11321,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11358,11359,11361,11363,11365,11366,11376}, {true , true,true ,true,{"Def_717MSKWhite","Def_717MSKWood4"}} }, } diff --git a/lua/entities/gmod_subway_81-717_lvz/cl_init.lua b/lua/entities/gmod_subway_81-717_lvz/cl_init.lua index fe09a8c..07137ca 100644 --- a/lua/entities/gmod_subway_81-717_lvz/cl_init.lua +++ b/lua/entities/gmod_subway_81-717_lvz/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} @@ -51,12 +50,6 @@ ENT.ClientProps["salon"] = { ang = Angle(0,0,0), hide=2, } -ENT.ClientProps["salon_add"] = { - model = "models/metrostroi_train/81-717/717_spb_features.mdl", - pos = Vector(-48.5,0,0), - ang = Angle(0,0,0), - hide=2, -} ENT.ClientProps["osp_label"] = { model = "models/metrostroi_train/81-717/labels/label_spb1.mdl", pos = Vector(374.470795,42.140141,53.182781), @@ -64,7 +57,7 @@ ENT.ClientProps["osp_label"] = { hide=1, } ENT.ClientProps["body_additional"] = { - model = "models/metrostroi_train/81-717/717_body_additional_spb_013.mdl", + model = "models/metrostroi_train/81-717/717_body_additional_spb.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide=2, @@ -85,12 +78,10 @@ ENT.ButtonMap["USS1"] = { buttons = { {ID = "!NMPressureLow", x=20, y=7, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="NMLow"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,50,45),z=-1.4,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="NMLow"} }}, {ID = "!UAVATriggered", x=20, y=34, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="UAVATriggered"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,50,45),z=-1.4,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.8,color = Color(255,50,45), var="UAVATriggered"} }}, } } @@ -150,18 +141,12 @@ ENT.ClientProps["seats_new"] = { pos = Vector(0,0,0), ang = Angle(0,0,0), hide=1.5, - callback = function(ent) - ent.NewBlueSeats = false - end, } ENT.ClientProps["seats_new_cap"] = { model = "models/metrostroi_train/81-717/couch_new_cap.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat=0.8, - callback = function(ent) - ent.NewBlueSeats = false - end, } ENT.ClientProps["handrails_old"] = { model = "models/metrostroi_train/81-717/handlers_old.mdl", @@ -355,7 +340,6 @@ ENT.ButtonMap["Block5_6_old"] = { {ID = "!OhSigLamp1",x=332,y=40,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -10,color=Color(127,127,127), lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="OhSigLamp",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "1:VZ1Set",x=370,y=35--[[ 40--]] ,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -366,7 +350,6 @@ ENT.ButtonMap["Block5_6_old"] = { {ID = "!SPLight1",x=408,y=40,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",ignorepanel = true,skin = 1,z = -10,color=Color(127,127,127), lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="LSP",color=Color(100,255,50)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,50)}, }}, {ID = "1:OhrSigToggle",x=349,y=66,radius=20,tooltip="",model = { @@ -381,44 +364,36 @@ ENT.ButtonMap["Block5_6_old"] = { var="VUD1",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "1:KDLSet",x=62,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDL",speed=16,vmin=1,vmax=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "1:KDLKToggle",x=42,y=183,w=40,h=20,tooltip="",model = { - var="KDLK",speed=8,min=0.32,max=0.678,disable="1:KDLSet", - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, + var="KDLK",speed=8,min=0.32,max=0.68,disable="1:KDLSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "1:KDLRSet",x=155,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDLR",speed=16,vmin=1,vmax=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "1:KDLRKToggle",x=135,y=183,w=40,h=20,tooltip="",model = { - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, - var="KDLRK",speed=8,min=0.32,max=0.678,disable="1:KDLRSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, + var="KDLRK",speed=8,min=0.32,max=0.68,disable="1:KDLRSet", sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "1:DoorSelectToggle",x=107,y=184,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-8, var="DoorSelect",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "1:KRZDSet",x=155,y=86,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -433,18 +408,15 @@ ENT.ButtonMap["Block5_6_old"] = { {ID = "!GreenRPLight1",x=155,y=134,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, - lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GRP",color=Color(100,255,100)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GRP",color=Color(100,255,100)} }}, {ID = "!RZPLight1",x=332,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="RZP",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LKVPLight1",x=377,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=25,x=-0.3,y=-0.3,z=20.6,var="LKVP",color=Color(255,170,110)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, {ID = "1:ConverterProtectionSet",x=332,y=133,radius=20,tooltip="",model = { @@ -478,7 +450,6 @@ ENT.ButtonMap["Block5_6_old"] = { {ID = "!AVULight1",x=297,y=134,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -10,color=Color(127,127,127), lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "1:OVTToggle",x=240.2,y=181.2,radius=20,tooltip="",model = { @@ -561,13 +532,11 @@ ENT.ButtonMap["Block5_6_old_paksd"] = { {ID = "!SPLight3",x=408,y=40,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",ignorepanel = true,skin = 1,z = -10,color=Color(127,127,127), lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="LSP",color=Color(100,255,50)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,50)}, }}, {ID = "!AVULight3",x=352,y=70,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -10,color=Color(127,127,127), lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "3:VUD1Toggle",x=62,y=101,radius=20,tooltip="",model = { @@ -575,44 +544,36 @@ ENT.ButtonMap["Block5_6_old_paksd"] = { var="VUD1",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "3:KDLSet",x=62,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDL",speed=16,vmin=1,vmax=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "3:KDLKToggle",x=42,y=183,w=40,h=20,tooltip="",model = { - var="KDLK",speed=8,min=0.32,max=0.678,disable="3:KDLSet", - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, + var="KDLK",speed=8,min=0.32,max=0.68,disable="3:KDLSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "3:KDLRSet",x=155,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDLR",speed=16,vmin=1,vmax=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "3:KDLRKToggle",x=135,y=183,w=40,h=20,tooltip="",model = { - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, - var="KDLRK",speed=8,min=0.32,max=0.678,disable="3:KDLRSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, + var="KDLRK",speed=8,min=0.32,max=0.68,disable="3:KDLRSet", sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "3:DoorSelectToggle",x=107,y=184,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-8, var="DoorSelect",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "3:KRZDSet",x=155,y=86,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -627,18 +588,15 @@ ENT.ButtonMap["Block5_6_old_paksd"] = { {ID = "!GreenRPLight3",x=155,y=134,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, - lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GRP",color=Color(100,255,100)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GRP",color=Color(100,255,100)} }}, {ID = "!RZPLight3",x=332,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="RZP",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LKVPLight3",x=377,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -6, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=25,x=-0.3,y=-0.3,z=20.6,var="LKVP",color=Color(255,170,110)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, {ID = "3:OtklAVUToggle",x=240.2,y=92,radius=20,tooltip="",model = { @@ -674,13 +632,11 @@ ENT.ButtonMap["Block5_6_old_paksd"] = { var="VPAOn",sndid = "!VPA1", sndvol = 0.5,snd = function(val) return val and "triple_0-down" or "triple_down-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Train.Buttons.On"} }}, {ID = "1:VPAOffSet",x=265-10,y=137,w=20,h=20,tooltip="",model = { var="VPAOff",sndid = "!VPA1", sndvol = 0.5,snd = function(val) return val and "triple_0-up" or "triple_up-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Train.Buttons.Off"} }}, {ID = "3:OVTToggle",x=240.2,y=181.2,radius=20,tooltip="",model = { @@ -753,9 +709,7 @@ ENT.ButtonMap["Block5_6_kvr"] = { }}, {ID = "!OhSigLamp2",x=420,y=39,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(165,15,25), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="OhSigLamp",color=Color(255,25,40), - lcolor=Color(255,25,40),lz = 12,lfov=152,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,25,40)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="OhSigLamp",color=Color(255,25,40)} }}, --{ID = "2:AutodriveToggle",x=420,y=92,radius=20,tooltip=""}, @@ -765,7 +719,6 @@ ENT.ButtonMap["Block5_6_kvr"] = { var="VUD1",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "2:KDLSet",x=65,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_metal.mdl", @@ -774,16 +727,13 @@ ENT.ButtonMap["Block5_6_kvr"] = { }}, {ID = "!KDLLight2",x=65,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(185,195,210), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsLeftL",color=Color(255,255,255), - lcolor=Color(255,255,255),lz = 12,lfov=156,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.3,size=.5,scale=0.06,z=5,color=Color(255,255,255)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsLeftL",color=Color(255,255,255)} }}, {ID = "2:KDLKToggle",x=45,y=183,w=40,h=20,tooltip="",model = { var="KDLK",speed=8,min=0.32,max=0.68,disable="2:KDLSet", model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "2:KDLRSet",x=155,y=173,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_metal.mdl", @@ -792,23 +742,19 @@ ENT.ButtonMap["Block5_6_kvr"] = { }}, {ID = "!KDLRLight2",x=155,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(185,195,210), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsLeftL",color=Color(255,255,255), - lcolor=Color(255,255,255),lz = 12,lfov=156,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,255,255)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsLeftL",color=Color(255,255,255)} }}, {ID = "2:KDLRKToggle",x=135,y=183,w=40,h=20,tooltip="",model = { model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, var="KDLRK",speed=8,min=0.32,max=0.68,disable="2:KDLRSet", sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "2:DoorSelectToggle",x=107,y=184,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-8, var="DoorSelect",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "2:KRZDSet",x=153,y=85,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -822,22 +768,16 @@ ENT.ButtonMap["Block5_6_kvr"] = { }}, {ID = "!GreenRPLight2",x=107,y=95,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(30,160,100), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="GRP",color=Color(50,255,160), - lcolor=Color(50,255,160),lz = 12,lfov=154,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(50,255,160)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="GRP",color=Color(50,255,160)} }}, {ID = "!RZPLight2",x=309,y=81,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(165,15,25), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="RZP",color=Color(255,25,40), - lcolor=Color(255,25,40),lz = 12,lfov=152,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,25,40)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="RZP",color=Color(255,25,40)} }}, {ID = "!LKVPLight2",x=348,y=81,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(5,125,185), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="LKVP",color=Color(15,180,255), - lcolor=Color(15,180,255),lz = 12,lfov=158,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(15,180,255)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="LKVP",color=Color(15,180,255)} }}, {ID = "2:OhrSigToggle",x=420,y=81,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/tumbler_w_a.mdl",ang = 180,z=-3, @@ -884,13 +824,11 @@ ENT.ButtonMap["Block5_6_kvr"] = { var="VPAOn",sndid = "!VPA2", sndvol = 0.5,snd = function(val) return val and "triple_0-down" or "triple_down-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Train.Buttons.On"} }}, {ID = "2:VPAOffSet",x=252-10,y=136,w=20,h=20,tooltip="",model = { var="VPAOff",sndid = "!VPA2", sndvol = 0.5,snd = function(val) return val and "triple_0-up" or "triple_up-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Train.Buttons.Off"} }}, {ID = "2:OVTToggle",x=240,y=181,radius=20,tooltip="",model = { @@ -909,9 +847,7 @@ ENT.ButtonMap["Block5_6_kvr"] = { }}, {ID = "!AVULight2",x=316,y=181,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(165,15,25), - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="AVU",color=Color(255,25,40), - lcolor=Color(255,25,40),lz = 12,lfov=152,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,25,40)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="AVU",color=Color(255,25,40)} }}, {ID = "2:L_1Toggle",x=354,y=181,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",z=-8,ang=180, @@ -984,9 +920,7 @@ ENT.ButtonMap["Block7_old"] = { {ID = "1:KDPSet",x=101,y=127,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsRightL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsRightL",speed=9,z=2.2,color=Color(255,130,80)}, var="KDP",speed=16,vmin=1,vmax=0, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, @@ -996,13 +930,11 @@ ENT.ButtonMap["Block7_old"] = { getfunc = function(ent) return ent:GetPackedBool("KDPK") and 1 or math.max(0,(ent.Anims["1:VADToggle"].val-0.5)*2 or 0)*0.16 end, sndvol = 1,snd = function(val,realval) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "!1:PNT",x=135,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 4,z = -1, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=81,x=-0.3,y=-0.3,z=20.6,var="PN",color=Color(255,130,90)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,130,90)}, }}, } } @@ -1055,9 +987,7 @@ ENT.ButtonMap["Block7_kvr"] = { {ID = "!KDPLight2",x=65,y=127,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(185,195,210),z=5, - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsRightL",color=Color(255,255,255), - lcolor=Color(255,255,255),lz = 12,lfov=155,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,255,255)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="DoorsRightL",color=Color(255,255,255)} }}, {ID = "2:KDPSet",x=101,y=127,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", @@ -1070,14 +1000,11 @@ ENT.ButtonMap["Block7_kvr"] = { getfunc = function(ent) return ent:GetPackedBool("KDPK") and 1 or math.max(0,(ent.Anims["2:VADToggle"].val-0.5)*2 or 0)*0.24 end, sndvol = 1,snd = function(val,realval) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "!2:PNT",x=137,y=127,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-717/lamps/ad22_lamp.mdl",ignorepanel = true,color=Color(165,125,45),z=5, - lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="PN",color=Color(255,195,70), - lcolor=Color(255,195,70),lz = 12,lfov=160,lbright=1,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=.5,scale=0.06,z=5,color=Color(255,195,70)}, + lamp = {model = "models/metrostroi_train/81-717/lamps/ad22_emissive.mdl",var="PN",color=Color(255,195,70)} }}, } } @@ -1092,7 +1019,7 @@ ENT.ButtonMap["Block1"] = { hideseat=0.2, buttons = { - {ID = "!BatteryVoltage",x=220,y=60,tooltip="",radius=60,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage",x=220,y=60,tooltip="",radius=60}, {ID = "VMKToggle",x=38,y=30,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-5, var="VMK",speed=16, @@ -1128,15 +1055,13 @@ ENT.ButtonMap["Block3"] = { hideseat=0.2, buttons = { - {ID = "!BLTLPressure", x=62, y=55, radius=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - {ID = "!BCPressure", x=182, y=55, radius=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BLTLPressure", x=62, y=55, radius=55, tooltip=""}, + {ID = "!BCPressure", x=182, y=55, radius=55, tooltip=""}, {ID = "!NMPressureLow2", x=134.5, y=90, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.2,color = Color(255,50,45), var="NMLow", hidden = "!NMPressureLow2"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,50,45),z=-0.6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.2,color = Color(255,50,45), var="NMLow", hidden = "!NMPressureLow2"} }}, {ID = "!UAVATriggered2", x=255.5, y=92.1, radius=8, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.2,color = Color(255,50,45), var="UAVATriggered", hidden = "!UAVATriggered2"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,50,45),z=-0.6,} + lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z = -3.2,color = Color(255,50,45), var="UAVATriggered", hidden = "!UAVATriggered2"} }}, } } @@ -1154,27 +1079,22 @@ ENT.ButtonMap["PUAVO"] = { {ID = "!OK16",x=32,y=66+43*0,radius=10,tooltip="",model = { name="PUOKI",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PUK16",color=Color(255,170,110)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, {ID = "!OLRS",x=32,y=66+43*0.95,radius=10,tooltip="",model = { name="PUOLRS",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PULRS",color=Color(100,255,100)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, }}, {ID = "!OKI1",x=32,y=66+43*2,radius=10,tooltip="",model = { name="PUOKI1",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PUKI1",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!OKI2",x=32,y=66+43*3,radius=10,tooltip="",model = { name="PUOKI2",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PUKI2",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!OOS",x=79,y=66+43*0.95,radius=10,tooltip="",model = { name="PUOOS",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PUOS",color=Color(255,130,90)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,130,90)}, }}, {ID = "1:KHSet",x=79,y=66+43*2.2,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -2, @@ -1189,7 +1109,6 @@ ENT.ButtonMap["PUAVO"] = { {ID = "!OAVT",x=130,y=66+43*0.95,radius=10,tooltip="",model = { name="PUOAVT",model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -8, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="PUAVT",color=Color(100,255,100)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, }}, {ID = "1:VAVToggle",x=130,y=66+43*2.2,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/tumbler_w_a.mdl",ang = 180,z=0, @@ -1224,51 +1143,39 @@ ENT.ButtonMap["PUAVN"] = { buttons = { {ID = "!K16",x=47.5,y=21.5,w=10,h=10,tooltip="",model = { name="PUKI",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,var="PUK16"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,240,40),z=-3,aa=false} }}, {ID = "!OS",x=47.5,y=21.5+14.1*1,w=10,h=10,tooltip="",model = { name="PUOS",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,var="PUOS"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,240,40),z=-3,aa=false} }}, {ID = "!AVT",x=47.5,y=21.5+14.1*2,w=10,h=10,tooltip="",model = { name="PUAVT",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,color=Color(175,250,20),var="PUAVT"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(175,250,20),z=-3,aa=false} }}, {ID = "!LRS",x=47.5,y=21.5+14.1*3,w=10,h=10,tooltip="",model = { name="PULRS",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,color=Color(175,250,20),var="PULRS"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(175,250,20),z=-3,aa=false} }}, {ID = "!KI1",x=47.5,y=21.5+14.1*4,w=10,h=10,tooltip="",model = { name="PUKI1",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-6,var="PUKI1"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,20,40),z=-3,aa=false} }}, {ID = "!KI2",x=47.5,y=21.5+14.1*5,w=10,h=10,tooltip="",model = { name="PUKI2",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-6,var="PUKI2"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,20,40),z=-3,aa=false} }}, {ID = "!ARSOch",x=219,y=21.5,w=10,h=10,tooltip="",model = { name="PUOCh",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-6,var="PU04"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,20,40),z=-3,aa=false} }}, {ID = "!ARS0",x=219,y=21.5+13.5*1,w=10,h=10,tooltip="",model = { name="PU0",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-6,var="PU0"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,20,40),z=-3,aa=false} }}, {ID = "!ARS40",x=219,y=21.5+13.5*2,w=10,h=10,tooltip="",model = { name="PU40",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,var="PU40"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(255,240,40),z=-3,aa=false} }}, {ID = "!ARS60",x=219,y=21.5+13.5*3,w=10,h=10,tooltip="",model = { name="PU60",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,color=Color(175,250,20),var="PU60"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(175,250,20),z=-3,aa=false} }}, {ID = "!ARS70",x=219,y=21.5+13.5*4,w=10,h=10,tooltip="",model = { name="PU70",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,color=Color(175,250,20),var="PU70"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(175,250,20),z=-3,aa=false} }}, {ID = "!ARS80",x=219,y=21.5+13.5*5,w=10,h=10,tooltip="",model = { name="PU80",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-6,color=Color(175,250,20),var="PU80"}, - sprite = {bright=0.1,size=0.25,scale=0.02,color=Color(175,250,20),z=-3,aa=false} }}, {ID = "KHSet",x=109,y=132,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -2, @@ -1313,23 +1220,9 @@ ENT.ButtonMap["PUAVNLights"] = { buttons = { {ID = "!PU",x=6 ,y=4+12.3,w=3,h=3,model = { name="BURPower",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-5.5,var="BURPower"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, } } - -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} ENT.ButtonMap["Block2"] = { pos = Vector(450.4+0.35,10.0,1.3+5.35), ang = Angle(0,-90,58), @@ -1341,124 +1234,90 @@ ENT.ButtonMap["Block2"] = { buttons = { {ID = "!Speedometer1",x=137,y=29,w=17,h=25,tooltip="",model = { name="SSpeed2",model = "models/metrostroi_train/81-717/segments/segment_spb.mdl",color=Color(175,250,20),skin=0,z=0.1,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetNW2Int("ALSSpeed")) end, - sprite = {bright=0.1,size=.5,scale=0.055,vscale=0.065,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetNW2Int("ALSSpeed")*0.1)%10] - end}, }}, {ID = "!Speedometer2",x=158,y=29,w=17,h=25,tooltip="",model = { name="SSpeed1",model = "models/metrostroi_train/81-717/segments/segment_spb.mdl",color=Color(175,250,20),skin=0,z=0.1,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetNW2Int("ALSSpeed")) end, - sprite = {bright=0.1,size=.5,scale=0.055,vscale=0.065,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetNW2Int("ALSSpeed"))%10] - end}, }}, {ID = "!ARSOch",x=100,y=33,w=10,h=10,tooltip="",model = { name="SAOCh",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-0.2,var="AR04"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!ARS0",x=89,y=33+10.9*0,w=10,h=10,tooltip="",model = { name="SA0",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ra.mdl",z=-0.2,var="AR0"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!ARS40",x=89,y=33+10.9*1,w=10,h=10,tooltip="",model = { name="SA40",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-0.2,var="AR40"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(255,240,40),z=-1,aa=true} }}, {ID = "!ARS60",x=89,y=33+10.9*2,w=10,h=10,tooltip="",model = { name="SA60",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-0.2,color=Color(175,250,20),var="AR60"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!ARS70",x=89,y=33+10.9*3,w=10,h=10,tooltip="",model = { name="SA70",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-0.2,color=Color(175,250,20),var="AR70"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!ARS80",x=89,y=33+10.9*4,w=10,h=10,tooltip="",model = { name="SA80",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_ya.mdl",z=-0.2,color=Color(175,250,20),var="AR80"}, - sprite = {bright=0.1,size=0.25,scale=0.03,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!LampLSD1",x=191.0,y=34.2,w=10,h=4,tooltip="",model = { name="SSD1",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,color=Color(175,250,20),var="SD"}, - sprite = {bright=0.05,size=0.25,scale=0.03,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!LampLSD2",x=201.2,y=34.2,w=10,h=4,tooltip="",model = { name="SSD2",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,ang=90,color=Color(175,250,20),var="SD"}, - sprite = {bright=0.05,size=0.25,scale=0.03,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!LampLVD",x=191.3,y=43.8+8.8*0,w=10,h=4,tooltip="",model = { name="SVD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",var="A04",z=-0.2,color=Color(175,250,20),var="VD"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!LampLHRK",x=191.3,y=43.8+8.8*1,w=10,h=4,tooltip="",model = { name="SRK",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,var="HRK"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,240,40),z=-1,aa=true} }}, {ID = "!LampLST",x=191.3,y=43.8+8.8*2,w=10,h=4,tooltip="",model = { name="SST",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,var="ST"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,240,40),z=-1,aa=true} }}, {ID = "!LampLRD",x=191.3,y=43.8+8.8*3,w=10,h=4,tooltip="",model = { name="SRD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,color=Color(175,250,20),var="LRD"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!LampRP",x=209.8,y=43.9+8.8*0,w=10,h=4,tooltip="",model = { - name="SRP",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_rb.mdl",z=-0.2,var="RP",getfunc = function(ent) return math.Clamp((ent:GetPackedRatio("RPR")-0.42)*7,0,1) end}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,20,40),z=-1,aa=true} + name="SRP",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_rb.mdl",z=-0.2,var="RP"}, }}, {ID = "!LampLSN",x=219.8,y=43.9+8.8*0,w=10,h=4,tooltip="",model = { - name="SSN",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_rb.mdl",z=-0.2,ang=-90,var="SN",getfunc = function(ent) return ent:GetPackedRatio("RPR")^0.9*1.1 end}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,20,40),z=-1,aa=true} + name="SSN",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_rb.mdl",z=-0.2,ang=-90,var="SN"}, }}, --{x=2031 + 2*0,y=223 + 192*0,w=10,h=10,tooltip="",radius=10}, {ID = "!LampLKVD",x=219,y=43.8+8.8*1,w=10,h=4,tooltip="",model = { name="SKVD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,var="KVD"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,180,40),z=-1,aa=true} }}, {ID = "!LampLKT",x=219,y=43.8+8.8*2,w=10,h=4,tooltip="",model = { name="SKT",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,var="KT"}, - sprite = {bright=0.05,size=0.25,scale=0.04,vscale=0.02, color=Color(255,180,40),z=-1,aa=true} }}, {ID = "!LampDV",x=219,y=43.8+8.8*3,w=10,h=4,tooltip="",model = { name="SDV",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_yb.mdl",z=-0.2,color=Color(175,250,20),var="DV"}, - sprite = {bright=0.05,size=0.25,scale=0.03,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!SpeedFact1",x=133.1,y=73.6,w=23.7,h=8,tooltip="",model = { name="SpeedFact1",model = "models/metrostroi_train/81-717/lamps/indicators.mdl",z=0.15,color=Color(175,250,20),skin=10,ang=90, - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end }}, {ID = "!SpeedFact2",x=133.1+23.7,y=73.6,w=23.7,h=8,tooltip="",model = { name="SpeedFact2",model = "models/metrostroi_train/81-717/lamps/indicators.mdl",z=0.15,color=Color(175,250,20),skin=10,ang=90, - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end }}, {ID = "!ARSL20",x=140,y=83,w=5,h=10,tooltip="",model = { name="SAL20",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/triangle_red.mdl",z=-0.3,var="AR20"}, - sprite = {bright=0.05,size=0.25,scale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!ARSL40",x=140+4.3*2,y=83,w=5,h=10,tooltip="",model = { name="SAL40",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/triangle_yellow.mdl",z=-0.3,var="AR40"}, - sprite = {bright=0.05,size=0.25,scale=0.02,color=Color(255,240,40),z=-1,aa=true} }}, {ID = "!ARSL60",x=140+4.3*(3+1.1),y=83,w=5,h=10,tooltip="",model = { name="SAL60",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/triangle_yellow.mdl",color=Color(175,250,20),z=-0.3,var="AR60"}, - sprite = {bright=0.05,size=0.25,scale=0.02,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!ARSL70",x=140+4.3*(4+1.2),y=83,w=5,h=10,tooltip="",model = { name="SAL70",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/triangle_yellow.mdl",color=Color(175,250,20),z=-0.3,var="AR70"}, - sprite = {bright=0.05,size=0.25,scale=0.02,color=Color(175,250,20),z=-1,aa=true} }}, {ID = "!ARSL80",x=140+4.3*(5+1.3),y=83,w=5,h=10,tooltip="",model = { name="SAL80",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/triangle_yellow.mdl",color=Color(175,250,20),z=-0.3,var="AR80"}, - sprite = {bright=0.05,size=0.25,scale=0.02,color=Color(175,250,20),z=-1,aa=true} }}, --[[ {ID = "!LampLN",x=217-0.5*0 ,y=34.6 + 20.7*1,w=10,h=10,tooltip="",model = { @@ -1772,12 +1631,6 @@ ENT.ButtonMap["Battery_C"] = { plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=230,x=-28,y=28,var="RC1Pl",ID="RC1Pl",z=-15,}, sndvol = 0.8,snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, - {ID = "1P:RC1Toggle",x=40,y=240+50,radius=40,tooltip="",model = { - model = "models/metrostroi_train/81-717/buttons/breaker_rcvay.mdl",z=17,ang=180, - var="RC1",speed=0.5,vmin=1,vmax=0.87, - plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=230,x=-28,y=28,var="RC1Pl",ID="RC1Pl",z=-15,}, - sndvol = 0.8,snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80,sndmax = 1e3/3,sndang = Angle(-90,0,0), - }}, {ID = "1:RC2Toggle",x=40,y=340+50,radius=40,tooltip="",model = { model = "models/metrostroi_train/81-717/buttons/breaker_rc2.mdl",z=17,ang=180, var="RC2",speed=0.5,vmin=1,vmax=0.87, @@ -1962,12 +1815,6 @@ ENT.ButtonMap["Battery_R"] = { plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=230,x=-28,y=28,var="RC1Pl",ID="RC1Pl",z=-15,}, sndvol = 0.8,snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, - {ID = "2P:RC1Toggle",x=64,y=40,radius=40,tooltip="",model = { - model = "models/metrostroi_train/81-717/buttons/breaker_rcvay.mdl",z=17,ang=180, - var="RC1",speed=0.5,vmin=1,vmax=0.87, - plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=230,x=-28,y=28,var="RC1Pl",ID="RC1Pl",z=-15,}, - sndvol = 0.8,snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80,sndmax = 1e3/3,sndang = Angle(-90,0,0), - }}, --{ID = "1:RC1Pl",x=45,y=108,radius=20,tooltip=""}, {ID = "2:VBToggle",x=220,y=40,radius=40,tooltip="",model = { model = "models/metrostroi_train/81-717/buttons/breaker_vb.mdl",z=17,ang=180, @@ -2019,14 +1866,14 @@ ENT.ButtonMap["CabVent_C"] = { hideseat=0.2, buttons = { - {ID="PVK-",x=0, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK-",x=0, y=0, w=35,h=62, tooltip=""}, {ID = "!PVK",x=35,y=31,model = { model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",ang = 180,z=15, getfunc = function(ent) return ent:GetPackedRatio("PVK") end, var="PVK",speed=4,min=1,max=0.75, sndvol = 1,snd = function(val,val2) return "pvk"..val2 end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), }}, - {ID="PVK+",x=35, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK+",x=35, y=0, w=35,h=62, tooltip=""}, } } @@ -2045,7 +1892,6 @@ ENT.ButtonMap["HelperPanel_C"] = { var="VUD2",speed=6, sndvol = 1,snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "VDLSet",x=0,y=90,w=76,h=86,tooltip="",model = { model = "models/metrostroi_train/switches/vudbrown.mdl",z=25, @@ -2090,7 +1936,6 @@ ENT.ButtonMap["ParkingBrake"] = { var="ParkingBrake",sndid="parking_brake", sndvol = 1,snd = function(val) return "disconnect_valve" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2109,7 +1954,6 @@ ENT.ButtonMap["EPKDisconnect"] = { var="EPK",sndid="EPK_disconnect", sndvol = 1,snd = function(val) return "disconnect_valve" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2141,8 +1985,8 @@ ENT.ButtonMap["HVMeters_O"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0, y=0, w=68, h=64, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!HighVoltage", x=0, y=74, w=68, h=64, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0, y=0, w=68, h=64, tooltip=""}, + {ID = "!HighVoltage", x=0, y=74, w=68, h=64, tooltip=""}, } } ENT.ButtonMap["HVMeters_N"] = { @@ -2153,8 +1997,8 @@ ENT.ButtonMap["HVMeters_N"] = { scale = 0.0625, buttons = { - {ID = "!HighVoltage", x=0, y=0, w=65, h=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!EnginesCurrent", x=75, y=0, w=70, h=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, + {ID = "!HighVoltage", x=0, y=0, w=65, h=45, tooltip=""}, + {ID = "!EnginesCurrent", x=75, y=0, w=70, h=45, tooltip=""}, } } @@ -2173,7 +2017,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } ENT.ClientProps["UAVALever"] = { @@ -2190,7 +2034,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -2212,7 +2056,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2228,7 +2071,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2241,10 +2083,9 @@ ENT.ButtonMap["EPKDisconnect"] = { buttons = { {ID = "EPKToggle",x=0,y=0,w=200,h=120,tooltip="",model = { - var="EPK",--,sndid="EPK_disconnect", + var="EPK"--,sndid="EPK_disconnect", --sndvol = 1,snd = function(val) return "disconnect_valve" end, --sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2257,10 +2098,9 @@ ENT.ButtonMap["EPVDisconnect"] = { buttons = { {ID = "EPKToggle",x=0,y=0,w=200,h=120,tooltip="",model = { - var="EPK",--,sndid="EPK_disconnect", + var="EPK"--,sndid="EPK_disconnect", --sndvol = 1,snd = function(val) return "disconnect_valve" end, --sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2305,7 +2145,6 @@ ENT.ButtonMap["DriverValveDisconnect"] = { var="DriverValveDisconnect",sndid="valve_disconnect", sndvol = 1,snd = function(val) return "disconnect_valve" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -2322,10 +2161,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.1, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -2349,9 +2191,12 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -2381,7 +2226,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -2419,7 +2263,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } @@ -2504,7 +2348,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2516,10 +2359,9 @@ ENT.ButtonMap["OtsekDoor1"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor1",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor1",sndid="door_otsek1", + var="door_otsek1",sndid="door_otsek1", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -2531,10 +2373,9 @@ ENT.ButtonMap["OtsekDoor2"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor2",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor2",sndid="door_otsek2", + var="door_otsek2",sndid="door_otsek2", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -2550,7 +2391,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2575,7 +2415,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2590,7 +2429,6 @@ ENT.ButtonMap["RearDoor"] = { var="door1",sndid="door1", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2870,64 +2708,33 @@ ENT.Lights = { [1] = { "headlight",Vector(460,0,-40),Angle(0,0,0),Color(216,161,92),farz=5144,brightness = 4, fov=100, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(460,0,50), Angle(-20,0,0), Color(255,0,0), fov=160 ,brightness = 0.3, farz=450,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1, hidden="salon"}, - [4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1, hidden="salon"}, - - -- Reverse - [8] = { "light",Vector(465,-45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size=2 }, - [9] = { "light",Vector(465, 45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size=2 }, - - -- Cabin - [10] = { "dynamiclight", Vector( 425, 0, 30), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.25, hidden = "salon"}, - - -- Interior - [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [30] = { "light", Vector(455 , -45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, - [31] = { "light", Vector(455 , 45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, - [32] = { "light", Vector(455 , 0, 52), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, + [3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, + [4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, -- Manometers - [40] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(255,130,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 145, hidden = "Controller_body" }, - [41] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(255,130,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 140, hidden = "Controller_body" }, - [42] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 120, hidden = "Controller_body" }, + [40] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(255,130,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 145 }, + [41] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(255,130,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 140 }, + [42] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 120 }, -- Voltmeter - [44] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(255,130,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100, hidden = "Controller_body" }, - [45] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(255,130,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100, hidden = "Controller_body" }, + [44] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(255,130,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100 }, + [45] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(255,130,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100 }, - [46] = { "headlight",Vector(452,-32.2,12+3.5),Angle(60,-30,180),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1,fov = 130, hidden = "Controller_body" }, - [47] = { "headlight",Vector(454.3,-28.3,12+3.5),Angle(60,-30,180),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1,fov = 130, hidden = "Controller_body" }, + [46] = { "headlight",Vector(452,-32.2,12+3.5),Angle(60,-30,180),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1,fov = 130 }, + [47] = { "headlight",Vector(454.3,-28.3,12+3.5),Angle(60,-30,180),Color(255,130,25),farz = 8,nearz = 2,shadows = 0,brightness = 1,fov = 130 }, -- Manometers - [50] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(200,200,255),farz = 8,nearz = 2,shadows = 1,brightness = 2,fov = 145, hidden = "Controller_body" }, - [51] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(200,200,255),farz = 8,nearz = 2,shadows = 1,brightness = 2,fov = 140, hidden = "Controller_body" }, - [52] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2.5,fov = 120, hidden = "Controller_body" }, + [50] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(200,200,255),farz = 8,nearz = 2,shadows = 1,brightness = 2,fov = 145 }, + [51] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(200,200,255),farz = 8,nearz = 2,shadows = 1,brightness = 2,fov = 140 }, + [52] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2.5,fov = 120 }, -- Voltmeter - [54] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(200,200,255),farz = 10,nearz = 2,shadows = 1,brightness = 2,fov = 100, hidden = "Controller_body" }, - [55] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(200,200,255),farz = 10,nearz = 2,shadows = 1,brightness = 2,fov = 100, hidden = "Controller_body" }, + [54] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(200,200,255),farz = 10,nearz = 2,shadows = 1,brightness = 2,fov = 100 }, + [55] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(200,200,255),farz = 10,nearz = 2,shadows = 1,brightness = 2,fov = 100 }, - [56] = { "headlight",Vector(452,-32.2,12+3.5),Angle(60,-30,180),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2,fov = 130, hidden = "Controller_body" }, - [57] = { "headlight",Vector(454.3,-28.3,12+3.5),Angle(60,-30,180),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2,fov = 130, hidden = "Controller_body" }, + [56] = { "headlight",Vector(452,-32.2,12+3.5),Angle(60,-30,180),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2,fov = 130 }, + [57] = { "headlight",Vector(454.3,-28.3,12+3.5),Angle(60,-30,180),Color(200,200,255),farz = 8,nearz = 2,shadows = 0,brightness = 2,fov = 130 }, - [70] = { "headlight",Vector( 425,-56,-70),Angle(0,-90,0),Color(255,220,180),brightness = 0.3,distance = 300 ,fov=120,shadows = 1, texture="effects/flashlight/soft", hidden = "Controller_body" }, - - Lamp_RTM = {"light", Vector(448.35,-33.95,-3.9), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden = "Lamp_RTM"}, - - Lamps_cab1 = {"light", Vector(396.5,14.8,53), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.2, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, - Lamps_cab2 = {"light", Vector(428,-1.5,60), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.25, texture = "sprites/light_glow02", hidden = "Lamps_cab2"}, - Lamps2_cab1 = {"light", Vector(396.5,14.8,52.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.2, texture = "sprites/light_glow02", hidden = "Lamps2_cab1"}, - Lamps2_cab2 = {"light", Vector(428,-1.3,59.2), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.25, texture = "sprites/light_glow02", hidden = "Lamps2_cab2"}, + [70] = { "headlight",Vector( 425,-56,-70),Angle(0,-90,0),Color(255,220,180),brightness = 0.3,distance = 300 ,fov=120,shadows = 1, texture="effects/flashlight/soft" }, } --ENT.AutoPos = {Vector(407.3,-10.5,47),Vector(419.3,-57.5,47.5)} @@ -3004,15 +2811,6 @@ function ENT:Think() self.ClientEnts.schemes:SetSubMaterial(1,scheme and scheme[1]) self.PassSchemesDone = true end - if self.NewBlueSeats ~= self:GetNW2Bool("NewSeatsBlue") then - self.NewBlueSeats = self:GetNW2Bool("NewSeatsBlue") - if IsValid(self.ClientEnts.seats_new) then - self.ClientEnts.seats_new:SetSubMaterial(0,self.NewBlueSeats and "models/metrostroi_train/81-717/interior_kvr_blue" or "") - end - if IsValid(self.ClientEnts.seats_new_cap_o) then - self.ClientEnts.seats_new_cap_o:SetSubMaterial(0,self.NewBlueSeats and "models/metrostroi_train/81-717/interior_kvr_blue" or "") - end - end local WhitePLights = self:GetNW2Bool("WhitePLights") self:SetLightPower(40,not WhitePLights and self:GetPackedBool("PanelLights")) @@ -3027,46 +2825,22 @@ function ENT:Think() self:SetLightPower(70,sosd>0,sosd) local mask = self:GetNW2Int("MaskType",1) - if self.MaskType ~= mask then - self:ShowHide("mask22_1",mask==1) - self:ShowHide("mask22_2",mask==2) - self:ShowHide("mask222_lvz",mask==3) - self:ShowHideSmooth("Headlights222_1",0) - self:ShowHideSmooth("Headlights222_2",0) - self:ShowHideSmooth("Headlights22_1",0) - self:ShowHideSmooth("Headlights22_2",0) - --[[if mask == 3 then - self.LightsOverride[30][2] = Vector(465,-48, -23.5) - self.LightsOverride[31][2] = Vector(465,48 , -23.5) - self.LightsOverride[32][2] = Vector(465,0 , -23.5) - elseif mask < 3 then - self.LightsOverride[30][2] = Vector(465,-45, -23.5) - self.LightsOverride[31][2] = Vector(465,45 , -23.5) - self.LightsOverride[32][2] = Vector(465,0 , 52) - end]] - end + self:ShowHide("mask22_1",mask==1) + self:ShowHide("mask22_2",mask==2) + self:ShowHide("mask222_lvz",mask==3) local HL1 = self:Animate("Headlights1",self:GetPackedBool("Headlights1") and 1 or 0,0,1,6,false) local HL2 = self:Animate("Headlights2",self:GetPackedBool("Headlights2") and 1 or 0,0,1,6,false) local RL = self:Animate("RedLights_a",self:GetPackedBool("RedLights") and 1 or 0,0,1,6,false) - if mask == 3 then - self:ShowHideSmooth("Headlights222_1",HL1) - self:ShowHideSmooth("Headlights222_2",HL2) - elseif mask < 3 then - self:ShowHideSmooth("Headlights22_1",HL1) - self:ShowHideSmooth("Headlights22_2",HL2) - end - + self:ShowHideSmooth("Headlights222_1",mask==3 and HL1 or 0) + self:ShowHideSmooth("Headlights222_2",mask==3 and HL2 or 0) + self:ShowHideSmooth("Headlights22_1",mask~=3 and HL1 or 0) + self:ShowHideSmooth("Headlights22_2",mask~=3 and HL2 or 0) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(8,RL > 0,RL) - self:SetLightPower(9,RL > 0,RL) local headlight = HL1*0.6+HL2*0.4 self:SetLightPower(1,headlight>0,headlight) self:SetLightPower(2,self:GetPackedBool("RedLights"),RL) - self:SetLightPower(30,headlight > 0,headlight) - self:SetLightPower(31,headlight > 0,headlight) - self:SetLightPower(32,mask==3 and headlight > 0,headlight) if IsValid(self.GlowingLights[1]) then @@ -3087,12 +2861,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18, Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19, Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17, Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20, Bortlamp_y > 0, Bortlamp_y) self:Animate("Controller",self:GetPackedRatio("ControllerPosition"),0.3,0.02,2,false) @@ -3141,7 +2909,7 @@ function ENT:Think() if self:GetPackedBool("LUDS") then local speed = self:GetNW2Int("ALSSpeed") if IsValid(self.ClientEnts["SSpeed1"])then self.ClientEnts["SSpeed1"]:SetSkin(math.floor(speed)%10) end - if IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed*0.1)%10) end + if IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed/10)) end for i=1,2 do if IsValid(self.ClientEnts["SpeedFact"..i]) then self.ClientEnts["SpeedFact"..i]:SetSkin(math.ceil(math.Clamp((speed-4)/5-(i-1)*10,0,10))) end end @@ -3180,23 +2948,9 @@ function ENT:Think() self:SetLightPower(3,self.Otsek1 and self:GetPackedBool("EqLights")) self:SetLightPower(4,self.Otsek2 and self:GetPackedBool("EqLights")) - local activeLights = 0 + for i = 1,12 do - local colV = self:GetNW2Vector("lamp"..i) - local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/12) - end + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,(self:GetPackedBool("lightsActive"..i)) and 1 or 0,0,1,6,false)) end if self.KVR ~= self:GetNW2Bool("KVR") or self.Type ~= self:GetNW2Int("AVType",1) then @@ -3245,20 +2999,12 @@ function ENT:Think() self:HidePanel("PAMScreen",self.Type==2) self:HidePanel("PAM",self.Type==2) self:HidePanel("PAM1",self.Type==2) - self:ShowHide("1P:RC1Toggle",self.Type==4) - self:ShowHide("1P:RC1Toggle_pl",self.Type==4) self:ShowHide("1:RC2Toggle",self.Type~=4) self:ShowHide("1:RC2Toggle_pl",self.Type~=4) - self:ShowHide("1:RC1Toggle",self.Type~=4) - self:ShowHide("1:RC1Toggle_pl",self.Type~=4) self:ShowHide("1:VAUToggle",self.Type~=4) self:ShowHide("1:VRDToggle",self.Type~=4) - self:ShowHide("2P:RC1Toggle",self.Type==4) - self:ShowHide("2P:RC1Toggle_pl",self.Type==4) self:ShowHide("2:RC2Toggle",self.Type~=4) self:ShowHide("2:RC2Toggle_pl",self.Type~=4) - self:ShowHide("2:RC1Toggle",self.Type~=4) - self:ShowHide("2:RC1Toggle_pl",self.Type~=4) self:ShowHide("2:VAUToggle",self.Type~=4) self:ShowHide("2:VRDToggle",self.Type~=4) self:ShowHide("Controller_puav1",self.Type == 1) @@ -3290,11 +3036,6 @@ function ENT:Think() self:ShowHideSmooth("Lamps_cab2",0) self:ShowHideSmooth("Lamps_cab1",0) self:ShowHideSmooth("Lamp_RTM",0) - self:SetLightPower("Lamp_RTM",false,0) - self:SetLightPower("Lamps_cab1",false,0) - self:SetLightPower("Lamps_cab2",false,0) - self:SetLightPower("Lamps2_cab1",false,0) - self:SetLightPower("Lamps2_cab2",false,0) self:ShowHide("VAVToggle_label1",self.Type == 2 and self:GetNW2Bool("SBPP")) self:SetLightPower(44,false) @@ -3321,13 +3062,9 @@ function ENT:Think() local lamps_cab2 = self:Animate("lamps_cab2",self:GetPackedBool("EqLights") and 1 or 0,0,1,5,false) local lamps_cab1 = self:Animate("lamps_cab1",self:GetPackedBool("CabLights") and 1 or 0,0,1,5,false) local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false) - local cabStrength = (lamps_cab1*0.3+lamps_cab2*0.7)^1.5 - self:SetLightPower(10,cabStrength > 0, cabStrength) if self.KVR then self:ShowHideSmooth("Lamps_cab2",lamps_cab2) self:ShowHideSmooth("Lamps_cab1",lamps_cab1) - self:SetLightPower("Lamps_cab1", lamps_cab1 > 0,lamps_cab1) - self:SetLightPower("Lamps_cab2", lamps_cab2 > 0,lamps_cab2) self:SetLightPower(46,not WhitePLights and self:GetPackedBool("PanelLights")) self:SetLightPower(47,not WhitePLights and self:GetPackedBool("PanelLights")) self:SetLightPower(56,WhitePLights and self:GetPackedBool("PanelLights")) @@ -3335,10 +3072,7 @@ function ENT:Think() else self:ShowHideSmooth("Lamps2_cab2",lamps_cab2) self:ShowHideSmooth("Lamps2_cab1",lamps_cab1) - self:SetLightPower("Lamps2_cab1", lamps_cab1 > 0,lamps_cab1) - self:SetLightPower("Lamps2_cab2", lamps_cab2 > 0,lamps_cab2) self:ShowHideSmooth("Lamp_RTM",lamps_rtm) - self:SetLightPower("Lamp_RTM",lamps_rtm > 0,lamps_rtm) self:SetLightPower(44,not WhitePLights and self:GetPackedBool("PanelLights")) self:SetLightPower(45,not WhitePLights and self:GetPackedBool("PanelLights")) self:SetLightPower(54,WhitePLights and self:GetPackedBool("PanelLights")) @@ -3419,7 +3153,7 @@ function ENT:Think() end end - --[[local dT = self.DeltaTime + local dT = self.DeltaTime --self.TunnelCoeff = 0.8 --self.StreetCoeff = 0 local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) @@ -3441,42 +3175,7 @@ function ENT:Think() self:SetSoundState("rolling_10",rollingi*rol10,1) self:SetSoundState("rolling_40",rollingi*rol40,rol40p) self:SetSoundState("rolling_70",rollingi*rol70,rol70p) - self:SetSoundState("rolling_80",rollingi*rol80,rol80p)]] - - local dT = self.DeltaTime - local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) - local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff) - local speed = self:GetPackedRatio("Speed")*100.0 - local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1)) - local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) - local rol40p = Lerp((speed-25)/12,0.6,1) - --local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1)) - --local rol40p = Lerp((speed-23)/50,0.6,1) - --local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1)) - --local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2) - --local rol80 = math.Clamp((speed-70)/5,0,1) - --local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1) - self:SetSoundState("rolling_10",rollingi*rol10,1) - --self:SetSoundState("rolling_40",0*rollingi*rol40,rol40p) - --self:SetSoundState("rolling_70",0*rollingi*rol70,rol70p) - --self:SetSoundState("rolling_80",0*rollingi*rol80,rol80p) - - - local rol32 = math.Clamp((speed-25)/13,0,1)*(1-math.Clamp((speed-40)/10,0,1)) - local rol32p = Lerp((speed-20)/50,0.8,1.2) - local rol68 = math.Clamp((speed-40)/10,0,1)*(1-math.Clamp((speed-50)/20,0,1)) - local rol68p = Lerp(0.6+(speed-68)/26*0.2,0.6,1.4) - local rol75 = math.Clamp((speed-55)/20,0,1) - local rol75p = Lerp(0.8+(speed-75)/15*0.2,0.6,1.2) - self:SetSoundState("rolling_32",rollingi*rol32,rol32p) - self:SetSoundState("rolling_68",rollingi*rol68,rol68p) - self:SetSoundState("rolling_75",rollingi*rol75,rol75p) - - --local rolm = math.Clamp(speed/30,0,1)*(1-math.Clamp((speed-35)/40,0,1)) - --local rolh = math.Clamp((speed-35)/40,0,1.5)+math.Clamp((speed-65)/15,0,1) - --self:SetSoundState("rolling_medium",rollingi*rolm,Lerp((speed-8)/106,0.6,1)) --57 - --self:SetSoundState("rolling_high" ,rollingi*rolh,rol70p) --70 + self:SetSoundState("rolling_80",rollingi*rol80,rol80p) local rol10 = math.Clamp(speed/15,0,1)*(1-math.Clamp((speed-18)/35,0,1)) local rol10p = Lerp((speed-15)/14,0.6,0.78) @@ -3657,21 +3356,18 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_buzz%d_%d",i,k),(play and i==buzz) and volume*self.BPSNBuzzVolume*self:GetNW2Float("UPOBuzzVolume",1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and v[3]*volume or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and v[3]*volume or 0) end end end -function ENT:OnAnnouncer(volume,id) - local cabspeaker = self:GetPackedBool("AnnCab") - local work = self:GetPackedBool("AnnPlay") - return (id ~= 1 and work or id == 1 and cabspeaker) and self:GetNW2Float("UPOVolume",1)*volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) + local distance = self:GetPos():Distance(LocalPlayer():GetPos()) + if distance > 1024 or special then return end self.RTMaterial:SetTexture("$basetexture",self.PUAV) self:DrawOnPanel("PUAVOScreen",function(...) surface.SetMaterial(self.RTMaterial) @@ -3722,16 +3418,8 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid:sub(1,4) == "IGLA" then return range > 0 and "igla_on" or "igla_off",location,1,pitch end - if soundid == "lk2c" then - local speed = self:GetPackedRatio("Speed") - self.SoundPositions[soundid][1] = 350-Lerp(speed/0.1,0,250) - return soundid,location,1-Lerp(speed/10,0.2,0.8),pitch - end if soundid == "LK2" then local speed = self:GetPackedRatio("Speed") - if range == 0 and speed < 20 and self:GetPackedRatio("EnginesCurrent") > 0.55 then - self:PlayOnce("lk2c","bass",1,pitch) - end local id = range > 0 and "lk2_on" or "lk2_off" self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) return id,location,1-Lerp(speed/10,0.2,0.8),pitch @@ -3785,9 +3473,6 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid == "AVU" then return range > 0 and "avu_on" or "avu_off",location,1,0.9 end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end elseif soundid:sub(1,4)=="kv70" and self:GetNW2Bool("SecondKV") then return soundid.."_2",location,range,pitch end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-717_lvz/init.lua b/lua/entities/gmod_subway_81-717_lvz/init.lua index e7d37c6..a821f33 100644 --- a/lua/entities/gmod_subway_81-717_lvz/init.lua +++ b/lua/entities/gmod_subway_81-717_lvz/init.lua @@ -15,7 +15,7 @@ ENT.SyncTable = { "EmergencyBrakeValve", "AIS","AV3","AV1","A53","A55","A56","A54","A17","A44","A39","A70","A14","A74","A26","AR63","AS1","A13","A21","A31","A32","A16","A12","A24","A49","A27","A72","A50","AV3","AV6","A29","A46","A47","A71","A7","A9","A84","A8","A52","A19","A48","A10","A22","A30","A1","A2","A3","A4","A5","A6","A18","A73","A20","A25","A11","A37","A45","A38","A51","A65","A42","A43","A41","A40","A75","A76","A60","A57","A28", "A58","A59","A61","A15","A66", - "RC1","VB","VRD","PB", "UAVA","UAVAC", + "RC1","VB","VRD","PB", "UAVA", "DriverValveBLDisconnect","DriverValveTLDisconnect","DriverValveDisconnect","ParkingBrake","EPK", "VUD2","VDL","VOPD","Wiper", "GV", "RC2","VAU", "KH","VAV","KSZD","VZP","VSOSD", @@ -83,7 +83,6 @@ function ENT:Initialize() local pneumoPow = 1.1+(math.random()^0.4)*0.3 self.FrontBogey.PneumaticPow = pneumoPow self.RearBogey.PneumaticPow = pneumoPow - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -143,7 +142,7 @@ function ENT:Initialize() [KEY_7] = "KVWrenchNone", [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -226,6 +225,44 @@ function ENT:Initialize() }, } + local vX = Angle(0,-90-0.2,56.3):Forward() -- For ARS panel + local vY = Angle(0,-90-0.2,56.3):Right() + self.Lights = { + -- Headlight glow + --[1] = { "headlight", Vector(465,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100, farz=6144,brightness = 4}, + + -- Head (type 1) + [2] = { "glow", Vector(470,-51,-19), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [3] = { "glow", Vector(472,-40, -19), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1.0 }, + [4] = { "glow", Vector(0,0, 0), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [5] = { "glow", Vector(0, 0, 0), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [6] = { "glow", Vector(472, 41, -19), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1.0 }, + [7] = { "glow", Vector(470, 53,-19), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + + -- Reverse + [8] = { "light",Vector(465,-45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [9] = { "light",Vector(465, 45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + + -- Cabin + [10] = { "dynamiclight", Vector( 425, 0, 30), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.25}, + + -- Interior + [11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [30] = { "light", Vector(465 , -45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465 , 45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465 , 0, 52), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } -- Cross connections in train wires self.TrainWireInverts = { [28] = true, @@ -237,6 +274,15 @@ function ENT:Initialize() [53] = 54, } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + + self.RearDoor = false self.FrontDoor = false self.CabinDoor = false @@ -252,7 +298,7 @@ function ENT:Initialize() if math.random() > rand then self.Lamps.broken[i] = math.random() > 0.5 end end - self:SetNW2Int("Type",self:GetNW2Int("Type",3)) + self:SetNW2Int("Type",self:GetNW2Int("Type",2)) self:TrainSpawnerUpdate() self:OnButtonPress("KVWrenchNone") end @@ -282,10 +328,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%4==0 then local id = 10+math.ceil(i/4) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end @@ -320,10 +366,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%8.3<1 then local id = 9+math.ceil(i/8.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -333,7 +379,6 @@ end function ENT:TrainSpawnerUpdate() local typ = self:GetNW2Int("Type") local num = self.WagonNumber - self:SetNW2Bool("Custom",self.CustomSettings) math.randomseed(num+817171) local kvr=false local seats=false @@ -427,21 +472,9 @@ function ENT:TrainSpawnerUpdate() self:SetNW2Bool("WhitePLights",math.random()>0.5) self:SetNW2Int("Crane",kvr and 1 or 0) self:SetNW2Bool("KVR",kvr) - if not self.CustomSettings then - self:SetNW2String("Texture","Def_717SPBDef") - self:SetNW2String("PassTexture",passtex) - self:SetNW2String("CabTexture",cabtex) - self:SetNW2Bool("NewSeats",kvr or seats) - else - self:SetNW2Bool("NewSeats",self:GetNW2Int("SeatType") == 4 or self:GetNW2Int("SeatType") == 3 or self:GetNW2Int("SeatType") == 1 and math.random()>0.5)--(kvr or seats)) - self:SetNW2Bool("NewSeatsBlue",self:GetNW2Int("SeatType") == 4 or self:GetNW2Bool("NewSeats") and self:GetNW2Int("SeatType") == 1 and math.random()>0.5) - local typ = self:GetNW2Int("BodyType") - if typ==3 or typ==1 and math.random() > 0.5 then - self:SetModel("models/metrostroi_train/81-717/81-717_spb_m.mdl") - else - self:SetModel("models/metrostroi_train/81-717/81-717_spb.mdl") - end - end + self:SetNW2String("PassTexture",passtex) + self:SetNW2String("CabTexture",cabtex) + self:SetNW2Bool("NewSeats",kvr or seats) self.Pneumatic.ValveType = self:GetNW2Int("Crane",1)+1 self.Announcer.AnnouncerType = self:GetNW2Int("Announcer",1) self:UpdateTextures() @@ -506,47 +539,40 @@ end -------------------------------------------------------------------------------- function ENT:Think() self.RetVal = self.BaseClass.Think(self) - local Panel = self.Panel + -- Reverser lights + local brightness = math.min(1,self.Panel.Headlights1)*0.60 + + math.min(1,self.Panel.Headlights2)*0.40 - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - self:SetPackedBool("RedLights",Panel.RedLight2 > 0) - self:SetPackedBool("CabLights",Panel.CabLights>0) - self:SetPackedBool("EqLights",Panel.EqLights>0) + self:SetPackedBool("Headlights1",self.Panel.Headlights1 > 0) + self:SetPackedBool("Headlights2",self.Panel.Headlights2 > 0) + self:SetPackedBool("RedLights",self.Panel.RedLight2 > 0) + self:SetPackedBool("CabLights",self.Panel.CabLights>0) + self:SetPackedBool("EqLights",self.Panel.EqLights>0) + -- Interior/cabin lights - self:SetPackedBool("PanelLights",Panel.PanelLights > 0.5) - --[[if not self.KEKTimer or CurTime()-self.KEKTimer > 3 then - self.KEKTimer = CurTime() - local text = "" - if Panel.DoorsW > 0 then text = text .." белая лампа дверей" end - if Panel.BrW > 0 then text = text .." желтая лампа пневмотормоза" end - if Panel.GreenRP > 0 then text = text .." зелёная лампа РП" end - if text ~= "" then text = " горит"..text end - if self:GetPackedBool("SN") then text = text.." несбор схемы" end - if self.Speed <= 0.5 then text = text .." он стоит" - elseif self.Electric.I13 > 10 then text = text.." он разгоняется" - elseif self.Electric.I13 < -10 then text = text.." он тормозит ЭДТ" - elseif self.Pneumatic.BrakeCylinderPressure > 0.2 then - if self.Electric.I13 < -10 then - text = text.." и пневматикой" - else - text = text.." он тормозит пневматикой" - end - else text = text .." он едет" end - if self.Speed > 0.5 then text = text..Format(" со скоростью %02d км/ч и ускорением %.1f м/c",self.Speed, self.Acceleration) end - - if Panel.GreenRP > 0 then RunConsoleCommand("say","ВНИМАНИЕ ВСЕМ!!! У "..self:CPPIGetOwner():GetName().." ВАГОН"..self:GetWagonNumber().." СЛУЧИЛОСЬ ЗНАМЕНАТЕЛЬНОЕ СОБЫТИЕ!!! У НЕГО ЗАГОРЕЛАСЬ ЗЕЛЁНАЯЛ ЛАМПА РП!!!") - elseif text ~= "" then RunConsoleCommand("say","ВНИМАНИЕ ВСЕМ!!! У "..self:CPPIGetOwner():GetName().." вагон "..self:GetWagonNumber()..text.."!!!") end + if (self.Panel.EqLights > 0.5) and (self.Panel.CabLights > 0.5) then + self:SetLightPower(10,true,1) + elseif (self.Panel.CabLights > 0.5) then + self:SetLightPower(10,true,0.1) + elseif self.Panel.EqLights > 0.5 then + self:SetLightPower(10,true,0.6) + else + self:SetLightPower(10,false) end - if Panel.GreenRP > 0 and (not self.KEKTimer or CurTime()-self.KEKTimer > 3) then - self.KEKTimer = CurTime() - --RunConsoleCommand("say","ВНИМАНИЕ ВСЕМ!!! У "..self:CPPIGetOwner():GetName().." ВАГОН "..self:GetWagonNumber().." СЛУЧИЛОСЬ ЗНАМЕНАТЕЛЬНОЕ СОБЫТИЕ!!! У НЕГО ЗАГОРЕЛАСЬ ЗЕЛЁНАЯЛ ЛАМПА РП!!!") - end]] - self:SetPackedBool("BURPower",Panel.BURPower>0) + self:SetPackedBool("PanelLights",self.Panel.PanelLights > 0.5) + self:SetPackedBool("BURPower",self.Panel.BURPower>0) - local lightsActive1 = Panel.EmergencyLights > 0 - local lightsActive2 = Panel.MainLights > 0.0 + --self:SetLightPower(30, (self.Panel.CabinLight > 0.5), 0.03 + 0.97*self.L_2.Value) + + self:SetLightPower(30,brightness > 0,brightness) + self:SetLightPower(31,brightness > 0,brightness) + self:SetLightPower(32,self:GetNW2Int("MaskType")==3 and brightness > 0,brightness) + self:SetLightPower(8,self.Panel.RedLight2>0,1) + self:SetLightPower(9,self.Panel.RedLight1>0,1) + local lightsActive1 = self.Panel.EmergencyLights > 0 + local lightsActive2 = self.Panel.MainLights > 0.0 + local mul = 0 local LampCount = self.LampType==2 and 25 or 12 local Ip = self.LampType==2 and 7 or 3.6 local Im = 0 @@ -557,30 +583,40 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end + self:SetLightPower(11, mul > 0,mul/LampCount) + self:SetLightPower(12, mul > 0,mul/LampCount) + self:SetLightPower(13, mul > 0,mul/LampCount) - self:SetPackedBool("DoorsLeftL",Panel.DoorsLeft > 0.5) - self:SetPackedBool("DoorsRightL",Panel.DoorsRight > 0.5) + self:SetPackedBool("DoorsLeftL",self.Panel.DoorsLeft > 0.5) + self:SetPackedBool("DoorsRightL",self.Panel.DoorsRight > 0.5) -- Side lights - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrW",Panel.BrW > 0) + self:SetLightPower(15,self.Panel.DoorsW > 0.5) + self:SetLightPower(18,self.Panel.DoorsW > 0.5) + self:SetLightPower(16,self.Panel.GreenRP > 0.5) + self:SetLightPower(19,self.Panel.GreenRP > 0.5) + self:SetLightPower(17,self.Panel.BrW > 0.5) + self:SetLightPower(20,self.Panel.BrW > 0.5) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrW",self.Panel.BrW > 0) -- Switch and button states self:SetPackedBool(0,self:IsWrenchPresent()) - self:SetPackedBool("AVU",Panel.AVU > 0.5) - self:SetPackedBool("OhSigLamp",Panel.OhrSig > 0.5) - self:SetPackedBool("LKVP",Panel.LKVP > 0) + self:SetPackedBool("AVU",self.Panel.AVU > 0.5) + self:SetPackedBool("OhSigLamp",self.Panel.OhrSig > 0.5) + self:SetPackedBool("LKVP",self.Panel.LKVP > 0) --self:SetPackedBool("LSP",(self.Electric.Overheat1 > 0) or (self.Electric.Overheat2 > 0)) - self:SetPackedBool("RZP",Panel.RZP > 0) - self:SetPackedBool("KUP",Panel.KUP > 0.5) - self:SetPackedBool("PN", Panel.BrT > 0.5) - self:SetPackedBool("VPR",Panel.VPR > 0) + self:SetPackedBool("RZP",self.Panel.RZP > 0) + self:SetPackedBool("KUP",self.Panel.KUP > 0.5) + self:SetPackedBool("PN", self.Panel.BrT > 0.5) + self:SetPackedBool("VPR",self.Panel.VPR > 0) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = @@ -595,13 +631,13 @@ function ENT:Think() (self.Pneumatic.RightDoorState[4] > 0.5) -- DIP/power - self:SetPackedBool("LUDS",Panel.LUDS > 0.5) + self:SetPackedBool("LUDS",self.Panel.LUDS > 0.5) - self:SetPackedBool("HRK",Panel.LhRK > 0) - self:SetPackedBool("KVC",Panel.KVC > 0) + self:SetPackedBool("HRK",self.Panel.LhRK > 0) + self:SetPackedBool("KVC",self.Panel.KVC > 0) -- Red RP local TW18 = 0 - if Panel.LSN > 0 then + if self.Panel.LSN > 0 then local wags = #self.WagonList for i,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags @@ -610,8 +646,16 @@ function ENT:Think() self:SetPackedBool("RP",TW18 > 0.5) self:SetPackedBool("SN",TW18 > 0) - self:SetPackedRatio("RPR",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("SD",Panel.SD > 0.5) + -- Green RP + ----self:SetLightPower(22,self.Panel.GreenRP > 0.5) + -- Cabin heating + ----self:SetLightPower(26,self.Panel.KUP > 0.5) + -- AVU + --21.3 -0.4 5.05 + -- AVU + ----self:SetLightPower(23,self.Panel.AVU > 0.5) + -- SD + self:SetPackedBool("SD",self.Panel.SD > 0.5) if self:GetNW2Int("AVType")==4 then self:SetPackedBool("AR04",self.PAM.NoFreq > 0) self:SetPackedBool("AR20",(self.PAM.NoFreq > 0 or self.PAM.F5 > 0)) @@ -620,7 +664,6 @@ function ENT:Think() self:SetPackedBool("AR60",self.PAM.F3 > 0) self:SetPackedBool("AR70",self.PAM.F2 > 0) self:SetPackedBool("AR80",self.PAM.F1 > 0) - self:SetPackedBool("LRD", self.PAM.F6 > 0) else self:SetPackedBool("AR04",self.ALS_ARS.NoFreq > 0) self:SetPackedBool("AR20",(self.ALS_ARS.NoFreq > 0 or self.ALS_ARS.F5 > 0)) @@ -629,18 +672,18 @@ function ENT:Think() self:SetPackedBool("AR60",self.ALS_ARS.F3 > 0) self:SetPackedBool("AR70",self.ALS_ARS.F2 > 0) self:SetPackedBool("AR80",self.ALS_ARS.F1 > 0) - self:SetPackedBool("LRD", self.ALS_ARS.F6 > 0) end if self:GetNW2Int("AVType")>2 then self:SetPackedBool("PAPower",self.PAM.State~=0) end -- KT - self:SetPackedBool("KT",Panel.KT > 0) + self:SetPackedBool("KT",self.Panel.KT > 0) -- ЛРД + self:SetPackedBool("LRD",self:GetNW2Int("AVType")<=2 and self.ALS_ARS.F6>0) -- KVD - self:SetPackedBool("KVD",Panel.LKVD > 0.5) + self:SetPackedBool("KVD",self.Panel.LKVD > 0.5) -- LST - self:SetPackedBool("ST",Panel.LST > 0.5) + self:SetPackedBool("ST",self.Panel.LST > 0.5) -- LVD - self:SetPackedBool("VD",Panel.LVD > 0.5) + self:SetPackedBool("VD",self.Panel.LVD > 0.5) -- LKVC --PUAV if self:GetNW2Int("AVType")<=2 then @@ -663,20 +706,20 @@ function ENT:Think() else self:SetPackedBool("PURing",self.PAM.Ring>0) end - self:SetPackedBool("NMLow",Panel.NMLow > 0) - self:SetPackedBool("UAVATriggered",Panel.UAVATriggered > 0 and CurTime()%0.4>0.2) + self:SetPackedBool("NMLow",self.Panel.NMLow > 0) + self:SetPackedBool("UAVATriggered",self.Panel.UAVATriggered > 0 and CurTime()%0.4>0.2) - ----self:SetLightPower(24,(self.PowerSupply.XT3_1 > 0) and (Panel.V1 > 0.5)) + ----self:SetLightPower(24,(self.PowerSupply.XT3_1 > 0) and (self.Panel.V1 > 0.5)) -- LRS self:SetPackedBool("RS",self.ALS_ARS.F6 > 0) - self:SetPackedBool("SOSDL",Panel.SOSD>0) - self.SOSD = Panel.SOSD>0 + self:SetPackedBool("SOSDL",self.Panel.SOSD>0) + self.SOSD = self.Panel.SOSD>0 -- Feed packed floats self:SetNW2Int("WrenchMode",self.KVWrenchMode) self:SetPackedRatio("PVK",self.PVK.Value/2) - self:SetPackedRatio("M8",Panel.M8) + self:SetPackedRatio("M8",self.Panel.M8) self:SetPackedRatio("CranePosition", self.Pneumatic.RealDriverValvePosition) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetNW2Int("ReverserPosition", (self.KV.ReverserPosition+1)) @@ -689,11 +732,10 @@ function ENT:Think() self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) self:SetPackedRatio("EnginesVoltage", self.Electric.Aux750V/1000.0) - self:SetPackedRatio("EnginesCurrent2", 0.5 + 0.5*(self.Electric.I13/500.0)) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/150.0) + self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) self:SetPackedBool("Compressor",self.Pneumatic.Compressor > 0) - self:SetPackedBool("Buzzer",Panel.Ring > 0) + self:SetPackedBool("Buzzer",self.Panel.Ring > 0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("BPSN",self.PowerSupply.X2_2 > 0) @@ -709,23 +751,54 @@ function ENT:Think() --self:SetPackedBool("buzz",self:ReadTrainWire(47) ~= -1 and self.PowerSupply.XT3_1 > 0) --self:SetPackedBool("buzz_cab",self.R_G.Value == 1.0 and self.PowerSupply.XT3_1 > 0) - self:SetPackedBool("AnnBuzz",Panel.AnnouncerBuzz > 0) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnBuzz",self.Panel.AnnouncerBuzz > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) self:SetPackedBool("AnnCab",self.ASNP_VV.CabinSpeakerPower > 0) -- Exchange some parameters between engines, pneumatic system, and real world self.Engines:TriggerInput("Speed",self.Speed) if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - -- These corrections are required to beat source engine friction at very low values of motor power + --[[ + if not self.AccelTimer and self:ReadTrainWire(1) > 0 then + self.AccelTimer = CurTime() + self.SpeedState = 0 + end + if self.AccelTimer and self:ReadTrainWire(1) == 0 then + self.AccelTimer = nil + end + if self.AccelTimer and self.Speed >= 30 and self.SpeedState == 0 then print("30:8",CurTime()-self.AccelTimer) self.SpeedState = 1 end + if self.AccelTimer and self.Speed >= 60 and self.SpeedState == 1 then print("60:20",CurTime()-self.AccelTimer) self.SpeedState = 2 end + if self.AccelTimer and self.Speed >= 80 and self.SpeedState == 2 then print("80:36",CurTime()-self.AccelTimer) self.SpeedState = 3 end + + + if not self.BrakeTimer and self:ReadTrainWire(6) > 0 then + self.BrakeTimer = CurTime() + self.SpeedState = 0 + print("Brake start",self.Speed)--CurTime()-self.BrakeTimer) + end + if self.BrakeTimer and self:ReadTrainWire(6) == 0 then + self.BrakeTimer = nil + end + if self.BrakeTimer and self.Speed <= 60 and self.SpeedState == 0 then print("60:4.8",CurTime()-self.BrakeTimer) self.SpeedState = 1 end + if self.BrakeTimer and self.Speed <= 10 and self.SpeedState == 1 then print("10:15.55",CurTime()-self.BrakeTimer) self.SpeedState = 2 end + --]] + --if self:EntIndex() == 0778 then print(self.RheostatController.Velocity,self.RheostatController.RKP,self.RheostatController.Position) end + --if self:EntIndex() == 1419 then RunConsoleCommand("say",self.Electric.I13,self.RUT.Value,self.RheostatController.Position) end local A = 2*self.Engines.BogeyMoment - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end self.FrontBogey.MotorForce = 22500+5500*(A < 0 and 1 or 0) self.FrontBogey.Reversed = (self.Reverser.NZ > 0.5) self.RearBogey.MotorForce = 22500+5500*(A < 0 and 1 or 0) self.RearBogey.Reversed = (self.Reverser.VP > 0.5) + -- These corrections are required to beat source engine friction at very low values of motor power + local A = 2*self.Engines.BogeyMoment + --[[ if self.Speed < 15 then + local pow = 1-0.7*(15.0-self.Speed)/15.0 + A = A < 0 and -math.abs(A)^pow or A^pow + end--]] + local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) + if math.abs(A) > 0.4 then P = math.abs(A) end + if math.abs(A) < 0.05 then P = 0 end + if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) --self.RearBogey.MotorPower = P*0.5 @@ -736,12 +809,11 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0-2000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end @@ -795,13 +867,11 @@ function ENT:OnButtonPress(button,ply) self.KV:TriggerInput("ControllerSet",-2) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then diff --git a/lua/entities/gmod_subway_81-717_lvz/shared.lua b/lua/entities/gmod_subway_81-717_lvz/shared.lua index 5ec9bde..e1a4b48 100644 --- a/lua/entities/gmod_subway_81-717_lvz/shared.lua +++ b/lua/entities/gmod_subway_81-717_lvz/shared.lua @@ -24,15 +24,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(420,-49 ,61),80,0.2}, {Vector(-3,-60, 62),200,0.2}, @@ -57,7 +48,7 @@ ENT.Cameras = { } function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) - --[[self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} + self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} @@ -66,30 +57,7 @@ function ENT:InitializeSounds() self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.20} self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.55} self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.60} - self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.75}]] - self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} - self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} - self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} - self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} - self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_5"] = {480,1e12,Vector(0,0,0),0.05} - self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.1} - self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.55} - self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.60} self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.75} - - - self.SoundNames["rolling_32"] = {loop=true,"subway_trains/717/rolling/rolling_32.wav"} - self.SoundNames["rolling_68"] = {loop=true,"subway_trains/717/rolling/rolling_68.wav"} - self.SoundNames["rolling_75"] = {loop=true,"subway_trains/717/rolling/rolling_75.wav"} - self.SoundPositions["rolling_32"] = {480,1e12,Vector(0,0,0),0.2} - self.SoundPositions["rolling_68"] = {480,1e12,Vector(0,0,0),0.4} - self.SoundPositions["rolling_75"] = {480,1e12,Vector(0,0,0),0.8} - - self.SoundNames["rolling_medium"] = {loop=true,"subway_trains/717/rolling/rolling_inside_medium.wav"} - self.SoundNames["rolling_high"] = {loop=true,"subway_trains/717/rolling/rolling_inside_high.wav"} - self.SoundPositions["rolling_medium"] = {480,1e12,Vector(0,0,0),0.5} - self.SoundPositions["rolling_high"] = {480,1e12,Vector(0,0,0),1.00} self.SoundNames["rolling_motors"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundNames["rolling_motors2"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundPositions["rolling_motors"] = {250,1e12,Vector(200,0,0),0.33} @@ -185,22 +153,20 @@ function ENT:InitializeSounds() self.SoundNames["bpsn2"] = {"subway_trains/717/bpsn/bpsn_spb.wav", loop=true} self.SoundNames["bpsn3"] = {"subway_trains/717/bpsn/bpsn_nnov.wav", loop=true} self.SoundNames["bpsn4"] = {"subway_trains/717/bpsn/bpsn_1.wav", loop=true} - self.SoundPositions["bpsn1"] = {600,1e9,Vector(0,45,-448),0.04} - self.SoundPositions["bpsn2"] = {600,1e9,Vector(0,45,-448),0.025} - self.SoundPositions["bpsn3"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn4"] = {600,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn1"] = {500,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn2"] = {500,1e9,Vector(0,45,-448),0.025} + self.SoundPositions["bpsn3"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn4"] = {500,1e9,Vector(0,45,-448),0.02} --Подвагонка self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" self.SoundNames["lk5_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk2c"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundNames["lk3_on"] = "subway_trains/717/pneumo/lk3_on.mp3" self.SoundNames["lk3_off"] = "subway_trains/717/pneumo/lk3_off.mp3" --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["lk5_on"] = {440,1e9,Vector(-60,-40,-66),0.30} self.SoundPositions["lk2_off"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk2c"] = {440,1e9,Vector(-60,-40,-66),0.6} self.SoundPositions["lk3_on"] = self.SoundPositions["lk2_on"] self.SoundPositions["lk3_off"] = self.SoundPositions["lk2_on"] --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] @@ -210,7 +176,7 @@ function ENT:InitializeSounds() self.SoundPositions["compressor"] = {600,1e9,Vector(-118,-40,-66),0.15} self.SoundPositions["compressor2"] = {480,1e9,Vector(-118,-40,-66),0.55} self.SoundNames["rk"] = {loop=0.8,"subway_trains/717/rk/rk_start.wav","subway_trains/717/rk/rk_spin.wav","subway_trains/717/rk/rk_stop.mp3"} - self.SoundPositions["rk"] = {50,1e3,Vector(110,-40,-75),0.5} + self.SoundPositions["rk"] = {70,1e3,Vector(110,-40,-75),0.5} self.SoundNames["revers_0-f"] = {"subway_trains/717/kv70/reverser_0-f_1.mp3","subway_trains/717/kv70/reverser_0-f_2.mp3"} self.SoundNames["revers_f-0"] = {"subway_trains/717/kv70/reverser_f-0_1.mp3","subway_trains/717/kv70/reverser_f-0_2.mp3"} @@ -482,7 +448,7 @@ function ENT:InitializeSounds() self.SoundNames["kv70_x3_x2"] = "subway_trains/717/kv70_3/x3-x2.mp3" self.SoundPositions["kv70_fix_on"] = {110,1e9,Vector(435.848,16.1,-19.779+4.75),0.4} self.SoundPositions["kv70_fix_off"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv70_0_t1"] = {110,1e9,Vector(456.5,-20,-8),0.7} + self.SoundPositions["kv70_0_t1"] = {110,1e9,Vector(456.5,-45,-8),0.7} self.SoundPositions["kv70_t1_0_fix"] = self.SoundPositions["kv70_0_t1"] self.SoundPositions["kv70_t1_0"] = self.SoundPositions["kv70_0_t1"] self.SoundPositions["kv70_t1_t1a"] = self.SoundPositions["kv70_0_t1"] @@ -629,9 +595,9 @@ function ENT:InitializeSounds() for k=0,1 do self.SoundNames["door"..i.."x"..k.."r"] = {"subway_trains/common/door/door_roll.wav",loop=true} self.SoundPositions["door"..i.."x"..k.."r"] = {150,1e9,GetDoorPosition(i,k),0.11} - self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end1.mp3","subway_trains/common/door/door_open_end2.mp3","subway_trains/common/door/door_open_end3.mp3","subway_trains/common/door/door_open_end4.mp3"} + self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end5.mp3","subway_trains/common/door/door_open_end6.mp3","subway_trains/common/door/door_open_end7.mp3"} self.SoundPositions["door"..i.."x"..k.."o"] = {350,1e9,GetDoorPosition(i,k),2} - self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end3.mp3","subway_trains/common/door/door_close_end4.mp3"} + self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end2.mp3","subway_trains/common/door/door_close_end3.mp3","subway_trains/common/door/door_close_end4.mp3","subway_trains/common/door/door_close_end5.mp3"} self.SoundPositions["door"..i.."x"..k.."c"] = {400,1e9,GetDoorPosition(i,k),2} end end @@ -886,15 +852,6 @@ ENT.SubwayTrain = { EKKType = 717, NoFrontEKK=true, } ---[[ -7874-8189 (белый пластик с синими\зелеными вставками, преимущественно старые сидухи, либо синие) -8190-8202 (пластик под дерево, преимущественно старые сидухи, либо коричневые) -8308-8319 (зеленый пластик, старые сидухи) -8320-8399 (пластик под дерево, преимущественно страые сидухи, либо синие) -8868-8964 (.5 - светлый пластик под дерево, преимущественно старые сидухи, либо коричневые) -11000-11306 (белый пластик с зелеными вставками, преимущественно старые сидухи, либо синие) -11322-11378 (пластик под дерево с белыми вставками, коричневые сидухи) -]] ENT.NumberRanges = { { true, @@ -994,7 +951,6 @@ ENT.Spawner = { ent.ParkingBrake:TriggerInput("Set",val==3 and 1 or 0) if ent.AR63 then local first = i==1 or _LastSpawner~=CurTime() - ent.OhrSig:TriggerInput("Set",val<4 and 1 or 0) ent.A53:TriggerInput("Set",val<=3 and 1 or 0) ent.AR63:TriggerInput("Set",val<=2 and 1 or 0) ent.R_UNch:TriggerInput("Set",val==1 and 1 or 0) @@ -1026,12 +982,7 @@ ENT.Spawner = { ent.FrontDoor = val==4 ent.RearDoor = val==4 end - if val == 1 then - timer.Simple(1,function() - if not IsValid(ent) then return end - ent.BV:TriggerInput("Enable",1) - end) - end + if val == 1 then ent.BV:TriggerInput("Enable",1) end ent.GV:TriggerInput("Set",val<4 and 1 or 0) ent._SpawnerStarted = val end diff --git a/lua/entities/gmod_subway_81-717_lvz_custom.lua b/lua/entities/gmod_subway_81-717_lvz_custom.lua deleted file mode 100644 index 72ed040..0000000 --- a/lua/entities/gmod_subway_81-717_lvz_custom.lua +++ /dev/null @@ -1,114 +0,0 @@ -AddCSLuaFile() ---Entity only for spawner! -function ENT:Initialize() self:Remove() end - -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" -ENT.PrintName = "81-717 SPB Custom" -ENT.SkinsType = "81-717_spb" - -ENT.Spawnable = false -ENT.AdminSpawnable = false - -ENT.SubwayTrain = { - Type = "81", - Name = "81-717.5m", - WagType = 1, - Manufacturer = "SPB", -} - -ENT.Spawner = { - model = { - "models/metrostroi_train/81-717/81-717_spb.mdl", - "models/metrostroi_train/81-717/interior_spb.mdl", - "models/metrostroi_train/81-717/717_body_additional_spb.mdl", - "models/metrostroi_train/81-717/brake_valves/334.mdl", - "models/metrostroi_train/81-717/lamps_type1.mdl", - "models/metrostroi_train/81-717/couch_old.mdl", - "models/metrostroi_train/81-717/couch_cap_l.mdl", - "models/metrostroi_train/81-717/handlers_old.mdl", - "models/metrostroi_train/81-717/mask_spb_222.mdl", - "models/metrostroi_train/81-717/couch_cap_r.mdl", - "models/metrostroi_train/81-717/cabine_spb_central.mdl", - "models/metrostroi_train/81-717/pult/body_spb_yellow.mdl", - "models/metrostroi_train/81-717/pult/pult_spb_yellow.mdl", - "models/metrostroi_train/81-717/pult/puav_new.mdl", - "models/metrostroi_train/81-717/pult/ars_spb_yellow.mdl", - }, - head = "gmod_subway_81-717_lvz", - interim = "gmod_subway_81-714_lvz", - func = function(train,i,max,LastRot) - train.CustomSettings = true - local typ = train:GetNW2Int("Type") - if 1==i or i==max then - train.NumberRangesID = typ==1 and math.ceil(math.random()+0.5) or typ+1 - else - train.NumberRangesID = typ - end - end, - {"Type","Spawner.717.Type","List",{"Spawner.717.Type.Line2","Spawner.717.Type.Line4","Spawner.717.Type.Line5"}}, - {"Scheme","Spawner.717.Schemes","List",function() - local Schemes = {} - for k,v in pairs(Metrostroi.Skins["717_new_schemes"] or {}) do Schemes[k] = v.name or k end - return Schemes - end}, - {}, - Metrostroi.Skins.GetTable("Texture","Spawner.Texture",false,"train"), - Metrostroi.Skins.GetTable("PassTexture","Spawner.PassTexture",false,"pass"), - Metrostroi.Skins.GetTable("CabTexture","Spawner.CabTexture",false,"cab"), - {}, - {"BodyType","Spawner.717.BodyType","List",{"Spawner.717.Common.Random","Spawner.717.Common.Standart","Spawner.717.Common.Old"}}, - {"SeatType","Spawner.717.SeatType","List",{"Spawner.717.Common.Random","Spawner.717.Common.Old","Spawner.717.Common.New","Spawner.717.Common.NewBlue"}}, - {}, - {"SpawnMode","Spawner.717.SpawnMode","List",{"Spawner.717.SpawnMode.Full","Spawner.717.SpawnMode.Deadlock","Spawner.717.SpawnMode.NightDeadlock","Spawner.717.SpawnMode.Depot"}, nil,function(ent,val,rot,i,wagnum,rclk) - if rclk then return end - if ent._SpawnerStarted~=val then - ent.VB:TriggerInput("Set",val<=2 and 1 or 0) - ent.ParkingBrake:TriggerInput("Set",val==3 and 1 or 0) - if ent.AR63 then - local first = i==1 or _LastSpawner~=CurTime() - ent.OhrSig:TriggerInput("Set",val<4 and 1 or 0) - ent.A53:TriggerInput("Set",val<=3 and 1 or 0) - ent.AR63:TriggerInput("Set",val<=2 and 1 or 0) - ent.R_UNch:TriggerInput("Set",val==1 and 1 or 0) - ent.R_UPO:TriggerInput("Set",val<=2 and 1 or 0) - if ent.Plombs.RC1 and val<=2 then - ent.VPAOn:TriggerInput("Set",1) - timer.Simple(1,function() - if not IsValid(ent) or val > 2 then return end - ent.VPAOn:TriggerInput("Set",0) - end) - else - ent.VPAOn:TriggerInput("Set",0) - end - ent.VAU:TriggerInput("Set",(ent.Plombs.RC2 and val<=2) and 1 or 0) - ent.L_4:TriggerInput("Set",val==1 and 1 or 0) - ent.BPSNon:TriggerInput("Set",(val==1 and first) and 1 or 0) - ent.VMK:TriggerInput("Set",(val==1 and first) and 1 or 0) - ent.ARS:TriggerInput("Set",(ent.Plombs.RC1 and val==1 and first) and 1 or 0) - ent.ALS:TriggerInput("Set",(ent.Plombs.RC1 and val==1) and 1 or 0) - ent.L_1:TriggerInput("Set",val==1 and 1 or 0) - ent.L_3:TriggerInput("Set",val==1 and 1 or 0) - ent.L_4:TriggerInput("Set",val==1 and 1 or 0) - ent.EPK:TriggerInput("Set",(ent.Plombs.RC1 and val==1) and 1 or 0) - _LastSpawner=CurTime() - ent.CabinDoor = val==4 and first - ent.PassengerDoor = val==4 - ent.RearDoor = val==4 - else - ent.FrontDoor = val==4 - ent.RearDoor = val==4 - end - if val == 1 then - timer.Simple(1,function() - if not IsValid(ent) then return end - ent.BV:TriggerInput("Enable",1) - end) - end - ent.GV:TriggerInput("Set",val<4 and 1 or 0) - ent._SpawnerStarted = val - end - ent.Pneumatic.TrainLinePressure = val==3 and math.random()*4 or val==2 and 4.5+math.random()*3 or 7.6+math.random()*0.6 - if val==4 then ent.Pneumatic.BrakeLinePressure = 5.2 end - end}, -} diff --git a/lua/entities/gmod_subway_81-717_mvm/cl_init.lua b/lua/entities/gmod_subway_81-717_mvm/cl_init.lua index d44201d..a249a1a 100644 --- a/lua/entities/gmod_subway_81-717_mvm/cl_init.lua +++ b/lua/entities/gmod_subway_81-717_mvm/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ClientProps["salon"] = { @@ -155,50 +154,20 @@ ENT.ClientProps["handrails_new"] = { hide=1.5, } -ENT.ClientProps["mask22_mvm_wp"] = { - model = "models/metrostroi_train/81-717/mask_22_wp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} ENT.ClientProps["mask22_mvm"] = { model = "models/metrostroi_train/81-717/mask_22.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), nohide=true, } -ENT.ClientProps["mask22_glass"] = { - model = "models/metrostroi_train/81-717/mask_22_glass.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} -ENT.ClientProps["mask22_glass_wp"] = { - model = "models/metrostroi_train/81-717/mask_22_glass_wp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} -ENT.ClientProps["mask222_glass"] = { - model = "models/metrostroi_train/81-717/mask_222_glass.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} -ENT.ClientProps["mask222_glass_wp"] = { - model = "models/metrostroi_train/81-717/mask_222_glass_wp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} -ENT.ClientProps["mask222_mvm_wp"] = { - model = "models/metrostroi_train/81-717/mask_spb_222.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} ENT.ClientProps["mask222_mvm"] = { - model = "models/metrostroi_train/81-717/mask_222m.mdl", + model = "models/metrostroi_train/81-717/mask_222.mdl", + pos = Vector(0,0,0), + ang = Angle(0,0,0), + nohide=true, +} +ENT.ClientProps["mask222_lvz"] = { + model = "models/metrostroi_train/81-717/mask_spb_222.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), nohide=true, @@ -209,12 +178,6 @@ ENT.ClientProps["mask141_mvm"] = { ang = Angle(0,0,0), nohide=true, } -ENT.ClientProps["mask141_mvm_wp"] = { - model = "models/metrostroi_train/81-717/mask_141_wp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} ENT.ClientProps["Headlights222_1"] = { model = "models/metrostroi_train/81-717/lamps/headlights_222_group1.mdl", pos = Vector(0,0,0), @@ -251,18 +214,6 @@ ENT.ClientProps["Headlights22_2"] = { ang = Angle(0,0,0), nohide=true, } -ENT.ClientProps["Headlights22_glass_1"] = { - model = "models/metrostroi_train/81-717/lamps/headlights_22_glass_group2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} -ENT.ClientProps["Headlights22_glass_2"] = { - model = "models/metrostroi_train/81-717/lamps/headlights_22_glass_group1.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - nohide=true, -} ENT.ClientProps["RedLights"] = { model = "models/metrostroi_train/81-717/lamps/redlights.mdl", pos = Vector(0,0,0), @@ -332,7 +283,7 @@ ENT.ClientProps["cabine_lvz"] = { hide=2, } -ENT.KVs = { +local KVs = { "models/metrostroi_train/81-717/kv_black.mdl", "models/metrostroi_train/81-717/kv_white.mdl", "models/metrostroi_train/81-717/kv_wood.mdl", @@ -345,7 +296,7 @@ ENT.ClientProps["Controller"] = { hideseat=0.2, modelcallback = function(ent,cent) if ent.Anims.Controller then ent.Anims.Controller.reload = true end - return ent.KVs[ent:GetNW2Int("KVType",1)] + return KVs[ent:GetNW2Int("KVType",1)] end, } ENT.ClientProps["body_gray"] = { @@ -363,7 +314,7 @@ ENT.ClientProps["pult_mvm_classic"] = { color = Color(255,255,255), hideseat=0.8, } -ENT.ARSes = { +local ARSes = { "models/metrostroi_train/81-717/pult/ars_square.mdl", "models/metrostroi_train/81-717/pult/ars_round.mdl", "models/metrostroi_train/81-717/pult/ars_round_yellow.mdl", @@ -376,7 +327,7 @@ ENT.ClientProps["ars_mvm"] = { ang = Angle(0,0,0), hideseat=0.8, modelcallback = function(ent,cent) - return ent.ARSes[ent:GetNW2Int("ARSType",1)] + return ARSes[ent:GetNW2Int("ARSType",1)] end, } --[[ @@ -455,13 +406,11 @@ ENT.ButtonMap["Block5_6"] = { var="R_Program1",sndid = "!R_ProgramToggle", sndvol = 0.5,snd = function(val) return val and "triple_0-down" or "triple_down-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Common.ALL.Program1"} }}, {ID = "R_Program2Set",x=155+0,y=40-10,w=20,h=20,tooltip="",model = { var="R_Program2",sndid = "!R_ProgramToggle", sndvol = 0.5,snd = function(val) return val and "triple_0-up" or "triple_up-0" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip=false,states={"Train.Buttons.0","Common.ALL.Program2"} }}, --{ID = "1:KVTSet",x=247,y=33,radius=20,tooltip=""}, @@ -492,7 +441,6 @@ ENT.ButtonMap["Block5_6"] = { {ID = "!L1Light",x=333,y=42,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",ignorepanel = true,skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="L1",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "VZ1Set",x=372.5,y=36,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -516,44 +464,36 @@ ENT.ButtonMap["Block5_6"] = { var="VUD1",speed=6, sndvol = 1,snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "KDLSet",x=60,y=170,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDL",speed=16,min=1,max=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "KDLKToggle",x=40,y=180,w=40,h=20,tooltip="",model = { - var="KDLK",speed=8,min=0.32,max=0.678,disable="KDLSet", - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, + var="KDLK",speed=8,min=0.32,max=0.68,disable="KDLSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "KDLRSet",x=155,y=170,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDLR",speed=16,min=1,max=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.485,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsLeftL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "KDLRKToggle",x=135,y=180,w=40,h=20,tooltip="",model = { - model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -2.5, - var="KDLRK",speed=8,min=0.32,max=0.678,disable="KDLRSet", + model = "models/metrostroi_train/81/krishka.mdl",ang = 0,z = -3, + var="KDLRK",speed=8,min=0.32,max=0.68,disable="KDLRSet", sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "DoorSelectToggle",x=107.5,y=183.5,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-8, var="DoorSelect",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "KRZDSet",x=155,y=85,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -574,23 +514,19 @@ ENT.ButtonMap["Block5_6"] = { {ID = "!GreenRPLight",x=155,y=132,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -3, - lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GreenRP",color=Color(100,255,100)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=2,x=-0.3,y=-0.3,z=20.6,var="GreenRP",color=Color(100,255,100)} }}, {ID = "!AVULight",x=333,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(255,60,40)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LKVPLight",x=377,y=98,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",ignorepanel = true,skin = 3,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=25,x=-0.3,y=-0.3,z=20.6,var="LKVP",color=Color(255,170,110)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, {ID = "!SPLight",x=412,y=42,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",ignorepanel = true,skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=63,x=-0.3,y=-0.3,z=20.6,var="LSP",color=Color(100,255,50)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,50)}, }}, {ID = "OtklAVUToggle",x=241,y=85,radius=20,tooltip="",model = { @@ -614,7 +550,6 @@ ENT.ButtonMap["Block5_6"] = { getfunc = function(ent) return ent:GetPackedBool("OtklBVK") and 1 or ent.Anims.ARSRToggle and math.max(0,(ent.Anims.ARSRToggle.val-0.5)*2 or 0)^0.2*0.08 or 0 end, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, { ID = "V11Toggle",x=357,y=70,radius=20,tooltip="",model = { @@ -633,11 +568,8 @@ ENT.ButtonMap["Block5_6"] = { {ID = "ConverterProtectionSet",x=333,y=133,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl", var="ConverterProtection",speed=16,min=1,max=0,z=-4, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="RZP",speed=9,z=2.2, - lcolor=Color(255,130,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="RZP",speed=9,z=2.2}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetPackedBool("RZP") and Metrostroi.GetPhrase("Train.Buttons.RZP") end }}, {ID = "KSNSet",x=377,y=133,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -682,7 +614,6 @@ ENT.ButtonMap["Block5_6"] = { var="ALSFreq",speed=16, sndvol = 1,snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"} }}, {ID = "L_1Toggle",x=316,y=181,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=-8, @@ -766,20 +697,16 @@ ENT.ButtonMap["Block7"] = { plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=135,x=-17,y=-45,z=-0,var="KAHPl",ID="KAHPl",}, sndvol = 1,snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "!PNT",x=45,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 2,z = -1, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=43,x=-0.3,y=-0.3,z=20.6,var="PN",color=Color(255,170,110)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, {ID = "KDPSet",x=90,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-502/buttons/button_717_3.mdl", var="KDP",speed=16,min=1,max=0,z=-2, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsRightL",speed=9,z=2.2,color=Color(255,130,80), - lcolor=Color(255,110,40),lz = lz,lfov=165,lbright=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=5,color=Color(255,130,80)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_1.mdl",anim=true,var="DoorsRightL",speed=9,z=2.2,color=Color(255,130,80)}, sndvol = 0.07,snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, {ID = "KDPKToggle",x=70,y=140,w=40,h=20,tooltip="",model = { @@ -787,13 +714,11 @@ ENT.ButtonMap["Block7"] = { var="KDPK",speed=8,min=0.33,max=0.685,disable="KDPSet", sndvol = 1,snd = function(val,realval) return val and "kr_close" or "kr_open" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "!PNW",x=135,y=130,radius=20,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 4,z = -1, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=81,x=-0.3,y=-0.3,z=20.6,var="BrW",color=Color(255,130,90)}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,130,90)}, }}, } } @@ -829,7 +754,7 @@ ENT.ButtonMap["Block1"] = { var="ARS13",speed=16,vmin=1,vmax=0, sndvol = 0.07,snd = function(val) return val and "button1_on" or "button2_off" end,sndmin = 60,sndmax = 1e3/3,sndang = Angle(-90,0,0), }}, - {ID = "!BatteryVoltage", x=220,y=55,radius=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=220,y=55,radius=60,tooltip=""}, } } @@ -842,8 +767,8 @@ ENT.ButtonMap["Block3"] = { hideseat=0.2, buttons = { - {ID = "!BLTLPressure", x=62, y=55, radius=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - {ID = "!BCPressure", x=182, y=55, radius=55, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BLTLPressure", x=62, y=55, radius=55, tooltip=""}, + {ID = "!BCPressure", x=182, y=55, radius=55, tooltip=""}, } } @@ -894,19 +819,6 @@ ENT.ButtonMap["ASNPScreen"] = { hide=true, } - -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} ENT.ButtonMap["Block2_2"] = { pos = Vector(450.4,10.0,1.3+5.35), ang = Angle(0,-90,58), @@ -918,66 +830,45 @@ ENT.ButtonMap["Block2_2"] = { buttons = { {ID = "!Speedometer1",x=109,y=18.5,w=13,h=22,tooltip="",model = { name="SSpeed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*10)%10] - end}, }}, {ID = "!Speedometer2",x=121,y=18.5,w=13,h=22,tooltip="",model = { name="SSpeed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*100)%10] - end}, }}, {ID = "!ARSOch",x=45+26.67*0,y=51.1,w=18,h=10,tooltip="",model = { name="SAOCh",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s04.mdl",z=-2,ang=Angle(0,0,90),var="AR04"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, {ID = "!ARS0",x=45+26.67*1,y=51.1,w=18,h=10,tooltip="",model = { name="SA0",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s0.mdl",z=-2,ang=Angle(0,0,90),var="AR0"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, {ID = "!ARS40",x=45+26.67*2,y=51.1,w=18,h=10,tooltip="",model = { name="SA40",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s40.mdl",z=-2,ang=Angle(0,0,90),var="AR40"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(150,100,30),z=-1,} }}, {ID = "!ARS60",x=45+26.67*3,y=51.1,w=18,h=10,tooltip="",model = { name="SA60",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s60.mdl",z=-2,ang=Angle(0,0,90),var="AR60"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!ARS70",x=45+26.67*4,y=51.1,w=18,h=10,tooltip="",model = { name="SA70",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s70.mdl",z=-2,ang=Angle(0,0,90),var="AR70"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!ARS80",x=45+26.67*5,y=51.1,w=18,h=10,tooltip="",model = { name="SA80",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_s80.mdl",z=-2,ang=Angle(0,0,90),var="AR80"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!LampLSD1",x=45+26.67*0,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SSD1",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lsd.mdl",z=-2,ang=Angle(0,0,90),var="SD"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!LampLSD2",x=45+26.67*1,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SSD2",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lsd.mdl",z=-2,ang=Angle(0,0,90),var="SD"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, - {ID = "!LampLVD",x=45+26.67*7.97,y=57.2,w=18,h=10,tooltip="",model = { + {ID = "!LampLVD",x=45+26.67*7.97,y=57.2-20.0*1,w=18,h=10,tooltip="",model = { name="SVD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lvd.mdl",ang=Angle(0,0,90),z=-2,var="VD"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!LampLHRK",x=45+26.67*2.51,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SHRK",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_rk.mdl",z=-2,ang=Angle(0,0,90),var="HRK"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(150,100,30),z=-1,} }}, {ID = "!LampLST",x=45+26.67*7.96,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SST",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lst.mdl",ang=Angle(0,0,90),z=-2,var="ST"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, --[[{ID = "!LampLRD",x=192.4,y=42.9+9.3*3,w=10,h=4,tooltip="",model = { name="SRD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lst.mdl",z=-0.2,var="RD",var="AR04"}, @@ -986,25 +877,20 @@ ENT.ButtonMap["Block2_2"] = { {ID = "!LampRP",x=45+26.67*4,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SRP",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_rp.mdl",z=-1,ang=Angle(0,0,90) ,var="RP"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, {ID = "!LampLSN",x=45+26.67*5,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SSN",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lsn.mdl",z=-1 ,ang=Angle(0,0,90),var="SN"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, --{x=2031 + 2*0,y=223 + 192*0,w=10,h=10,tooltip="",radius=10}, {ID = "!LampLKVD",x=45+26.67*6.33,y=57.2,w=18,h=10,tooltip="",model = { name="SKVD",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lkvd.mdl",ang=Angle(0,0,90),z=-1,var="KVD",}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, {ID = "!LampLKVC",x=45+26.67*7.97,y=57.15-20.0*2,w=18,h=10,tooltip="",model = { name="SKVC",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lkvc.mdl",ang=Angle(0,0,90),z=-1 ,var="KVC"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,} }}, {ID = "!LampLKT",x=45+26.67*6.33,y=57.9-20.0*(-1),w=18,h=10,tooltip="",model = { name="SKT",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_lkt.mdl",z=-1,ang=Angle(0,0,90),var="KT"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, --[[{ID = "!LampDV",x=222.0,y=42.9+9.3*3,w=10,h=4,tooltip="",model = { name="SDV",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamp_panelspb_gb.mdl",z=-0.2,var="DV",var="AR04"}, @@ -1012,15 +898,12 @@ ENT.ButtonMap["Block2_2"] = { {ID = "!LampLEKK",x=45+26.67*6.33,y=57.15-20.0*2,w=18,h=10,tooltip="",model = { name="SLEKK",lamp = {speed=10,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_gl.mdl",ang=Angle(0,0,90),z=-1 ,var="GLIB"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, {ID = "!LampLN",x=45+26.67*6.33,y=57.3-20.0*1,w=18,h=10,tooltip="",model = { name="SLN",lamp = {speed=16,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_ln.mdl",z=-1,ang=Angle(0,0,90),var="LN"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, - {ID = "!LampLRS",x=45+26.67*7.97,y=57.2-20.0*1,w=18,h=10,tooltip="",model = { + {ID = "!LampLRS",x=45+26.67*7.97,y=57.2,w=18,h=10,tooltip="",model = { name="SRS",lamp = {speed=16,model = "models/metrostroi_train/81-717/lamps/lamps_mvm_rc.mdl",z=-1,ang=Angle(0,0,90),var="RS"}, - sprite = {bright=0.1,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,} }}, } } @@ -1033,7 +916,7 @@ ENT.ButtonMap["Block2_3"] = { hideseat=0.2, buttons = { - {ID = "!Speedometer",x=110,y=25,w = 95,h = 50,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + --{ID = "!Speedometer",x=1110,y=200,w = 800,h = 440,tooltip=""}, {ID = "!LSD",x=42.5,y=16+17.9*0,w = 35,h = 15,tooltip="",model = { lamp = {model = "models/metrostroi_train/81-717/lamps/oldars_lsd.mdl",z=6,ang=90,var="SD",speed=6} }}, @@ -1069,43 +952,35 @@ ENT.ButtonMap["Block2_3"] = { {ID = "!LEKK",x=258 + 29*0,y=20 + 24*0,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 3,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=75,x=-0.3,y=-0.3,z=20.6,color=Color(210,170,255),var="LEKK"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255)}, }}, {ID = "!LPU",x=258 + 29*0,y=20 + 24*1,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 2,z = -3, - lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=14,x=-0.3,y=-0.3,z=20.6,color=Color(255,130,90),var="RS"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,130,90)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=14,x=-0.3,y=-0.3,z=20.6,color=Color(255,130,90),var="LPU"}, }}, {ID = "!LKVD",x=258 + 29*0,y=20 + 24*2,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,color=Color(255,60,40),var="KVD"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LKT",x=258 + 29*0,y=20 + 24*3,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 2,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=105,x=-0.3,y=-0.3,z=20.6,color=Color(100,255,100),var="KT"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, }}, {ID = "!LRP",x=258 + 29*1,y=20 + 24*0,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=43,x=-0.3,y=-0.3,z=20.6,color=Color(255,60,40),var="RPR",getfunc = function(ent) return ent:GetPackedRatio("RPR") end}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LKVC",x=258 + 29*1,y=20 + 24*1,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 1,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=4,x=-0.3,y=-0.3,z=20.6,color=Color(255,60,40),var="KVC"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,60,40)}, }}, {ID = "!LVD",x=258 + 29*1,y=20 + 24*2,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 0,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=87,x=-0.3,y=-0.3,z=20.6,color=Color(100,255,100),var="VD"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(100,255,100)}, }}, {ID = "!LST",x=258 + 29*1,y=20 + 24*3,radius = 12,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",skin = 4,z = -3, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=32,x=-0.3,y=-0.3,z=20.6,color=Color(255,170,110),var="ST"}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,170,110)}, }}, } } @@ -1128,101 +1003,70 @@ ENT.ButtonMap["Block2_1"] = { buttons = { {ID = "!Speedometer1",x=59.5,y=35.5,w=12,h=20,tooltip="",model = { - name="RSpeed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*10)%10] - end}, + name="RSpeed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2.2,ang=Angle(0,0,-90), }}, {ID = "!Speedometer2",x=70.5,y=35.5,w=12,h=20,tooltip="",model = { - name="RSpeed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),getfunc= function(ent) - if not ent:GetPackedBool("LUDS") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*100)%10] - end}, + name="RSpeed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(175,250,20),skin=0,z=-2.2,ang=Angle(0,0,-90), }}, + {ID = "!ARSOch",x=101.7+17.85*0,y=52,tooltip="",radius=3,model = { name="RAOCh",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="AR04"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!ARS0",x=101.85+17.85*1,y=52,tooltip="",radius=3,model = { name="RA0",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="AR0"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!ARS40",x=101.75+17.85*2,y=52,tooltip="",radius=3,model = { name="RA40",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,168,000),z=-3.5,var="AR40"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-1,} }}, {ID = "!ARS60",x=101.4+17.85*3,y=52,tooltip="",radius=3,model = { name="RA60",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="AR60"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!ARS70",x=101.5+17.85*4,y=52,tooltip="",radius=3,model = { name="RA70",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="AR70"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!ARS80",x=101.3+17.7*5,y=52,tooltip="",radius=3,model = { name="RA80",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="AR80"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLSD1",x=65.4,y=91,tooltip="",radius=3,model = { name="RSD1",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="SD"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLSD2",x=82.8,y=91,tooltip="",radius=3,model = { name="RSD2",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="SD"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLHRK",x=102.3,y=91,tooltip="",radius=3,model = { name="RRK",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,168,000),z=-3.5,var="HRK"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-1,} }}, {ID = "!LampRP",x=137.4,y=91,tooltip="",radius=3,model = { - name="RRP",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="RP",getfunc = function(ent) return math.Clamp((ent:GetPackedRatio("RPR")-0.45)*7,0,1) end}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} + name="RRP",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="RP"}, }}, {ID = "!LampLSN",x=189.3,y=91,tooltip="",radius=3,model = { - name="RSN",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="SN",getfunc = function(ent) return ent:GetPackedRatio("RPR")^2 end}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} + name="RSN",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="SN"}, }}, --{x=2031 + 2*0,y=223 + 192*0,tooltip="",radius=10}, - {ID = "!LampLEKK",x=215.5-0.4*1 ,y=31.8 + 19.7*0,tooltip="",radius=3,model = { - name="RLEKK",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="LN"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} - }}, {ID = "!LampLN",x=215.5-0.4*1 ,y=31.8 + 19.7*1,tooltip="",radius=3,model = { name="RLN",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="LN"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLKVD",x=214.8,y=31.8 + 19.7*2,tooltip="",radius=3,model = { name="RKVD",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="KVD"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!LampLKT",x=215.5-0.4*2,y=31.8 + 19.7*3,tooltip="",radius=3,model = { name="RKT",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="KT"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLKVC",x=267.2-1*0,y=31.8 + 19.7*0,tooltip="",radius=3,model = { name="RKVC",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(255,56,30),z=-3.5,var="KVC"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!LampLRS",x=266.30,y=31.8 + 19.7*1,tooltip="",radius=3,model = { name="RRS",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="RS"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLVD",x=265.2,y=31.8 + 19.7*2,tooltip="",radius=3,model = { name="RVD",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="VD"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!LampLST",x=267.2-0.85*3,y=31.8 + 19.7*3,tooltip="",radius=3,model = { name="RST",lamp = {speed=24,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",color=Color(175,250,20),z=-3.5,var="ST"}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, } } @@ -1242,13 +1086,11 @@ ENT.ButtonMap["BZOS_C"] = { sndmin = 50,sndmax = 1e3,sndang = Angle(-90,0,0), }}, {ID = "!VH1",x=8.2, y=27, radius=4, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z=-5,var="VH1",color=Color(175,250,20)}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-4,} - }}, + lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z=-5,var="VH1",color=Color(175,250,20)}}, + }, {ID = "!VH2",x=8.2, y=44, radius=4, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z=-5,var="VH2",color=Color(255,56,30)}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-4,} - }}, + lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",z=-5,var="VH2",color=Color(255,56,30)}}, + }, } } ENT.ButtonMap["BZOS_R"] = table.Copy(ENT.ButtonMap["BZOS_C"]) @@ -1671,14 +1513,14 @@ ENT.ButtonMap["CabVent_C"] = { hideseat=0.2, buttons = { - {ID="PVK-",x=0, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK-",x=0, y=0, w=35,h=62, tooltip=""}, {ID = "!PVK",x=35,y=31,model = { model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",ang = 180,z=15, getfunc = function(ent) return ent:GetPackedRatio("PVK") end, var="PVK",speed=4,min=1,max=0.75, sndvol = 1,snd = function(val,val2) return "pvk"..val2 end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), }}, - {ID="PVK+",x=35, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK+",x=35, y=0, w=35,h=62, tooltip=""}, } } ENT.ButtonMap["CabVent_R"] = table.Copy(ENT.ButtonMap["CabVent_C"]) @@ -1699,7 +1541,6 @@ ENT.ButtonMap["HelperPanel_C"] = { var="VUD2",speed=6, sndvol = 1,snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "VDLSet",x=0,y=86,w=76,h=86,tooltip="",model = { model = "models/metrostroi_train/switches/vudbrown.mdl",z=25, @@ -1759,7 +1600,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } ENT.ClientProps["UAVALever"] = { @@ -1776,7 +1617,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -1806,28 +1647,22 @@ ENT.ButtonMap["IGLAButtons_C"] = { buttons = { {ID = "IGLA1Set",x=23+32.5*0,y=54,w=14,h=12,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod1.mdl",var="IGLA:ButtonL1",color=Color(175,250,20),x=1,y=-4.7,z=-2.3}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),x=1,y=-4.7,z=-2.3} }}, {ID = "IGLA2Set",x=23+32.5*1,y=54,w=14,h=12,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod1.mdl",var="IGLA:ButtonL2",color=Color(175,250,20),x=0.6,y=-4.7,z=-2.3}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),x=0.6,y=-4.7,z=-2.3} }}, {ID = "IGLA23",x=23+32.5*1.5,y=54,w=14,h=12,tooltip=""}, {ID = "IGLA3Set",x=23+32.5*2,y=54,w=14,h=12,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod1.mdl",var="IGLA:ButtonL3",color=Color(175,250,20),x=0.2,y=-4.7,z=-2.3}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),x=0.2,y=-4.7,z=-2.3} }}, {ID = "IGLA4Set",x=23+32.5*3,y=54,w=14,h=12,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod1.mdl",var="IGLA:ButtonL4",color=Color(175,250,20),x=0,y=-4.7,z=-2.3}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),x=0,y=-4.7,z=-2.3} }}, {ID = "!IGLAFire",x=142.9,y=56,radius=3,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="IGLA:Fire",color=Color(255,56,30),z=-2.4,ang=0}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-2.4,} }}, {ID = "!IGLAErr",x=142.9,y=63,radius=3,tooltip="",model = { lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="IGLA:Error",color=Color(255,168,000),z=-2.8,ang=0}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-2.4,} }}, } } @@ -1849,7 +1684,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1865,7 +1699,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1878,10 +1711,9 @@ ENT.ButtonMap["EPKDisconnect"] = { buttons = { {ID = "EPKToggle",x=0,y=0,w=200,h=120,tooltip="",model = { - var="EPK",--,sndid="EPK_disconnect", + var="EPK"--,sndid="EPK_disconnect", --sndvol = 1,snd = function(val) return "disconnect_valve" end, --sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1894,10 +1726,9 @@ ENT.ButtonMap["EPVDisconnect"] = { buttons = { {ID = "EPKToggle",x=0,y=0,w=200,h=120,tooltip="",model = { - var="EPK",--,sndid="EPK_disconnect", + var="EPK"--,sndid="EPK_disconnect", --sndvol = 1,snd = function(val) return "disconnect_valve" end, --sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1965,7 +1796,6 @@ ENT.ButtonMap["DriverValveDisconnect"] = { var="DriverValveDisconnect",sndid="valve_disconnect", sndvol = 1,snd = function(val) return "disconnect_valve" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1982,10 +1812,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -2009,10 +1842,12 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, - + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -2042,7 +1877,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -2071,7 +1905,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } @@ -2150,7 +1984,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2162,10 +1995,9 @@ ENT.ButtonMap["OtsekDoor1"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor1",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor1",sndid="door_otsek1", + var="door_otsek1",sndid="door_otsek1", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -2177,10 +2009,9 @@ ENT.ButtonMap["OtsekDoor2"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor2",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor2",sndid="door_otsek2", + var="door_otsek2",sndid="door_otsek2", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -2196,7 +2027,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2221,7 +2051,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2236,7 +2065,6 @@ ENT.ButtonMap["RearDoor"] = { var="door1",sndid="door1", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -2322,8 +2150,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0, y=0, w=68, h=64, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!HighVoltage", x=0, y=74, w=68, h=64, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0, y=0, w=68, h=64, tooltip=""}, + {ID = "!HighVoltage", x=0, y=74, w=68, h=64, tooltip=""}, } } ENT.ClientProps["volt1"] = { @@ -2595,57 +2423,17 @@ ENT.Lights = { [1] = { "headlight",Vector(460,0,-40),Angle(0,0,0),Color(216,161,92),farz=5144,brightness = 4, fov=100, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(460,0,50), Angle(-20,0,0), Color(255,0,0), fov=160 ,brightness = 0.3, farz=450,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1, hidden="salon"}, - [4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1, hidden="salon"}, + [3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, + [4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, -- Manometers - [40] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(255,125,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 145,hidden = "pult_mvm_classic"}, - [41] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(255,125,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 140,hidden = "pult_mvm_classic"}, - [42] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(255,125,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 120,hidden = "pult_mvm_classic"}, - [43] = { "headlight",Vector(451.9-3,3.6+1,3.35+0.5),Angle(0,-90,0),Color(255,125,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 80,hidden = "pult_mvm_classic"}, + [40] = { "headlight",Vector(451.9,-13.5,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062) ,Color(255,125,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 145 }, + [41] = { "headlight",Vector(451.8,-21,-2+5.35),Angle(52.571899-15-5,-129.269775+25+15,49.853062),Color(255,125,25),farz = 8,nearz = 2,shadows = 1,brightness = 1,fov = 140 }, + [42] = { "headlight",Vector(450.3,13.1,-4.4+5.35),Angle(-136.613632-33,-95.636734-28,137.434570),Color(255,125,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 120 }, + [43] = { "headlight",Vector(451.9-3,3.6+1,3.35+0.5),Angle(0,-90,0),Color(255,125,25),farz = 8,nearz = 2,shadows = 0,brightness = 1.5,fov = 80 }, -- Voltmeter - [44] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(255,145,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100,hidden = "pult_mvm_classic" }, - [45] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(255,125,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100,hidden = "pult_mvm_classic" }, - - -- Reverse - [8] = { "light",Vector(460,-45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size=2}, - [9] = { "light",Vector(460, 45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size=2}, - - -- Cabin - [10] = { "dynamiclight", Vector( 425, 0, 30), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.25,hidden = "salon"}, - - -- Interior - [11] = { "dynamiclight", Vector( 200, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - - [21] = { "light",Vector(0,67,53.5)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [22] = { "light",Vector(0,67,53.5)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [23] = { "light",Vector(0,67,53.5)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [24] = { "light",Vector(0,-67,53.5)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [25] = { "light",Vector(0,-67,53.5)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - [26] = { "light",Vector(0,-67,53.5)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5}, - - [30] = { "light", Vector(455 , -45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, - [31] = { "light", Vector(455 , 45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, - [32] = { "light", Vector(455 , 0, 52), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", changable = true, size = 2}, - - Lamp_RTM1 = {"light", Vector(414.367554,-32.449749,6.717192), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden="Lamp_RTM1"}, - Lamp_RTM2 = {"light", Vector(447.35,-32.82,-0.90), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden="Lamp_RTM2"}, - - Lamps_cab1 = {"light", Vector(396.5,14.8,53), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.2, texture = "sprites/light_glow02", hidden="Lamps_cab1"}, - Lamps_cab2 = {"light", Vector(428,-1.5,60), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.25, texture = "sprites/light_glow02", hidden="Lamps_cab2"}, - Lamps2_cab1 = {"light", Vector(396.5,14.8,52.5), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.2, texture = "sprites/light_glow02", hidden="Lamps2_cab1"}, - Lamps2_cab2 = {"light", Vector(428,-1.3,59.2), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.25, texture = "sprites/light_glow02", hidden="Lamps2_cab2"}, - + [44] = { "headlight",Vector(450.273468,-32.306019,13.236823),Angle(-18.000000,25.541767,-90.600349),Color(255,145,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100 }, + [45] = { "headlight",Vector(450.273468,-32.306019,18.236823),Angle(-12.000000,25.541767,-90.600349),Color(255,125,25),farz = 10,nearz = 2,shadows = 1,brightness = 1,fov = 100 }, } function ENT:Initialize() @@ -2671,22 +2459,6 @@ function ENT:Initialize() self.VentCab = 0 self.VentG1 = 0 self.VentG2 = 0 - - self.Door1 = false - self.Door2 = false - self.Door3 = false - self.Otsek1 = false - self.Otsek2 = false - - self.ParkingBrake1 = true - self.ParkingBrake2 = true - self.DoorStates = {} - self.DoorLoopStates = {} - for i=0,3 do - for k=0,1 do - self.DoorStates[(k==1 and "DoorL" or "DoorR")..(i+1)] = false - end - end end function ENT:UpdateWagonNumber() @@ -2744,21 +2516,15 @@ function ENT:Think() self:SetLightPower(44,self:GetPackedBool("PanelLights")) self:SetLightPower(45,self:GetPackedBool("PanelLights")) - local mask = self:GetNW2Int("MaskType",2)--self:GetNW2Bool("Mask") local HL1 = self:Animate("Headlights1",self:GetPackedBool("Headlights1") and 1 or 0,0,1,6,false) local HL2 = self:Animate("Headlights2",self:GetPackedBool("Headlights2") and 1 or 0,0,1,6,false) local RL = self:Animate("RedLights_a",self:GetPackedBool("RedLights") and 1 or 0,0,1,6,false) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(8,RL > 0,RL) - self:SetLightPower(9,RL > 0,RL) local headlight = HL1*0.6+HL2*0.4 self:SetLightPower(1,headlight>0,headlight) self:SetLightPower(2,self:GetPackedBool("RedLights"),RL) - self:SetLightPower(30,headlight > 0,headlight) - self:SetLightPower(31,headlight > 0,headlight) - self:SetLightPower(32,headlight > 0 and (mask == 2 or mask == 3),headlight) local newBortlamps = self:GetNW2Bool("NewBortlamps") local Bortlamp_w = self:Animate("Bortlamp_w",self:GetPackedBool("DoorsW") and 1 or 0,0,1,16,false) @@ -2799,18 +2565,6 @@ function ENT:Think() self:ShowHideSmooth("bortlamp4_g",Bortlamp_g) self:ShowHideSmooth("bortlamp4_y",Bortlamp_y) end - self:SetLightPower(15, newBortlamps and Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(18, newBortlamps and Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(16, newBortlamps and Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(19, newBortlamps and Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(17, newBortlamps and Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(20, newBortlamps and Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(21, not newBortlamps and Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(24, not newBortlamps and Bortlamp_w > 0, Bortlamp_w) - self:SetLightPower(22, not newBortlamps and Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(25, not newBortlamps and Bortlamp_g > 0, Bortlamp_g) - self:SetLightPower(23, not newBortlamps and Bortlamp_y > 0, Bortlamp_y) - self:SetLightPower(26, not newBortlamps and Bortlamp_y > 0, Bortlamp_y) self:Animate("Controller",self:GetPackedRatio("ControllerPosition"),0.3,0.02,2,false) @@ -2848,26 +2602,29 @@ function ENT:Think() self.KVType = self:GetNW2Int("KVType",1) end - self:ShowHide("speed",(ARSType==4 or ARSType==5)) + self:ShowHide("speed",ARSType>=4) self:HidePanel("Block2_2",ARSType~=1) self:HidePanel("Block2_1",ARSType~=2 and ARSType~=3) - self:HidePanel("Block2_3",ARSType~=4 and ARSType~=5) + self:HidePanel("Block2_3",ARSType<4) self:ShowHide("SSpeed1",self:GetPackedBool("LUDS")) self:ShowHide("SSpeed2",self:GetPackedBool("LUDS")) self:ShowHide("RSpeed1",self:GetPackedBool("LUDS")) self:ShowHide("RSpeed2",self:GetPackedBool("LUDS")) - self:SetLightPower(43,(ARSType==4 or ARSType==5) and self:GetPackedBool("PanelLights")) + self:SetLightPower(43,ARSType>=4 and self:GetPackedBool("PanelLights")) local speed = self:GetPackedRatio("Speed")*100.0 if self:GetPackedBool("LUDS") then if ARSType == 1 and IsValid(self.ClientEnts["SSpeed1"])then self.ClientEnts["SSpeed1"]:SetSkin(math.floor(speed)%10) end - if ARSType == 1 and IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed/10)%10) end + if ARSType == 1 and IsValid(self.ClientEnts["SSpeed2"])then self.ClientEnts["SSpeed2"]:SetSkin(math.floor(speed/10)) end if (ARSType == 2 or ARSType == 3) and IsValid(self.ClientEnts["RSpeed1"])then self.ClientEnts["RSpeed1"]:SetSkin(math.floor(speed)%10) end - if (ARSType == 2 or ARSType == 3) and IsValid(self.ClientEnts["RSpeed2"])then self.ClientEnts["RSpeed2"]:SetSkin(math.floor(speed/10)%10) end + if (ARSType == 2 or ARSType == 3) and IsValid(self.ClientEnts["RSpeed2"])then self.ClientEnts["RSpeed2"]:SetSkin(math.floor(speed/10)) end end local handrails = self:GetNW2Bool("HandRails") local dot5 = self:GetNW2Bool("Dot5") local lvz = self:GetNW2Bool("LVZ") + local newSeats = self:GetNW2Bool("NewSeats") + local mask = self:GetNW2Bool("Mask") + local mask22 = self:GetNW2Bool("Mask22") self:ShowHide("cabine_mvm",not dot5) self:ShowHide("destination",not dot5) self:HidePanel("Battery_C",dot5) @@ -2898,79 +2655,34 @@ function ENT:Think() self:ShowHideSmooth("Lamps_cab1",dot5 and 0 or lamps_cab1) self:ShowHideSmooth("Lamps2_cab2",dot5 and lamps_cab2 or 0) self:ShowHideSmooth("Lamps2_cab1",dot5 and lamps_cab1 or 0) - self:SetLightPower("Lamps_cab1",not dot5 and lamps_cab1 > 0,lamps_cab1) - self:SetLightPower("Lamps_cab2",not dot5 and lamps_cab2 > 0,lamps_cab2) - self:SetLightPower("Lamps2_cab1", dot5 and lamps_cab1 > 0,lamps_cab1) - self:SetLightPower("Lamps2_cab2", dot5 and lamps_cab2 > 0,lamps_cab2) - local cabStrength = (lamps_cab1*0.3+lamps_cab2*0.7)^1.5 - self:SetLightPower(10,cabStrength > 0, cabStrength) local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false) self:SetSoundState("vpr",lamps_rtm>0 and 1 or 0,1) self:ShowHideSmooth("Lamp_RTM1",not dot5 and lamps_rtm or 0) self:ShowHideSmooth("Lamp_RTM2",dot5 and lamps_rtm or 0) - self:SetLightPower("Lamp_RTM1",not dot5 and lamps_rtm > 0,lamps_rtm) - self:SetLightPower("Lamp_RTM2",dot5 and lamps_rtm > 0,lamps_rtm) - if self.MaskType ~= mask then - self:ShowHide("mask22_mvm_wp",mask==1) - self:ShowHide("mask22_mvm",mask==2) - self:ShowHide("mask22_glass_wp",mask==3) - self:ShowHide("mask22_glass",mask==4) - self:ShowHide("mask222_mvm_wp",mask==5) - self:ShowHide("mask222_mvm",mask==6) - self:ShowHide("mask222_glass_wp",mask==7) - self:ShowHide("mask222_glass",mask==8) - self:ShowHide("mask141_mvm_wp",mask==9) - self:ShowHide("mask141_mvm",mask==10) - - self:ShowHideSmooth("Headlights222_1",0) - self:ShowHideSmooth("Headlights222_2",0) - self:ShowHideSmooth("Headlights141_1",0) - self:ShowHideSmooth("Headlights141_2",0) - self:ShowHideSmooth("Headlights22_1",0) - self:ShowHideSmooth("Headlights22_2",0) - self:ShowHideSmooth("Headlights22_glass_1",0) - self:ShowHideSmooth("Headlights22_glass_2",0) - if mask >= 9 then - self.LightsOverride[30][2] = Vector(465,-48, -23.5) - self.LightsOverride[31][2] = Vector(465,48 , -23.5) - self.LightsOverride[32][2] = Vector(465,0 , -23.5) - elseif mask < 9 then - self.LightsOverride[30][2] = Vector(465,-45, -23.5) - self.LightsOverride[31][2] = Vector(465,45 , -23.5) - self.LightsOverride[32][2] = Vector(465,0 , 52) - end - end + self:ShowHide("mask222_mvm",not mask and not lvz and not mask22) + self:ShowHide("mask222_lvz",not mask and lvz and not mask22) + self:ShowHide("mask141_mvm",mask and not mask22) + self:ShowHide("mask22_mvm",mask22 and not mask) --self:ShowHide("mask141_lvz",mask and lvz) self:ShowHide("1:KVTSet",not lvz) self:ShowHide("1:KVTRSet",not lvz) self:ShowHide("2:KVTSet",lvz) self:ShowHide("2:KVTRSet",lvz) - if mask <= 2 then - self:ShowHideSmooth("Headlights22_1",HL1) - self:ShowHideSmooth("Headlights22_2",HL2) - elseif mask < 4 then - self:ShowHideSmooth("Headlights222_1",HL1) - self:ShowHideSmooth("Headlights222_2",HL2) - elseif mask < 6 then - self:ShowHideSmooth("Headlights222_1",HL1) - self:ShowHideSmooth("Headlights222_2",HL2) - elseif mask < 8 then - self:ShowHideSmooth("Headlights222_1",HL1) - self:ShowHideSmooth("Headlights222_2",HL2) - elseif mask < 9 then - self:ShowHideSmooth("Headlights141_1",HL1) - self:ShowHideSmooth("Headlights141_2",HL2) - end + self:ShowHideSmooth("Headlights222_1",(not mask and not mask22) and HL1 or 0) + self:ShowHideSmooth("Headlights222_2",(not mask and not mask22) and HL2 or 0) + self:ShowHideSmooth("Headlights141_1",(mask and not mask22) and HL1 or 0) + self:ShowHideSmooth("Headlights141_2",(mask and not mask22) and HL2 or 0) + self:ShowHideSmooth("Headlights22_1",(mask22 and not mask) and HL1 or 0) + self:ShowHideSmooth("Headlights22_2",(mask22 and not mask) and HL2 or 0) - local seats = self:GetNW2Int("SeatType",1) - self:ShowHide("seats_old",seats==1) - self:ShowHide("seats_old_cap",seats==1) - self:ShowHide("seats_new",seats==2) - self:ShowHide("seats_new_cap",seats==2) + self:ShowHide("seats_old",not newSeats) + self:ShowHide("seats_old_cap",not newSeats) + self:ShowHide("seats_new",newSeats) + self:ShowHide("seats_new_cap",newSeats) self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("parking_brake", self:GetPackedBool("ParkingBrake") and 1 or 0,0.25,0, 4,false) @@ -3050,35 +2762,17 @@ function ENT:Think() self:ShowHide("lamps1",typ==1) self:ShowHide("lamps2",typ==2) end - local activeLights = 0 - local maxLights if typ == 1 then for i = 1,12 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end - maxLights = 12 else for i = 1,25 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp2_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp2_"..i,state,col) - activeLights = activeLights + state - end - maxLights = 25 - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/maxLights) + self:ShowHideSmooth("lamp2_"..i,self:Animate("Lamp2_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end end @@ -3096,6 +2790,8 @@ function ENT:Think() self:ShowHideSmooth("gv_wrench", CurTime() < self.ResetTime and 1 or 0.1) --self:InitializeSounds() + if not self.DoorStates then self.DoorStates = {} end + if not self.DoorLoopStates then self.DoorLoopStates = {} end for i=0,3 do for k=0,1 do local st = k==1 and "DoorL" or "DoorR" @@ -3147,20 +2843,9 @@ function ENT:Think() local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1) self:SetSoundState("rolling_10",rollingi*rol10,1) - self:SetSoundState("rolling_40",0*rollingi*rol40,rol40p) - self:SetSoundState("rolling_70",0*rollingi*rol70,rol70p) - self:SetSoundState("rolling_80",0*rollingi*rol80,rol80p) - - - local rol32 = math.Clamp((speed-25)/13,0,1)*(1-math.Clamp((speed-40)/10,0,1)) - local rol32p = Lerp((speed-20)/50,0.8,1.2) - local rol68 = math.Clamp((speed-40)/10,0,1)*(1-math.Clamp((speed-50)/20,0,1)) - local rol68p = Lerp(0.6+(speed-68)/26*0.2,0.6,1.4) - local rol75 = math.Clamp((speed-55)/20,0,1) - local rol75p = Lerp(0.8+(speed-75)/15*0.2,0.6,1.2) - self:SetSoundState("rolling_32",rollingi*rol32,rol32p) - self:SetSoundState("rolling_68",rollingi*rol68,rol68p) - self:SetSoundState("rolling_75",rollingi*rol75,rol75p) + self:SetSoundState("rolling_40",rollingi*rol40,rol40p) + self:SetSoundState("rolling_70",rollingi*rol70,rol70p) + self:SetSoundState("rolling_80",rollingi*rol80,rol80p) local rol10 = math.Clamp(speed/15,0,1)*(1-math.Clamp((speed-18)/35,0,1)) local rol10p = Lerp((speed-15)/14,0.6,0.78) @@ -3350,29 +3035,26 @@ function ENT:Think() local cabspeaker = self:GetPackedBool("AnnCab") local work = self:GetPackedBool("AnnPlay") - local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Int("AnnouncerBuzz",-1) > 0 - local buzz_old = self:GetNW2Int("AnnouncerBuzz",-1) == 2 + local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Bool("AnnouncerBuzz") for k in ipairs(self.AnnouncerPositions) do - self:SetSoundState("announcer_buzz"..k,(buzz and not buzz_old and (k ~= 1 and work or k==1 and cabspeaker)) and 1 or 0,1) - self:SetSoundState("announcer_buzz_o"..k,(buzz and buzz_old and (k ~= 1 and work or k==1 and cabspeaker)) and 1 or 0,1) + self:SetSoundState("announcer_buzz"..k,(buzz and (k ~= 1 and work or k==1 and cabspeaker)) and 1 or 0,1) end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume,id) - local cabspeaker = self:GetPackedBool("AnnCab") - local work = self:GetPackedBool("AnnPlay") - return (id ~= 1 and work or id == 1 and cabspeaker) and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) + + local distance = self:GetPos():Distance(LocalPlayer():GetPos()) + if distance > 1024 or special then return end + self.RTMaterial:SetTexture("$basetexture",self.ASNP) self:DrawOnPanel("ASNPScreen",function(...) surface.SetMaterial(self.RTMaterial) @@ -3430,16 +3112,8 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid:sub(1,4) == "IGLA" then return range > 0 and "igla_on" or "igla_off",location,1,pitch end - if soundid == "lk2c" then - local speed = self:GetPackedRatio("Speed") - self.SoundPositions[soundid][1] = 350-Lerp(speed/0.1,0,250) - return soundid,location,1-Lerp(speed/10,0.2,0.8),pitch - end if soundid == "LK2" then local speed = self:GetPackedRatio("Speed") - if range == 0 and speed < 20 and self:GetPackedRatio("EnginesCurrent") > 0.55 then - self:PlayOnce("lk2c","bass",1,pitch) - end local id = range > 0 and "lk2_on" or "lk2_off" self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) return id,location,1-Lerp(speed/10,0.2,0.8),pitch @@ -3496,9 +3170,6 @@ function ENT:OnPlay(soundid,location,range,pitch) if soundid == "AVU" then return range > 0 and "avu_on" or "avu_off",location,1,0.9 end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end elseif soundid:sub(1,4)=="kv70" and self:GetNW2Bool("SecondKV") then return soundid.."_2",location,range,pitch end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-717_mvm/init.lua b/lua/entities/gmod_subway_81-717_mvm/init.lua index 0f34929..d42a4a3 100644 --- a/lua/entities/gmod_subway_81-717_mvm/init.lua +++ b/lua/entities/gmod_subway_81-717_mvm/init.lua @@ -16,7 +16,7 @@ ENT.SyncTable = { "A53","A56","A54","A17","A44","A39","A70","A14","A74","A26","AR63","AS1","A13","A21","A31","A32","A16","A12","A24","A49","A27","A72","A50","A29","A46","A47","A71","A7","A9","A84","A8","A52","A19","A48","A10","A22","A30","A1","A2","A3","A4","A5","A6","A18","A73","A20","A25","A11","A37","A45","A38","A51","A65","A66","A42","A43","A41","A40","A75","A76","A60","A58","A57","A59","A28", "AV2","AV3","AV4","AV5","AV6","AV1", "AIS","A15","A81","A68","A80", - "RC1","VB","BPS","UOS", "PB", "UAVA","UAVAC", + "RC1","VB","BPS","UOS", "PB", "UAVA", "DriverValveBLDisconnect","DriverValveTLDisconnect","DriverValveDisconnect","ParkingBrake","EPK","EmergencyBrakeValve", "VUD2","VDL","Wiper", "GV", "R_ASNPMenu","R_ASNPUp","R_ASNPDown","R_ASNPOn" @@ -43,7 +43,7 @@ function ENT:Initialize() Init = true, } -- Set model and initialize - self.MaskType = 10 + self.MaskType = 1 self.LampType = 1 self:SetModel("models/metrostroi_train/81-717/81-717_mvm.mdl") self:SetRenderMode(RENDERMODE_TRANSALPHA) @@ -81,11 +81,9 @@ function ENT:Initialize() self.RearCouple = self:CreateCouple(Vector(-421,0,-66),Angle(0,180,0),false,"717") self.FrontCouple = self:CreateCouple(Vector( 410-3,0,-66),Angle(0,0,0),true,"717") end - local pneumoPow = 0.8+(math.random()^1.55)*0.4 + local pneumoPow = 1.3+(math.random()^1.2)*0.3 self.FrontBogey.PneumaticPow = pneumoPow self.RearBogey.PneumaticPow = pneumoPow - self.FrontCouple.EKKDisconnected = true - self.LightSensor = self:AddLightSensor(Vector(414-7.5,-130,-100),Angle(0,90,0)) -- Initialize key mapping self.KeyMap = { @@ -135,7 +133,7 @@ function ENT:Initialize() [KEY_PAD_DECIMAL] = "EPKToggle", [KEY_LSHIFT] = { def="KV_Unlock", - [KEY_SPACE] = "KVT", + [KEY_SPACE] = "KVTSet", [KEY_2] = "RingSet", [KEY_4] = "KVSet0Fast", @@ -143,7 +141,7 @@ function ENT:Initialize() [KEY_7] = "KVWrenchNone", [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", }, @@ -204,6 +202,49 @@ function ENT:Initialize() local vX = Angle(0,-90-0.2,56.3):Forward() -- For ARS panel local vY = Angle(0,-90-0.2,56.3):Right() + self.Lights = { + -- Headlight glow + --[1] = { "headlight", Vector(465,0,-20), Angle(0,0,0), Color(216,161,92), fov = 100, farz=6144,brightness = 4}, + + -- Head (type 1) + [2] = { "glow", Vector(470,-51,-19), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [3] = { "glow", Vector(472,-40, -19), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1.0 }, + [4] = { "glow", Vector(0,0, 0), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [5] = { "glow", Vector(0, 0, 0), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + [6] = { "glow", Vector(472, 41, -19), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1.0 }, + [7] = { "glow", Vector(470, 53,-19), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1.0 }, + + -- Reverse + [8] = { "light",Vector(465,-45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [9] = { "light",Vector(465, 45, 52), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + + -- Cabin + [10] = { "dynamiclight", Vector( 425, 0, 30), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.25}, + + -- Interior + [11] = { "dynamiclight", Vector( 200, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, -0), Angle(0,0,0), Color(255,245,245), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [21] = { "light",Vector(0,67,53.5)+Vector(3.25,0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [22] = { "light",Vector(0,67,53.5)+Vector(-0.06,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [23] = { "light",Vector(0,67,53.5)+Vector(-3.33,0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [24] = { "light",Vector(0,-67,53.5)+Vector(3.33,-0.9,-0.02), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [25] = { "light",Vector(0,-67,53.5)+Vector(0.06,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [26] = { "light",Vector(0,-67,53.5)+Vector(-3.28,-0.9,-0.02), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [30] = { "light", Vector(465 , -45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465 , 45, -23.5), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465 , 0, 52), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } -- Cross connections in train wires self.TrainWireInverts = { [28] = true, @@ -214,6 +255,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + self.RearDoor = false self.CabinDoor = false self.PassengerDoor = false @@ -232,9 +281,7 @@ function ENT:Initialize() self:OnButtonPress("KVWrenchNone") end function ENT:TriggerLightSensor(coil,plate) - if plate.PlateType == METROSTROI_UPPSSENSOR then - self.UPPS:TriggerSensor(coil,plate) - end + self.UPPS:TriggerSensor(coil,plate) end function ENT:NonSupportTrigger() @@ -276,10 +323,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%4==0 then local id = 10+math.ceil(i/4) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end @@ -315,10 +362,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%8.3<1 then local id = 9+math.ceil(i/8.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -397,7 +444,7 @@ function ENT:TrainSpawnerUpdate() else self:SetModel("models/metrostroi_train/81-717/81-717_mvm.mdl") end - self:SetNW2Int("Crane",self:GetNW2Int("Cran")) + self:SetNW2Int("Crane",typ==1 and self:GetNW2Int("Cran") or 2) local lampType = self:GetNW2Int("LampType") local ARSType = self:GetNW2Int("ARSType") @@ -407,24 +454,25 @@ function ENT:TrainSpawnerUpdate() self:SetNW2Bool("HandRails",dot5) self:SetNW2Bool("Dot5",dot5) self:SetNW2Bool("LVZ",typ==2) - self:SetNW2Int("LampType",lampType==1 and (math.random()>0.5 and 2 or 1) or lampType-1) + self:SetNW2Int("LampType",lampType==1 and (math.random()>0.5 and 2 or 1) or lampType-1) - self.NewBortlamps = typ~=2 or math.random()>0.5 - --local mask = typ[6]==true or typ[6] and typ[6](num,tex) - --self:SetNW2Bool("Mask",mask) - if ARSType == 1 then - ARSType = math.ceil(math.random()*4+0.5) - else ARSType = ARSType-1 end - self:SetNW2Int("ARSType",ARSType) - self:SetNW2Int("KVType",math.ceil(math.random()*3+0.5)) - self:SetNW2Bool("NewBortlamps",self.NewBortlamps) - self:SetNW2Int("BPSNType",BPSNType==1 and math.ceil(math.random()*12+0.5) or BPSNType-1) - self:SetNW2Int("RingType",RingType==1 and math.ceil(math.random()*8+0.5) or RingType-1) - if SeatType==1 then - self:SetNW2Int("SeatType",math.random(1,2)) - else - self:SetNW2Int("SeatType",SeatType-1) - end + --local mask = typ[6]==true or typ[6] and typ[6](num,tex) + --self:SetNW2Bool("Mask",mask) + if ARSType == 1 then + ARSType = math.ceil(math.random()*4+0.5) + else ARSType = ARSType-1 end + local mask = self:GetNW2Int("MaskType",1) + self:SetNW2Bool("Mask",mask==3) + self:SetNW2Bool("Mask22",mask==1) + self:SetNW2Int("ARSType",ARSType) + self:SetNW2Int("KVType",math.ceil(math.random()*3+0.5)) + self:SetNW2Int("BPSNType",BPSNType==1 and math.ceil(math.random()*12+0.5) or BPSNType-1) + self:SetNW2Int("RingType",RingType==1 and math.ceil(math.random()*8+0.5) or RingType-1) + if SeatType==1 then + self:SetNW2Bool("NewSeats",math.random()>0.5) + else + self:SetNW2Bool("NewSeats",SeatType==3) + end else local typ = self.WagonNumberConf or {} local lvz = typ[1] @@ -437,14 +485,14 @@ function ENT:TrainSpawnerUpdate() end self:SetNW2Bool("Dot5",self.Dot5) self:SetNW2Bool("LVZ",lvz) - self:SetNW2Int("SeatType",typ[3] and 2 or 1) + self:SetNW2Bool("NewSeats",typ[3]) self:SetNW2Bool("NewBortlamps",self.NewBortlamps) self:SetNW2Int("LampType",math.random()>0.5 and 2 or 1) local tex = typ[5] and typ[5][math.random(1,#typ[5])] or "Def_717MSKWhite" self:SetNW2String("PassTexture",tex) local mask = typ[6]==true or typ[6] and typ[6](num,tex) - self:SetNW2Int("MaskType",mask and 6 or 1) + self:SetNW2Bool("Mask",mask) self:SetNW2String("CabTexture",typ[7] and ((lvz and math.random()>0.2) and "Def_ClassicY" or "Def_ClassicG") or ((lvz and math.random()>0.2) and "Def_HammeriteY" or "Def_HammeriteG")) local ARSchance = math.random() self:SetNW2Int("ARSType",(not mask and not self.Dot5 and not lvz or ARSchance>0.8) and (ARSchance>0.93 and 5 or 4) or ARSchance>0.54 and (ARSchance>0.75 and 3 or 2) or 1) @@ -467,7 +515,7 @@ function ENT:TrainSpawnerUpdate() end self:SetNW2Int("KVType",math.Clamp(math.floor(KVChance*3)+1,1,3)) end - local oldType = not self.Dot5 and not mask and not lvz + local oldType = not self.Dot5 and not self:GetNW2Bool("Mask") and not lvz self:SetNW2String("Texture",oldType and "Def_717MSKClassic3" or "Def_717MSKClassic1") self:SetNW2Int("BPSNType",oldType and (math.random()>0.7 and 2 or 1) or 2+math.Clamp(math.floor(math.random()*11)+1,1,11)) @@ -486,20 +534,21 @@ function ENT:TrainSpawnerUpdate() self.SeatType = self:GetNW2Int("SeatType",1) self.HandRail = self:GetNW2Int("HandRail",1) self.BortLampType = self:GetNW2Int("BortLampType",1) + self.Lighter = self:GetNW2Bool("Lighter") and 1 or 0 + self.LED = self:GetNW2Bool("LED") + for i = 30,32 do self:SetLightPower(i,false) end + if self:GetNW2Bool("Mask") then + self.Lights[30][2] = Vector(465,-48, -23.5) + self.Lights[31][2] = Vector(465,48 , -23.5) + self.Lights[32][2] = Vector(465,0 , -23.5) + else + self.Lights[30][2] = Vector(465,-45, -23.5) + self.Lights[31][2] = Vector(465,45 , -23.5) + self.Lights[32][2] = Vector(465,0 , 52) + end end - --[[ - local mask = self:GetNW2Int("MaskType",3) - if mask == 3 then - self.Lights[30][2] = Vector(465,-48, -23.5) - self.Lights[31][2] = Vector(465,48 , -23.5) - self.Lights[32][2] = Vector(465,0 , -23.5) - else - self.Lights[30][2] = Vector(465,-45, -23.5) - self.Lights[31][2] = Vector(465,45 , -23.5) - self.Lights[32][2] = Vector(465,0 , 52) - end]] self.Announcer.AnnouncerType = self:GetNW2Int("Announcer",1) self.LampType = self:GetNW2Int("LampType",1) self.Pneumatic.ValveType = self:GetNW2Int("Crane",1) @@ -518,6 +567,7 @@ function ENT:TrainSpawnerUpdate() end self.PassSchemesDone = true end--]] + local used = {} local str = "" for i,k in ipairs(self.PR14XRelaysOrder) do @@ -530,18 +580,19 @@ function ENT:TrainSpawnerUpdate() break end until not used[v[rndi][1]] + --print(k,v) end self:SetNW2String("RelaysConfig",str) - local pneumoPow = 0.8+(math.random()^1.55)*0.4 + local pneumoPow = 1.3+(math.random()^1.2)*0.3 if IsValid(self.FrontBogey) then self.FrontBogey.PneumaticPow = pneumoPow end if IsValid(self.RearBogey) then self.RearBogey.PneumaticPow = pneumoPow end - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.4 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.4 and 0.9+math.random()*0.2 self:SetNW2Bool("SecondKV",math.random()>0.7) math.randomseed(os.time()) end @@ -551,7 +602,6 @@ function ENT:Think() self.RetVal = self.BaseClass.Think(self) local Panel = self.Panel - local Pneumatic = self.Pneumatic local power = Panel.V1 > -1.5 local brightness = math.min(1,Panel.Headlights1)*0.60 + math.min(1,Panel.Headlights2)*0.40 @@ -562,11 +612,107 @@ function ENT:Think() self:SetPackedBool("RedLights",Panel.RedLight2 > 0) self:SetPackedBool("CabLights",Panel.CabLights>0) self:SetPackedBool("EqLights",Panel.EqLights>0) + -- Interior/cabin lights + if Panel.EqLights > 0.5 and Panel.CabLights > 0.5 then + self:SetLightPower(10,true,1) + elseif Panel.CabLights > 0.5 then + self:SetLightPower(10,true,0.1) + elseif Panel.EqLights > 0.5 then + self:SetLightPower(10,true,0.6) + else + self:SetLightPower(10,false) + end self:SetPackedBool("PanelLights",Panel.PanelLights > 0.5) + --[[ + if self:GetWagonNumber() == 0000 or self:EntIndex()==1531 then --DEBUG + local accel = 0 + for i=1,#self.WagonList do + accel=accel+self.WagonList[i].Acceleration + end + local drivers = {self.DriverSeat,self.InstructorsSeat,self.ExtraSeat1,self.ExtraSeat2} + if math.abs(accel) > 0.1 then + for k,v in pairs(drivers) do + if IsValid(v) and IsValid(v:GetDriver()) then + v:GetDriver():ChatPrint(Format("v=%.2f I=%.2f RK=%02d a=%.2f",self.Speed,(self.Electric.I13+self.Electric.I24)/2,self.RheostatController.SelectedPosition or 0,accel/#self.WagonList))--(accel/#self.WagonList))) + end + end + end + end + self.TestA = self.TestA or nil + self.TestV = self.TestV or nil + local accel = self.Acceleration + if (self.Speed > 75 or self.Speed > 20 and self.Speed < 60) and accel < -0.5 and not self.TestA then + self.TestA = CurTime() + self.TestV = self.Speed/3600*1000 + self.TestTyp = self.Speed > 55 and 2 or 1 + self.TestS = 0 + end + if accel > -0.5 and self.TestA then + self.TestA = nil + self.TestV = nil + self.TestS = nil + end + + if self:GetWagonNumber() == 0000 or self:EntIndex()==0065 then --DEBUG + local accel = 0 + for i=1,#self.WagonList do + accel=accel+self.WagonList[i].Acceleration + end + local drivers = {self.DriverSeat,self.InstructorsSeat,self.ExtraSeat1,self.ExtraSeat2} + if math.abs(accel) > 0.1 then + for k,v in pairs(drivers) do + if IsValid(v) and IsValid(v:GetDriver()) then + v:GetDriver():ChatPrint(Format("v=%.2f I=%.2f RK=%02d a=%.2f",self.Speed,(self.Electric.I13+self.Electric.I24)/2,self.RheostatController.SelectedPosition or 0,accel/#self.WagonList))--(accel/#self.WagonList))) + end + end + end + end + if self.TestS then self.TestS=self.TestS+self.Speed*self.SpeedSign/3600*1000*self.DeltaTime end + if (self.Speed<2 and self.TestTyp ==2 or self.Speed<2 and self.TestTyp ==1) and self.TestA then + local curSpeed = self.Speed/3600*1000 + local a = (curSpeed-self.TestV)/(CurTime()-self.TestA) + RunConsoleCommand("say",Format("[%05d]V0= %.1f V1=%.1f t=%.2f a=%.2f s=%.1f",self:GetWagonNumber(),self.TestV*3600/1000,curSpeed*3600/1000,CurTime()-self.TestA,a,self.TestS)) + + + self.TestA = nil + self.TestV = nil + self.TestS = nil + end--]] + --[[ + if (self.Speed < 20 or self.Speed < 70) and accel > 0.1 and not self.TestA then + self.TestA = CurTime() + self.TestV = self.Speed/3600*1000 + self.TestTyp = self.Speed > 60 and 2 or self.Speed > 30 and 1 or 0 + print("!!!",self.TestTyp) + self.TestS = 0 + end + if self.TestA and self.KV.ControllerPosition<=0 and (self.Speed<0.1 or self.Speed<1 and self.TestA>0) then + self.TestA = nil + self.TestV = nil + self.TestS = nil + end + if self.TestS then self.TestS=self.TestS+self.Speed*self.SpeedSign/3600*1000*dT end + if (self.Speed>=30 and self.TestTyp ==0 or self.Speed>=60 and self.TestTyp ==1 or self.Speed>=80 and self.TestTyp ==2) and self.TestA then + local curSpeed = self.Speed/3600*1000 + local a = (curSpeed-self.TestV)/(CurTime()-self.TestA) + RunConsoleCommand("say",Format("[%05d]V0= %.1f V1=%.1f t=%.2f a=%.2f",self:GetWagonNumber(),self.TestV*3600/1000,curSpeed*3600/1000,CurTime()-self.TestA,a)) + + + self.TestA = nil + self.TestV = nil + self.TestS = nil + end--]] + self:SetLightPower(30,brightness > 0,brightness) + self:SetLightPower(31,brightness > 0,brightness) + self:SetLightPower(32,brightness > 0,brightness) + self:SetLightPower(8,Panel.RedLight2>0,1) + self:SetLightPower(9,Panel.RedLight1>0,1) + --self:SetLightPower(30, (Panel.CabinLight > 0.5), 0.03 + 0.97*self.L_2.Value) local lightsActive1 = Panel.EmergencyLights > 0 local lightsActive2 = Panel.MainLights > 0.0 + local mul = 0 local LampCount = self.LampType==2 and 25 or 12 local Ip = self.LampType==2 and 7 or 3.6 local Im = 0 @@ -577,19 +723,43 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end - + --self.Lights[11] = { "dynamiclight", Vector( 200, 0, 0), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 , fov=180,farz = 128 } + --self.Lights[12] = { "dynamiclight", Vector( 0, 0, 0), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400, fov=180,farz = 128 } + --self.Lights[13] = { "dynamiclight", Vector(-200, 0, 0), Angle(0,0,0), Color(255,255,255), brightness = 3, distance = 400 , fov=180,farz = 128 } + self:SetLightPower(11, mul > 0,mul/LampCount) + self:SetLightPower(12, mul > 0,mul/LampCount) + self:SetLightPower(13, mul > 0,mul/LampCount) -- Door button lights self:SetPackedBool("DoorsLeftL",Panel.DoorsLeft > 0.5) self:SetPackedBool("DoorsRightL",Panel.DoorsRight > 0.5) - self:SetPackedBool("DoorsW",Panel.DoorsW > 0) - self:SetPackedBool("GRP",Panel.GreenRP > 0) - self:SetPackedBool("BrW",Panel.BrW > 0) + -- Side lights + self:SetLightPower(15, self.NewBortlamps and Panel.DoorsW > 0.5) + self:SetLightPower(18, self.NewBortlamps and Panel.DoorsW > 0.5) + self:SetLightPower(16, self.NewBortlamps and Panel.GreenRP > 0.5) + self:SetLightPower(19, self.NewBortlamps and Panel.GreenRP > 0.5) + self:SetLightPower(17, self.NewBortlamps and Panel.BrW > 0.5) + self:SetLightPower(20, self.NewBortlamps and Panel.BrW > 0.5) + --[[ for i, train in ipairs(self.WagonList) do + if train.RheostatController then + self:SetNW2Int("PUAV:RK" .. i, math.floor(train.RheostatController.Position + 0.5)) + end + end--]] + self:SetLightPower(21, not self.NewBortlamps and Panel.DoorsW > 0.5) + self:SetLightPower(24, not self.NewBortlamps and Panel.DoorsW > 0.5) + self:SetLightPower(22, not self.NewBortlamps and Panel.GreenRP > 0.5) + self:SetLightPower(25, not self.NewBortlamps and Panel.GreenRP > 0.5) + self:SetLightPower(23, not self.NewBortlamps and Panel.BrW > 0.5) + self:SetLightPower(26, not self.NewBortlamps and Panel.BrW > 0.5) + self:SetPackedBool("DoorsW",self.Panel.DoorsW > 0) + self:SetPackedBool("GRP",self.Panel.GreenRP > 0) + self:SetPackedBool("BrW",self.Panel.BrW > 0) self:SetPackedBool("VH1",self.BZOS.VH1 > 0) self:SetPackedBool("VH2",self.BZOS.VH2 > 0) @@ -603,8 +773,8 @@ function ENT:Think() self:SetPackedBool("VPR",Panel.VPR > 0) -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = (Pneumatic.LeftDoorState[1] > 0.5) or (Pneumatic.LeftDoorState[2] > 0.5) or (Pneumatic.LeftDoorState[3] > 0.5) or (Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = (Pneumatic.RightDoorState[1] > 0.5) or (Pneumatic.RightDoorState[2] > 0.5) or (Pneumatic.RightDoorState[3] > 0.5) or (Pneumatic.RightDoorState[4] > 0.5) + self.LeftDoorsOpen = (self.Pneumatic.LeftDoorState[1] > 0.5) or (self.Pneumatic.LeftDoorState[2] > 0.5) or (self.Pneumatic.LeftDoorState[3] > 0.5) or (self.Pneumatic.LeftDoorState[4] > 0.5) + self.RightDoorsOpen = (self.Pneumatic.RightDoorState[1] > 0.5) or (self.Pneumatic.RightDoorState[2] > 0.5) or (self.Pneumatic.RightDoorState[3] > 0.5) or (self.Pneumatic.RightDoorState[4] > 0.5) -- DIP/power self:SetPackedBool("LUDS",Panel.LUDS > 0.5) @@ -617,12 +787,13 @@ function ENT:Think() TW18 = TW18+(v.Panel.TW18 or 0)/wags end end + self:SetPackedBool("RP",TW18 > 0.5) self:SetPackedBool("SN",TW18 > 0) self:SetPackedRatio("RPR",math.Clamp(TW18^0.7,0,1)) self:SetPackedBool("SD",Panel.SD > 0.5) - +---[[ self:SetPackedBool("AR04",Panel.AR04 > 0) self:SetPackedBool("AR0",Panel.AR0 > 0) self:SetPackedBool("AR40",Panel.AR40 > 0) @@ -632,13 +803,11 @@ function ENT:Think() --]] local drv = self:GetDriver() self:SetPackedBool("GLIB",power and IsValid(drv) and drv:SteamID() == "STEAM_0:1:31566374") - self:SetPackedBool("LEKK",Panel.LEKK > 0) self:SetPackedBool("LN",Panel.LN > 0) self:SetPackedBool("ST",Panel.LST > 0) self:SetPackedBool("VD",Panel.LVD > 0) self:SetPackedBool("KVD",Panel.LKVD > 0) self:SetPackedBool("RS",Panel.RS > 0) - self:SetPackedBool("OneFreq",Panel.OneFreq > 0) self:SetPackedBool("HRK",Panel.LhRK > 0) self:SetPackedBool("KVC",Panel.KVC > 0) self:SetPackedBool("KT",Panel.KT>0) @@ -649,24 +818,37 @@ function ENT:Think() self:SetPackedRatio("M8",Panel.M8) self:SetNW2Int("WrenchMode",self.KVWrenchMode) self:SetPackedBool("ReverserPresent",self.KVWrenchMode and self.KVWrenchMode>0) - self:SetPackedRatio("CranePosition", Pneumatic.RealDriverValvePosition) + self:SetPackedRatio("CranePosition", self.Pneumatic.RealDriverValvePosition) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetNW2Int("ReverserPosition", (self.KV.ReverserPosition+1)) self:SetNW2Int("KRUPosition", self.KRU.Position) - if Pneumatic.ValveType == 1 then - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - else - self:SetPackedRatio("BLPressure", Pneumatic.BrakeLinePressure/16.0) - end - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", Pneumatic.BrakeCylinderPressure/6.0) - self:SetPackedRatio("EnginesVoltage", self.Electric.Aux750V/1000.0) - self:SetPackedRatio("EnginesCurrent2", 0.5 + 0.5*(self.Electric.I13/500.0)) - self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/150.0) + if self:GetWagonNumber() == 0000 then --DEBUG + local accel = 0 + for i=1,#self.WagonList do + accel=accel+self.WagonList[i].Acceleration + end - self:SetPackedBool("Compressor",Pneumatic.Compressor > 0) + if math.abs(accel) > 0.1 then + Player(6):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) + Player(7):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) + Player(9):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) + end + end + + if self.Pneumatic.ValveType == 1 then + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + else + self:SetPackedRatio("BLPressure", self.Pneumatic.BrakeLinePressure/16.0) + end + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", self.Pneumatic.BrakeCylinderPressure/6.0) + self:SetPackedRatio("EnginesVoltage", self.Electric.Aux750V/1000.0) + self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I13/500.0)) + self:SetPackedRatio("EnginesCurrent2", 0.5 + 0.5*(self.Electric.I24/500.0)) + self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) + + self:SetPackedBool("Compressor",self.Pneumatic.Compressor > 0) self:SetPackedBool("Buzzer",Panel.Ring >= 1) self:SetPackedBool("BuzzerBZOS",Panel.Ring>0 and Panel.Ring<1) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) @@ -678,6 +860,8 @@ function ENT:Think() self:SetPackedBool("CabinDoor",self.CabinDoor) self:SetPackedBool("OtsekDoor1",self.OtsekDoor1) self:SetPackedBool("OtsekDoor2",self.OtsekDoor2) + -- Update ARS system + self:SetPackedRatio("Speed", self.Speed/100) self:SetPackedBool("AnnBuzz",Panel.AnnouncerBuzz > 0) self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) @@ -705,16 +889,17 @@ function ENT:Think() --self.FrontBogey.MotorPower = P*0.5 --self.Acc = (self.Acc or 0)*0.95 + self.Acceleration*0.05 + --print(self.Acc) -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-Pneumatic.ParkingBrakePressure)/2.6)/2 + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT + --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end self:GenerateJerks() @@ -727,6 +912,15 @@ function ENT:TriggerTurbostroiInput(sys,name,val) end function ENT:PhysicsCollide( colData ) + if true then return end + if colData.HitEntity == Entity(0) then + --PrintTable(colData) + file.Append("collides.txt",tostring(self:WorldToLocal(colData.HitPos)).."\n") + print("COLLIDE") + print(self.Owner) + print(self:WorldToLocal(colData.HitPos)) + --print(collider) + end end -------------------------------------------------------------------------------- function ENT:OnButtonPress(button,ply) @@ -775,13 +969,11 @@ function ENT:OnButtonPress(button,ply) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then @@ -816,11 +1008,6 @@ function ENT:OnButtonPress(button,ply) return end - if button == "KVT" then - self.KVT:TriggerInput("Set",1) - self.KVTR:TriggerInput("Set",1) - end - if (button == "VDL") or (button == "KDL") then self.DoorSelect:TriggerInput("Open",1) self.KDLK:TriggerInput("Open",1) @@ -878,11 +1065,6 @@ function ENT:OnButtonRelease(button) self.IGLA3:TriggerInput("Set",0) end - if button == "KVT" then - self.KVT:TriggerInput("Set",0) - self.KVTR:TriggerInput("Set",0) - end - if button == "KVSetT1AB" then if self.KV.ControllerPosition > -2 then self.KV:TriggerInput("ControllerSet",-2) diff --git a/lua/entities/gmod_subway_81-717_mvm/shared.lua b/lua/entities/gmod_subway_81-717_mvm/shared.lua index 96cceab..33e2866 100644 --- a/lua/entities/gmod_subway_81-717_mvm/shared.lua +++ b/lua/entities/gmod_subway_81-717_mvm/shared.lua @@ -24,15 +24,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=1,4 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i-1,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i-1,0)) -end - ENT.AnnouncerPositions = { {Vector(420,-49 ,61),80,0.4}, {Vector(-3,-60, 62),250,0.3}, @@ -62,20 +53,12 @@ function ENT:InitializeSounds() self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_5"] = {480,1e12,Vector(0,0,0),0.05} - self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.1} + self.SoundPositions["rolling_5"] = {480,1e12,Vector(0,0,0),0.15} + self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.20} self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.55} self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.60} self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.75} - - self.SoundNames["rolling_32"] = {loop=true,"subway_trains/717/rolling/rolling_32.wav"} - self.SoundNames["rolling_68"] = {loop=true,"subway_trains/717/rolling/rolling_68.wav"} - self.SoundNames["rolling_75"] = {loop=true,"subway_trains/717/rolling/rolling_75.wav"} - self.SoundPositions["rolling_32"] = {480,1e12,Vector(0,0,0),0.2} - self.SoundPositions["rolling_68"] = {480,1e12,Vector(0,0,0),0.4} - self.SoundPositions["rolling_75"] = {480,1e12,Vector(0,0,0),0.8} - self.SoundNames["rolling_motors"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundNames["rolling_motors2"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundPositions["rolling_motors"] = {250,1e12,Vector(200,0,0),0.33} @@ -183,30 +166,28 @@ function ENT:InitializeSounds() self.SoundNames["bpsn10"] = {"subway_trains/717/bpsn/bpsn_2.wav", loop=true} self.SoundNames["bpsn11"] = {"subway_trains/717/bpsn/bpsn_piter.wav", loop=true} self.SoundNames["bpsn12"] = {"subway_trains/717/bpsn/bpsn1.wav", loop=true} - self.SoundPositions["bpsn1"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn2"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn3"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn4"] = {600,1e9,Vector(0,45,-448),0.025} - self.SoundPositions["bpsn5"] = {600,1e9,Vector(0,45,-448),0.08} - self.SoundPositions["bpsn6"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn7"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn8"] = {600,1e9,Vector(0,45,-448),0.03} - self.SoundPositions["bpsn9"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn10"] = {600,1e9,Vector(0,45,-448),0.02} - self.SoundPositions["bpsn11"] = {600,1e9,Vector(0,45,-448),0.04} - self.SoundPositions["bpsn12"] = {600,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn1"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn2"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn3"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn4"] = {500,1e9,Vector(0,45,-448),0.025} + self.SoundPositions["bpsn5"] = {500,1e9,Vector(0,45,-448),0.08} + self.SoundPositions["bpsn6"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn7"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn8"] = {500,1e9,Vector(0,45,-448),0.03} + self.SoundPositions["bpsn9"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn10"] = {500,1e9,Vector(0,45,-448),0.02} + self.SoundPositions["bpsn11"] = {500,1e9,Vector(0,45,-448),0.04} + self.SoundPositions["bpsn12"] = {500,1e9,Vector(0,45,-448),0.04} --Подвагонка self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" self.SoundNames["lk5_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk2c"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundNames["lk3_on"] = "subway_trains/717/pneumo/lk3_on.mp3" self.SoundNames["lk3_off"] = "subway_trains/717/pneumo/lk3_off.mp3" --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["lk5_on"] = {440,1e9,Vector(-60,-40,-66),0.30} self.SoundPositions["lk2_off"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk2c"] = {440,1e9,Vector(-60,-40,-66),0.6} self.SoundPositions["lk3_on"] = self.SoundPositions["lk2_on"] self.SoundPositions["lk3_off"] = self.SoundPositions["lk2_on"] --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] @@ -640,14 +621,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(-420,45,-30),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(-420,45,-30),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -679,10 +656,7 @@ function ENT:InitializeSounds() for k,v in ipairs(self.AnnouncerPositions) do self.SoundNames["announcer_buzz"..k] = {loop=true,"subway_announcers/asnp/bpsn_ann.wav"} - self.SoundPositions["announcer_buzz"..k] = {v[2] or 600,1e9,v[1],v[3]/6} - self.SoundNames["announcer_buzz_o"..k] = {loop=true,"subway_announcers/upo/noiseT2.wav"} - --self.SoundNames["announcer_buzz_o"..k] = {loop=true,"subway_announcers/riu/bpsn_ann.wav"} - self.SoundPositions["announcer_buzz_o"..k] = {v[2] or 600,1e9,v[1],v[3]/6} + self.SoundPositions["announcer_buzz"..k] = {v[2] or 600,1e9,v[1],v[3]/4} end for _,v in pairs(ARSRelays) do @@ -812,7 +786,7 @@ function ENT:InitializeSystems() self:LoadSystem("BV","BV_630") self:LoadSystem("LK_755A") self:LoadSystem("YAR_13B") - self:LoadSystem("YAR_27",nil,"MSK") + self:LoadSystem("YAR_27") self:LoadSystem("YAK_36") self:LoadSystem("YAK_37E") self:LoadSystem("YAS_44V") @@ -844,19 +818,15 @@ function ENT:InitializeSystems() self:LoadSystem("RouteNumber","81_71_RouteNumber",2) self:LoadSystem("LastStation","81_71_LastStation","717","destination") - - --self:LoadSystem("Telemetry",nil,"",{"Electric","Engines","RheostatController","PositionSwitch"}) end function ENT:PostInitializeSystems() - if CLIENT then return end self.Electric:TriggerInput("NoRT2",0) self.Electric:TriggerInput("HaveRO",1) self.Electric:TriggerInput("GreenRPRKR",0) self.Electric:TriggerInput("Type",self.Electric.MVM) self.Electric:TriggerInput("X2PS",0) self.Electric:TriggerInput("HaveVentilation",1) - self.BIS200:TriggerInput("SpeedDec",1) self.KRU:TriggerInput("LockX3",1) end --------------------------------------------------- @@ -914,7 +884,7 @@ ENT.NumberRanges = { --717.5 ЛВЗ { true, - {8876,8877,8881,8882,8883,8884,8885,8886,8891,8892,8893,8894,8931,8932,8933,8934,8935,8936,8937,8938,8939,8940,8941,8941,8942,8943,8944,8945,8946,8947,8965,8966,8967,8968,8969,8970,8983,8984,8985,8986,8987,8988,8989,8995,8996,8997,8998,8999}, + {8876,8877,8881,8882,8883,8884,8885,8886,8891,8892,8893,8894,8931,8932,8933,8934,8935,8936,8937,8938,8939,8940,8941,8941,8942,8943,8944,8945,8946,8947,8965,8966,8967,8968,8969,3970,8983,8984,8985,8986,8987,8988,8989,8995,8996,8997,8998,8999}, {true , true,false,true,{"Def_717MSKWhite","Def_717MSKWood4"},true,true} }, { @@ -984,12 +954,7 @@ ENT.Spawner = { ent.FrontDoor = val==4 ent.RearDoor = val==4 end - if val == 1 then - timer.Simple(1,function() - if not IsValid(ent) then return end - ent.BV:TriggerInput("Enable",1) - end) - end + if val == 1 then ent.BV:TriggerInput("Enable",1) end ent.Pneumatic.RightDoorState = val==4 and {1,1,1,1} or {0,0,0,0} ent.Pneumatic.DoorRight = val==4 ent.Pneumatic.LeftDoorState = val==4 and {1,1,1,1} or {0,0,0,0} diff --git a/lua/entities/gmod_subway_81-717_mvm_custom.lua b/lua/entities/gmod_subway_81-717_mvm_custom.lua index 5106354..34e03d0 100644 --- a/lua/entities/gmod_subway_81-717_mvm_custom.lua +++ b/lua/entities/gmod_subway_81-717_mvm_custom.lua @@ -17,6 +17,11 @@ ENT.SubwayTrain = { Manufacturer = "MVM", } +local Announcer = {} +for k,v in pairs(Metrostroi.AnnouncementsASNP or {}) do Announcer[k] = v.name or k end +local Schemes = {} +for k,v in pairs(Metrostroi.Skins["717_new_schemes"] or {}) do Schemes[k] = v.name or k end + ENT.Spawner = { model = { "models/metrostroi_train/81-717/81-717_mvm.mdl", @@ -49,19 +54,11 @@ ENT.Spawner = { end, {"Type","Spawner.717.Type","List",{"81-717","81-717.5"}}, {"BodyType","Spawner.717.BodyType","List",{"Spawner.717.Type.MVM","Spawner.717.Type.LVZ"}}, - {"Scheme","Spawner.717.Schemes","List",function() - local Schemes = {} - for k,v in pairs(Metrostroi.Skins["717_new_schemes"] or {}) do Schemes[k] = v.name or k end - return Schemes - end}, + {"Scheme","Spawner.717.Schemes","List",Schemes}, {}, - {"MaskType","Spawner.717.MaskType","List",{"2-2","2-2 (M)","2-2 Glass","2-2 Glass (M)","2-2-2","2-2-2 (M)","2-2-2 Glass","2-2-2 Glass (M)","1-4-1","1-4-1 (M)"}}, + {"MaskType","Spawner.717.MaskType","List",{"2-2","2-2-2","1-4-1"}}, {"Cran","Spawner.717.CranType","List",{"334","013"}}, - {"Announcer","Spawner.717.Announcer","List",function() - local Announcer = {} - for k,v in pairs(Metrostroi.AnnouncementsASNP or {}) do Announcer[k] = v.name or k end - return Announcer - end}, + {"Announcer","Spawner.717.Announcer","List",Announcer}, {"LampType","Spawner.717.LampType","List",{"Spawner.717.Common.Random","Spawner.717.Lamp.LPV02","Spawner.717.Lamp.LLV01"}}, {"SeatType","Spawner.717.SeatType","List",{"Spawner.717.Common.Random","Spawner.717.Common.Old","Spawner.717.Common.New"}}, {"ARSType","Spawner.717.ARS","List",{"Spawner.717.Common.Random","Spawner.717.ARS.1","Spawner.717.ARS.2","Spawner.717.ARS.3","Spawner.717.ARS.4","Spawner.717.ARS.5"}}, diff --git a/lua/entities/gmod_subway_81-718/cl_init.lua b/lua/entities/gmod_subway_81-718/cl_init.lua index 160714d..7e00d27 100644 --- a/lua/entities/gmod_subway_81-718/cl_init.lua +++ b/lua/entities/gmod_subway_81-718/cl_init.lua @@ -42,7 +42,6 @@ ENT.ClientPropsInitialized = false ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ClientProps["schemes"] = { @@ -302,23 +301,18 @@ ENT.ButtonMap["Main"] = { sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), disableoff = "SB1Set",disableon = "SB2Set", - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "SB1Set",x=31, y=148, radius=20, tooltip="Двери левые", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-14, var="SB1",speed=16, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL3",speed=6,z=2.2, - lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL3",speed=6,z=2.2}, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "SB2Set",x=82, y=148, radius=20, tooltip="Двери правые", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-14, var="SB2",speed=16, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL4",speed=6,z=2.2, - lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL4",speed=6,z=2.2}, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "!SB1K",x=31, y=148, radius=0, model = { @@ -343,18 +337,13 @@ ENT.ButtonMap["Main"] = { {ID = "SB4Set",x=136, y=91, radius=20, tooltip="Проверка", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12, var="SB4",speed=16, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL5",speed=6,z=2.2, - lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL5",speed=6,z=2.2}, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetPackedBool("HL5") and Metrostroi.GetPhrase("Train.Buttons.HL5") end }}, {ID = "SB5Set",x=136, y=148, radius=20, tooltip="Передача управления(звонок)", model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",vmin=1,vmax=0,z=-9, var="SB5",speed=16, - --lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="RZP",speed=9,z=2.2, - --lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - --sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + --lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="RZP",speed=9,z=2.2}, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -402,7 +391,6 @@ ENT.ButtonMap["Main"] = { sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), disable = "SB6Set", - noTooltip = true, }}, {ID = "!SB6K",x=233, y=95, radius=0, model = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0.17,vmax=0, @@ -420,7 +408,6 @@ ENT.ButtonMap["Main"] = { sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), disable = "SB7Set", - noTooltip = true, }}, {ID = "!SB7K",x=233, y=152, radius=nil, model = { model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0.17,vmax=0, @@ -471,12 +458,9 @@ ENT.ButtonMap["Main"] = { }}, {ID = "SB13Set",x=398, y=148, radius=20, tooltip="Отключение БВА", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL6",getfunc = function(ent) return ent:GetPackedRatio("HL6") end,speed=6,z=2.2, - lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL6",getfunc = function(ent) return ent:GetPackedRatio("HL6") end,speed=6,z=2.2}, var="SB13",speed=16, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetPackedBool("HL6") and Metrostroi.GetPhrase("Train.Buttons.HL6") end }}, {ID = "SB14Set",x=452, y=34, radius=20, tooltip="Резервный мотор-компрессор", model = { @@ -491,12 +475,9 @@ ENT.ButtonMap["Main"] = { }}, {ID = "SB16Set",x=452, y=148, radius=20, tooltip="Отключение ББЭ", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL7",speed=6,z=2.2, - lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL7",speed=6,z=2.2}, var="SB16",speed=16, sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetPackedBool("HL7") and Metrostroi.GetPhrase("Train.Buttons.HL7") end }}, } } @@ -509,7 +490,7 @@ ENT.ButtonMap["Left"] = { hideseat=0.2, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=85,h=110,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=85,h=110,tooltip=""}, } } ENT.ButtonMap["Right"] = { @@ -538,7 +519,6 @@ ENT.ButtonMap["Right"] = { var="SA5/1",speed=16,ang=180, sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.LHalf","Train.Buttons.LFull"} }}, {ID = "SA4/1Toggle",x=55+38, y=93, radius=10, tooltip="Подсветка приборов", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-3.5, @@ -593,14 +573,14 @@ ENT.ButtonMap["CabVent"] = { hideseat=0.2, buttons = { - {ID="PVK-",x=0, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK-",x=0, y=0, w=35,h=62, tooltip=""}, {ID = "!PVK",x=35,y=31,model = { model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",ang = 180,z=15, getfunc = function(ent) return ent:GetPackedRatio("PVK") end, var="PVK",speed=4,min=1,max=0.75, sndvol = 1,snd = function(val,val2) return "pvk"..val2 end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), }}, - {ID="PVK+",x=35, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,}, + {ID="PVK+",x=35, y=0, w=35,h=62, tooltip=""}, } } local function placeLamps(name) @@ -616,11 +596,8 @@ local function placeLamps(name) bscale = Vector(0.7,0.7,0.7), z=-5, var=button.var, - color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255), - }, - sprite = {bright=0.5,size=0.25,scale=0.01,color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255),z=-3,} + color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255)} } - button.var=nil end end ENT.ButtonMap["BUP_MVSU"] = { @@ -957,24 +934,21 @@ ENT.ButtonMap["DriverValveDisconnect"] = { sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13, - speed=4, min=1,max=0.75, - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, + speed=4, min=1,max=0.75 }}, {ID = "ParkingBrakeToggle", x=82.5, y=10, w=70, h=70, tooltip="Стояночный тормоз", model = { var="ParkingBrake",--sndid="brake_disconnect2", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13, - speed=4, min=1,max=0.75, - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, + speed=4, min=1,max=0.75 }}, {ID = "EPKToggle", x=188, y=0, w=70, h=70, tooltip="ЭПВ: Электропневматический вентиль АРС", model = { var="EPK",--sndid="brake_disconnect2", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13, - speed=4, min=1,max=0.75, - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, + speed=4, min=1,max=0.75 }}, } } @@ -1191,7 +1165,6 @@ ENT.ButtonMap["VPU"] = { var="SAP14",speed=16,ang=180, sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"} }}, {ID = "SAP26Toggle",x=365, y=85, radius=10, tooltip="УОС: Устройство ограничения скорости(езда без ЭПК\\ЭПВ)", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2, @@ -1234,23 +1207,11 @@ ENT.ButtonMap["Battery"] = { var="VTPR",speed=2,min=1,max=0.61,getfunc = function(ent) return ent:GetPackedRatio("VTPR") end, sndvol = 0.8, snd = function(_,val) return val%2>0 and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - {ID="VTPR-",x=300-30, y=40-30, w=30,h=60, tooltip="ВТПР(влево)",states = {"Train.Buttons.0","Train.Buttons.VTRAll","Train.Buttons.VTRF","Train.Buttons.VTRB"},varTooltip = function(ent) return ent:GetPackedRatio("VTPR") end,}, - {ID="VTPR+",x=300 , y=40-30, w=30,h=60, tooltip="ВТПР(вправо)",states = {"Train.Buttons.0","Train.Buttons.VTRAll","Train.Buttons.VTRF","Train.Buttons.VTRB"},varTooltip = function(ent) return ent:GetPackedRatio("VTPR") end,}, + {ID="VTPR-",x=300-30, y=40-30, w=30,h=60, tooltip="ВТПР(влево)"}, + {ID="VTPR+",x=300 , y=40-30, w=30,h=60, tooltip="ВТПР(вправо)"}, } } -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} -- ARS/Speedometer panel ENT.ButtonMap["ARS"] = { pos = Vector(459.95,7-4,4.9-9), @@ -1263,99 +1224,70 @@ ENT.ButtonMap["ARS"] = { buttons = { {ID = "!Speedometer1", x=107,y=6,w=13,h=22,tooltip="Индикатор скорости", model = { name="SPU_Speed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl", color=Color(175,250,20),skin=0,z=1,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("Speedometer") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*10)%10] - end}, }}, {ID = "!Speedometer2", x=118,y=6,w=13,h=22,tooltip="Индикатор скорости", model = { name="SPU_Speed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl", color=Color(175,250,20),skin=0,z=1,ang=Angle(0,0,-90), - tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("Speedometer") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*100)%10] - end}, }}, {ID = "!SD", x=9,y=7,w=33,h=13,tooltip="СД: Лампа сигнализации дверей поезда (двери закрыты)",model = { name="SPU_SD",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_SD", getfunc=function(ent) return ent:GetPackedBool("SPU_SD") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!KT", x=48,y=7,w=33,h=13,tooltip="КТ: Лампа контроля торможения",model = { name="SPU_KT",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_KT", getfunc=function(ent) return ent:GetPackedBool("SPU_KT") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!RS", x=158.5,y=7,w=33,h=13,tooltip="РС: Лампа равенства скоростей",model = { name="SPU_RS",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_RS", getfunc=function(ent) return ent:GetPackedBool("SPU_RS") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!SK", x=196.5,y=7,w=33,h=13,tooltip="СН: Лампа соответствия направления движения",model = { name="SPU_SK",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_SN", getfunc=function(ent) return ent:GetPackedBool("SPU_SN") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!04", x=9,y=33.5,w=33,h=13,tooltip="ОЧ: Лампа отсутствия частоты",model = { name="SPU_04",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_r.mdl",z=1, var="SPU_04", getfunc=function(ent) return ent:GetPackedBool("SPU_04") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!0", x=48,y=33.5,w=33,h=13,tooltip="0: Лампа разрешённой скорости 0 км\\ч",model = { name="SPU_0",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_r.mdl",z=1, var="SPU_00", getfunc=function(ent) return ent:GetPackedBool("SPU_00") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!40", x=84,y=33.5,w=33,h=13,tooltip="40: Лампа разрешённой скорости 40 км\\ч",model = { name="SPU_40",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_y.mdl",z=1, var="SPU_40", getfunc=function(ent) return ent:GetPackedBool("SPU_40") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(150,100,30),z=-1,aa=true} }}, {ID = "!60", x=121,y=33.5,w=33,h=13,tooltip="60: Лампа разрешённой скорости 60 км\\ч",model = { name="SPU_60",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_60", getfunc=function(ent) return ent:GetPackedBool("SPU_60") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!70", x=158.5,y=33.5,w=33,h=13,tooltip="70: Лампа разрешённой скорости 70 км\\ч",model = { name="SPU_70",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_70", getfunc=function(ent) return ent:GetPackedBool("SPU_70") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!80", x=196.5,y=33.5,w=33,h=13,tooltip="80: Лампа разрешённой скорости 80 км\\ч",model = { name="SPU_80",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_80", getfunc=function(ent) return ent:GetPackedBool("SPU_80") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!KES", x=15,y=60.5,w=18,h=13,tooltip="КЭС: Контроль экстренной связи",model = { name="SPU_KES",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_KES", getfunc=function(ent) return ent:GetPackedBool("SPU_KES") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!ST", x=34,y=60.5,w=18,h=13,tooltip="СТ: Применение пневматического торможения или сработка стояночного тормоза",model = { name="SPU_ST",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_ST", getfunc=function(ent) return ent:GetPackedBool("SPU_ST") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!CUV", x=53,y=60.5,w=18,h=13,tooltip="ЦУВ: Невключение ЦУВ на вагоне",model = { name="SPU_CUV",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_CUV"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!AVU", x=72,y=60.5,w=18,h=13,tooltip="АВУ: Сработка АВУ",model = { name="SPU_AVU",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_AVU", getfunc=function(ent) return ent:GetPackedBool("SPU_AVU") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!AIP", x=91,y=60.5,w=18,h=13,tooltip="АИП",model = { name="SPU_AIP",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_AIP"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true} }}, {ID = "!RIP", x=148,y=60.5,w=18,h=13,tooltip="РИП",model = { name="SPU_RIP",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_RIP"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!KVD", x=167,y=60.5,w=18,h=13,tooltip="КВД: Лампа выключения ходового режима системой АРС",model = { name="SPU_KVD",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_KVD", getfunc=function(ent) return ent:GetPackedBool("SPU_KVD") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!VS1", x=186,y=60.5,w=18,h=13,tooltip="ВС1: Выключенное состояние вентиляции 1 группы",model = { name="SPU_VS1",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_VS1"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, {ID = "!VS2", x=205,y=60.5,w=18,h=13,tooltip="ВС2: Выключенное состояние вентиляции 2 группы",model = { name="SPU_VS2",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_VS2"}, - sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true} }}, } } @@ -1369,13 +1301,11 @@ ENT.ButtonMap["BZOS"] = { buttons = { {ID = "!VH2",x=8, y=19, radius=4, tooltip="Лампа тревоги охранной сигнализации", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH2",color=Color(255,56,30)}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=0,} - }}, + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH2",color=Color(255,56,30)}}, + }, {ID = "!VH1",x=8, y=30, radius=4, tooltip="Лампа включения охранной сигнализации", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH1",color=Color(175,250,20)}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=0,} - }}, + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH1",color=Color(175,250,20)}}, + }, {ID = "SAB1Toggle",x=8, y=45, radius=8, tooltip="Выключатель охранной сигнализации", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t2.mdl",ang = 180,z=-4, var="SAB1",speed=16, @@ -1399,7 +1329,7 @@ ENT.ButtonMap["UAVAPanel"] = { sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="Восстановление контактов УАВА",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip="Восстановление контактов УАВА"}, } } @@ -1410,7 +1340,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -1427,10 +1357,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -1454,10 +1387,12 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, - + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -1486,7 +1421,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -1514,7 +1448,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } ENT.ButtonMap["CabinDoor"] = { @@ -1528,7 +1462,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1540,10 +1473,9 @@ ENT.ButtonMap["OtsekDoor1"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor1",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor1",sndid="door_otsek1", + var="door_otsek1",sndid="door_otsek1", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -1555,10 +1487,9 @@ ENT.ButtonMap["OtsekDoor2"] = { scale = 0.1/2, buttons = { {ID = "OtsekDoor2",x=0,y=0,w=310,h=130,tooltip="",model = { - var="OtsekDoor2",sndid="door_otsek2", + var="door_otsek2",sndid="door_otsek2", sndvol = 1,snd = function(val) return "otsek_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - states = {"Train.Buttons.Closed","Train.Buttons.Opened"} }}, } } @@ -1574,7 +1505,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1599,7 +1529,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door2",sndid="door2", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1614,7 +1543,6 @@ ENT.ButtonMap["RearDoor"] = { var="door1",sndid="door1", sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1626,8 +1554,8 @@ ENT.ButtonMap["PneumaticPanels"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=65, y=62, radius=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - {ID = "!BCPressure", x=166, y=62, radius=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BLTLPressure", x=65, y=62, radius=45, tooltip=""}, + {ID = "!BCPressure", x=166, y=62, radius=45, tooltip=""}, } } ENT.ButtonMap["HVMeters"] = { @@ -1638,10 +1566,10 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!I13", x=0, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent13")*1000-500) end}, - {ID = "!I24", x=52, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent24")*1000-500) end}, - {ID = "!HVVoltage", x=104, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!BatteryCurrent", x=159, y=0, w=46, h=30, tooltip="", tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryCurrent"),ent:GetPackedRatio("BatteryCurrent")*150) end}, + {ID = "!I13", x=0, y=0, w=46, h=30, tooltip=""}, + {ID = "!I24", x=52, y=0, w=46, h=30, tooltip=""}, + {ID = "!HVVoltage", x=104, y=0, w=46, h=30, tooltip=""}, + {ID = "!BatteryCurrent", x=159, y=0, w=46, h=30, tooltip=""}, } } -------------------------------------------------------------------------------- @@ -1970,13 +1898,13 @@ ENT.ClientProps["lampcab2"] = { hideseat=0.2, } ENT.Lights = { - [40] = { "headlight",Vector(456.94,7.668623,-1.99856),Angle(124.000000,180.000000,0.000000),Color(54,135,0),farz = 9,nearz = 1,shadows = 0,brightness = 4,fov = 80, hidden = "volt1" }, - [41] = { "headlight",Vector(459.34,-28.504929,4.271693),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110, hidden = "brake_line" }, - [42] = { "headlight",Vector(457.08,-34.343376,4.464308),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110, hidden = "brake_line" }, - [43] = { "headlight",Vector(428.88,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter1" }, - [44] = { "headlight",Vector(425.71,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter2" }, - [45] = { "headlight",Vector(422.32,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter3" }, - [46] = { "headlight",Vector(418.89,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "voltmeter" }, + [40] = { "headlight",Vector(456.94,7.668623,-1.99856),Angle(124.000000,180.000000,0.000000),Color(54,135,0),farz = 9,nearz = 1,shadows = 0,brightness = 4,fov = 80 }, + [41] = { "headlight",Vector(459.34,-28.504929,4.271693),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110 }, + [42] = { "headlight",Vector(457.08,-34.343376,4.464308),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110 }, + [43] = { "headlight",Vector(428.88,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80 }, + [44] = { "headlight",Vector(425.71,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80 }, + [45] = { "headlight",Vector(422.32,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80 }, + [46] = { "headlight",Vector(418.89,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80 }, -- Headlight glow [1] = { "headlight", Vector(460,0,-40), Angle(0,0,0), Color(216,161,92), fov=90,farz=5144,brightness = 4, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(460,0,50), Angle(-20,0,0), Color(255,0,0), fov=160 ,brightness = 0.3, farz=450,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, @@ -1984,27 +1912,6 @@ ENT.Lights = { [3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, [4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1}, - -- Reverse - [8] = { "light",Vector(465,-46.8, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - [9] = { "light",Vector(465, 47, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - [11] = { "dynamiclight", Vector( 200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - [10] = { "dynamiclight", Vector( 435, 0, 20), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.3,hidden = "Cabine"}, - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - - [30] = { "light", Vector(465,-16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2}, - [31] = { "light", Vector(465, 16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2}, - - Lamp_RTM = {"light", Vector(408.6,-51.3,10.7), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden="Lamp_RTM"}, } --[[ @@ -2112,33 +2019,23 @@ function ENT:Think() self.PassSchemesDone = true end - self:SetLightPower(40,self:GetPackedBool("PanelLights")) - self:SetLightPower(41,self:GetPackedBool("PanelLights")) - self:SetLightPower(42,self:GetPackedBool("PanelLights")) - self:SetLightPower(43,self:GetPackedBool("PanelLights")) - self:SetLightPower(44,self:GetPackedBool("PanelLights")) - self:SetLightPower(45,self:GetPackedBool("PanelLights")) - self:SetLightPower(46,self:GetPackedBool("PanelLights")) + self:SetLightPower(40,IsValid(self.ClientEnts.volt1) and self:GetPackedBool("PanelLights")) + self:SetLightPower(41,IsValid(self.ClientEnts.brake_line) and self:GetPackedBool("PanelLights")) + self:SetLightPower(42,IsValid(self.ClientEnts.voltmeter) and self:GetPackedBool("PanelLights")) + self:SetLightPower(43,IsValid(self.ClientEnts.ampermeter1) and self:GetPackedBool("PanelLights")) + self:SetLightPower(44,IsValid(self.ClientEnts.ampermeter2) and self:GetPackedBool("PanelLights")) + self:SetLightPower(45,IsValid(self.ClientEnts.ampermeter3) and self:GetPackedBool("PanelLights")) - local EL1 = self:Animate("Cablights1",self:GetPackedBool("Cablights1") and 1 or 0,0,1,6,false) - local EL2 = self:Animate("Cablights2",self:GetPackedBool("Cablights2") and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lampcab1",EL1) - self:ShowHideSmooth("lampcab2",EL2) - local cabStrength = EL1*0.5+EL2*0.5 - self:SetLightPower(10,cabStrength > 0,cabStrength) + self:ShowHideSmooth("lampcab1",self:Animate("Cablights1",self:GetPackedBool("Cablights1") and 1 or 0,0,1,6,false)) + self:ShowHideSmooth("lampcab2",self:Animate("Cablights2",self:GetPackedBool("Cablights2") and 1 or 0,0,1,6,false)) + self:SetLightPower(46,self:GetPackedBool("PanelLights")) local HL1 = self:Animate("Headlights1",self:GetPackedBool("Headlights1") and 1 or 0,0,1,6,false) local HL2 = self:Animate("Headlights2",self:GetPackedBool("Headlights2") and 1 or 0,0,1,6,false) local RL = self:Animate("RedLights_a",self:GetPackedBool("RedLights") and 1 or 0,0,1,6,false) self:ShowHideSmooth("Headlights_1",HL1) self:ShowHideSmooth("Headlights_2",HL2) - local bright = HL1*0.5 + HL2*0.5 - self:SetLightPower(30,bright > 0,bright) - self:SetLightPower(31,bright > 0,bright) - self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(8,RL > 0,RL) - self:SetLightPower(9,RL > 0,RL) local headlight = HL1*0.6+HL2*0.4 self:SetLightPower(1,headlight>0,headlight) @@ -2165,7 +2062,6 @@ function ENT:Think() local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false) self:SetSoundState("vpr",lamps_rtm>0 and 1 or 0,1) self:ShowHideSmooth("Lamp_RTM",lamps_rtm or 0) - self:SetLightPower("Lamp_RTM",lamps_rtm > 0, lamps_rtm) local Bortlamp_w = self:Animate("Bortlamp_w",self:GetPackedBool("DoorsW") and 1 or 0,0,1,16,false) local Bortlamp_g = self:Animate("Bortlamp_g",self:GetPackedBool("GRP") and 1 or 0,0,1,16,false) @@ -2176,30 +2072,10 @@ function ENT:Think() self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0.5) - self:SetLightPower(18, Bortlamp_w > 0.5) - self:SetLightPower(16, Bortlamp_g > 0.5) - self:SetLightPower(19, Bortlamp_g > 0.5) - self:SetLightPower(17, Bortlamp_y > 0.5) - self:SetLightPower(20, Bortlamp_y > 0.5) - - local activeLights = 0 for i = 1,28 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/28) - end + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end self:Animate("brake_line", self:GetPackedRatio("BLPressure"), 0.14, 0.873, 64,12)--256,2) self:Animate("train_line", self:GetPackedRatio("TLPressure"), 0.145, 0.876, 64,12)--4096,2) @@ -2214,9 +2090,9 @@ function ENT:Think() self:Animate("volt1", self:GetPackedRatio("BatteryVoltage"), 0.867,0.626,45,2) self:Animate("voltmeter",self:GetPackedRatio("EnginesVoltage"),0.866, 0.621-0.008,nil,nil) - self:Animate("ampermeter1",self:GetPackedRatio("EnginesCurrent13"),0.859+0.003, 0.625-0.003,nil,nil) - self:Animate("ampermeter2",self:GetPackedRatio("EnginesCurrent24"),0.859+0.003, 0.625-0.003,nil,nil) - self:Animate("ampermeter3",self:GetPackedRatio("BatteryCurrent"),0.859+0.01, 0.625-0.01,nil,nil) + self:Animate("ampermeter1",self:GetPackedRatio("EnginesCurrent"),0.859+0.003, 0.625-0.003,nil,nil) + self:Animate("ampermeter2",self:GetPackedRatio("EnginesCurrent"),0.859+0.003, 0.625-0.003,nil,nil) + self:Animate("ampermeter3",math.Clamp((self:GetPackedRatio("BatteryVoltage")-0.44)/0.64,0,1),0.859+0.01, 0.625-0.01,nil,nil) self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) @@ -2358,14 +2234,9 @@ function ENT:Think() end end - --[[local dT = self.DeltaTime - --self.TunnelCoeff = 0.8 - --self.StreetCoeff = 0 + local dT = self.DeltaTime local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff) - --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end - -- Brake-related sounds - local dT = self.DeltaTime local speed = self:GetPackedRatio("Speed")*100.0 local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1)) local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) @@ -2380,37 +2251,7 @@ function ENT:Think() self:SetSoundState("rolling_10",rollingi*rol10,1) self:SetSoundState("rolling_40",rollingi*rol40,rol40p) self:SetSoundState("rolling_70",rollingi*rol70,rol70p) - self:SetSoundState("rolling_80",rollingi*rol80,rol80p)]] - - local dT = self.DeltaTime - local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) - local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff) - local speed = self:GetPackedRatio("Speed")*100.0 - local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1)) - local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) - local rol40p = Lerp((speed-25)/12,0.6,1) - --local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1)) - --local rol40p = Lerp((speed-23)/50,0.6,1) - --local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1)) - --local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2) - --local rol80 = math.Clamp((speed-70)/5,0,1) - --local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1) - self:SetSoundState("rolling_10",rollingi*rol10,1) - --self:SetSoundState("rolling_40",0*rollingi*rol40,rol40p) - --self:SetSoundState("rolling_70",0*rollingi*rol70,rol70p) - --self:SetSoundState("rolling_80",0*rollingi*rol80,rol80p) - - - local rol32 = math.Clamp((speed-25)/13,0,1)*(1-math.Clamp((speed-40)/10,0,1)) - local rol32p = Lerp((speed-20)/50,0.8,1.2) - local rol68 = math.Clamp((speed-40)/10,0,1)*(1-math.Clamp((speed-50)/20,0,1)) - local rol68p = Lerp(0.6+(speed-68)/26*0.2,0.6,1.4) - local rol75 = math.Clamp((speed-55)/20,0,1) - local rol75p = Lerp(0.8+(speed-75)/15*0.2,0.6,1.2) - self:SetSoundState("rolling_32",rollingi*rol32,rol32p) - self:SetSoundState("rolling_68",rollingi*rol68,rol68p) - self:SetSoundState("rolling_75",rollingi*rol75,rol75p) + self:SetSoundState("rolling_80",rollingi*rol80,rol80p) --[[ local rol_motors = math.Clamp((speed-55)/10,0,1) ---ANY IDEAS?? MOTORS BACKGROUND SOUNDS AT HISPEED local rol_motorsp = Lerp((speed-72)/25*0.2,0.85,1.1) @@ -2510,27 +2351,58 @@ function ENT:Think() local cabspeaker = self:GetPackedBool("AnnCab") local work = self:GetPackedBool("AnnPlay") - local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Bool("AnnouncerBuzz") for k in ipairs(self.AnnouncerPositions) do self:SetSoundState("announcer_buzz"..k,(buzz and (k ~= 1 and work or k==1 and cabspeaker)) and 1 or 0,1) end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume,id) - local cabspeaker = self:GetPackedBool("AnnCab") - local work = self:GetPackedBool("AnnPlay") - return (id ~= 1 and work or id == 1 and cabspeaker) and volume or 0 -end function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + local distance = self:GetPos():Distance(LocalPlayer():GetPos()) + if distance > 1024 or special then return end + +--[[ self:DrawOnPanel("ASNPScreen",function(...) + surface.SetMaterial(self.RTMaterial) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRectRotated(256,64,512,128,0) + end) + self.RTMaterial:SetTexture("$basetexture", self.IGLA) + self:DrawOnPanel("IGLA",function(...) + surface.SetMaterial(self.RTMaterial) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRectRotated(256,64,512,128,0) + end) + + self:DrawOnPanel("FrontPneumatic",function() + draw.DrawText(self:GetNW2Bool("FbI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) + draw.DrawText(self:GetNW2Bool("FtI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) + end) + self:DrawOnPanel("RearPneumatic",function() + draw.DrawText(self:GetNW2Bool("RtI") and "Isolated" or "Open","Trebuchet24",150,30,Color(0,0,0,255)) + draw.DrawText(self:GetNW2Bool("RbI") and "Isolated" or "Open","Trebuchet24",650,30,Color(0,0,0,255)) + end) + self:DrawOnPanel("AirDistributor",function() + draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) + end) + + + self:DrawOnPanel("ParkingBrakeSign",function() + if not self:GetPackedBool(161) then return end + surface.SetAlphaMultiplier(1.0) + surface.SetMaterial(self.ParkingBrakeMaterial) + --print(255*dc.x,255*dc.y,255*dc.z) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRect( 0, 0, 300, 90 ) + end)--]] self.RTMaterial:SetTexture("$basetexture", self.RRIScreen) self:DrawOnPanel("RRIScreen",function(...) surface.SetMaterial(self.RTMaterial) @@ -2550,51 +2422,46 @@ function ENT:OnPlay(soundid,location,range,pitch) end return end - if location == "bass" then - if soundid == "K1" then - local id = range > 0 and "k1_on" or "k1_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["k1_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "K2" then - local id = range > 0 and "k2_on" or "k2_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["k2_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "K3" then - local id = range > 0 and "k3_on" or "k3_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["k3_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "KMR1" then - local id = range > 0 and "kmr1_on" or "kmr1_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["kmr1_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "KMR2" then - local id = range > 0 and "kmr2_on" or "kmr2_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["kmr2_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "brake" then - self:PlayOnce("brake_f",location,range,pitch) - self:PlayOnce("brake_b",location,range,pitch) - return - end - if soundid == "QF1" then - local id = range > 0 and "qf1_on" or "qf1_off" - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["qf1_on"][1] = 440-Lerp(speed/0.1,0,330) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end + if soundid == "K1" then + local id = range > 0 and "k1_on" or "k1_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["k1_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch + end + if soundid == "K2" then + local id = range > 0 and "k2_on" or "k2_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["k2_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch + end + if soundid == "K3" then + local id = range > 0 and "k3_on" or "k3_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["k3_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch + end + if soundid == "KMR1" then + local id = range > 0 and "kmr1_on" or "kmr1_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["kmr1_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch + end + if soundid == "KMR2" then + local id = range > 0 and "kmr2_on" or "kmr2_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["kmr2_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch + end + if soundid == "brake" then + self:PlayOnce("brake_f",location,range,pitch) + self:PlayOnce("brake_b",location,range,pitch) + return + end + if soundid == "QF1" then + local id = range > 0 and "qf1_on" or "qf1_off" + local speed = self:GetPackedRatio("Speed") + self.SoundPositions["qf1_on"][1] = 440-Lerp(speed/0.1,0,330) + return id,location,1-Lerp(speed/10,0.2,0.8),pitch end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_81-718/init.lua b/lua/entities/gmod_subway_81-718/init.lua index 6d586b1..318377c 100644 --- a/lua/entities/gmod_subway_81-718/init.lua +++ b/lua/entities/gmod_subway_81-718/init.lua @@ -14,7 +14,7 @@ ENT.SyncTable = { "SF56","SF51","SF52","SF53","SF60","SF61","SF77","SF78","SF40","SF41","SF8","SF11","SF10","SF7","SF50","SF76","SF73","SF3","SF71","SF63","SF54","SF65","SF55","SF9","SF6","SF5","SF2", "SF4","SF27","SF46","SF12","SF13","SF45","SF16","SF44","SF43","SF14","SF15","SF25","SF72","SF29","SF26","SF42","SF18","SF20","SF17","SF19","SF21","SF22","SF34","SF35","SF23","SF24", "RC","VB","VTPR", - "DriverValveDisconnect","EPK","ParkingBrake","UAVA","UAVAC","PB","EmergencyBrakeValve","GV", + "DriverValveDisconnect","EPK","ParkingBrake","UAVA","PB","EmergencyBrakeValve","GV", "SAP8","SAP13","SAP36","SAP12","SAP11","SAP23","SAP9","SAP10","SAP3","SAP39","SBP22","SBP6","SBP4","SAP14","SAP26","SAP24","SAB1", } @@ -70,8 +70,6 @@ function ENT:Initialize() local pneumoPow = 1.0+(math.random()^0.4)*0.3 self.FrontBogey.PneumaticPow = pneumoPow self.RearBogey.PneumaticPow = pneumoPow - self.FrontCouple.EKKDisconnected = true - -- Initialize key mapping self.KeyMap = { [KEY_W] = "BKCUKVUp", @@ -101,11 +99,11 @@ function ENT:Initialize() [KEY_PAD_DECIMAL] = "EPKToggle", [KEY_LSHIFT] = { def="BKCUControllerUnlock", - [KEY_SPACE] = "KVT", + [KEY_SPACE] = "KVTSet", [KEY_7] = "WrenchNone", [KEY_8] = "WrenchKRU", - [KEY_9] = "WrenchKR9", + [KEY_9] = "WrenchKR", [KEY_0] = "WrenchKR", --[KEY_G] = "EnableBVEmerSet", [KEY_1] = "SB7", @@ -187,6 +185,35 @@ function ENT:Initialize() }, } + self.Lights = { + [2] = { "glow", Vector(466,-24,-32), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1 }, + [3] = { "glow", Vector(466,-15,-32), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1 }, + [4] = { "glow", Vector(466,-6, -32), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1 }, + [5] = { "glow", Vector(466, 7, -32), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1 }, + [6] = { "glow", Vector(466, 17,-32), Angle(0,0,0),Color(255,220,180), brightness = 1, scale = 1 }, + [7] = { "glow", Vector(466, 26,-32), Angle(0,0,0), Color(255,220,180), brightness = 1, scale = 1 }, + + -- Reverse + [8] = { "light",Vector(465,-46.8, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [9] = { "light",Vector(465, 47, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + + [11] = { "dynamiclight", Vector( 200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + [10] = { "dynamiclight", Vector( 435, 0, 20), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.3}, + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + + [30] = { "light", Vector(465,-16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465, 16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { [11] = true, @@ -199,6 +226,14 @@ function ENT:Initialize() [57] = 58, -- ReverserR F<->B } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self.KVWrenchMode = 0 @@ -275,10 +310,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%9.3<1 then local id = 9+math.ceil(i/9.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -286,8 +321,6 @@ function ENT:UpdateLampsColors() end function ENT:TrainSpawnerUpdate() self:UpdateLampsColors() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end end -------------------------------------------------------------------------------- @@ -296,6 +329,19 @@ function ENT:Think() -- Initialize key mapping self.RetVal = self.BaseClass.Think(self) + self:SetLightPower(8,Panel.H11 > 0) + self:SetLightPower(9,Panel.H11 > 0) + + local lightGroup1 = Panel.HL17 > 0 + local lightGroup2 = Panel.HL20 > 0 + local bright = (lightGroup1 and 0.5 or 0)+(lightGroup2 and 0.5 or 0) + --self:SetLightPower(2,lightGroup1,bright) + --self:SetLightPower(3,lightGroup2,bright) + --self:SetLightPower(4,lightGroup1,bright) + --self:SetLightPower(5,lightGroup2,bright) + --self:SetLightPower(6,lightGroup1,bright) + --self:SetLightPower(7,lightGroup2,bright) + self:SetPackedRatio("VTPR", self.VTPR.Value/3) self:SetPackedRatio("B013", self.Pneumatic.RealDriverValvePosition) @@ -310,6 +356,16 @@ function ENT:Think() self:SetPackedBool("AnnCab",self.RRI_VV.CabinSpeakerPower > 0) + -- Interior/cabin lights + if Panel.EL2*Panel.EL1 > 0 then + self:SetLightPower(10,true,1) + elseif Panel.EL1 > 0 then + self:SetLightPower(10,true,0.5) + elseif Panel.EL2 > 0 then + self:SetLightPower(10,true,0.5) + else + self:SetLightPower(10,false) + end self:SetPackedBool("Cablights1",Panel.EL1 > 0) self:SetPackedBool("Cablights2",Panel.EL2 > 0) self:SetPackedBool("Headlights1",Panel.HL17 > 0) @@ -317,9 +373,12 @@ function ENT:Think() self:SetPackedBool("RedLights",Panel.H11 > 0) self:SetPackedBool("PanelLights",Panel.HL52 > 0) self:SetPackedBool("AppLights",Panel.EL31 > 0) + self:SetLightPower(30,lightGroup1 or lightGroup2,bright) + self:SetLightPower(31,lightGroup1 or lightGroup2,bright) local lightsActive1 = Panel.EL3_6 > 0 local lightsActive2 = Panel.EL7_30 > 0 + local mul = 0 for i = 1,28 do if (lightsActive2 or (lightsActive1 and math.ceil((i+5)%8)==math.ceil(i/7)%2)) then if not self.Lamps[i] and not self.Lamps.broken[i] then self.Lamps[i] = CurTime() + math.Rand(0.1,math.Rand(0.5,2)) end @@ -327,11 +386,15 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end + self:SetLightPower(11,mul > 0, mul/28) + self:SetLightPower(12,mul > 0, mul/28) + self:SetLightPower(13,mul > 0, mul/28) self:SetPackedBool("BBE",self.BBE.KM1 > 0) self:SetPackedBool("Compressor",self.KK.Value) @@ -521,6 +584,12 @@ function ENT:Think() self:SetPackedBool("VD1",Panel.VD1 > 0) self:SetPackedBool("RouteNumberWork",Panel.RouteNumber > 0) + self:SetLightPower(15, Panel.HL13 > 0.5) + self:SetLightPower(18, Panel.HL13 > 0.5) + self:SetLightPower(16, Panel.HL25 > 0.5) + self:SetLightPower(19, Panel.HL25 > 0.5) + self:SetLightPower(17, Panel.HL46 > 0.5) + self:SetLightPower(20, Panel.HL46 > 0.5) self:SetPackedBool("DoorsW",Panel.HL13 > 0) self:SetPackedBool("GRP",Panel.HL25 > 0) self:SetPackedBool("BrW",Panel.HL46 > 0) @@ -542,18 +611,16 @@ function ENT:Think() self:SetPackedRatio("Speed", self.Speed/100) - self:SetPackedBool("Vent1Work",self.BUVS.KV1>0) - self:SetPackedBool("Vent2Work",self.BUVS.KV2>0) + self:SetPackedBool("Vent1Work",self.BUVS.KM1>0) + self:SetPackedBool("Vent2Work",self.BUVS.KM2>0) self:SetPackedRatio("BLPressure", self.Pneumatic.BrakeLinePressure/16.0) self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) self:SetPackedRatio("BCPressure", math.min(3.2,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Electric.Power750V/1000.0) - self:SetPackedRatio("EnginesCurrent13", 0.5 + 0.5*(self.Electric.I13/500.0)) - self:SetPackedRatio("EnginesCurrent24", 0.5 + 0.5*(self.Electric.I24/500.0)) + self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",Panel["V1"]*self.Battery.Voltage/150.0) - self:SetPackedRatio("BatteryCurrent",Panel["V1"]*math.Clamp((self.Battery.Voltage-75)*0.033,-0.01,1)) --self.PB:TriggerInput("Set",0) --self.SB6:TriggerInput("Set",0) @@ -585,13 +652,12 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.DisableContacts = self.U5.Value>0 self.RearBogey.PneumaticBrakeForce = 50000.0-2000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 self.RearBogey.DisableContacts = self.U5.Value>0 --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end @@ -634,12 +700,10 @@ function ENT:OnButtonPress(button,ply) self.Pneumatic:TriggerInput("BrakeSet",7) return end - if button == "WrenchKR" or button == "WrenchKR9" then + if button == "WrenchKR" then if self.WrenchMode == 0 then self:PlayOnce("kr_in","cabin",1) self.WrenchMode = 1 - else - self:OnButtonPress(button == "WrenchKR9" and "KR-" or "KR+") end end if button == "WrenchKRU" then @@ -659,10 +723,6 @@ function ENT:OnButtonPress(button,ply) end end end - if button == "KVT" then - self.SB8:TriggerInput("Set",1) - self.SB9:TriggerInput("Set",1) - end if button == "SB1" then self.SA7:TriggerInput("Open",1) self.SB1:TriggerInput("Set",1-self.SA5.Value) @@ -693,10 +753,6 @@ function ENT:OnButtonRelease(button) end return end - if button == "KVT" then - self.SB8:TriggerInput("Set",0) - self.SB9:TriggerInput("Set",0) - end if button == "SB1" then self.SB1:TriggerInput("Set",0) end diff --git a/lua/entities/gmod_subway_81-718/shared.lua b/lua/entities/gmod_subway_81-718/shared.lua index d2bd604..0dab2eb 100644 --- a/lua/entities/gmod_subway_81-718/shared.lua +++ b/lua/entities/gmod_subway_81-718/shared.lua @@ -23,15 +23,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(420,-49 ,61),120,0.4}, {Vector(-3,-60, 62),300,0.3}, @@ -65,7 +56,7 @@ function ENT:InitializeSounds() self.SoundNames["tisu"] = {"subway_trains/718/tisu.wav",loop = true} self.SoundPositions["tisu"] = {400,1e9,Vector(0,0,-448),0.7} --FIXME: Pos - --[[self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} + self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} @@ -74,26 +65,8 @@ function ENT:InitializeSounds() self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.20} self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.55} self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.60} - self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.75}]] - self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} - self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} - self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} - self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} - self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_5"] = {480,1e12,Vector(0,0,0),0.05} - self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.1} - self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.55} - self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.60} self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.75} - - self.SoundNames["rolling_32"] = {loop=true,"subway_trains/717/rolling/rolling_32.wav"} - self.SoundNames["rolling_68"] = {loop=true,"subway_trains/717/rolling/rolling_68.wav"} - self.SoundNames["rolling_75"] = {loop=true,"subway_trains/717/rolling/rolling_75.wav"} - self.SoundPositions["rolling_32"] = {480,1e12,Vector(0,0,0),0.2} - self.SoundPositions["rolling_68"] = {480,1e12,Vector(0,0,0),0.4} - self.SoundPositions["rolling_75"] = {480,1e12,Vector(0,0,0),0.8} - self.SoundNames["rolling_motors"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundNames["rolling_motors2"] = {loop=true,"subway_trains/common/junk/wind_background1.wav"} self.SoundPositions["rolling_motors"] = {250,1e12,Vector(200,0,0),0.33} @@ -324,26 +297,26 @@ function ENT:InitializeSounds() self.SoundPositions["vent_cabh"] = self.SoundPositions["vent_cabl"] self.SoundNames["k2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" - self.SoundNames["k2_off"] = "subway_trains/717/pneumatic/lk/lk2_off.mp3" + self.SoundNames["k2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" self.SoundNames["k1_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["k3_on"] = self.SoundNames["k2_on"] self.SoundNames["kmr1_on"] = self.SoundNames["k1_on"] - self.SoundNames["kmr2_on"] = self.SoundNames["kmr1_on"] + self.SoundNames["kmr2_on"] = self.SoundNames["k1_on"] self.SoundNames["k1_off"] = self.SoundNames["k2_off"] self.SoundNames["k3_off"] = self.SoundNames["k2_off"] - self.SoundNames["kmr1_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["kmr2_off"] = self.SoundNames["kmr1_off"] + self.SoundNames["kmr1_off"] = self.SoundNames["k2_off"] + self.SoundNames["kmr2_off"] = self.SoundNames["k2_off"] --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["k2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["k1_on"] = {440,1e9,Vector(-60,-40,-66),0.3} - self.SoundPositions["k2_off"] = {440,1e9,Vector(-60,-40,-66),0.1} - self.SoundPositions["k3_off"] = self.SoundPositions["k2_off"] + self.SoundPositions["k2_off"] = self.SoundPositions["k2_on"] + self.SoundPositions["k3_off"] = self.SoundPositions["k2_on"] self.SoundPositions["k3_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["k3_off"] = self.SoundPositions["k2_off"] + self.SoundPositions["k3_off"] = self.SoundPositions["k2_on"] self.SoundPositions["kmr1_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["kmr1_off"] = {440,1e9,Vector(-60,-40,-66),0.3} + self.SoundPositions["kmr1_off"] = self.SoundPositions["k2_on"] self.SoundPositions["kmr2_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["kmr2_off"] = {440,1e9,Vector(-60,-40,-66),0.3} + self.SoundPositions["kmr2_off"] = self.SoundPositions["k2_on"] --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] self.SoundNames["qf1_on"] = "subway_trains/717/pneumo/ksh1.mp3" @@ -380,14 +353,6 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(-420,45,-30),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -465,11 +430,6 @@ function ENT:InitializeSystems() self:LoadSystem("LastStation","81_71_LastStation","717","destination") end -function ENT:PostInitializeSystems() - if CLIENT then return end - self.BIS200:TriggerInput("SpeedDec",1) -end - --------------------------------------------------- -- Defined train information -- Types of wagon(for wagon limit system): diff --git a/lua/entities/gmod_subway_81-719/cl_init.lua b/lua/entities/gmod_subway_81-719/cl_init.lua index f9048d0..33f075d 100644 --- a/lua/entities/gmod_subway_81-719/cl_init.lua +++ b/lua/entities/gmod_subway_81-719/cl_init.lua @@ -42,7 +42,6 @@ ENT.ClientPropsInitialized = false ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ClientProps["schemes"] = { @@ -105,7 +104,6 @@ local function placeLamps(name) var=button.var, color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255)} } - button.var=nil end end ENT.ButtonMap["BUV_MPS"] = { @@ -312,10 +310,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -340,11 +341,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 1050, height = 100, scale = 0.1, - + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip="",var="ParkingBrake"}, + {ID = "RearTrainLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, + {ID = "ParkingBrakeToggle",x=900, y=0, w=150, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -378,7 +381,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -406,7 +408,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip=""}, } } @@ -427,32 +429,6 @@ ENT.ButtonMap["Battery"] = { }}, } } -ENT.ButtonMap["Voltages"] = { - pos = Vector(-464.3,-15.2,60.7), - ang = Angle(0,90,90), - width = 145, - height = 75, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BatteryVoltage", x=0, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, - {ID = "!BatteryCurrent", x=72.5, y=0, w=72.5,h=75, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryCurrent"),ent:GetPackedRatio("BatteryCurrent")*500) end}, - } -} -ENT.ButtonMap["Pressures"] = { - pos = Vector(-464.3,6.3,61), - ang = Angle(0,90,90), - width = 160, - height = 80, - scale = 0.0625, - hideseat=0.2, - - buttons = { - {ID = "!BCPressure", x=0, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, - {ID = "!BLTLPressure", x=80, y=0, w=80,h=80, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - } -} ENT.ButtonMap["couch_cap"] = { pos = Vector(-460,60,0), ang = Angle(0,0,70), @@ -534,7 +510,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -556,7 +531,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -839,17 +813,6 @@ for i=0,3 do end ENT.Lights = { - [11] = { "dynamiclight", Vector( 200, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - [12] = { "dynamiclight", Vector( 0, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400, fov=180,farz = 128, changable = true }, - [13] = { "dynamiclight", Vector(-200, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true }, - - -- Side lights - [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, - [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 }, } local tbl = {[0]=-0.25,0.00,0.04,0.09,0.13,0.17,0.20,0.27,0.33,0.42,0.56,0.73,1.00} @@ -932,36 +895,16 @@ function ENT:Think() self:ShowHideSmooth("bortlamp2_w",Bortlamp_w) self:ShowHideSmooth("bortlamp2_g",Bortlamp_g) self:ShowHideSmooth("bortlamp2_y",Bortlamp_y) - self:SetLightPower(15, Bortlamp_w > 0.5) - self:SetLightPower(18, Bortlamp_w > 0.5) - self:SetLightPower(16, Bortlamp_g > 0.5) - self:SetLightPower(19, Bortlamp_g > 0.5) - self:SetLightPower(17, Bortlamp_y > 0.5) - self:SetLightPower(20, Bortlamp_y > 0.5) - - local activeLights = 0 for i = 1,30 do local colV = self:GetNW2Vector("lamp"..i) local col = Color(colV.x,colV.y,colV.z) - local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false) - self:ShowHideSmooth("lamp1_"..i,state,col) - activeLights = activeLights + state - end - for i=11,13 do - local col = self:GetNW2Vector("lampD"..i) - if self.LightsOverride[i].vec ~= col then - self.LightsOverride[i].vec = col - self.LightsOverride[i][4] = Color(col.x,col.y,col.z) - self:SetLightPower(i, false) - else - self:SetLightPower(i, activeLights > 0,activeLights/30) - end + self:ShowHideSmooth("lamp1_"..i,self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false),col) end self:Animate("brake_line", self:GetPackedRatio("BLPressure"),0.14, 0.875, 256,2)--,,0.01) self:Animate("train_line", self:GetPackedRatio("TLPressure"),0.14, 0.875, 256,2)--,,0.01) self:Animate("brake_cylinder", self:GetPackedRatio("BCPressure"),0.14, 0.875, 256,2)--,,0.03) self:Animate("voltmeter", self:GetPackedRatio("BatteryVoltage"),0.601, 0.400) - self:Animate("ampermeter", 0.5+self:GetPackedRatio("BatteryCurrent"),0.604, 0.398) + self:Animate("ampermeter", (0+500)/1000,0.604, 0.398) local capOpened = self:GetPackedBool("CouchCap") self:ShowHide("seats_old_cap_o",capOpened) @@ -982,7 +925,7 @@ function ENT:Think() --self:Animate("Autodrive", self:GetPackedBool(132) and 1 or 0, 0,1, 16, false) local door1 = self:Animate("door1",self:GetPackedBool("FrontDoor") and 1 or 0,0,0.25,4,0.5) - local door2 = self:Animate("door2",self:GetPackedBool("RearDoor") and (capOpened and 0.25 or 1) or 0,0,0.25,4,0.5) + local door2 = self:Animate("door2",self:GetPackedBool("RearDoor") and 1 or 0,0,0.25,4,0.5) if self.Door1 ~= (door1 > 0) then self.Door1 = door1 > 0 self:PlayOnce("door1","bass",self.Door1 and 1 or 0) @@ -1147,25 +1090,22 @@ function ENT:Think() self:SetSoundState("bpsn",self:GetPackedBool("BBE") and 1 or 0,1.0) --FIXME громкость по другому local work = self:GetPackedBool("AnnPlay") - local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Bool("AnnouncerBuzz") for k in ipairs(self.AnnouncerPositions) do self:SetSoundState("announcer_buzz"..k,(buzz and work) and 1 or 0,1) end for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) end function ENT:OnButtonPressed(button) diff --git a/lua/entities/gmod_subway_81-719/init.lua b/lua/entities/gmod_subway_81-719/init.lua index 815625b..e24710a 100644 --- a/lua/entities/gmod_subway_81-719/init.lua +++ b/lua/entities/gmod_subway_81-719/init.lua @@ -19,7 +19,7 @@ function ENT:Initialize() self:SetPos(self:GetPos() + Vector(0,0,140)) -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(-415-16,0,-48+2.5+6),Angle(0,-90,0),"models/vehicles/prisoner_pod_inner.mdl") + self.DriverSeat = self:CreateSeat("driver",Vector(415+16,0,-48+2.5+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") -- Hide seats self.DriverSeat:SetColor(Color(0,0,0,0)) @@ -106,6 +106,20 @@ function ENT:Initialize() }, } + self.Lights = { + [11] = { "dynamiclight", Vector( 200, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128 }, + [12] = { "dynamiclight", Vector( 0, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400, fov=180,farz = 128 }, + [13] = { "dynamiclight", Vector(-200, 0, -20), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128 }, + + -- Side lights + [15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + [20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { [11] = true, @@ -118,6 +132,14 @@ function ENT:Initialize() [57] = 58, -- ReverserR F<->B } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self.KVWrenchMode = 0 @@ -169,10 +191,10 @@ function ENT:UpdateLampsColors() lCount = lCount + 1 if i%9.3<1 then local id = 9+math.ceil(i/9.3) + self:SetLightPower(id,false) local tcol = (lCol/lCount)/255 - --self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 - self:SetNW2Vector("lampD"..id,Vector(tcol.r,tcol.g^3,tcol.b^3)*255) + self.Lights[id][4] = Vector(tcol.r,tcol.g^3,tcol.b^3)*255 lCol = Vector() lCount = 0 end self:SetNW2Vector("lamp"..i,col) @@ -180,8 +202,6 @@ function ENT:UpdateLampsColors() end function ENT:TrainSpawnerUpdate() self:UpdateLampsColors() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end end -------------------------------------------------------------------------------- @@ -194,6 +214,7 @@ function ENT:Think() local lightsActive1 = self.Panel.EL3_6 > 0 local lightsActive2 = self.Panel.EL7_30 > 0 + local mul = 0 for i = 1,30 do if (lightsActive2 or (lightsActive1 and math.ceil((i+5)%8)==math.ceil(i/7)%2)) then if not self.Lamps[i] and not self.Lamps.broken[i] then self.Lamps[i] = CurTime() + math.Rand(0.1,math.Rand(0.5,2)) end @@ -201,11 +222,16 @@ function ENT:Think() self.Lamps[i] = nil end if (self.Lamps[i] and CurTime() - self.Lamps[i] > 0) then + mul = mul + 1 self:SetPackedBool("lightsActive"..i,true) else self:SetPackedBool("lightsActive"..i,false) end end + self:SetLightPower(11,mul > 0, mul/30) + self:SetLightPower(12,mul > 0, mul/30) + self:SetLightPower(13,mul > 0, mul/30) + self:SetPackedBool("AnnBuzz",Panel.AnnouncerBuzz > 0) self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) @@ -302,6 +328,13 @@ function ENT:Think() self:SetPackedBool("VSS",self.BUV.SS > 0) end + + self:SetLightPower(15, self.Panel.HL13 > 0.5) + self:SetLightPower(18, self.Panel.HL13 > 0.5) + self:SetLightPower(16, self.Panel.HL25 > 0.5) + self:SetLightPower(19, self.Panel.HL25 > 0.5) + self:SetLightPower(17, self.Panel.HL46 > 0.5) + self:SetLightPower(20, self.Panel.HL46 > 0.5) self:SetPackedBool("DoorsW",self.Panel.HL13 > 0) self:SetPackedBool("GRP",self.Panel.HL25 > 0) self:SetPackedBool("BrW",self.Panel.HL46 > 0) @@ -313,15 +346,14 @@ function ENT:Think() self:SetPackedRatio("Speed", self.Speed/100) - self:SetPackedBool("Vent1Work",self.BUVS.KV1>0) - self:SetPackedBool("Vent2Work",self.BUVS.KV2>0) + self:SetPackedBool("Vent1Work",self.BUVS.KM1>0) + self:SetPackedBool("Vent2Work",self.BUVS.KM2>0) self:SetPackedRatio("BLPressure", self.Pneumatic.BrakeLinePressure/16.0) self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) self:SetPackedRatio("BCPressure", math.min(3.2,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150.0) - self:SetPackedRatio("BatteryCurrent",self.Panel["V1"]*math.Clamp((self.Battery.Voltage-75)*0.01,-0.01,1)) -- Exchange some parameters between engines, pneumatic system, and real world self.Engines:TriggerInput("Speed",self.Speed) @@ -349,14 +381,11 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.DisableContacts = self.U5.Value>0 self.RearBogey.PneumaticBrakeForce = 50000.0-2000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(2.6-self.Pneumatic.ParkingBrakePressure)/2.6)/2 - self.RearBogey.DisableContacts = self.U5.Value>0 --self.RearBogey.ParkingBrake = self.ParkingBrake.Value > 0.5 end self:GenerateJerks() diff --git a/lua/entities/gmod_subway_81-719/shared.lua b/lua/entities/gmod_subway_81-719/shared.lua index 65346aa..7372806 100644 --- a/lua/entities/gmod_subway_81-719/shared.lua +++ b/lua/entities/gmod_subway_81-719/shared.lua @@ -23,15 +23,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.AnnouncerPositions = { {Vector(-3,-60, 62),300,0.3}, {Vector(-3,60 ,62),300,0.3}, @@ -124,26 +115,26 @@ function ENT:InitializeSounds() self.SoundNames["pak_off"] = "subway_trains/717/switches/rc_off.mp3" self.SoundNames["k2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" - self.SoundNames["k2_off"] = "subway_trains/717/pneumatic/lk/lk2_off.mp3" + self.SoundNames["k2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" self.SoundNames["k1_on"] = "subway_trains/717/pneumo/lk1_on.mp3" self.SoundNames["k3_on"] = self.SoundNames["k2_on"] self.SoundNames["kmr1_on"] = self.SoundNames["k1_on"] self.SoundNames["kmr2_on"] = self.SoundNames["k1_on"] self.SoundNames["k1_off"] = self.SoundNames["k2_off"] self.SoundNames["k3_off"] = self.SoundNames["k2_off"] - self.SoundNames["kmr1_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["kmr2_off"] = self.SoundNames["kmr1_off"] + self.SoundNames["kmr1_off"] = self.SoundNames["k2_off"] + self.SoundNames["kmr2_off"] = self.SoundNames["k2_off"] --self.SoundNames["ksh1_off"] = "subway_trains/717/pneumo/ksh1.mp3" self.SoundPositions["k2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} self.SoundPositions["k1_on"] = {440,1e9,Vector(-60,-40,-66),0.3} - self.SoundPositions["k2_off"] = {440,1e9,Vector(-60,-40,-66),0.1} - self.SoundPositions["k3_off"] = self.SoundPositions["k2_off"] + self.SoundPositions["k2_off"] = self.SoundPositions["k2_on"] + self.SoundPositions["k3_off"] = self.SoundPositions["k2_on"] self.SoundPositions["k3_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["k3_off"] = self.SoundPositions["k2_off"] + self.SoundPositions["k3_off"] = self.SoundPositions["k2_on"] self.SoundPositions["kmr1_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["kmr1_off"] = {440,1e9,Vector(-60,-40,-66),0.3} + self.SoundPositions["kmr1_off"] = self.SoundPositions["k2_on"] self.SoundPositions["kmr2_on"] = self.SoundPositions["k2_on"] - self.SoundPositions["kmr2_off"] = {440,1e9,Vector(-60,-40,-66),0.3} + self.SoundPositions["kmr2_off"] = self.SoundPositions["k2_on"] --self.SoundPositions["ksh1_off"] = self.SoundPositions["lk1_on"] self.SoundNames["qf1_on"] = "subway_trains/717/pneumo/ksh1.mp3" @@ -166,14 +157,6 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(-420,45,-30),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", diff --git a/lua/entities/gmod_subway_81-720/cl_init.lua b/lua/entities/gmod_subway_81-720/cl_init.lua index 7efbaa9..379d8fc 100644 --- a/lua/entities/gmod_subway_81-720/cl_init.lua +++ b/lua/entities/gmod_subway_81-720/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -------------------------------------------------------------------------------- ENT.ClientPropsInitialized = false @@ -64,15 +63,13 @@ ENT.ButtonMap["PUU"] = { }}, {ID = "TickerToggle",x=137.5, y=30.5, radius=15, tooltip = "Бегущая строка",model = { model = "models/metrostroi_train/81-720/buttons/b2.mdl",z=6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="TickerLamp",color=Color(200,150,60), anim=true, - lcolor=Color(200,150,60),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="TickerLamp",color=Color(200,150,60), anim=true}, var="Ticker",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "KAHToggle",x=137.5+37.83*2, y=30.5, radius=15, tooltip = "КАХ",model = { model = "models/metrostroi_train/81-720/buttons/b5.mdl",z=6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="KAHLamp",color=Color(160,255,220), anim=true, - lcolor=Color(160,255,220),lz = 10,lbright=2,lfov=155,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="KAHLamp",color=Color(160,255,220), anim=true}, var="KAH",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -82,12 +79,10 @@ ENT.ButtonMap["PUU"] = { plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=70,x=15,y=-45,z=3,var="KAHPl", ID="KAHPl",}, sndvol = 1, snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "ALSToggle",x=137.5+37.83*3, y=30.5, radius=15, tooltip = "АЛС",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="ALSLamp",color=Color(255,80,100), anim=true, - lcolor=Color(255,80,100),lz = 10,lbright=2,lfov=155,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="ALSLamp",color=Color(255,80,100), anim=true}, var="ALS",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -97,7 +92,6 @@ ENT.ButtonMap["PUU"] = { plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=180-70,x=-5,y=-45,z=3,var="ALSPl", ID="ALSPl",}, sndvol = 1, snd = function(val) return val and "kr_close" or "kr_open" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, {ID = "FDepotToggle",x=137.5+37.83*4, y=30.5, radius=15, tooltip = "Выезд из депо",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=6, @@ -109,8 +103,7 @@ ENT.ButtonMap["PUU"] = { }}, {ID = "PassSchemeToggle",x=137.5+37.83*6, y=30.5, radius=15, tooltip = "Табло наддверное",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="PassSchemeLamp",anim=true, - lcolor=Color(255,255,255),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="PassSchemeLamp",anim=true}, var="PassScheme",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -141,15 +134,13 @@ ENT.ButtonMap["PUU"] = { }}, {ID = "R_AnnouncerToggle",x=566.63+36.5*1, y=30.5, radius=15, tooltip = "Информатор",model = { model = "models/metrostroi_train/81-720/buttons/b3.mdl",z=6,--blue - lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="R_AnnouncerLamp",anim=true, color=Color(50,150,200), - lcolor=Color(50,150,200),lz = 16,lbright=2,lfov=140,lfar=4,lnear=2,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="R_AnnouncerLamp",anim=true, color=Color(50,150,200)}, var="R_Announcer",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "R_LineToggle",x=566.63+35.75*2, y=30.5, radius=15, tooltip = "Линия",model = { model = "models/metrostroi_train/81-720/buttons/b3.mdl",z=6,--blue - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="R_LineLamp",anim=true, color=Color(50,150,200), - lcolor=Color(50,150,200),lz = 16,lbright=2,lfov=140,lfar=4,lnear=2,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="R_LineLamp",anim=true, color=Color(50,150,200)}, var="R_Line",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -180,32 +171,14 @@ ENT.ButtonMap["PUU"] = { sndvol = 0.5, snd = function(val) return val and "switch_on" or "switch_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, - {ID = "!VDop",x=289, y=76, w=107, h=6, tooltip = "Допустимаяя скорость",tooltipFunc = function(ent) - if(ent:GetNW2Bool("BISpeedLimitBlink")) then - return Format(Metrostroi.GetPhrase("Train.Buttons.SpeedLimit"),ent:GetNW2Int("BISpeedLimit")) - .." ("..Metrostroi.GetPhrase("Train.Buttons.04")..")" or "" - elseif ent:GetNW2Int("BISpeedLimit") ~= 100 then - return Format(Metrostroi.GetPhrase("Train.Buttons.SpeedLimit"),ent:GetNW2Int("BISpeedLimit")) - end - end}, - {ID = "!VFact",x=289, y=76+9, w=107, h=6, tooltip = "Фактическая скорость",tooltipFunc = function(ent) return ent:GetNW2Int("BISpeed") ~= -1 and Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetNW2Int("BISpeed")) end}, - {ID = "!VPred",x=289, y=76+17, w=107, h=6, tooltip = "Предупредительная скорость",tooltipFunc = function(ent) return ent:GetNW2Int("BISpeedLimitNext") ~= 100 and Format(Metrostroi.GetPhrase("Train.Buttons.SpeedLimitNext"),ent:GetNW2Int("BISpeedLimitNext")) end}, + {ID = "!VDop",x=289, y=76, w=107, h=6, tooltip = "Допустимаяя скорость"}, + {ID = "!VFact",x=289, y=76+9, w=107, h=6, tooltip = "Фактическая скорость"}, + {ID = "!VPred",x=289, y=76+17, w=107, h=6, tooltip = "Предупредительная скорость"}, - {ID = "!VFact2",x=403, y=75, w=26, h=28, tooltip = "Допустимаяя скорость",tooltipFunc = function(ent) - if ent:GetNW2Bool("BISpeedLimitBlink") then - return Format(Metrostroi.GetPhrase("Train.Buttons.SpeedAll"),ent:GetNW2Int("BISpeed"),ent:GetNW2Int("BISpeedLimit")).." ("..Metrostroi.GetPhrase("Train.Buttons.04")..")" or "" - elseif ent:GetNW2Int("BISpeed") ~= -1 then - return Format(Metrostroi.GetPhrase("Train.Buttons.SpeedAll"),ent:GetNW2Int("BISpeed"),ent:GetNW2Int("BISpeedLimit")) - end - end}, + {ID = "!VDop2",x=403, y=75, w=26, h=28, tooltip = "Допустимаяя скорость"}, + + {ID = "!Acc",x=436, y=86, w=80, h=6, tooltip = "Ускорение"}, - {ID = "!Acc",x=436, y=86, w=80, h=6, tooltip = "Ускорение",tooltipFunc = function(ent) - if ent:GetPackedRatio("BIAccel",0) <= -10 then - return Metrostroi.GetPhrase("Common.ARS.AO") - else - return Format(Metrostroi.GetPhrase("Train.Buttons.Acceleration"),ent:GetPackedRatio("BIAccel",0)) - end - end}, {ID = "!Forw",x=525, y=80, w=18, h=10, tooltip = "Движение вперёд"}, {ID = "!Back",x=525, y=90, w=18, h=10, tooltip = "Движение назад"}, } @@ -222,22 +195,19 @@ ENT.ButtonMap["PUL"] = { buttons = { {ID = "DoorSelectLToggle",x=33, y=79.5, radius=15, tooltip = "Выбор левых дверей",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=-6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="DoorLeftLamp",z=0,anim=true, - lcolor=Color(255,255,255),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="DoorLeftLamp",z=0,anim=true}, var="DoorSelectL",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "DoorSelectRToggle",x=78.5, y=79.5, radius=15, tooltip = "Выбор правых дверей",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=-6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="DoorRightLamp",z=0,anim=true, - lcolor=Color(255,255,255),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="DoorRightLamp",z=0,anim=true}, var="DoorSelectR",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "DoorBlockToggle",x=65, y=126.5, radius=15, tooltip = "Блокировка дверей",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=-6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="DoorBlockLamp",z=0,anim=true,color=Color(255,80,100), - lcolor=Color(255,80,100),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="DoorBlockLamp",z=0,anim=true,color=Color(255,80,100)}, var="DoorBlock",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -264,8 +234,7 @@ ENT.ButtonMap["PUR"] = { {ID = "AccelRateSet",x=13, y=79.5, radius=15, tooltip = "Темп разгона(Режим подъём)",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=-6, var="AccelRate",speed=12, vmin=0, vmax=1, - lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="AccelRateLamp",anim=true, - lcolor=Color(255,255,255),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="AccelRateLamp",anim=true}, sndvol = 0.3, snd = function(val) return val and "button_square_press" or "button_square_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EmerBrakeAddSet",x=58.5, y=79.5, radius=15, tooltip = "(резервный) Тормоз",model = { @@ -280,11 +249,9 @@ ENT.ButtonMap["PUR"] = { }}, {ID = "EmerBrakeToggle",x=149, y=79.5, radius=15, tooltip = "Тормоз резервный",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=-6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="EmerBrakeWork",z=0,anim=true,color=Color(255,80,100), - lcolor=Color(255,80,100),lz = 16,lbright=2,lfov=140,lfar=16,lnear=8,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l3.mdl",var="EmerBrakeWork",z=0,anim=true,color=Color(255,80,100)}, var="EmerBrake",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return Format("%s%s",ent:GetPackedBool("EmerBrakeWork") and Metrostroi.GetPhrase("Train.Buttons.Active").."," or "",Metrostroi.GetPhrase(ent:GetPackedBool("EmerBrake") and "Train.Buttons.On" or "Train.Buttons.Off")) end, }}, {ID = "EmergencyBrakeToggle",x=188, y=79.5, radius=15, tooltip = "Тормоз экстренный",model = { model = "models/metrostroi_train/81-720/tumbler2.mdl",z=-2, ang=180, @@ -294,8 +261,7 @@ ENT.ButtonMap["PUR"] = { {ID = "DoorCloseToggle",x=13, y=119, radius=15, tooltip = "Закрытие дверей",model = { model = "models/metrostroi_train/81-720/buttons/b5.mdl",z=-6, - lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="DoorCloseLamp",z=0,anim=true,color=Color(80,255,100), - lcolor=Color(80,255,100),lz = 16,lbright=2,lfov=140,lfar=4,lnear=2,lshadows=0}, + lamp = {model = "models/metrostroi_train/81-720/buttons/l1.mdl",var="DoorCloseLamp",z=0,anim=true,color=Color(80,255,100)}, var="DoorClose",speed=12, vmin=0, vmax=1, sndvol = 0.3, snd = function(val) return val and "button_square_on" or "button_square_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, @@ -368,7 +334,7 @@ ENT.ButtonMap["PneumoHelper1"] = { scale = 0.0625, buttons = { - {ID = "!BrakeCylinder",x=35, y=38, radius=38, tooltip = "Тормозной цилиндр",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BC")*6) end}, + {ID = "!BrakeCylinder",x=35, y=38, radius=38, tooltip = "Тормозной цилиндр"}, } } ENT.ButtonMap["PneumoHelper2"] = { @@ -379,7 +345,7 @@ ENT.ButtonMap["PneumoHelper2"] = { scale = 0.0625, buttons = { - {ID = "!BrakeTrainLine",x=35, y=38, radius=38, tooltip = "Красная - тормозная, чёрная - напорная магистраль",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TL")*16,ent:GetPackedRatio("BL")*16) end}, + {ID = "!BrakeTrainLine",x=35, y=38, radius=38, tooltip = "Красная - тормозная, чёрная - напорная магистраль"}, } } ENT.ButtonMap["VoltHelper1"] = { @@ -390,7 +356,7 @@ ENT.ButtonMap["VoltHelper1"] = { scale = 0.0625, buttons = { - {ID = "!Battery",x=0, y=0, w=60, h=60, tooltip = "Вольтметр бортовой сети(батарея)",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("LV")*150) end}, + {ID = "!Battery",x=0, y=0, w=60, h=60, tooltip = "Вольтметр бортовой сети(батарея)"}, } } ENT.ButtonMap["VoltHelper2"] = { @@ -401,9 +367,9 @@ ENT.ButtonMap["VoltHelper2"] = { scale = 0.0625, buttons = { - {ID = "!HV",x=0, y=0, w=60, h=60, tooltip = "Киловольтметр высокого напряжения(контактный рельс)",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("HV")*1000) end}, - {ID = "!I1_3",x=0, y=65, w=60, h=60, tooltip = "Ток 1-й группы тяговых двигателей",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("I13")*1000-500) end}, - {ID = "!I2_4",x=0, y=130, w=60, h=60, tooltip = "Ток 2-й группы тяговых двигателей",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("I24")*1000-500) end}, + {ID = "!HV",x=0, y=0, w=60, h=60, tooltip = "Киловольтметр высокого напряжения(контактный рельс)"}, + {ID = "!I1_3",x=0, y=65, w=60, h=60, tooltip = "Ток 1-й группы тяговых двигателей"}, + {ID = "!I2_4",x=0, y=130, w=60, h=60, tooltip = "Ток 2-й группы тяговых двигателей"}, } } ENT.ButtonMap["ASNP"] = { @@ -518,8 +484,8 @@ ENT.ButtonMap["BackVent"] = { getfunc = function(ent) return ent:GetPackedRatio("VentCondMode") end,var="VentCondMode", speed=4, min=0.76,max=0.0 }}, - {ID = "VentCondMode-",x=143,y=13,w=30,h=40,tooltip="Режим работы вентилятора: +",states={"Train.Buttons.Vent","Train.Buttons.Off","Train.Buttons.Cooling","Train.Buttons.Heating"},varTooltip = function(ent) return ent:GetPackedRatio("VentCondMode") end,}, - {ID = "VentCondMode+",x=173,y=13,w=30,h=40,tooltip="Режим работы вентилятора: -",states={"Train.Buttons.Vent","Train.Buttons.Off","Train.Buttons.Cooling","Train.Buttons.Heating"},varTooltip = function(ent) return ent:GetPackedRatio("VentCondMode") end,}, + {ID = "VentCondMode-",x=143,y=13,w=30,h=40,tooltip="Режим работы вентилятора: +"}, + {ID = "VentCondMode+",x=173,y=13,w=30,h=40,tooltip="Режим работы вентилятора: -"}, {ID = "!VentHeatMode",x=80, y=60.5, radius=0,model = { model = "models/metrostroi_train/81-720/rc_rotator1.mdl",z=10,ang=-91, sndvol = 0.8, snd = function(val) return val and "switch_batt_on" or "switch_batt_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), @@ -527,16 +493,16 @@ ENT.ButtonMap["BackVent"] = { var="VentHeatMode", speed=4, min=0.25,max=0.75 }}, - {ID = "VentHeatMode+",x=50,y=40.5,w=30,h=40,tooltip="+",var="VentHeatMode"}, - {ID = "VentHeatMode-",x=80,y=40.5,w=30,h=40,tooltip="-",var="VentHeatMode"}, + {ID = "VentHeatMode+",x=50,y=40.5,w=30,h=40,tooltip="+"}, + {ID = "VentHeatMode-",x=80,y=40.5,w=30,h=40,tooltip="-"}, {ID = "!VentStrengthMode",x=173, y=108, radius=0, model = { model = "models/metrostroi_train/81-720/rc_rotator1.mdl",z=10,ang=-91, sndvol = 0.8, snd = function(val) return val and "switch_batt_on" or "switch_batt_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), getfunc = function(ent) return ent:GetPackedRatio("VentStrengthMode") end,var="VentStrengthMode", speed=4, min=0.76,max=0.0 }}, - {ID = "VentStrengthMode-",x=143,y=88,w=30,h=40,tooltip="Сила вентилятора: +",states={"Train.Buttons.Low","Train.Buttons.Low","Train.Buttons.Off","Train.Buttons.High"},varTooltip = function(ent) return ent:GetPackedRatio("VentStrengthMode") end,}, - {ID = "VentStrengthMode+",x=173,y=88,w=30,h=40,tooltip="Сила вентилятора: -",states={"Train.Buttons.Low","Train.Buttons.Low","Train.Buttons.Off","Train.Buttons.High"},varTooltip = function(ent) return ent:GetPackedRatio("VentStrengthMode") end,}, + {ID = "VentStrengthMode-",x=143,y=88,w=30,h=40,tooltip="Сила вентилятора: +"}, + {ID = "VentStrengthMode+",x=173,y=88,w=30,h=40,tooltip="Сила вентилятора: -"}, } } @@ -721,7 +687,6 @@ ENT.ButtonMap["BackDown"] = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="CabLightStrength",speed=12, sndvol = 0.5, snd = function(val) return val and "switch_pvz_on" or "switch_pvz_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - states = {"Train.Buttons.Low","Train.Buttons.High"} }}, {ID = "AppLights1Toggle",x=308, y=118, radius=12, tooltip = "Освещение аппаратного отсека",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, @@ -745,11 +710,9 @@ ENT.ButtonMap["BackDown"] = { }}, {ID = "BARSBlock-",x=184,y=201,w=30,h=40,tooltip="Блокировка неисправных БАРСов: -",model={ plomb = {var="BARSBlockPl", ID="BARSBlockPl", }, - varTooltip = function(ent) return ent:GetPackedRatio("BARSBlock") end,states = {"Train.Buttons.Off","Train.Buttons.BARS1","Train.Buttons.BARS2","Train.Buttons.BARS12"} }}, {ID = "BARSBlock+",x=204,y=201,w=30,h=40,tooltip="Блокировка неисправных БАРСов: +", model={ plomb = {var="BARSBlockPl", ID="BARSBlockPl", }, - varTooltip = function(ent) return ent:GetPackedRatio("BARSBlock") end,states = {"Train.Buttons.Off","Train.Buttons.BARS1","Train.Buttons.BARS2","Train.Buttons.BARS12"} }}, {ID = "BatteryToggle",x=334, y=211, radius=20, tooltip = "Выключатель батареи",model = { model = "models/metrostroi_train/81-720/rc_rotator1.mdl",z=12, ang=90, @@ -763,7 +726,6 @@ ENT.ButtonMap["BackDown"] = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=3, ang=90, var="ALSFreq",speed=12, sndvol = 0.5, snd = function(val) return val and "switch_pvz_on" or "switch_pvz_off" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"} }}, } } @@ -865,8 +827,7 @@ ENT.ButtonMap["BTO"] = { buttons = { {ID = "K29Toggle", x=24, y=26, radius=25, tooltip="КРМШ", model = { model = "models/metrostroi_train/81-720/720_cran.mdl", ang=-90, - var="K29",speed=4, max=0.28, - states={"Train.Buttons.Closed","Train.Buttons.Opened"} + var="K29",speed=4, max=0.28 }}, {ID = "UAVAToggle", x=24+200, y=26, radius=25, tooltip="УАВА", model = { model = "models/metrostroi_train/81-720/720_cran.mdl", ang=-90, @@ -882,10 +843,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 600, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=300, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=300, y=0, w=300, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=300, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=300, y=0, w=300, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -910,10 +874,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 800, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip=""}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -942,7 +909,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="PassengerDoor",sndid="door_cab_m", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -970,7 +936,6 @@ ENT.ButtonMap["CabinDoorL"] = { var="CabinDoorLeft",sndid="door_cab_l", sndvol = 1, snd = function(_,val) return val == 1 and "door_cab_open" or val == 2 and "door_cab_roll" or val == 0 and "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -985,7 +950,6 @@ ENT.ButtonMap["CabinDoorR"] = { var="CabinDoorRight",sndid="door_cab_r", sndvol = 1, snd = function(_,val) return val == 1 and "door_cab_open" or val == 2 and "door_cab_roll" or val == 0 and "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1000,7 +964,6 @@ ENT.ButtonMap["RearDoor"] = { var="RearDoor",sndid="door_cab_t", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1387,7 +1350,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv_wrench", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -1589,6 +1551,7 @@ function ENT:Initialize() self.ReleasedPdT = 0 self.CraneRamp = 0 self.CraneRRamp = 0 + self.ReleasedPdT = 0 self.EmergencyValveRamp = 0 self.FrontLeak = 0 self.RearLeak = 0 @@ -1689,7 +1652,7 @@ function ENT:Think() --self:SetPackedRatio("TL", self.Pneumatic.TrainLinePressure/16.0) --self:SetPackedRatio("BC", math.min(3.2,self.Pneumatic.BrakeCylinderPressure)/6.0) - self:Animate("KRO", self:GetPackedRatio("KRO",0), 0.3, 0.75, 3,false) + self:Animate("KRO", self:GetPackedRatio("KRO",0), 0.25, 0.85, 3,false) self:Animate("KRR", self:GetPackedRatio("KRR",0), 0.3, 0.8, 3,false) self:ShowHide("KRO",self:GetNW2Int("Wrench",0) == 1) self:ShowHide("KRR",self:GetNW2Int("Wrench",0) == 2) @@ -1877,11 +1840,6 @@ function ENT:Think() local dT = self.DeltaTime - local dPdT = self:GetPackedRatio("BrakeCylinderPressure_dPdT") - self.ReleasedPdT = math.Clamp(self.ReleasedPdT + 4*(-self:GetPackedRatio("BrakeCylinderPressure_dPdT",0)-self.ReleasedPdT)*dT,0,1) - --print(dPdT) - self:SetSoundState("release",math.Clamp(self.ReleasedPdT,0,1)^1.65,1.0) - local parking_brake = math.max(0,-self:GetPackedRatio("ParkingBrakePressure_dPdT",0)) self.ParkingBrake = self.ParkingBrake+(parking_brake-self.ParkingBrake)*dT*10 self:SetSoundState("parking_brake",self.ParkingBrake,1.4) @@ -1984,21 +1942,17 @@ function ENT:Think() local work = self:GetPackedBool("AnnPlay") for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self.RTMaterial:SetTexture("$basetexture", self.Vityaz) self:DrawOnPanel("Vityaz",function(...) surface.SetMaterial(self.RTMaterial) diff --git a/lua/entities/gmod_subway_81-720/init.lua b/lua/entities/gmod_subway_81-720/init.lua index ccfa2e5..2c3f386 100644 --- a/lua/entities/gmod_subway_81-720/init.lua +++ b/lua/entities/gmod_subway_81-720/init.lua @@ -83,7 +83,6 @@ function ENT:Initialize() local rand = math.random()*0.05 self.FrontBogey:SetNWFloat("SqualPitch",1.45+rand) self.RearBogey:SetNWFloat("SqualPitch",1.45+rand) - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -119,7 +118,7 @@ function ENT:Initialize() [KEY_V] = "EmergencyDoorsToggle", [KEY_7] = "WrenchNone", [KEY_8] = "WrenchKRR", - [KEY_9] = "WrenchKRO9", + [KEY_9] = "WrenchKRO", [KEY_0] = "WrenchKRO", [KEY_G] = "EnableBVEmerSet", [KEY_2] = "RingSet", @@ -324,13 +323,13 @@ function ENT:Think() if self:GetWagonNumber() == 37 then --self.BV:TriggerInput("Set",0) end - self:SetPackedRatio("BIAccel",power and self.BARS.BIAccel or 0) + self:SetPackedRatio("BIAccel",0 or power and self.BARS.BIAccel or 0) self:SetNW2Int("BISpeed",power and self.Speed or -1)--CurTime()%5*20 self:SetNW2Bool("BISpeedLimitBlink",power and self.BARS.BINoFreq > 0) self:SetNW2Int("BISpeedLimit",power and self.BARS.SpeedLimit or 100) self:SetNW2Int("BISpeedLimitNext",power and self.BARS.NextLimit or 100) - self:SetNW2Bool("BIForward",power and self.BARS.BIDirection >= 0)--power and (self.RV["KRO3-4"] > 0 or self.RV["KRR5-6"] > 0) and self.BARS.Speed > -0.2) - self:SetNW2Bool("BIBack",power and self.BARS.BIDirection <= 0)--power and (self.RV["KRO3-4"] > 0 or self.RV["KRR5-6"] > 0) and self.BARS.Speed < 0.2) + self:SetNW2Bool("BIForward",power and (self.RV["KRO3-4"] > 0 or self.RV["KRR5-6"] > 0) and self.BARS.Speed > -0.2) + self:SetNW2Bool("BIBack",power and (self.RV["KRO3-4"] > 0 or self.RV["KRR5-6"] > 0) and self.BARS.Speed < 0.2) self:SetNW2Bool("DoorsClosed",power and self.BUKP.DoorClosed) self:SetNW2Bool("HVoltage",power and self.BUKP.HVBad) self:SetNW2Bool("DoorLeftLamp",self.Panel.DoorLeft>0) @@ -393,13 +392,12 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.DisableContacts = self.BUV.Pant self.RearBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 self.RearBogey.DisableContacts = self.BUV.Pant end return retVal @@ -466,24 +464,24 @@ function ENT:OnButtonPress(button,ply) self.RV:TriggerInput("KRRSet",self.RV.KRRPosition-1) end end - if button == "WrenchKRO" or button == "WrenchKRO9" then + if button == "WrenchKRO" then if self.WrenchMode == 0 then self:PlayOnce("kro_in","cabin",1) self.WrenchMode = 1 - else - self:OnButtonPress(button == "WrenchKRO9" and "KRO-" or "KRO+") end end if button == "WrenchKRR" then if self.WrenchMode == 0 then self:PlayOnce("krr_in","cabin",1) self.WrenchMode = 2 + RunConsoleCommand("say",ply:GetName().." want drive with KRU!") end end if button == "WrenchNone" then if self.WrenchMode ~= 0 then if self.WrenchMode == 2 and self.RV.KRRPosition == 0 then self:PlayOnce("krr_out","cabin",1,1) + RunConsoleCommand("say",ply:GetName().." stop drive with KRU!") self.WrenchMode = 0 elseif self.WrenchMode == 1 and self.RV.KROPosition == 0 then self:PlayOnce("kro_out","cabin",1,1) diff --git a/lua/entities/gmod_subway_81-720/shared.lua b/lua/entities/gmod_subway_81-720/shared.lua index d247127..e498547 100644 --- a/lua/entities/gmod_subway_81-720/shared.lua +++ b/lua/entities/gmod_subway_81-720/shared.lua @@ -23,21 +23,6 @@ end local function GetDoorPosition(i,k) return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - - local yventpos = { -414.5+0*117, -414.5+1*117+6.2, @@ -428,7 +413,7 @@ ENT.Spawner = { for i1=1,#trains do local tent = trains[i==1 and i1 or #trains-i1+1] ent.BUKP.Trains[i1] = tent:GetWagonNumber() - ent.BUKP.Trains[-tent:GetWagonNumber()] = {} + ent.BUKP.Trains[tent:GetWagonNumber()] = {} end end end, diff --git a/lua/entities/gmod_subway_81-721/cl_init.lua b/lua/entities/gmod_subway_81-721/cl_init.lua index 1055420..e88a204 100644 --- a/lua/entities/gmod_subway_81-721/cl_init.lua +++ b/lua/entities/gmod_subway_81-721/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -------------------------------------------------------------------------------- ENT.ClientPropsInitialized = false @@ -125,7 +124,6 @@ ENT.ButtonMap["RearDoor"] = { var="RearDoor",sndid="door_cab_b", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -137,10 +135,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 800, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -165,10 +166,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 800, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=400, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -198,7 +202,6 @@ ENT.ButtonMap["FrontDoor"] = { var="FrontDoor",sndid="door_cab_f", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -328,7 +331,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv_wrench", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -700,21 +702,17 @@ function ENT:Think() local work = self:GetPackedBool("AnnPlay") for k,v in ipairs(self.AnnouncerPositions) do - if IsValid(self.Sounds["announcer"..k]) then + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) self.RTMaterial:SetTexture("$basetexture", self.Tickers) self:DrawOnPanel("Tickers",function(...) surface.SetMaterial(self.RTMaterial) diff --git a/lua/entities/gmod_subway_81-721/init.lua b/lua/entities/gmod_subway_81-721/init.lua index 97fce1b..818a672 100644 --- a/lua/entities/gmod_subway_81-721/init.lua +++ b/lua/entities/gmod_subway_81-721/init.lua @@ -148,35 +148,34 @@ function ENT:Think() --local mul = self.SF45.Value > 0.5 and self.BUV.MainLights and 1 or self.SF46.Value > 0.5 and 0.5 or 0 --self:SetLightPower(11,self.BUV.Power and mul > 0, mul) --self:SetLightPower(12,self.BUV.Power and mul > 0, mul) - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = (24000+3000*(A < 0 and 1 or 0))--*add--35300+10000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = self.KMR2.Value > 0 - self.FrontBogey.DisableSound = 0 - self.RearBogey.MotorForce = (24000+3000*(A < 0 and 1 or 0))--*add--+5000--35300 - self.RearBogey.Reversed = self.KMR1.Value > 0 - self.RearBogey.DisableSound = 0 + self.Engines:TriggerInput("Speed",self.Speed) + if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then + local A = 2*self.Engines.BogeyMoment + self.FrontBogey.MotorForce = (24000+3000*(A < 0 and 1 or 0))--*add--35300+10000*(A < 0 and 1 or 0) + self.FrontBogey.Reversed = self.KMR2.Value > 0 + self.FrontBogey.DisableSound = 0 + self.RearBogey.MotorForce = (24000+3000*(A < 0 and 1 or 0))--*add--+5000--35300 + self.RearBogey.Reversed = self.KMR1.Value > 0 + self.RearBogey.DisableSound = 0 - -- These corrections are required to beat source engine friction at very low values of motor power - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) + -- These corrections are required to beat source engine friction at very low values of motor power + local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) + if math.abs(A) > 0.4 then P = math.abs(A) end + if math.abs(A) < 0.05 then P = 0 end + if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end + self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) + self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 - self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 - self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.DisableContacts = self.BUV.Pant - self.RearBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 - self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 - self.RearBogey.DisableContacts = self.BUV.Pant - end + self.FrontBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3) + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.DisableContacts = self.BUV.Pant + self.RearBogey.PneumaticBrakeForce = (50000.0--[[ +5000+10000--]] ) --40000 + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.DisableContacts = self.BUV.Pant + end return retVal end diff --git a/lua/entities/gmod_subway_81-721/shared.lua b/lua/entities/gmod_subway_81-721/shared.lua index 0226522..218a25f 100644 --- a/lua/entities/gmod_subway_81-721/shared.lua +++ b/lua/entities/gmod_subway_81-721/shared.lua @@ -22,15 +22,6 @@ end local function GetDoorPosition(i,k) return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["tisu"] = {"subway_trains/720/tisu.wav",loop = true} diff --git a/lua/entities/gmod_subway_81-722/cl_init.lua b/lua/entities/gmod_subway_81-722/cl_init.lua index ca4cb61..9fd0113 100644 --- a/lua/entities/gmod_subway_81-722/cl_init.lua +++ b/lua/entities/gmod_subway_81-722/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -------------------------------------------------------------------------------- ENT.ClientPropsInitialized = false @@ -57,16 +56,14 @@ ENT.ButtonMap["PU1"] = { {ID = "MirrorHeatingSet",x=93.5+36*2, y=100-18*2, radius=15, tooltip = "Отопление зеркал",model = { model = "models/metrostroi_train/81-722/button_yellow.mdl", z=2, var="MirrorHeating",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="MirrorHeatingEnabled",z=0,anim=true, - lcolor=Color(255,255,60),lz = 12,lbright=3,lfov=140,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="MirrorHeatingEnabled",z=0,anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, }}, {ID = "DoorLeft2Set",x=93.5+36*3, y=100-18*3, radius=15, tooltip = "Двери левые",model = { model = "models/metrostroi_train/81-722/button_white.mdl", z=2, var="DoorLeft2",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorLeftLamp",z=0,anim=true, - lcolor=Color(255,255,255),lz = 12,lbright=3,lfov=140,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorLeftLamp",z=0,anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, }}, @@ -85,11 +82,9 @@ ENT.ButtonMap["PU1"] = { {ID = "EmergencyDriveSet",x=93.5+36*1, y=100-18*1+58*1, radius=15, tooltip = "Аварийный ход",model = { model = "models/metrostroi_train/81-722/button_red.mdl", z=2, var="EmergencyDrive",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_red.mdl",var="EmergencyDriveL",z=0,anim=true, - lcolor=Color(255,40,20),lz = 12,lbright=3,lfov=140,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_red.mdl",var="EmergencyDriveL",z=0,anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, - tooltipFunc = function(ent) return ent:GetPackedBool("EmergencyDriveL") and Metrostroi.GetPhrase("Train.Buttons.AHActive") end }}, {ID = "MicrophoneSet",x=93.5+36*2, y=100-18*2+58*1, radius=15, tooltip = "Микрофон",model = { model = "models/metrostroi_train/81-722/button_blue.mdl", z=2, @@ -100,8 +95,7 @@ ENT.ButtonMap["PU1"] = { {ID = "DoorLeft1Set",x=93.5+36*3, y=100-18*3+58*1, radius=15, tooltip = "Двери левые",model = { model = "models/metrostroi_train/81-722/button_white.mdl", z=2, var="DoorLeft1",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorLeftLamp",z=0, anim=true, - lcolor=Color(255,255,255),lz = 12,lbright=3,lfov=140,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorLeftLamp",z=0, anim=true, }, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, }}, @@ -142,13 +136,12 @@ ENT.ButtonMap["PU2"] = { sndvol = 0.4, snd = function(val,val2) return val2 == 1 and "switch_panel_mid" or val and "switch_panel_up" or "switch_panel_down" end, sndmin = 90, sndmax = 1e3, }}, - {ID="GlassCleaner+",x=35+50*4-16, y=45-18*0-20, w=32,h=20, tooltip="Стеклоочиститель(вверх)",tooltipFunc = function(ent) return ent:GetPackedRatio("GlassCleaner") > 0 and math.floor(ent:GetPackedRatio("GlassCleaner")*2) or Metrostroi.GetPhrase("Train.Buttons.Off") end}, - {ID="GlassCleaner-",x=35+50*4-16, y=45-18*0, w=32,h=20, tooltip="Стеклоочиститель(вниз)",tooltipFunc = function(ent) return ent:GetPackedRatio("GlassCleaner") > 0 and math.floor(ent:GetPackedRatio("GlassCleaner")*2) or Metrostroi.GetPhrase("Train.Buttons.Off") end}, + {ID="GlassCleaner+",x=35+50*4-16, y=45-18*0-20, w=32,h=20, tooltip="Стеклоочиститель(вверх)"}, + {ID="GlassCleaner-",x=35+50*4-16, y=45-18*0, w=32,h=20, tooltip="Стеклоочиститель(вниз)"}, {ID = "EmergencyBrakeTPlusKToggle", x=35+50*5+4-20, y=45-18*0-4-30, w=40,h=20, tooltip="Крышка кнопки Аварийный тормоз \"Т+\"", model = { plomb = {var="EmergencyBrakeTPlusKPl", ID="EmergencyBrakeTPlusKPl",}, var="EmergencyBrakeTPlusK",speed=8,min=1,max=0, disable="EmergencyBrakeTPlusSet", - model = "models/metrostroi_train/81-722/button_krishka.mdl", ang = 180, z = 6, x=14.5,y=20, - noTooltip = true, + model = "models/metrostroi_train/81-722/button_krishka.mdl", ang = 180, z = 6, x=14.5,y=20 }}, {ID = "EmergencyBrakeTPlusSet",x=35+50*5+4, y=45-18*0-4, radius=24, tooltip = "Аварийный тормоз \"Т+\"",model = { model = "models/metrostroi_train/81-722/button_red.mdl", z=2, ang=180, @@ -156,7 +149,6 @@ ENT.ButtonMap["PU2"] = { var="EmergencyBrakeTPlus",speed=12, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, - tooltipFunc = function(ent) return ent:GetPackedBool("EmergencyBrakeTPlusL") and Metrostroi.GetPhrase("Train.Buttons.AHActive") end }}, {ID = "EmergencyBrakeToggle",x=31+51*5+3, y=45+90*0.5, radius=16, tooltip = "Экстренное торможение",model = { @@ -182,14 +174,13 @@ ENT.ButtonMap["PU2"] = { sndvol = 0.4, snd = function(val,val2) return val2 == 1 and "switch_panel_mid" or val and "switch_panel_up" or "switch_panel_down" end, sndmin = 90, sndmax = 1e3, }}, - {ID="Headlights+",x=31+51*2-16, y=45+90*1-20, w=32,h=20, tooltip="Фары(вверх)",states={"Train.Buttons.Off","Train.Buttons.LNear","Train.Buttons.LFar"},varTooltip = function(ent) return ent:GetPackedRatio("Headlights") end}, - {ID="Headlights-",x=31+51*2-16, y=45+90*1, w=32,h=20, tooltip="Фары(вниз)",states={"Train.Buttons.Off","Train.Buttons.LNear","Train.Buttons.LFar"},varTooltip = function(ent) return ent:GetPackedRatio("Headlights") end}, + {ID="Headlights+",x=31+51*2-16, y=45+90*1-20, w=32,h=20, tooltip="Фары(вверх)"}, + {ID="Headlights-",x=31+51*2-16, y=45+90*1, w=32,h=20, tooltip="Фары(вниз)"}, {ID = "DoorSelectToggle",x=31+51*3+1, y=45+90*1, radius=16,tooltip="Закрытие дверей",model = { model = "models/metrostroi_train/81-722/tumbler.mdl", z=2, ang=90, var="DoorSelect",speed=16, min=0.0, max=1.0, sndvol = 0.4, snd = function(val,val2) return val and "switch_panel_up" or "switch_panel_down" end, sndmin = 90, sndmax = 1e3, - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "DoorClose",x=31+51*4, y=45+90*1, radius=0,model = { model = "models/metrostroi_train/81-722/tumbler.mdl", z=2, ang=180, @@ -198,13 +189,12 @@ ENT.ButtonMap["PU2"] = { sndvol = 0.4, snd = function(val,val2) return val2 == 1 and "switch_panel_mid" or val and "switch_panel_up" or "switch_panel_down" end, sndmin = 90, sndmax = 1e3, }}, - {ID="DoorClose+",x=31+51*4-16, y=45+90*1-20, w=32,h=20, tooltip="Закрытие дверей(вверх)",states={"Train.Buttons.DoorCloseM","Train.Buttons.Off","Train.Buttons.DoorCloseA"},varTooltip = function(ent) return ent:GetPackedRatio("DoorClose") end}, - {ID="DoorClose-",x=31+51*4-16, y=45+90*1, w=32,h=20, tooltip="Закрытие дверей(вниз)",states={"Train.Buttons.DoorCloseM","Train.Buttons.Off","Train.Buttons.DoorCloseA"},varTooltip = function(ent) return ent:GetPackedRatio("DoorClose") end}, + {ID="DoorClose+",x=31+51*4-16, y=45+90*1-20, w=32,h=20, tooltip="Закрытие дверей(вверх)"}, + {ID="DoorClose-",x=31+51*4-16, y=45+90*1, w=32,h=20, tooltip="Закрытие дверей(вниз)"}, {ID = "DoorRightSet",x=31+51*5+3, y=45+90*1, radius=16, tooltip = "Открытие правых дверей",model = { model = "models/metrostroi_train/81-722/button_white.mdl", z=2, ang=180, var="DoorRight",speed=12, - lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorRightLamp",z=0, anim=true, - lcolor=Color(255,255,255),lz = 12,lbright=3,lfov=140,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="DoorRightLamp",z=0, anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, }}, @@ -228,8 +218,8 @@ ENT.ButtonMap["BI3"] = { sndvol = 0.4, snd = function(val,val2) return val2 == 1 and "multiswitch_panel_mid" or val and "multiswitch_panel_min" or "multiswitch_panel_max" end, sndmin = 90, sndmax = 1e3, }}, - {ID="KRO+",x=53-16, y=128-16, w=32,h=16, tooltip="Направление движения(вверх)",states = {"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("ReverserPosition") end,}, - {ID="KRO-",x=53-16, y=128, w=32,h=16, tooltip="Направление движения(вниз)",states = {"Train.Buttons.Back","Train.Buttons.0","Train.Buttons.Forward"},varTooltip = function(ent) return ent:GetPackedRatio("ReverserPosition") end,}, + {ID="KRO+",x=53-16, y=128-16, w=32,h=16, tooltip="Направление движения(вверх)"}, + {ID="KRO-",x=53-16, y=128, w=32,h=16, tooltip="Направление движения(вниз)"}, {ID = "RingSet",x=127, y=65, radius=16, tooltip = "Звонок",model = { model = "models/metrostroi_train/81-722/button_black.mdl", z=2, var="Ring",speed=12, @@ -243,11 +233,11 @@ ENT.ButtonMap["BI3"] = { sndvol = 0.4, snd = function(val,val2) return val2 == 4 and "multiswitch_panel_max" or not val and "multiswitch_panel_min" or "multiswitch_panel_mid" end, sndmin = 90, sndmax = 1e3, }}, - {ID="Compressor-",x=78-20, y=170-16, w=20,h=32, tooltip="Компрессоры(-)",states = {"Train.Buttons.Off","Train.Buttons.Auto","Train.Buttons.VTRH1","Train.Buttons.VTRH2","Train.Buttons.VTRAll"},varTooltip = function(ent) return ent:GetPackedRatio("CompressorPosition")/4 end,}, - {ID="Compressor+",x=78, y=170-16, w=20,h=32, tooltip="Компрессоры(+)",states = {"Train.Buttons.Off","Train.Buttons.Auto","Train.Buttons.VTRH1","Train.Buttons.VTRH2","Train.Buttons.VTRAll"},varTooltip = function(ent) return ent:GetPackedRatio("CompressorPosition")/4 end,}, + {ID="Compressor-",x=78-20, y=170-16, w=20,h=32, tooltip="Компрессоры(-)"}, + {ID="Compressor+",x=78, y=170-16, w=20,h=32, tooltip="Компрессоры(+)"}, - {ID="!BrakeCylinder",x=65, y=55,radius=35, tooltip="Тормозной цилиндр",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, - {ID="!BrakeTrainLine",x=126, y=128,radius=35, tooltip="Красная - тормозная, чёрная - напорная магистраль",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID="!BrakeCylinder",x=65, y=55,radius=35, tooltip="Тормозной цилиндр"}, + {ID="!BrakeTrainLine",x=126, y=128,radius=35, tooltip="Красная - тормозная, чёрная - напорная магистраль"}, } } @@ -377,20 +367,16 @@ ENT.ButtonMap["PPZB"] = { {ID = "BattOnSet", x=24+40*1 , y=26 + 60*0, radius=20, tooltip="Включение источника питания бортовой сети", model = { model = "models/metrostroi_train/81-722/button_green.mdl", var="BattOn",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_green.mdl",var="BattOnL",z=0,anim=true, - lcolor=Color(60,255,40),lz = 12,lbright=3,lfov=130,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_green.mdl",var="BattOnL",z=0,anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, - tooltipFunc = function(ent) return ent:GetPackedBool("BattOnL") and Metrostroi.GetPhrase("Train.Buttons.BattOn") end }}, {ID = "BattOffSet", x=24+40*2 , y=26 + 60*0, radius=20, tooltip="Отключение источника питания бортовой сети", model = { model = "models/metrostroi_train/81-722/button_yellow.mdl", var="BattOff",speed=12, min=0,max=0.6, - lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="BattOffL",z=0,anim=true, - lcolor=Color(255,255,60),lz = 12,lbright=3,lfov=130,lfar=16,lnear=8,lshadows=0,}, + lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="BattOffL",z=0,anim=true}, sndvol = 0.2, snd = function(val) return val and "button_on" or "button_off" end, sndmin = 90, sndmax = 1e3, - tooltipFunc = function(ent) return ent:GetPackedBool("BattOffL") and Metrostroi.GetPhrase("Train.Buttons.BattOff") end }}, {ID = "TorecDoorUnlockSet", x=24+40*0 , y=26 + 60*1, radius=20, tooltip="Разблокировка торцевых дверей", model = { model = "models/metrostroi_train/81-722/button_black.mdl", @@ -400,13 +386,11 @@ ENT.ButtonMap["PPZB"] = { }}, {ID = "SCEnable", x=24+40*1 , y=26 + 60*1, radius=20, tooltip="Короткозамыкатель", model = { model = "models/metrostroi_train/81-722/button_yellow.mdl", - lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="SCEnable", - lcolor=Color(255,255,60),lz = 12,lbright=3,lfov=130,lfar=16,lnear=8,lshadows=0} + lamp = {model = "models/metrostroi_train/81-722/lamp_yellow.mdl",var="SCEnable"} }}, {ID = "SOSD", x=24+40*2 , y=26 + 60*1, radius=20, tooltip="СОСД", model = { model = "models/metrostroi_train/81-722/button_white.mdl", - lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="SOSDLamp", - lcolor=Color(255,255,255),lz = 12,lbright=3,lfov=130,lfar=16,lnear=8,lshadows=0} + lamp = {model = "models/metrostroi_train/81-722/lamp_black.mdl",var="SOSDLamp"} }}, } @@ -423,8 +407,8 @@ ENT.ButtonMap["PVM"] = { buttons = { {ID = "PassLightToggle", x=20+47*0, y=34+65*0, radius=14, tooltip="Освещение салона"}, {ID = "PassVent", x=20+47*1, y=34+65*0, radius=0}, - {ID="PassVent-",x=20+47*1-16, y=34+65*0-16, w=16,h=32, tooltip="Вентиляция салона(-)",varTooltip = function(ent) return ent:GetPackedRatio("PassVent") end,states = {"Train.Buttons.VentEmer","Train.Buttons.Off","Train.Buttons.VentAuto","Train.Buttons.Vent1/2","Train.Buttons.VentAll"}}, - {ID="PassVent+",x=20+47*1, y=34+65*0-16, w=16,h=32, tooltip="Вентиляция салона(+)",varTooltip = function(ent) return ent:GetPackedRatio("PassVent") end,states = {"Train.Buttons.VentEmer","Train.Buttons.Off","Train.Buttons.VentAuto","Train.Buttons.Vent1/2","Train.Buttons.VentAll"}}, + {ID="PassVent-",x=20+47*1-16, y=34+65*0-16, w=16,h=32, tooltip="Вентиляция салона(-)"}, + {ID="PassVent+",x=20+47*1, y=34+65*0-16, w=16,h=32, tooltip="Вентиляция салона(+)"}, --{ID = "Switch3", x=20+48*2, y=15+70*0, radius=15, tooltip="SF1:"}, {ID = "VKFToggle", x=20+47*3, y=34+65*0, radius=14, tooltip="ВКФ"}, {ID = "ParkingBrakeToggle", x=20+47*4, y=34+65*0, radius=14, tooltip="Стояночный тормоз"}, @@ -432,17 +416,17 @@ ENT.ButtonMap["PVM"] = { {ID = "SOSDEnableToggle", x=20+47*6, y=34+65*0, radius=14, tooltip="СОСД"}, {ID = "VRU", x=20+47*0, y=34+65*1, radius=0}, - {ID="VRU-",x=20+47*0-16, y=34+65*1-16, w=16,h=32, tooltip="ВРУ(-)",varTooltip = function(ent) return ent:GetPackedRatio("VRU") end,states = {"Train.Buttons.VRUAH","Train.Buttons.0","Train.Buttons.VRUOn"}}, - {ID="VRU+",x=20+47*0, y=34+65*1-16, w=16,h=32, tooltip="ВРУ(+)",varTooltip = function(ent) return ent:GetPackedRatio("VRU") end,states = {"Train.Buttons.VRUAH","Train.Buttons.0","Train.Buttons.VRUOn"}}, + {ID="VRU-",x=20+47*0-16, y=34+65*1-16, w=16,h=32, tooltip="ВРУ(-)"}, + {ID="VRU+",x=20+47*0, y=34+65*1-16, w=16,h=32, tooltip="ВРУ(+)"}, {ID = "VADToggle", x=20+47*1, y=34+65*1, radius=15, tooltip="Движение без контроля дверей"}, {ID = "VAHToggle", x=20+47*2, y=34+65*1, radius=15, tooltip="Движение без педали бдительности"}, {ID = "EmergencyRadioPowerToggle", x=20+47*3, y=34+65*1, radius=15, tooltip="Аварийное питание радиостанции"}, {ID = "BARSMode", x=20+47*4, y=34+65*1, radius=0}, - {ID="BARSMode-",x=20+47*4-16, y=34+65*1-16, w=16,h=32, tooltip="Режимы БАРС(влево)",varTooltip = function(ent) return ent:GetPackedRatio("BARSMode") end,states = {"Train.Buttons.BARS1","Train.Buttons.0","Train.Buttons.BARS2"}}, - {ID="BARSMode+",x=20+47*4, y=34+65*1-16, w=16,h=32, tooltip="Режимы БАРС(вправо)",varTooltip = function(ent) return ent:GetPackedRatio("BARSMode") end,states = {"Train.Buttons.BARS1","Train.Buttons.0","Train.Buttons.BARS2"}}, + {ID="BARSMode-",x=20+47*4-16, y=34+65*1-16, w=16,h=32, tooltip="Режимы БАРС(влево)"}, + {ID="BARSMode+",x=20+47*4, y=34+65*1-16, w=16,h=32, tooltip="Режимы БАРС(вправо)"}, {ID = "PantSC", x=20+47*5, y=34+65*1, radius=0}, - {ID="PantSC-",x=20+47*5-16, y=34+65*1-16, w=16,h=32, tooltip="Токоприёмники и короткозамыкатель(-)",varTooltip = function(ent) return ent:GetPackedRatio("PantSC") end,states = {"Train.Buttons.PantSC","Train.Buttons.VTRAll","Train.Buttons.VTRH1","Train.Buttons.VTRH2","Train.Buttons.Off"}}, - {ID="PantSC+",x=20+47*5, y=34+65*1-16, w=16,h=32, tooltip="Токоприёмники и короткозамыкатель(+)",varTooltip = function(ent) return ent:GetPackedRatio("PantSC") end,states = {"Train.Buttons.PantSC","Train.Buttons.VTRAll","Train.Buttons.VTRH1","Train.Buttons.VTRH2","Train.Buttons.Off"}}, + {ID="PantSC-",x=20+47*5-16, y=34+65*1-16, w=16,h=32, tooltip="Токоприёмники и короткозамыкатель(-)"}, + {ID="PantSC+",x=20+47*5, y=34+65*1-16, w=16,h=32, tooltip="Токоприёмники и короткозамыкатель(+)"}, {ID = "RCARSToggle", x=20+47*6, y=34+65*1, radius=15, tooltip="РЦ АРС"}, } @@ -526,14 +510,12 @@ ENT.ButtonMap["BTO"] = { buttons = { {ID = "K29Toggle", x=24, y=26, radius=25, tooltip="КРМШ", model = { model = "models/metrostroi_train/81-722/81-722_kran_krmh.mdl", ang=Angle(0,0,180), - var="K29",speed=4, max=0.5, - states={"Train.Buttons.Closed","Train.Buttons.Opened"} + var="K29",speed=4, max=0.5 }}, {ID = "K9Toggle", x=240, y=15, radius=25, tooltip="РВТБ", model = { model = "models/metrostroi_train/81-722/81-722_kran_krmh.mdl", ang=Angle(0,0,180), plomb = {var="K9Pl", ID="K9Pl", }, - var="K9",speed=4, min=0.5,max=0, - states={"Train.Buttons.Closed","Train.Buttons.Opened"} + var="K9",speed=4, min=0.5,max=0 }}, } @@ -551,13 +533,11 @@ ENT.ButtonMap["Isolations"] = { buttons = { {ID = "FrontBrakeLineIsolationToggle", x=21, y=28, radius=25, tooltip="Концевой кран тормозной магистрали", model = { model = "models/metrostroi_train/81-722/81-722_kran_tm.mdl", ang=Angle(0,0,180), - var="FrontBrakeLineIsolation",speed=4, min=0.25,max=0, - states={"Train.Buttons.Opened","Train.Buttons.Closed"} + var="FrontBrakeLineIsolation",speed=4, min=0.25,max=0 }}, {ID = "FrontTrainLineIsolationToggle", x=219, y=23, radius=25, tooltip="Концевой кран напорной магистрали", model = { model = "models/metrostroi_train/81-722/81-722_kran_nm.mdl", ang=Angle(0,0,180), - var="FrontTrainLineIsolation",speed=4, min=0.25,max=0, - states={"Train.Buttons.Opened","Train.Buttons.Closed"} + var="FrontTrainLineIsolation",speed=4, min=0.25,max=0 }}, } @@ -568,10 +548,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -600,7 +583,7 @@ ENT.ButtonMap["StopKran"] = { {ID = "UAVAToggle", x=0, y=0, w=95,h=200, tooltip="Выключатель автостопа",model = { plomb = {var="UAVAPl", ID="UAVAPl", }, }}, - {ID = "EmergencyBrakeValveToggle", x=95, y=0, w=95,h=200, tooltip="Стопкран", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle", x=95, y=0, w=95,h=200, tooltip="Стопкран"}, } } @@ -678,7 +661,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="PassengerDoor",sndid="door_cab_m", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -703,7 +685,6 @@ ENT.ButtonMap["CabinDoorL"] = { var="CabinDoorLeft",sndid="door_cab_l", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -718,7 +699,6 @@ ENT.ButtonMap["CabinDoorR"] = { var="CabinDoorRight",sndid="door_cab_r", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -733,7 +713,6 @@ ENT.ButtonMap["RearDoor"] = { var="RearDoor",sndid="door_cab_t", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1651,23 +1630,16 @@ function ENT:Think() self:SetSoundState(Format("announcer_noise%d_%d",i,k),(UPO and i==noise) and volume*self.BPSNBuzzVolume*self:GetNW2Float("UPOBuzzVolume",1)*0.7 or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - local work = self:GetPackedBool("AnnPlay") - local UPO = work and self:GetPackedBool("AnnPlayUPO") - - return work and volume*(UPO and self:GetNW2Float("UPOVolume",1) or 1) or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end local CamRTM = Material( "pp/rt" ) -function ENT:DrawPost() +function ENT:DrawPost(special) self.RTMaterial:SetTexture("$basetexture", self.Vityaz) self:DrawOnPanel("Vityaz",function(...) surface.SetMaterial(self.RTMaterial) @@ -1699,6 +1671,7 @@ function ENT:DrawPost() surface.SetDrawColor(255,255,255) surface.DrawTexturedRectRotated(256,32,512,64,0) end) + self.Tickers = self.Tickers or self:CreateRT("721Tickers",1024,128) self.RTMaterial:SetTexture("$basetexture", self.Tickers) self:DrawOnPanel("Tickers",function(...) surface.SetMaterial(self.RTMaterial) diff --git a/lua/entities/gmod_subway_81-722/init.lua b/lua/entities/gmod_subway_81-722/init.lua index 3622863..5ff5259 100644 --- a/lua/entities/gmod_subway_81-722/init.lua +++ b/lua/entities/gmod_subway_81-722/init.lua @@ -81,7 +81,6 @@ function ENT:Initialize() end self.FrontBogey.DisableSound = 1 self.RearBogey.DisableSound = 1 - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -227,48 +226,6 @@ function ENT:Think() local retVal = self.BaseClass.Think(self) local power = self.BUKV.Power > 0 - --[[ - if self:GetWagonNumber() == 22010 or self:EntIndex()==1560 then --DEBUG - local accel = 0 - for i=1,#self.WagonList do - accel=accel+self.WagonList[i].Acceleration - end - local drivers = {self.DriverSeat,self.InstructorsSeat,self.ExtraSeat1,self.ExtraSeat2} - if math.abs(accel) > 0.1 then - for k,v in pairs(drivers) do - if IsValid(v) and IsValid(v:GetDriver()) then - v:GetDriver():ChatPrint(Format("v=%.2f I=%.2f RK=%02d a=%.2f",self.Speed,0 or (self.Electric.I13+self.Electric.I24)/2,0 or self.RheostatController.SelectedPosition or 0,accel/#self.WagonList))--(accel/#self.WagonList))) - end - end - end - end - --[[ - self.TestA = self.TestA or nil - self.TestV = self.TestV or nil - local accel = self.Acceleration - - if (1 < self.Speed and self.Speed < 99) and self.Panel.TargetController < 0 and not self.TestA then - self.TestA = CurTime() - self.TestV = self.Speed/3600*1000 - self.TestTyp = self.Speed > 55 and 2 or 1 - self.TestS = 0 - end - if self.Panel.TargetController >= 0 and self.TestA then - self.TestA = nil - self.TestV = nil - self.TestS = nil - end - if self.TestS then self.TestS=self.TestS+self.Speed*self.SpeedSign/3600*1000*self.DeltaTime end - if (self.Speed<2 and self.TestTyp ==2 or self.Speed<2 and self.TestTyp ==1) and self.TestA then - local curSpeed = self.Speed/3600*1000 - local a = (curSpeed-self.TestV)/(CurTime()-self.TestA) - RunConsoleCommand("say",Format("[%05d]V0= %.1f V1=%.1f t=%.2f a=%.2f s=%.1f",self:GetWagonNumber(),self.TestV*3600/1000,curSpeed*3600/1000,CurTime()-self.TestA,a,self.TestS)) - - - self.TestA = nil - self.TestV = nil - self.TestS = nil - end--]] --self:SetPackedRatio("async1", math.min(self.Speed/7,self.AsyncInverter.State*math.Clamp(1+(self.Speed-15)/120,1,2))) --self:SetPackedRatio("async1state", self.AsyncInverter.State) --self:SetPackedRatio("asyncfreq", self.AsyncInverter.InverterFrequency) @@ -301,21 +258,21 @@ function ENT:Think() self:SetPackedRatio("DoorClose",self.DoorClose.Value/2) self:SetPackedRatio("CabinLight",self.CabinLight.Value/2) self:SetPackedBool("LampLPT",self.BUKP.LPT) - self:SetPackedBool("LampRU",self.Panel.LRU > 0) - self:SetPackedBool("LampAVS",self.Panel.AVS > 0) - self:SetPackedBool("LampRC",self.Panel.RC > 0) + self:SetPackedBool("LampRU",self.Panel.LRU) + self:SetPackedBool("LampAVS",self.Panel.AVS) + self:SetPackedBool("LampRC",self.Panel.RC) self:SetPackedBool("LampSD",self.Electric.LSD > 0) self:SetPackedBool("RadioRVS",self.Panel.VPR1>0) self:SetPackedBool("RadioMotorola",self.Panel.VPR2>0) - self:SetPackedBool("LampLRD",self.ALSCoil.F6 > 0) - self:SetPackedBool("Lamp04",self.ALSCoil.NoFreq > 0) - self:SetPackedBool("Lamp0",self.ALSCoil.F5 > 0) - self:SetPackedBool("Lamp40",self.ALSCoil.F4 > 0) - self:SetPackedBool("Lamp60",self.ALSCoil.F3 > 0) - self:SetPackedBool("Lamp70",self.ALSCoil.F2 > 0) - self:SetPackedBool("Lamp80",self.ALSCoil.F1 > 0) + self:SetPackedBool("LampLRD",self.BARS.F6 > 0) + self:SetPackedBool("Lamp04",self.BARS.NoFreq > 0) + self:SetPackedBool("Lamp0",self.BARS.F5 > 0) + self:SetPackedBool("Lamp40",self.BARS.F4 > 0) + self:SetPackedBool("Lamp60",self.BARS.F3 > 0) + self:SetPackedBool("Lamp70",self.BARS.F2 > 0) + self:SetPackedBool("Lamp80",self.BARS.F1 > 0) local cablight = self.Panel.CabLights self:SetLightPower(10,cablight > 0,cablight) @@ -397,11 +354,11 @@ function ENT:Think() self.AsyncInverter:TriggerInput("Speed",self.Speed) if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then local A = self.AsyncInverter.Torque - self.FrontBogey.MotorForce = 43000+9000*(A < 0 and 1 or 0)--35300 + self.FrontBogey.MotorForce = 39000+5000*(A < 0 and 1 or 0)--35300 self.FrontBogey.Reversed = self.Electric.Reverser < 0 self.FrontBogey.DisableSound = 1 self.FrontBogey.DisableContacts = self.Electric.DisablePant > 0 - self.RearBogey.MotorForce = 43000+9000*(A < 0 and 1 or 0)--35300 + self.RearBogey.MotorForce = 39000+5000*(A < 0 and 1 or 0)--35300 self.RearBogey.Reversed = self.Electric.Reverser > 0 self.RearBogey.DisableSound = 1 self.RearBogey.DisableContacts = self.Electric.DisablePant > 0 @@ -417,12 +374,92 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 + end + if true then return retVal end + self:SetPackedRatio("async1", math.min(self.Speed/7,self.AsyncInverter.State*math.Clamp(1+(self.Speed-15)/120,1,2))) + self:SetPackedRatio("async1state", self.AsyncInverter.State) + self:SetPackedRatio("asyncfreq", self.AsyncInverter.InverterFrequency) + + self:SetPackedRatio("Speed", self.Speed) + + + --self:SetPackedRatio("TrainLine",7.3/16) + --self:SetPackedRatio("BrakeLine",5.2/16) + --self:SetPackedRatio("BrakeCylinder",self.AsyncInverter.PN1*1.1/6) + self:SetPackedBool("BattEnabled",self.BUKV.Battery) + self:SetPackedBool("BattOffLight",self.BUKV.BatteryTimer2) + self:SetPackedBool("PSNEnabled",self.BUKV.PSN) + + self:SetPackedBool("LampLRD",power and (self.ALSCoil.F6*self.ALSCoil.RealF5) > 0) + self:SetPackedBool("Lamp04",self.ALSCoil.NoFreq > 0 or power and (self.ALSCoil.Enabled == 0 and self.VRD.Value > 0)) + self:SetPackedBool("Lamp0",self.ALSCoil.F5 > 0) + self:SetPackedBool("Lamp40",self.ALSCoil.F4 > 0) + self:SetPackedBool("Lamp60",self.ALSCoil.F3 > 0) + self:SetPackedBool("Lamp70",self.ALSCoil.F2 > 0) + self:SetPackedBool("Lamp80",self.ALSCoil.F1 > 0) + + --Радио + self:SetPackedBool("RadioRVS",(power or self.EmergencyRadioPower.Value > 0.5) and self.SF14.Value > 0.5) + self:SetPackedBool("RadioMotorola",(power or self.EmergencyRadioPower.Value > 0.5) and self.SF15.Value > 0.5) + + + self:SetNW2Int("SarmatLED",self.BUKV.SarmatLED) + self:SetNW2Int("SarmatLEDN",self.BUKV.SarmadLEDNext) + + self:SetNW2Int("TickersLine",self.BUKV.SarmatLine) + self:SetNW2Int("TickersStation",self.BUKV.SarmatStation) + self:SetNW2Bool("TickersArrived",self.BUKV.SarmatArrived) + self:SetNW2Bool("TickersLast",self.BUKV.SarmatLast) + + self:SetPackedBool("SarmatLEDO",self.BUKV.SarmatPath) + self:SetPackedBool("SarmatLeft",power and self.SF34.Value > 0) + self:SetPackedBool("SarmatRight",power and self.SF35.Value > 0) + + self:SetPackedBool("DoorLeftLamp",power and not self.BUKP.BlockLeft) + self:SetPackedBool("DoorRightLamp",power and not self.BUKP.BlockRight) + + self:SetPackedBool("CompressorWork",self.Pneumatic.Compressor) + + self:SetPackedBool("RingEnabled",self.BUKP.Ring) + self:SetPackedBool("RingEnabledARS",self.BUKP.RingARS) + + self:SetPackedBool("BortPneumo",power and self.Pneumatic.BrakeCylinderPressure > 0.2) + self:SetPackedBool("BortLSD",power and (self.LeftDoorsOpen or self.RightDoorsOpen)) + self:SetPackedBool("BortBV",power and self.BUKV.BV == 0) + + + self.SOSD = self.BUKV.SOSDEnabled and (self.LeftDoorsOpen or self.RightDoorsOpen) + self:SetPackedBool("SOSDLamp",self.BUKV.SOSDEnabled) + --self:SetPackedBool("DoorAlarm",self.BUKV.DoorAlarm) + if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then + local A = self.AsyncInverter.Torque + self.FrontBogey.MotorForce = 39000+10500*(A < 0 and 1 or 0)--35300 + self.FrontBogey.Reversed = self:ReadTrainWire(13) > 0 + self.FrontBogey.DisableSound = 3 + self.RearBogey.MotorForce = 39000+10500*(A < 0 and 1 or 0)--35300 + self.RearBogey.Reversed = self:ReadTrainWire(13) == 0 + self.RearBogey.DisableSound = 3 + + -- These corrections are required to beat source engine friction at very low values of motor power + local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) + if math.abs(A) > 0.4 then P = math.abs(A) end + if math.abs(A) < 0.05 then P = 0 end + if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end + self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) + self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) + + -- Apply brakes + self.FrontBogey.PneumaticBrakeForce = 50000.0+5000+4500 --40000 + self.FrontBogey.BrakeCylinderPressure = math.max(self.Pneumatic.BrakeCylinderPressure,(2.95-self.Pneumatic.ParkingBrakePressure)/2) + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.PneumaticBrakeForce = 50000.0+5000+4500 --40000 + self.RearBogey.BrakeCylinderPressure = math.max(self.Pneumatic.BrakeCylinderPressure,(2.95-self.Pneumatic.ParkingBrakePressure)) + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end return retVal end diff --git a/lua/entities/gmod_subway_81-722/shared.lua b/lua/entities/gmod_subway_81-722/shared.lua index a6a4890..8719b72 100644 --- a/lua/entities/gmod_subway_81-722/shared.lua +++ b/lua/entities/gmod_subway_81-722/shared.lua @@ -21,23 +21,6 @@ function ENT:GetStandingArea() return Vector(-450,-30,-62),Vector(380,30,-62) end -local function GetDoorPosition(i,k) - return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) -end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { } for i=1,4 do @@ -77,7 +60,7 @@ function ENT:InitializeSounds() self.SoundNames["engine_loud"] = {"subway_trains/722/engines/engine_loud.wav",loop = true} self.SoundPositions["engine_loud"] = {400,1e9,Vector(0,0,0),0.2} self.SoundNames["chopper"] = {"subway_trains/722/chopper.wav",loop = true} - self.SoundPositions["chopper"] = {200,1e9,Vector(0,0,0),0.03} + self.SoundPositions["chopper"] = {400,1e9,Vector(0,0,0),0.03} self.SoundNames["battery_on_1"] = "subway_trains/722/battery/battery_off_1.mp3" self.SoundPositions["battery_on_1"] = {100,1e9,Vector(182,50,-75),0.5} @@ -93,9 +76,9 @@ function ENT:InitializeSounds() self.SoundPositions["battery_off_loop"] = {100,1e9,Vector(182,50,-75),0.02} self.SoundNames["compressor"] = {loop=true,"subway_trains/722/compressol_loop.wav"} - self.SoundPositions["compressor"] = {485,1e9,Vector(-118,-40,-66),0.4} --FIXME: Pos + self.SoundPositions["compressor"] = {485,1e9,Vector(-118,-40,-66),0.75} --FIXME: Pos self.SoundNames["compressor_pn"] = "subway_trains/722/compressor_pssh.mp3" - self.SoundPositions["compressor_pn"] = {485,1e9,Vector(-118,-40,-66),0.4} --FIXME: Pos + self.SoundPositions["compressor_pn"] = {485,1e9,Vector(-118,-40,-66),0.75} --FIXME: Pos self.SoundNames["release"] = {loop=true,"subway_trains/722/pneumo_release2.wav"} self.SoundPositions["release"] = {320,1e9,Vector(-183,0,-70),0.1} --FIXME: Pos @@ -205,6 +188,12 @@ function ENT:InitializeSounds() self.SoundNames["door_alarm"] = "subway_trains/722/door_alarm.mp3" self.SoundPositions["door_alarm"] = {485,1e9,Vector(0,0,0),0.2} + local function GetDoorPosition(i,k,j) + if j == 0 + then return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + else return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + end + end self.SoundNames["doors"] = "subway_trains/722/door_start.mp3" self.SoundNames["doorl"] = {loop=true,"subway_trains/722/door_loop.wav"} self.SoundPositions["doors"] = {300,1e9,Vector(0,0,0),0.2} @@ -212,7 +201,7 @@ function ENT:InitializeSounds() for i=0,3 do for k=0,1 do self.SoundNames["door"..i.."x"..k.."c"] = "subway_trains/722/door_close.mp3" - self.SoundPositions["door"..i.."x"..k.."c"] = {485,1e9,GetDoorPosition(i,k),0.2} + self.SoundPositions["door"..i.."x"..k.."c"] = {485,1e9,GetDoorPosition(i,k,0),0.2} end end self.SoundNames["door_alarm"] = {"subway_trains/722/door_alarm.mp3"} @@ -220,7 +209,7 @@ function ENT:InitializeSounds() self.SoundNames["epk_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["epk_brake"] = {40,1e9,Vector(458,56.5,-61),0.65} + self.SoundPositions["epk_brake"] = {80,1e9,Vector(458,56.5,-61),0.65} self.SoundNames["valve_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} self.SoundPositions["valve_brake"] = {400,1e9,Vector(418.25,-49.2,1.3),1} diff --git a/lua/entities/gmod_subway_81-723/cl_init.lua b/lua/entities/gmod_subway_81-723/cl_init.lua index f75a154..0fbc846 100644 --- a/lua/entities/gmod_subway_81-723/cl_init.lua +++ b/lua/entities/gmod_subway_81-723/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -------------------------------------------------------------------------------- ENT.ClientPropsInitialized = false @@ -103,10 +102,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -130,10 +132,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -162,7 +167,6 @@ ENT.ButtonMap["FrontDoor"] = { var="FrontDoor",sndid="door_cab_f", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -177,7 +181,6 @@ ENT.ButtonMap["RearDoor"] = { var="RearDoor",sndid="door_cab_b", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -724,22 +727,16 @@ function ENT:Think() self:SetSoundState(Format("announcer_noise%d_%d",i,k),(UPO and i==noise) and volume*self.BPSNBuzzVolume*self:GetNW2Float("UPOBuzzVolume",1)*0.7 or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - local work = self:GetPackedBool("AnnPlay") - local UPO = work and self:GetPackedBool("AnnPlayUPO") - - return work and volume*(UPO and self:GetNW2Float("UPOVolume",1) or 1) or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + self.Tickers = self.Tickers or self:CreateRT("721Tickers",1024,128) self.RTMaterial:SetTexture("$basetexture", self.Tickers) surface.SetMaterial(self.RTMaterial) surface.SetDrawColor(255,255,255) diff --git a/lua/entities/gmod_subway_81-723/init.lua b/lua/entities/gmod_subway_81-723/init.lua index 26fa3dd..9b2fc94 100644 --- a/lua/entities/gmod_subway_81-723/init.lua +++ b/lua/entities/gmod_subway_81-723/init.lua @@ -177,11 +177,11 @@ function ENT:Think() self.AsyncInverter:TriggerInput("Speed",self.Speed) if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then local A = self.AsyncInverter.Torque - self.FrontBogey.MotorForce = 43000+9000*(A < 0 and 1 or 0)--35300 + self.FrontBogey.MotorForce = 39000+5000*(A < 0 and 1 or 0)--35300 self.FrontBogey.Reversed = self.Electric.Reverser < 0 self.FrontBogey.DisableSound = 1 self.FrontBogey.DisableContacts = self.Electric.DisablePant > 0 - self.RearBogey.MotorForce = 43000+9000*(A < 0 and 1 or 0)--35300 + self.RearBogey.MotorForce = 39000+5000*(A < 0 and 1 or 0)--35300 self.RearBogey.Reversed = self.Electric.Reverser > 0 self.RearBogey.DisableSound = 1 self.RearBogey.DisableContacts = self.Electric.DisablePant > 0 @@ -197,12 +197,11 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 end return retVal end diff --git a/lua/entities/gmod_subway_81-723/shared.lua b/lua/entities/gmod_subway_81-723/shared.lua index 4c07eea..dd1ea45 100644 --- a/lua/entities/gmod_subway_81-723/shared.lua +++ b/lua/entities/gmod_subway_81-723/shared.lua @@ -21,18 +21,6 @@ function ENT:GetStandingArea() return Vector(-450,-30,-62),Vector(380,30,-62) end -local function GetDoorPosition(i,k) - return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) -end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["test_async1"] = {"subway_trains/722/engines/inverter_1000.wav",loop = true} @@ -54,7 +42,7 @@ function ENT:InitializeSounds() self.SoundNames["engine_loud"] = {"subway_trains/722/engines/engine_loud.wav",loop = true} self.SoundPositions["engine_loud"] = {400,1e9,Vector(0,0,0),0.2} self.SoundNames["chopper"] = {"subway_trains/722/chopper.wav",loop = true} - self.SoundPositions["chopper"] = {200,1e9,Vector(0,0,0),0.05} + self.SoundPositions["chopper"] = {400,1e9,Vector(0,0,0),0.05} self.SoundNames["rolling_10"] = {loop=true,"subway_trains/722/rolling_10.wav"} self.SoundNames["rolling_45"] = {loop=true,"subway_trains/722/rolling_45.wav"} @@ -87,9 +75,9 @@ function ENT:InitializeSounds() self.SoundPositions["battery_off_loop"] = {100,1e9,Vector(182,50,-75),0.02} self.SoundNames["compressor"] = {loop=true,"subway_trains/722/compressol_loop.wav"} - self.SoundPositions["compressor"] = {800,1e9,Vector(-118,-40,-66),0.4} + self.SoundPositions["compressor"] = {800,1e9,Vector(-118,-40,-66)} self.SoundNames["compressor_pn"] = "subway_trains/722/compressor_pssh.mp3" - self.SoundPositions["compressor_pn"] = {800,1e9,Vector(-118,-40,-66),0.4} + self.SoundPositions["compressor_pn"] = {800,1e9,Vector(-118,-40,-66)} self.SoundNames["release"] = {loop=true,"subway_trains/722/pneumo_release2.wav"} self.SoundPositions["release"] = {320,1e9,Vector(-183,0,-70),0.1} --FIXME: Pos @@ -111,6 +99,12 @@ function ENT:InitializeSounds() self.SoundNames["door_cab_open"] = "subway_trains/common/door/cab/door_open.mp3" self.SoundNames["door_cab_close"] = "subway_trains/common/door/cab/door_close.mp3" + local function GetDoorPosition(i,k,j) + if j == 0 + then return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + else return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + end + end self.SoundNames["doors"] = "subway_trains/722/door_start.mp3" self.SoundNames["doorl"] = {loop=true,"subway_trains/722/door_loop.wav"} self.SoundPositions["doors"] = {300,1e9,Vector(0,0,0),0.5} @@ -118,7 +112,7 @@ function ENT:InitializeSounds() for i=0,3 do for k=0,1 do self.SoundNames["door"..i.."x"..k.."c"] = "subway_trains/722/door_close.mp3" - self.SoundPositions["door"..i.."x"..k.."c"] = {800,1e9,GetDoorPosition(i,k),0.2} + self.SoundPositions["door"..i.."x"..k.."c"] = {800,1e9,GetDoorPosition(i,k,0),0.2} end end self.SoundNames["door_alarm"] = {"subway_trains/722/door_alarm.mp3"} diff --git a/lua/entities/gmod_subway_81-724/cl_init.lua b/lua/entities/gmod_subway_81-724/cl_init.lua index 93d5ca5..7ca0b7b 100644 --- a/lua/entities/gmod_subway_81-724/cl_init.lua +++ b/lua/entities/gmod_subway_81-724/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -------------------------------------------------------------------------------- ENT.ClientPropsInitialized = false @@ -104,10 +103,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -131,10 +133,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -163,7 +168,6 @@ ENT.ButtonMap["FrontDoor"] = { var="FrontDoor",sndid="door_cab_f", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -178,7 +182,6 @@ ENT.ButtonMap["RearDoor"] = { var="RearDoor",sndid="door_cab_b", sndvol = 1, snd = function(val) return val and "door_cab_open" or "door_cab_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -687,22 +690,16 @@ function ENT:Think() self:SetSoundState(Format("announcer_noise%d_%d",i,k),(UPO and i==noise) and volume*self.BPSNBuzzVolume*self:GetNW2Float("UPOBuzzVolume",1)*0.7 or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and v[3]*(UPO and volume or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - local work = self:GetPackedBool("AnnPlay") - local UPO = work and self:GetPackedBool("AnnPlayUPO") - - return work and volume*(UPO and self:GetNW2Float("UPOVolume",1) or 1) or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + self.Tickers = self.Tickers or self:CreateRT("721Tickers",1024,128) self.RTMaterial:SetTexture("$basetexture", self.Tickers) surface.SetMaterial(self.RTMaterial) surface.SetDrawColor(255,255,255) diff --git a/lua/entities/gmod_subway_81-724/init.lua b/lua/entities/gmod_subway_81-724/init.lua index f96d3fa..5e29241 100644 --- a/lua/entities/gmod_subway_81-724/init.lua +++ b/lua/entities/gmod_subway_81-724/init.lua @@ -171,12 +171,11 @@ function ENT:Think() -- Apply brakes self.FrontBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure - self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 + self.FrontBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3) self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.RearBogey.PneumaticBrakeForce = 50000.0--3000 --40000 self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT - self.RearBogey.ParkingBrakePressure = math.max(0,(3-self.Pneumatic.ParkingBrakePressure)/3)/2 end return retVal end diff --git a/lua/entities/gmod_subway_81-724/shared.lua b/lua/entities/gmod_subway_81-724/shared.lua index a2a1ae4..5fe44ff 100644 --- a/lua/entities/gmod_subway_81-724/shared.lua +++ b/lua/entities/gmod_subway_81-724/shared.lua @@ -21,18 +21,6 @@ function ENT:GetStandingArea() return Vector(-450,-30,-62),Vector(380,30,-62) end -local function GetDoorPosition(i,k) - return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) -end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["release"] = {loop=true,"subway_trains/722/pneumo_release2.wav"} @@ -85,6 +73,12 @@ function ENT:InitializeSounds() self.SoundNames["door_cab_open"] = "subway_trains/common/door/cab/door_open.mp3" self.SoundNames["door_cab_close"] = "subway_trains/common/door/cab/door_close.mp3" + local function GetDoorPosition(i,k,j) + if j == 0 + then return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + else return Vector(377.0 - 36.0 + 1*(k) - 230*i,-64*(1-2*k),-10) + end + end self.SoundNames["doors"] = "subway_trains/722/door_start.mp3" self.SoundNames["doorl"] = {loop=true,"subway_trains/722/door_loop.wav"} self.SoundPositions["doors"] = {300,1e9,Vector(0,0,0),0.5} @@ -92,7 +86,7 @@ function ENT:InitializeSounds() for i=0,3 do for k=0,1 do self.SoundNames["door"..i.."x"..k.."c"] = "subway_trains/722/door_close.mp3" - self.SoundPositions["door"..i.."x"..k.."c"] = {800,1e9,GetDoorPosition(i,k),0.2} + self.SoundPositions["door"..i.."x"..k.."c"] = {800,1e9,GetDoorPosition(i,k,0),0.2} end end self.SoundNames["door_alarm"] = {"subway_trains/722/door_alarm.mp3"} diff --git a/lua/entities/gmod_subway_base/cl_init.lua b/lua/entities/gmod_subway_base/cl_init.lua index e3864f5..046f029 100644 --- a/lua/entities/gmod_subway_base/cl_init.lua +++ b/lua/entities/gmod_subway_base/cl_init.lua @@ -295,21 +295,18 @@ function ENT:CreateRT(name, w, h) return RT end + local C_DisableHUD = GetConVar("metrostroi_disablehud") local C_RenderDistance = GetConVar("metrostroi_renderdistance") local C_SoftDraw = GetConVar("metrostroi_softdrawmultipier") local C_ScreenshotMode = GetConVar("metrostroi_screenshotmode") local C_DrawDebug = GetConVar("metrostroi_drawdebug") local C_CabFOV = GetConVar("metrostroi_cabfov") -local C_CabZ = GetConVar("metrostroi_cabz") local C_FovDesired = GetConVar("fov_desired") local C_MinimizedShow = GetConVar("metrostroi_minimizedshow") local C_Shadows1 = GetConVar("metrostroi_shadows1") local C_Shadows2 = GetConVar("metrostroi_shadows2") local C_Shadows3 = GetConVar("metrostroi_shadows3") -local C_Shadows4 = GetConVar("metrostroi_shadows4") -local C_AA = GetConVar("mat_antialias") -local C_Sprites = GetConVar("metrostroi_sprites") local whitelist = { ["CHudChat"] = true, ["CHudDeathNotice"] = true, @@ -318,6 +315,15 @@ local whitelist = { hook.Add("HUDShouldDraw","MetrostroiHUDHider",function(name) if LocalPlayer().InMetrostroiTrain and C_DisableHUD:GetBool() and not whitelist[name] then return false end end) +hook.Add("Think","MetrostroiHUDHider",function() + local ply = LocalPlayer() + local seat = ply:GetVehicle() + if IsValid(seat) and IsValid(seat:GetNW2Entity("TrainEntity")) then + ply.InMetrostroiTrain = seat:GetNW2Entity("TrainEntity") + else + ply.InMetrostroiTrain = false + end +end) -------------------------------------------------------------------------------- -- Buttons layout -------------------------------------------------------------------------------- @@ -361,10 +367,7 @@ end function ENT:ShouldDrawPanel(v) return not self.HiddenPanelsDistance[v] and not self.HiddenPanels[v] end -function ENT:ShouldDrawClientEnt(k,v) - if self.Hidden[k] or self.Hidden.anim[k] then return false end - v = v or self.ClientProps[k] - if not v then return false end +function ENT:ShouldDrawClientEnt(v) local distance = LocalPlayer():GetPos():Distance(self:LocalToWorld(v.pos)) local renderDist = C_RenderDistance:GetFloat() if v.nohide then return true end @@ -384,9 +387,8 @@ function ENT:ShouldDrawClientEnt(k,v) end --util.PrecacheModel("models/metrostroi_train/81-720/81-720.mdl") function ENT:SpawnCSEnt(k,override) - if override and (self.Hidden[k] or self.Hidden.anim[k]) or not override and not self:ShouldDrawClientEnt(k,self.ClientProps[k]) then return false end local v = self.ClientPropsOv and self.ClientPropsOv[k] or self.ClientProps[k] - if v and not IsValid(self.ClientEnts[k]) and v.model ~= "" then + if v and k ~= "BaseClass" and not IsValid(self.ClientEnts[k]) and not self.Hidden[k] and not self.Hidden.anim[id] and (override or self:ShouldDrawClientEnt(self.ClientProps[k])) and v.model ~= "" then --local cent = ents.CreateClientProp(LocalPlayer():GetModel()) local model = v.model if v.modelcallback then model = v.modelcallback(self) or v.model end @@ -403,7 +405,6 @@ function ENT:SpawnCSEnt(k,override) cent:SetParent(self) cent:SetPos(self:LocalToWorld(v.pos)) cent:SetAngles(self:LocalToWorldAngles(v.ang)) - cent:SetLOD(C_ScreenshotMode:GetBool() and 0 or -1) --[[ hook.Add("MetrostroiBigLag",cent,function(ent) --print(ent:GetLocalPos()) @@ -425,13 +426,6 @@ function ENT:SpawnCSEnt(k,override) cent:SetBodygroup(v1,k1) end end - if v.lamps then - for i,k in ipairs(v.lamps) do - self.HiddenLamps[k] = false - end - end - cent.lamps = v.lamps - local texture = Metrostroi.Skins["train"][self:GetNW2String("Texture")] local passtexture = Metrostroi.Skins["pass"][self:GetNW2String("PassTexture")] local cabintexture = Metrostroi.Skins["cab"][self:GetNW2String("CabTexture")] @@ -467,17 +461,14 @@ function ENT:SpawnCSEnt(k,override) end cent.BASSSounds = {} - cent.DestroySound = self.DestroySound - cent.Think = function(ent) + hook.Add("Think",cent,function(ent) for k,v in pairs(ent.BASSSounds) do if not IsValid(v) or v:GetState() == GMOD_CHANNEL_STOPPED then - self:DestroySound(v) table.remove(ent.BASSSounds,k) end end - ent:SetNextClientThink(CurTime()+0.5) - return true - end + ent:NextThink(RealTime()+0.5) + end) cent.CalcAbsolutePosition = function(ent,pos,ang) for k,v in pairs(ent.BASSSounds) do if IsValid(v) and v:GetState() ~= GMOD_CHANNEL_STOPPED then @@ -485,16 +476,6 @@ function ENT:SpawnCSEnt(k,override) end end end - if v.lamps then - cent:CallOnRemove("RemoveLights", function(ent) - if IsValid(self) then - for i,k in ipairs(ent.lamps) do - self:SetLightPower(k,false) - self.HiddenLamps[k] = true - end - end - end) - end self:ShowHide(k, not self.Hidden[k],true) if v.callback then v.callback(self,cent) end return true @@ -508,18 +489,10 @@ end function ENT:GetDirtLevel() return self:GetNW2Float("DirtLevel",0.25) end -hook.Remove("Think","metrostroi_collect_garbage",function() - if Metrostroi.CollectGarbage then - collectgarbage("collect") - Metrostroi.CollectGarbage = false - end -end) + hook.Add("EntityRemoved","metrostroi_bass_disable",function(ent) if ent.BASSSounds then - for k,v in pairs(ent.BASSSounds) do - ent:DestroySound(v) - ent.BASSSounds[k] = nil - end + for k,v in pairs(ent.BASSSounds) do v:Stop() end end end) function ENT:SetCSBodygroup(csent,id,value) @@ -528,27 +501,23 @@ function ENT:SetCSBodygroup(csent,id,value) if IsValid(self.ClientEnts[csent]) then self.ClientEnts[csent]:SetBodygroup(id,value) end end local elapsed = SysTime() -local spawnedCount = 0 -hook.Add("Think","SpawnElasped",function() elapsed = SysTime() spawnedCount = 0 end) +hook.Add("Think","SpwanElasped",function() elasped = SysTime() end) function ENT:CreateCSEnts() - local mul = C_SoftDraw:GetFloat()/100 - local time = mul*0.01 + local count = 0 + local time = C_SoftDraw:GetFloat()/100*0.001 if self.ClientPropsOv then for k in pairs(self.ClientPropsOv) do - if k ~= "BaseClass" and not IsValid(self.ClientEnts[k]) and self:SpawnCSEnt(k)then - if SysTime()-elapsed > time then - return false - end + if k ~= "BaseClass" and not IsValid(self.ClientEnts[k]) then + self:SpawnCSEnt(k) + if SysTime()-elapsed > time then return false end end end end --RunConsoleCommand("say","1:"..tostring(elapsed)) for k in pairs(self.ClientProps) do if k ~= "BaseClass" and not IsValid(self.ClientEnts[k]) then - if spawnedCount*mul*3 > 4 and SysTime()-elapsed > time then - return false - end - if self:SpawnCSEnt(k) then spawnedCount = spawnedCount + 1 end + if count > 5 and SysTime()-elapsed > time then return false end + if self:SpawnCSEnt(k) then count = count + 1 end --RunConsoleCommand("say","1:") end end @@ -578,70 +547,51 @@ function ENT:RemoveCSEnts() end end self.ClientEnts = {} - self.GlowingLights = {} - self.Sprites = {} end -- Checks if the player is driving a train, also returns said train local function isValidTrainDriver(ply) - if IsValid(ply.InMetrostroiTrain) then return ply.InMetrostroiTrain end - + local train + local seat = ply:GetVehicle() + if IsValid(seat) then train = seat:GetNW2Entity("TrainEntity") end + if IsValid(train) then return train end local weapon = IsValid(LocalPlayer():GetActiveWeapon()) and LocalPlayer():GetActiveWeapon():GetClass() - if weapon ~= "train_kv_wrench" and weapon ~= "train_kv_wrench_gold" then return end - - local train = util.TraceLine({ - start = LocalPlayer():GetPos(), - endpos = LocalPlayer():GetPos() - LocalPlayer():GetAngles():Up() * 100, - filter = function( ent ) if ent.ButtonMap ~= nil then return true end end - }).Entity - if not IsValid(train) then + if weapon == "train_kv_wrench" or weapon == "train_kv_wrench_gold" then train = util.TraceLine({ - start = LocalPlayer():EyePos(), - endpos = LocalPlayer():EyePos() + LocalPlayer():EyeAngles():Forward() * 300, + start = LocalPlayer():GetPos(), + endpos = LocalPlayer():GetPos() - LocalPlayer():GetAngles():Up() * 100, filter = function( ent ) if ent.ButtonMap ~= nil then return true end end }).Entity + if not IsValid(train) then + train = util.TraceLine({ + start = LocalPlayer():EyePos(), + endpos = LocalPlayer():EyePos() + LocalPlayer():EyeAngles():Forward() * 300, + filter = function( ent ) if ent.ButtonMap ~= nil then return true end end + }).Entity + end end - return IsValid(train) and train, true + return train, true end -------------------------------------------------------------------------------- -- Clientside initialization -------------------------------------------------------------------------------- function ENT:CanDrawThings() - return not LocalPlayer().InMetrostroiTrain or self == LocalPlayer().InMetrostroiTrain -end -local function colAlpha(col,a) - return Color(col.r*a,col.g*a,col.b*a) + return not IsValid(LocalPlayer():GetVehicle()) or self == LocalPlayer():GetVehicle():GetParent() end hook.Add("PostDrawTranslucentRenderables", "metrostroi_base_draw", function(_,isDD) if isDD then return end - for ent in pairs(Metrostroi.SpawnedTrains) do - if ent:IsDormant() then continue end - if MetrostroiStarted and MetrostroiStarted~=true or ent.RenderBlock then - local timeleft = (math.max(0,(MetrostroiStarted and MetrostroiStarted~=true) and 3-(RealTime()-MetrostroiStarted) or 3-(RealTime()-ent.RenderBlock)))+0.99 + for _,ent in pairs(ents.GetAll()) do + --print(self.BaseClassName) + if ent.Base ~= "gmod_subway_base" then continue end + if MetrostroiStarted~=true then cam.Start3D2D(ent:LocalToWorld(Vector(0,-200,100)),ent:LocalToWorldAngles(Angle(0,90,90)),2) - draw.SimpleText("Wait, train will be available across "..string.NiceTime(timeleft)) + draw.SimpleText("Wait, train will be available across "..string.NiceTime(MetrostroiStarted and 10-(RealTime()-MetrostroiStarted) or 10)) cam.End3D2D() cam.Start3D2D(ent:LocalToWorld(Vector(0,200,100)),ent:LocalToWorldAngles(Angle(0,-90,90)),2) - draw.SimpleText("Wait, train will be available across "..string.NiceTime(timeleft)) + draw.SimpleText("Wait, train will be available across "..string.NiceTime(MetrostroiStarted and 10-(RealTime()-MetrostroiStarted) or 10)) cam.End3D2D() - return end - cam.IgnoreZ(true) - for i,vHandle in pairs(ent.Sprites) do - local br = ent.LightBrightness[i] - local lightData = ent.LightsOverride[i] or ent.Lights[i] - if lightData[1] ~= "glow" and lightData[1] ~= "light" or br <= 0 then continue end - - local pos = ent:LocalToWorld(lightData[2]) - local visibility = util.PixelVisible(pos, lightData.size or 5, vHandle)--math.max(0,util.PixelVisible(pos, 5, vHandle)-0.25)/0.75 - if visibility > 0 then - render.SetMaterial(lightData.mat) - render.DrawSprite(pos,128*lightData.scale,128*(lightData.vscale or lightData.scale),colAlpha(lightData[4] or Color(255,255,255),visibility*br)) - --render.DrawQuadEasy( ent:GetPos(),-EyeVector(), 128*ent.Scale, 128*ent.Scale, ent:GetColor()) - end - end - cam.IgnoreZ(false) if not ent.ShouldRenderClientEnts or not ent:ShouldRenderClientEnts() then continue end if ent.DrawPost then ent:DrawPost(not ent:CanDrawThings()) end @@ -653,82 +603,75 @@ hook.Add("PostDrawTranslucentRenderables", "metrostroi_base_draw", function(_,is v:ClientDraw() end end - end -end) + --[[ + --Drawing schedule for trains which support it + if ent.ButtonMap and ent.ButtonMap["Schedule"] then + ent:DrawOnPanel("Schedule", function(panel) + ent:DrawSchedule(panel) + end) + end]] -local function enableDebug() - if C_DrawDebug:GetInt() > 0 then - hook.Add("PostDrawTranslucentRenderables","MetrostroiTrainDebug",function(bDrawingDepth,bDrawingSkybox) - if bDrawingSkybox then return end - for ent in pairs(Metrostroi.SpawnedTrains) do - -- Debug draw for buttons - if ent.ButtonMap ~= nil then - draw.NoTexture() - for kp,panel in pairs(ent.ButtonMap) do - if kp ~= "BaseClass" and LocalPlayer():GetPos():Distance(ent:LocalToWorld(panel.pos)) < 512 then - ent:DrawOnPanel(kp,function() - surface.SetDrawColor(0,0,255) - if not ent:ShouldDrawPanel(kp) then surface.SetDrawColor(255,0,0) end - surface.DrawOutlinedRect(0,0,panel.width,panel.height) + -- Debug draw for buttons + if C_DrawDebug:GetInt() > 0 and (ent.ButtonMap ~= nil) then + draw.NoTexture() + for kp,panel in pairs(ent.ButtonMap) do + if kp ~= "BaseClass" then + ent:DrawOnPanel(kp,function() + surface.SetDrawColor(0,0,255) + if not ent:ShouldDrawPanel(kp) then surface.SetDrawColor(255,0,0) end + surface.DrawOutlinedRect(0,0,panel.width,panel.height) - if panel.aimX and panel.aimY then - surface.SetTextColor(255,255,255) - surface.SetFont("BudgetLabel") - surface.SetTextPos(panel.width/2,5) - surface.DrawText(string.format("%d %d",panel.aimX,panel.aimY)) - end - - - --surface.SetDrawColor(255,255,255) - --surface.DrawRect(0,0,panel.width,panel.height) - if panel.buttons then - - surface.SetAlphaMultiplier(0.2) - if ent.HiddenPanels[kp] then surface.SetAlphaMultiplier(0.1) end - - for kb,button in pairs(panel.buttons) do - if ent.Hidden[button.PropName] or ent.Hidden[button.ID] or ent.Hidden.anim[button.PropName] or ent.Hidden.anim[button.ID] or ent.Hidden.button[button.PropName] or ent.Hidden.button[button.ID] then - surface.SetDrawColor(255,255,0) - elseif ent.Hidden[kb] or ent.Hidden.anim[kb] then - surface.SetDrawColor(255,255,0) - elseif ent.HiddenPanels[kp] then - surface.SetDrawColor(100,0,0) - elseif not button.ID or button.ID[1] == "!" then - surface.SetDrawColor(25,40,180) - elseif button.state then - surface.SetDrawColor(255,0,0) - else - surface.SetDrawColor(0,255,0) - end - - if button.w and button.h then - surface.DrawRect(button.x, button.y, button.w, button.h) - surface.DrawRect(button.x + button.w/2 - 8,button.y + button.h/2 - 8,16,16) - else - ent:DrawCircle(button.x,button.y,button.radius or 10) - surface.DrawRect(button.x-8,button.y-8,16,16) - end - end - - --Gotta reset this otherwise the qmenu draws transparent as well - surface.SetAlphaMultiplier(1) - - end - - - end,true) + if panel.aimX and panel.aimY then + surface.SetTextColor(255,255,255) + surface.SetFont("BudgetLabel") + surface.SetTextPos(panel.width/2,5) + surface.DrawText(string.format("%d %d",panel.aimX,panel.aimY)) end - end + + + --surface.SetDrawColor(255,255,255) + --surface.DrawRect(0,0,panel.width,panel.height) + if panel.buttons then + + surface.SetAlphaMultiplier(0.2) + if ent.HiddenPanels[kp] then surface.SetAlphaMultiplier(0.1) end + + for kb,button in pairs(panel.buttons) do + if ent.Hidden[button.PropName] or ent.Hidden[button.ID] or ent.Hidden.anim[button.PropName] or ent.Hidden.anim[button.ID] or ent.Hidden.button[button.PropName] or ent.Hidden.button[button.ID] then + surface.SetDrawColor(255,255,0) + elseif ent.Hidden[kb] or ent.Hidden.anim[kb] then + surface.SetDrawColor(255,255,0) + elseif ent.HiddenPanels[kp] then + surface.SetDrawColor(100,0,0) + elseif not button.ID or button.ID[1] == "!" then + surface.SetDrawColor(25,40,180) + elseif button.state then + surface.SetDrawColor(255,0,0) + else + surface.SetDrawColor(0,255,0) + end + + if button.w and button.h then + surface.DrawRect(button.x, button.y, button.w, button.h) + surface.DrawRect(button.x + button.w/2 - 8,button.y + button.h/2 - 8,16,16) + else + ent:DrawCircle(button.x,button.y,button.radius or 10) + surface.DrawRect(button.x-8,button.y-8,16,16) + end + end + + --Gotta reset this otherwise the qmenu draws transparent as well + surface.SetAlphaMultiplier(1) + + end + + + end,true) end end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiTrainDebug") + end end -end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiTrainDebug") -cvars.AddChangeCallback( "metrostroi_drawdebug", enableDebug) -enableDebug() +end) local function recurePrecache(sound) if type(sound) == "table" then @@ -746,12 +689,12 @@ function ENT:GetWagonNumber() end return number end + function ENT:Initialize() -- Create clientside props self.ClientEnts = {} self.HiddenPanels = {} self.HiddenPanelsDistance = {} - self.HiddenLamps = {} self.Hidden = { anim = {},button = {},override = {}, } @@ -761,16 +704,13 @@ function ENT:Initialize() self:InitializeSounds() recurePrecache(self.SoundNames) self.Sounds = { - loop = {}, - isloop = {}, + loop = {} } self.CurrentCamera = 0 - self.Sprites = {} if self.NoTrain then return end self.ButtonMapMatrix = {} -- Passenger models self.PassengerEnts = {} - self.PassengerEntsStucked = {} self.PassengerPositions = {} --self.HiddenQuele = {} -- Systems defined in the train @@ -778,16 +718,6 @@ function ENT:Initialize() -- Initialize train systems self:InitializeSystems() - self.GlowingLights = {} - self.LightBrightness = {} - self.LightsOverride = {} - if self.Lights then - for i,lightData in pairs(self.Lights) do - if lightData.changable then - self.LightsOverride[i] = table.Copy(lightData) - end - end - end --self:EntIndex() self.PassengerModels = { "models/metrostroi/passengers/f1.mdl", @@ -839,8 +769,9 @@ function ENT:UpdateWagonNumber() end ENT.Cameras = {} function ENT:OnRemove(nfinal) - self.RenderBlock = RealTime() - if nfinal then + if not nfinal then + self.RenderBlock = RealTime() + else drawCrosshair = false canDrawCrosshair = false toolTipText = nil @@ -850,32 +781,29 @@ function ENT:OnRemove(nfinal) for _,v in pairs(self.Sounds) do - if type(v) ~= "function" and type(v) ~= "table" then - self:DestroySound(v) + if type(v) ~= "function" and IsValid(v) then + v:Stop() end end for k,v in pairs(self.Sounds.loop) do for i,sndt in ipairs(v) do - self:DestroySound(sndt.sound) + if IsValid(sndt.sound) then + sndt.sound:Stop() + end end end for _,v in pairs(self.PassengerEnts or {}) do SafeRemoveEntity(v) end - for _,v in pairs(self.PassengerEntsStucked or {}) do - SafeRemoveEntity(v) - end if self.GUILocker then self:BlockInput(false) end - self.Sounds = {loop = {},isloop = {}} + self.Sounds = {loop = {}} self.PassengerEnts = {} - self.PassengerEntsStucked = {} end function ENT:CalcAbsolutePosition(pos, ang) if self.RenderClientEnts then if self.Lights and self.GlowingLights then for id, light in pairs(self.GlowingLights) do - if not IsValid(light) then continue end local lightData = self.Lights[id] light:SetPos(self:LocalToWorld(lightData[2])) light:SetAngles(self:LocalToWorldAngles(lightData[3])) @@ -884,6 +812,7 @@ function ENT:CalcAbsolutePosition(pos, ang) for k,v in pairs(self.Sounds) do if type(v) == "IGModAudioChannel" then if not IsValid(v) then + if v.Remove then v:Remove() end self.Sounds[k] = nil continue end @@ -897,6 +826,7 @@ function ENT:CalcAbsolutePosition(pos, ang) end continue end + --self.Sounds[k] = nil end end for k,v in pairs(self.Sounds.loop) do @@ -933,14 +863,19 @@ local function SoundTrace(startv,endv) end MetrostroiStarted = MetrostroiStarted or nil +local _TEST hook.Add("KeyPress","MetrostroiStarted",function(_,key) if key~=IN_FORWARD and key~=IN_BACK and key~=IN_MOVELEFT and key~=IN_MOVERIGHT then return end hook.Add("Think","MetrostroiStarted",function() - if MetrostroiStarted == nil then - MetrostroiStarted = RealTime() - elseif MetrostroiStarted == true or MetrostroiStarted and RealTime()-MetrostroiStarted > 3 then - MetrostroiStarted = true + if MetrostroiStarted==true then hook.Remove("Think","MetrostroiStarted") + elseif MetrostroiStarted == nil then + MetrostroiStarted = RealTime() + elseif MetrostroiStarted and RealTime()-MetrostroiStarted > 10 then + MetrostroiStarted = true + end + if IsValid(LocalPlayer()) and not _TEST then + _TEST = true end end) hook.Remove("KeyPress","MetrostroiStarted") @@ -950,6 +885,14 @@ function ENT:Think() self.PrevTime = self.PrevTime or RealTime() self.DeltaTime = (RealTime() - self.PrevTime) self.PrevTime = RealTime() + if self.RenderBlock then + if RealTime()-self.RenderBlock < 5 then + self.ClientPropsInitialized = false + return + else + self.RenderBlock = false + end + end if MetrostroiStarted~=true then return end @@ -960,6 +903,23 @@ function ENT:Think() self.CreatingCSEnts = false return end + if not self.ClientPropsInitialized then + self.ClientPropsInitialized = true + self:RemoveCSEnts() + self:InitializeSounds() + self.RenderClientEnts = false + self.StopSounds = false + end + + if self.GlowingLights and (self.HeadlightShadows ~= C_Shadows1:GetBool() or self.OtherShadows ~= C_Shadows2:GetBool()) then + self.HeadlightShadows = C_Shadows1:GetBool() + self.OtherShadows = C_Shadows2:GetBool() + for k,v in pairs(self.GlowingLights) do + if IsValid(v) then v:Remove() end + end + self.GlowingLights = {} + self.LightBrightness = {} + end if self.RenderClientEnts ~= self:ShouldRenderClientEnts() then self.RenderClientEnts = self:ShouldRenderClientEnts() if self.RenderClientEnts then @@ -971,47 +931,13 @@ function ENT:Think() --if not IsValid(ent) then self.RenderClientEnts = false end else self:OnRemove(true) + for k,v in pairs(self.PassengerEnts or {}) do + SafeRemoveEntity(v) + end + self.PassengerEnts = {} return end end - if not self.RenderClientEnts then return end - - if self.RenderBlock then - if RealTime()-self.RenderBlock < 3 then - self.ClientPropsInitialized = false - return - else - self.RenderBlock = false - end - end - - if not self.ClientPropsInitialized then - self.ClientPropsInitialized = true - self:RemoveCSEnts() - self:InitializeSounds() - self.RenderClientEnts = false - self.StopSounds = false - end - if self.GlowingLights and ( - self.HeadlightShadows ~= C_Shadows1:GetBool() - or self.OtherShadows ~= C_Shadows2:GetBool() - or self.RedLights ~= C_Shadows3:GetBool() - or self.OtherLights ~= C_Shadows4:GetBool() - or self.AAEnabled ~= (C_AA:GetInt() > 1) - or self.SpritesEnabled ~= C_Sprites:GetBool()) then - self.HeadlightShadows = C_Shadows1:GetBool() - self.OtherShadows = C_Shadows2:GetBool() - self.RedLights = C_Shadows3:GetBool() - self.OtherLights = C_Shadows4:GetBool() - self.SpritesEnabled = C_Sprites:GetBool() - self.AAEnabled = C_AA:GetInt() > 1 - for k,v in pairs(self.GlowingLights) do - if IsValid(v) then v:Remove() end - end - self.GlowingLights = {} - self.LightBrightness = {} - self.Sprites = {} - end if self.RenderClientEnts and self.CreatingCSEnts then @@ -1052,6 +978,7 @@ function ENT:Think() else self.HeadAcceleration = 0 end + -- Simulate systems if self.Systems then for _,v in pairs(self.Systems) do @@ -1059,12 +986,9 @@ function ENT:Think() end end if not self.StopSounds then - local soundPos = self.SoundPositions - local soundNames = self.SoundNames for k,v in pairs(self.Sounds.loop) do - - local tbl = soundPos[k] - local ntbl = soundNames[k] + local tbl = self.SoundPositions[k] + local ntbl = self.SoundNames[k] local good = true for i,stbl in ipairs(v) do if not stbl.volume then good = false end @@ -1074,7 +998,15 @@ function ENT:Think() local snd = stbl.sound if not IsValid(snd) then continue end if snd:GetState() == GMOD_CHANNEL_PLAYING then + if tbl then + --snd:SetPos(self:LocalToWorld(tbl[3])) + else + --snd:SetPos(self:GetPos()) + end + --snd:SetPlaybackRate(v.pitch) + --snd:SetVolume(stbl.volume or 0) self:SetPitchVolume(snd,v.pitch or 1,stbl.volume,tbl) + --snd:Set3DFadeDistance(tbl[1],tbl[2]) if stbl.volume == 0 and not stbl.time then snd:Pause() snd:SetTime(0) @@ -1100,6 +1032,7 @@ function ENT:Think() local endt = (ntbl.loop and snd:GetTime() > ntbl.loop or snd:GetTime()/snd:GetLength() >= 0.8) or no1 if stbl.state and stbl.volume < v.volume and not no1 then if snd:GetState() ~= GMOD_CHANNEL_PLAYING then + snd:SetTime(0) snd:Play() self:SetBASSPos(snd,tbl) end @@ -1110,6 +1043,7 @@ function ENT:Think() v[i].time=2 if v[i].GetState and v[i]:GetState() ~= GMOD_CHANNEL_PLAYING then v[i]:EnableLooping(i==2) + v[i]:SetTime(0) v[i]:Play() self:SetBASSPos(v[i],tbl) end @@ -1135,6 +1069,7 @@ function ENT:Think() if stbl.state and not stbl.time and stbl.volume == 0 then if snd:GetState() ~= GMOD_CHANNEL_PLAYING then snd:EnableLooping(true) + snd:SetTime(0) snd:Play() self:SetBASSPos(snd,tbl) end @@ -1154,6 +1089,7 @@ function ENT:Think() local time = v[2].time or v[1].time if stbl.state and time and not stbl.time then if snd:GetState() ~= GMOD_CHANNEL_PLAYING then + snd:SetTime(0) snd:Play() self:SetBASSPos(snd,tbl) end @@ -1165,6 +1101,7 @@ function ENT:Think() if v[i].volume > 0 then v[i].time=0.07/v.pitch if v[i].GetState and v[i]:GetState() ~= GMOD_CHANNEL_PLAYING then + v[i]:SetTime(0) v[i]:Play() self:SetBASSPos(v[i],tbl) end @@ -1230,7 +1167,8 @@ function ENT:Think() end end if not self.HandleMouseInput and self.ButtonMap then - if self == LocalPlayer().InMetrostroiTrain then + local seat = LocalPlayer():GetVehicle() + if IsValid(seat) and self == seat:GetNW2Entity("TrainEntity") then for kp,pan in pairs(self.ButtonMap) do if not self:ShouldDrawPanel(kp) then continue end --If player is looking at this panel @@ -1254,18 +1192,6 @@ function ENT:Think() if self.ButtonMap and (not self.LastCheck or RealTime()-self.LastCheck > 0.5) then self.LastCheck = RealTime() local screenshotMode = C_ScreenshotMode:GetBool() - if self.ScreenshotMode ~= screenshotMode then - self:SetLOD(screenshotMode and 0 or -1) - for k,cent in pairs(self.ClientEnts) do - if IsValid(cent) then - cent:SetLOD(screenshotMode and 0 or -1) - end - end - self.ScreenshotMode = screenshotMode - end - for k in pairs(self.HiddenLamps) do - self.HiddenLamps[k] = false - end for k,v in pairs(self.ClientProps) do if not v.pos then continue end local cent = self.ClientEnts[k] @@ -1276,102 +1202,40 @@ function ENT:Think() end continue end - local hidden = not self:ShouldDrawClientEnt(k,v) + local hidden = not self:ShouldDrawClientEnt(v) if IsValid(cent) and hidden then cent:Remove() self.ClientEnts[k] = nil elseif not IsValid(cent) and not hidden then - self:SpawnCSEnt(k,true) - end - if v.lamps and hidden then - for i,k in ipairs(v.lamps) do - self:SetLightPower(k,false) - self.HiddenLamps[k] = true - end - end - end - for k,v in pairs(self.Sounds) do - if type(v) ~= "function" and type(v) ~= "table" and not self.Sounds.isloop[k] and (not IsValid(v) or v:GetState() == GMOD_CHANNEL_STOPPED) then - self:DestroySound(v) - self.Sounds[k] = nil + self:SpawnCSEnt(k) end end for k,v in pairs(self.ButtonMap) do if not v.pos then continue end + local cent = self.ClientEnts[k] if not v.hide or (v.nohide or screenshotMode) then self.HiddenPanelsDistance[k] = v.screenHide continue end - self.HiddenPanelsDistance[k] = not self:ShouldDrawClientEnt(k,self.ButtonMap[k]) + self.HiddenPanelsDistance[k] = not self:ShouldDrawClientEnt(v) end end - if self.AutoAnims && self.AutoAnimNames then - local aAnims = self.AutoAnims - local aAnimNames = self.AutoAnimNames - local hidden = self.Hidden - for i=1, #aAnims do - if not aAnimNames[i] or not hidden[aAnimNames[i]] then - aAnims[i](self) - end + if self.AutoAnims then + for name,func in ipairs(self.AutoAnims) do + func(self) end end if self.Lights and self.GlowingLights then for id, light in pairs(self.GlowingLights) do - if light.Update then - light:Update() - end + light:Update() end end -- Update passengers if self.RenderClientEnts and self.PassengerEnts then - local stucked = self.PassengerEntsStucked - for i,v in ipairs(self.LeftDoorPositions) do - if self:GetPackedBool("DoorLS"..i) and not IsValid(stucked[i]) then - local ent = ClientsideModel(table.Random(self.PassengerModels),RENDERGROUP_OPAQUE) - ent:SetPos(self:LocalToWorld(Vector(v.x,v.y,self:GetStandingArea().z))) - ent:SetAngles(self:LocalToWorldAngles(Angle(0,v.y < 0 and -90 or 90,0))) - ent:SetSkin(math.floor(ent:SkinCount()*math.random())) - ent:SetModelScale(0.98 + (-0.02+0.04*math.random()),0) - ent:SetParent(self) - stucked[i] = ent - if math.random() > 0.99 then - self:PlayOnceFromPos("PassStuckL"..i,"subway_trains/common/door/pass_stAAAck.mp3",5,0.9+math.random()*0.2,150,400,v) - elseif math.random() > 0.95 then - self:PlayOnceFromPos("PassStuckL"..i,"subway_trains/common/door/tom.mp3",5,0.9+math.random()*0.2,150,400,v) - elseif ent:GetModel():find("models/metrostroi/passengers/f") then - self:PlayOnceFromPos("PassStuckL"..i,"subway_trains/common/door/pass_stuck.mp3",5,1.6+math.random()*0.2,150,400,v) - else - self:PlayOnceFromPos("PassStuckL"..i,"subway_trains/common/door/pass_stuck.mp3",5,0.9+math.random()*0.2,150,400,v) - end - elseif not self:GetPackedBool("DoorLS"..i) and IsValid(stucked[i]) then - SafeRemoveEntity(stucked[i]) - end - end - for i,v in ipairs(self.RightDoorPositions) do - if self:GetPackedBool("DoorRS"..i) and not IsValid(stucked[-i]) then - local ent = ClientsideModel(table.Random(self.PassengerModels),RENDERGROUP_OPAQUE) - ent:SetPos(self:LocalToWorld(Vector(v.x,v.y,self:GetStandingArea().z))) - ent:SetAngles(self:LocalToWorldAngles(Angle(0,v.y < 0 and -90 or 90,0))) - ent:SetSkin(math.floor(ent:SkinCount()*math.random())) - ent:SetModelScale(0.98 + (-0.02+0.04*math.random()),0) - ent:SetParent(self) - stucked[-i] = ent - if math.random() > 0.99 then - self:PlayOnceFromPos("PassStuckR"..i,"subway_trains/common/door/pass_stAAAck.mp3",5,0.9+math.random()*0.2,150,400,v) - elseif math.random() > 0.95 then - self:PlayOnceFromPos("PassStuckR"..i,"subway_trains/common/door/tom.mp3",5,0.9+math.random()*0.2,150,400,v) - elseif ent:GetModel():find("models/metrostroi/passengers/f") then - self:PlayOnceFromPos("PassStuckR"..i,"subway_trains/common/door/pass_stuck.mp3",5,1.6+math.random()*0.2,150,400,v) - else - self:PlayOnceFromPos("PassStuckR"..i,"subway_trains/common/door/pass_stuck.mp3",5,0.9+math.random()*0.2,150,400,v) - end - elseif not self:GetPackedBool("DoorRS"..i) and IsValid(stucked[-i]) then - SafeRemoveEntity(stucked[-i]) - end - end if #self.PassengerEnts ~= self:GetNW2Float("PassengerCount") then + -- Passengers go out while #self.PassengerEnts > self:GetNW2Float("PassengerCount") do local ent = self.PassengerEnts[#self.PassengerEnts] @@ -1403,12 +1267,17 @@ function ENT:Think() table.insert(self.PassengerEnts,ent) end end + elseif self.PassengerEnts then + for k,v in pairs(self.PassengerEnts) do + if IsValid(v) then v:Remove() end + self.PassengerEnts[k] = nil + end end - for k,v in pairs(self.CustomThinks) do if k ~= "BaseClass" then v(self) end end end function ENT:BlockInput(block) - if IsValid(LocalPlayer().InMetrostroiTrain) then - if self ~= LocalPlayer().InMetrostroiTrain then + local seat = LocalPlayer():GetVehicle() + if IsValid(seat) then + if self ~= seat:GetNW2Entity("TrainEntity") then block = false end end @@ -1469,17 +1338,7 @@ function ENT:HandleMouse(handle) self:BlockInput(self.HandleMouseInput) end end - -local function compensateSeat(val) - local valAbs = math.abs(val) - if valAbs < 10 then return 1 end - if valAbs > 45 then return 0 end - - local sign = val < 0 and -1 or 1 - return 1-math.Clamp((valAbs-10)/6,0,2)+(math.Clamp((valAbs-30)/10,0,1))+(math.Clamp((valAbs-40)/5,0,1)) -end - -local OldTrainHandle,OldSeat +local OldTrainHandle hook.Add("Think","metrostroi_mouse_handle",function() local train, outside = isValidTrainDriver(LocalPlayer()) if outside then train = nil end @@ -1487,50 +1346,15 @@ hook.Add("Think","metrostroi_mouse_handle",function() if OldTrainHandle ~= train then if IsValid(OldTrainHandle) and OldTrainHandle.BlockInput then OldTrainHandle:BlockInput(false) end if IsValid(train) and train.BlockInput then train:BlockInput(train.HandleMouseInput) end - if IsValid(train) then - OldSeat = LocalPlayer():GetVehicle() - --[=[train.CamAnglesComp = Angle(0,0,0) - train.OldAng = false - --OldSeat.CalcAbsolutePosition = function(...) return ... end - if not OldSeat.OldCalcAbsolutePosition then - OldSeat.OldCalcAbsolutePosition = OldSeat.CalcAbsolutePosition - end - OldSeat.CalcAbsolutePosition = function(ent,...) - --[[local target_ang = Angle(0,0,0) - local train = ent:GetNW2Entity("TrainEntity") - if not IsValid(train) then return end - target_ang:RotateAroundAxis(ent:GetAngles():Forward(),-train.CamAng.p) - target_ang:RotateAroundAxis(ent:GetAngles():Up(),train.CamAng.y) - target_ang:RotateAroundAxis(ent:GetAngles():Right(),train.CamAng.r) - train.CamAnglesComp = target_ang - print(target_ang)]] - return ent:OldCalcAbsolutePosition(...) - end - print(OldSeat.OnAngleChangeID)--]=] - elseif IsValid(OldSeat) then - OldSeat.CalcAbsolutePosition = OldSeat.OldCalcAbsolutePosition or OldSeat.CalcAbsolutePosition - OldSeat.OldCalcAbsolutePosition = nil - OldSeat = nil - end OldTrainHandle = train end end) ---[[hook.Add("PlayerEnteredVehicle","metrostroi_mouse_handle",function(ply,veh) - local train = veh:GetNW2Entity("TrainEntity") - if IsValid(train) then - train.CamAnglesComp = Angle(0,0,0) - train.OldAng = false - if train.BlockInput then train:BlockInput(train.HandleMouseInput) end - end -end) hook.Add("PlayerEnteredVehicle","metrostroi_mouse_handle",function(ply,veh) local train = veh:GetNW2Entity("TrainEntity") - if IsValid(train) then - train.CamAnglesComp = Angle(0,0,0) - train.OldAng = false - if train.BlockInput then train:BlockInput(train.HandleMouseInput) end + if IsValid(train) and train.BlockInput then + train:BlockInput(train.HandleMouseInput) end -end)]] +end) --[[ hook.Add("PlayerEnteredVehicle","metrostroi_mouse_handle",function(ply,veh) local train = veh:GetNW2Entity("TrainEntity") if IsValid(train) and train.BlockInput then @@ -1788,43 +1612,42 @@ end -------------------------------------------------------------------------------- function ENT:Animate(clientProp, value, min, max, speed, damping, stickyness) local id = clientProp - local anims = self.Anims - if not anims[id] then - anims[id] = {} - anims[id].val = value - anims[id].value = min + (max-min)*value - anims[id].V = 0.0 - anims[id].block = false - anims[id].stuck = false - anims[id].P = value + if not self.Anims[id] then + self.Anims[id] = {} + self.Anims[id].val = value + self.Anims[id].value = min + (max-min)*value + self.Anims[id].V = 0.0 + self.Anims[id].block = false + self.Anims[id].stuck = false + self.Anims[id].P = value end if self.Hidden[id] or self.Hidden.anim[id] then return 0 end - if anims[id].Ignore then - if RealTime()-anims[id].Ignore < 0 then - return anims[id].value + if self.Anims[id].Ignore then + if RealTime()-self.Anims[id].Ignore < 0 then + return self.Anims[id].value else - anims[id].Ignore = nil + self.Anims[id].Ignore = nil end end - local val = anims[id].val + local val = self.Anims[id].val if value ~= val then - anims[id].block = false + self.Anims[id].block = false end - if anims[id].block then - if anims[id].reload and IsValid(self.ClientEnts[clientProp]) then - self.ClientEnts[clientProp]:SetPoseParameter("position",anims[id].value) - anims[id].reload = false + if self.Anims[id].block then + if self.Anims[id].reload and IsValid(self.ClientEnts[clientProp]) then + self.ClientEnts[clientProp]:SetPoseParameter("position",self.Anims[id].value) + self.Anims[id].reload = false end - return anims[id].value--min + (max-min)*anims[id].val + return self.Anims[id].value--min + (max-min)*self.Anims[id].val end --if self["_anim_old_"..id] == value then return self["_anim_old_"..id] end -- Generate sticky value if stickyness and damping then - if (math.abs(anims[id].P - value) < stickyness) and (anims[id].stuck) then - value = anims[id].P - anims[id].stuck = false + if (math.abs(self.Anims[id].P - value) < stickyness) and (self.Anims[id].stuck) then + value = self.Anims[id].P + self.Anims[id].stuck = false else - anims[id].P = value + self.Anims[id].P = value end end local dT = FrameTime()--self.DeltaTime @@ -1838,9 +1661,9 @@ function ENT:Animate(clientProp, value, min, max, speed, damping, stickyness) end if math.abs(value - val) < dX then val = value - anims[id].V = 0 + self.Anims[id].V = 0 else - anims[id].V = dX + self.Anims[id].V = dX end else -- Prepare speed limiting @@ -1849,33 +1672,33 @@ function ENT:Animate(clientProp, value, min, max, speed, damping, stickyness) local max_accel = 0.5 / dT -- Simulate - local dX2dT = (speed or 128)*(value - val) - anims[id].V * (damping or 8.0) + local dX2dT = (speed or 128)*(value - val) - self.Anims[id].V * (damping or 8.0) if dX2dT > max_accel then dX2dT = max_accel end if dX2dT < -max_accel then dX2dT = -max_accel end - anims[id].V = anims[id].V + dX2dT * dT - if anims[id].V > max_speed then anims[id].V = max_speed end - if anims[id].V < -max_speed then anims[id].V = -max_speed end + self.Anims[id].V = self.Anims[id].V + dX2dT * dT + if self.Anims[id].V > max_speed then self.Anims[id].V = max_speed end + if self.Anims[id].V < -max_speed then self.Anims[id].V = -max_speed end - val = math.max(0,math.min(1,val + anims[id].V * dT)) + val = math.max(0,math.min(1,val + self.Anims[id].V * dT)) -- Check if value got stuck if (math.abs(dX2dT) < 0.001) and stickyness and (dT > 0) then - anims[id].stuck = true + self.Anims[id].stuck = true end end local retval = min + (max-min)*val if IsValid(self.ClientEnts[clientProp]) then self.ClientEnts[clientProp]:SetPoseParameter("position",retval) end - if math.abs(anims[id].V) == 0 and math.abs(val-value) == 0 and not anims[id].stuck then - anims[id].block = true + if math.abs(self.Anims[id].V) == 0 and math.abs(val-value) == 0 and not self.Anims[id].stuck then + self.Anims[id].block = true end - anims[id].val = val - anims[id].oldival = value - anims[id].oldspeed = speed - anims[id].value = retval + self.Anims[id].val = val + self.Anims[id].oldival = value + self.Anims[id].oldspeed = speed + self.Anims[id].value = retval return retval end function ENT:AnimateFrom(clientProp,from,min,max) @@ -1894,7 +1717,8 @@ function ENT:ShowHide(clientProp, value, over) --if IsValid(self.ClientEnts[clientProp]) then if value == true and (self.Hidden[clientProp] or over) then self.Hidden[clientProp] = false - if not IsValid(self.ClientEnts[clientProp]) and self:SpawnCSEnt(clientProp) then + if not IsValid(self.ClientEnts[clientProp]) then + self:SpawnCSEnt(clientProp) self.UpdateRender = true end --self.ClientEnts[clientProp]:SetRenderMode(RENDERMODE_NORMAL) @@ -1922,7 +1746,6 @@ function ENT:HideButton(clientProp, value) end function ENT:ShowHideSmooth(clientProp, value,color) if self.Hidden.override[clientProp] then return value end - if not IsValid(self.ClientEnts[clientProp]) and self.SmoothHide[clientProp] then self.SmoothHide[clientProp] = 0 end if self.SmoothHide[clientProp] and (self.SmoothHide[clientProp] == value and not color) then return value end self.SmoothHide[clientProp] = value self.Hidden.anim[clientProp] = value == 0 @@ -2046,11 +1869,14 @@ function ENT:GetTrainAccelerationAtPos(pos) end + + + -------------------------------------------------------------------------------- -- Look into mirrors hook -------------------------------------------------------------------------------- ---[[hook.Add("InputMouseApply", "Metrostroi_TrainView", function(cmd,x,y,ang) - local seat = LocalPlayer():GetVehicle() +hook.Add("CalcView", "Metrostroi_TrainView", function(ply,pos,ang,fov,znear,zfar) + local seat = ply:GetVehicle() if (not seat) or (not seat:IsValid()) then return end @@ -2058,19 +1884,6 @@ end if (not train) or (not train:IsValid()) then return end - local target_ang = Angle(0,0,0) - target_ang:RotateAroundAxis(seat:GetAngles():Forward(),-ang.p) - target_ang:RotateAroundAxis(seat:GetAngles():Up(),ang.y) - target_ang:RotateAroundAxis(seat:GetAngles():Right(),ang.r) - train.CamAnglesComp = target_ang - train.CamAng = ang -end)]] - -hook.Add("CalcVehicleView", "Metrostroi_TrainView", function(seat,ply,tbl) - local train = ply.InMetrostroiTrain - if not IsValid(train) then - return - end --local hack = string.find(train:GetClass(),"81") --local dy = 0 @@ -2097,45 +1910,72 @@ hook.Add("CalcVehicleView", "Metrostroi_TrainView", function(seat,ply,tbl) angles = ang + Angle(offset.x,0,0), }]]-- - if seat:GetThirdPersonMode() and train.MirrorCams[1] then - local trainAng = tbl.angles - train:GetAngles() + + if seat:GetThirdPersonMode() then + local trainAng = ang - train:GetAngles() if trainAng.y > 180 then trainAng.y = trainAng.y - 360 end if trainAng.y < -180 then trainAng.y = trainAng.y + 360 end if trainAng.y > 0 then - train.CamPos = train:LocalToWorld(train.MirrorCams[1]) - train.CamAngles = train:LocalToWorldAngles(train.MirrorCams[2]) + local target_ang = (train:GetAngles() + Angle(2,0,0)) + target_ang:RotateAroundAxis(train:GetAngles():Up(),180) + train.CamPos = train:LocalToWorld(Vector(475,80,30)) + train.CamAngles = target_ang + --[[ if ply.OldFOV ~= 30 then + ply:SetFOV(30,0) + ply.OldFOV = 30 + end--]] return { origin = train.CamPos, - angles = train.CamAngles, - fov = train.MirrorCams[3], + angles = target_ang, + fov = 30, + znear = znear, + zfar = zfar } else - train.CamPos = train:LocalToWorld(train.MirrorCams[4]) - train.CamAngles = train:LocalToWorldAngles(train.MirrorCams[5]) + local target_ang = (train:GetAngles() + Angle(2,0,0)) + target_ang:RotateAroundAxis(train:GetAngles():Up(),180) + train.CamPos = train:LocalToWorld(Vector(475,-80,30)) + train.CamAngles = target_ang + --[[ if ply.OldFOV ~= 20 then + ply:SetFOV(20,0) + ply.OldFOV = 20 + end--]] return { origin = train.CamPos, - angles = train.CamAngles, - fov = train.MirrorCams[6], + angles = target_ang, + fov = 20, + znear = znear, + zfar = zfar } end elseif train.CurrentCamera > 0 and train.Cameras[train.CurrentCamera] then local camera = train.Cameras[train.CurrentCamera] train.CamPos = train:LocalToWorld(camera[1]) - local tFov = tbl.fov/C_FovDesired:GetFloat()*C_CabFOV:GetFloat() + local tFov = fov/C_FovDesired:GetFloat()*C_CabFOV:GetFloat() + --ply:SetFOV(tFov,0) return { origin = train.CamPos, - angles = tbl.angles,--+train:LocalToWorldAngles(camera[2]), + angles = ang,--+train:LocalToWorldAngles(camera[2]), fov = tFov, + znear = znear, + zfar = zfar } else - - train.CamPos = train:LocalToWorld(train:WorldToLocal(tbl.origin)+Vector(train.HeadAcceleration,0,C_CabZ:GetFloat())) - local tFov = tbl.fov/C_FovDesired:GetFloat()*C_CabFOV:GetFloat() + --train.HeadAcceleration = GetConVarNumber("metrostroi_disablecamaccel") == 0 and math.Clamp((train.HeadAcceleration or 0)*0.95 + (train:GetNW2Float("Accel"))*1.1, -10, 10) or 0 +--function ENT:Animate(clientProp, value, min, max, speed, damping, stickyness) + --print(train:GetNW2Float("Accel")*1.1,train:Animate("accel",train:GetNW2Float("Accel")*1.1+5,-0,10, nil, nil, 64,2,4)) + --local headPos = train:WorldToLocal(pos) + train.CamPos = train:LocalToWorld(train:WorldToLocal(pos)+Vector(train.HeadAcceleration,0,0)) + local tFov = fov/C_FovDesired:GetFloat()*C_CabFOV:GetFloat() + --ply:SetFOV(tFov,0) + train.CamAngles = ang return { origin = train.CamPos, - angles = tbl.angles,--target_ang+train.CamAnglesComp, + angles = ang, fov = tFov, + znear = znear, + zfar = zfar } end return @@ -2223,7 +2063,6 @@ hook.Add("Think","metrostroi-cabin-panel",function() local train, outside = isValidTrainDriver(ply) if not IsValid(train) then return end - if gui.IsConsoleVisible() or gui.IsGameUIVisible() or IsValid(vgui.GetHoveredPanel()) and not vgui.IsHoveringWorld() and vgui.GetHoveredPanel():GetParent() ~= vgui.GetWorldPanel() then return end if train.ButtonMap ~= nil then canDrawCrosshair = true local plyaimvec @@ -2279,20 +2118,11 @@ hook.Add("Think","metrostroi-cabin-panel",function() if button then if ttdelay == 0 or CurTime() - lastAimButtonChange > ttdelay then if C_DrawDebug:GetInt() > 0 then - toolTipText,toolTipColor = button.ID,Color(255,0,255) + toolTipText,_,toolTipColor = button.ID,Color(255,0,255) elseif button.plombed then toolTipText,_,toolTipColor = button.plombed(train) else - toolTipText,toolTipColor = button.tooltip - end - --[[toolTipPosition = nil - if button.tooltipState then - local newTT,newTTpos = button.tooltipState(train) - toolTipText = toolTipText..newTT - toolTipPosition = Metrostroi.GetPhrase(newTTpos) - end]] - if GetConVarNumber("metrostroi_disablehovertextpos") == 0 and button.tooltipState and button.tooltip then - toolTipText = toolTipText..button.tooltipState(train) + toolTipText,_,toolTipColor = button.tooltip end end end @@ -2369,13 +2199,15 @@ end -- Args are player, IN_ enum and bool for press/release local function handleKeyEvent(ply,key,pressed) if not game.SinglePlayer() and not IsFirstTimePredicted() then return end - if gui.IsConsoleVisible() or gui.IsGameUIVisible() or IsValid(vgui.GetHoveredPanel()) and not vgui.IsHoveringWorld() and vgui.GetHoveredPanel():GetParent() ~= vgui.GetWorldPanel() then return end + + if gui.IsConsoleVisible() or gui.IsGameUIVisible() --[[ or vgui.GetHoveredPanel() and vgui.GetHoveredPanel():GetName() ~= "ContextMenu" and vgui.GetHoveredPanel():GetName() ~= "GModBase"--]] then return end if key ~= MOUSE_LEFT and key ~= MOUSE_RIGHT then return end local train, outside = isValidTrainDriver(ply) if not IsValid(train) then return end if train.ButtonMap == nil then return end if key == MOUSE_LEFT and not pressed then train:ClearButtons() end + if pressed then local button,x,y,system = findAimButton(ply,train) local plombed = false @@ -2484,7 +2316,7 @@ local oldTrain hook.Add( "HUDPaint", "metrostroi-draw-cameras", function() local train, outside = isValidTrainDriver(LocalPlayer()) if not IsValid(train) or not train.Cameras or outside then - if IsValid(oldTrain) then + if oldTrain then oldTrain.CurrentCamera = 0 if oldTrain.CamMoved then oldTrain:CamMoved() end oldTrain = nil @@ -2532,29 +2364,18 @@ hook.Add( "HUDPaint", "metrostroi-draw-crosshair-tooltip", function() end if toolTipText ~= nil then + local text1 = string.sub(toolTipText,1,string.find(toolTipText,"\n")) + local text2 = string.sub(toolTipText,string.find(toolTipText,"\n") or 1e9) surface.SetFont("MetrostroiLabels") local w,h = surface.GetTextSize("SomeText") local height = h*1.1 local texts = string.Explode("\n",toolTipText) surface.SetDrawColor(0,0,0,125) for i,v in ipairs(texts) do - local y = scrY/2+height*(i) if #v==0 then continue end local w2,h2 = surface.GetTextSize(v) surface.DrawRect(scrX/2-w2/2-5, scrY/2-h2/2+height*(i), w2+10, h2) - --[[if toolTipPosition and i==#texts then - local st,en = v:find(toolTipPosition) - local textSt,textEn = v:sub(1,st-1),v:sub(en+1,-1) - local x1 = 0-w2/2 - local x2 = surface.GetTextSize(textSt)-w2/2 - local x3 = surface.GetTextSize(textSt)+surface.GetTextSize(toolTipPosition)-w2/2 - draw.SimpleText(textSt,"MetrostroiLabels",scrX/2+x1,y, toolTipColor or Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(toolTipPosition,"MetrostroiLabels",scrX/2+x2,y, toolTipColor or Color(0,255,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(textEn,"MetrostroiLabels",scrX/2+x3,y, toolTipColor or Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(scrX/2+x2,y+h/2-3,scrX/2+x3,y+h/2-3,toolTipColor or Color(0,255,0),1) - else]] - draw.SimpleText(v,"MetrostroiLabels",scrX/2,y, toolTipColor or Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --end + draw.SimpleText(v,"MetrostroiLabels",scrX/2,scrY/2+height*(i), toolTipColor or Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end --[[ local w1 = surface.GetTextSize(text1) @@ -2574,22 +2395,12 @@ language.Add("SBoxLimit_train_limit","Wagons limit") -- Turn light on or off -------------------------------------------------------------------------------- function ENT:SetLightPower(index,power,brightness) - if self.HiddenLamps[index] then return end - local lightData = self.LightsOverride[index] or self.Lights[index] + local lightData = self.Lights[index] + self.GlowingLights = self.GlowingLights or {} + self.LightBrightness = self.LightBrightness or {} brightness = brightness or 1 - if lightData[1] == "glow" or lightData[1] == "light" then - if lightData.panel and not self.SpritesEnabled or lightData.aa and self.AAEnabled then return end - self.LightBrightness[index] = brightness * (lightData.brightness or 0.5) - if power and self.Sprites[index] then return end - self.Sprites[index] = nil - if not power then return end - self.Sprites[index] = util.GetPixelVisibleHandle() - lightData.mat = Metrostroi.MakeSpriteTexture((lightData.texture or "sprites/light_glow02"),lightData[1] == "light") - return - end - - if power and IsValid(self.GlowingLights[index]) then - if lightData[1] == "headlight" and IsValid(self.GlowingLights[index]) then + if (lightData[1] == "headlight") then + if (power and (not lightData.backlight or C_Shadows3:GetBool()) and IsValid(self.GlowingLights[index])) then -- Check if light already glowing if brightness ~= self.LightBrightness[index] then local light = self.GlowingLights[index] @@ -2598,45 +2409,18 @@ function ENT:SetLightPower(index,power,brightness) self.LightBrightness[index] = brightness end return - elseif (lightData[1] == "glow") or (lightData[1] == "light") then - local brightness = brightness * (lightData.brightness or 0.5) - if brightness ~= self.LightBrightness[index] then - local light = self.GlowingLights[index] - light:SetBrightness(brightness) - self.LightBrightness[index] = brightness - end - return - elseif lightData[1] == "dynamiclight" then - if brightness ~= self.LightBrightness[index] then - local light = self.GlowingLights[index] - light:SetLightStrength(brightness) - self.LightBrightness[index] = brightness - end - return end - end - if IsValid(self.GlowingLights[index]) then - self.GlowingLights[index]:Remove() + + -- Turn off light + if IsValid(self.GlowingLights[index]) then + self.GlowingLights[index]:Remove() + end end self.GlowingLights[index] = nil self.LightBrightness[index] = brightness - if not power then return end + -- Create light - if lightData[1] == "light" or lightData[1] == "glow" then - local light = ents.CreateClientside("gmod_train_sprite") - light:SetPos(self:LocalToWorld(lightData[2])) - --light:SetLocalAngles(lightData[3]) - - -- Set parameters - local brightness = brightness * (lightData.brightness or 0.5) - light:SetColor(lightData[4]) - light:SetBrightness(brightness) - light:SetTexture((lightData.texture or "sprites/light_glow02")..".vmt",lightData[1] == "light") - light:SetSize(lightData.scale or 1.0) - light:Set3D(false) - - self.GlowingLights[index] = light - elseif (lightData[1] == "headlight") and (not lightData.backlight or self.RedLights) and (not lightData.panellight or self.OtherLights) then + if (lightData[1] == "headlight") and (power and (not lightData.backlight or C_Shadows3:GetBool())) then local light = ProjectedTexture() light:SetPos(self:LocalToWorld(lightData[2])) light:SetAngles(self:LocalToWorldAngles(lightData[3])) @@ -2677,24 +2461,6 @@ function ENT:SetLightPower(index,power,brightness) light:Update() --"effects/flashlight/caustics" --light:Input("SpotlightTexture",nil,nil,lightData.texture or "effects/flashlight001") self.GlowingLights[index] = light - elseif lightData[1] == "dynamiclight" then - local light = ents.CreateClientside("gmod_train_dlight") - light:SetParent(self) - - -- Set position - light:SetLocalPos(lightData[2]) - --light:SetLocalAngles(lightData[3]) - - -- Set parameters - light:SetDColor(lightData[4]) - --light:SetKeyValue("style", 0) - light:SetSize(lightData.distance) - light:SetBrightness(lightData.brightness or 2) - light:SetLightStrength(brightness) - - -- Turn light on - light:Spawn() - self.GlowingLights[index] = light end end @@ -2717,5 +2483,4 @@ end concommand.Add("metrostroi_reload_client",function() Metrostroi.ReloadClientside = true timer.Simple(0.5,function() if Metrostroi.ReloadClientside then Metrostroi.ReloadClientside = false end end) -end,nil,"Reload all clientside models") -Metrostroi.OptimisationPatch() \ No newline at end of file +end,nil,"Reload all clientside models") \ No newline at end of file diff --git a/lua/entities/gmod_subway_base/init.lua b/lua/entities/gmod_subway_base/init.lua index 09e6777..0cc7701 100644 --- a/lua/entities/gmod_subway_base/init.lua +++ b/lua/entities/gmod_subway_base/init.lua @@ -84,7 +84,6 @@ function ENT:PostEntityPaste(ply,ent,createdEntities) end self.Owner = ply end - -------------------------------------------------------------------------------- function ENT:Initialize() self.Joints = {} @@ -134,12 +133,12 @@ function ENT:Initialize() self:LoadSystem("FailSim") + -- Initialize wire interface + self.WireIOSystems = self.WireIOSystems or { "KV", "ALSCoil", "Pneumatic"} + self.WireIOIgnoreList = self.WireIOIgnoreList or { + "ALSCoilEnabled", "ALSCoilRealF5" + } if Wire_CreateInputs then - -- Initialize wire interface - self.WireIOSystems = self.WireIOSystems or { "KV", "ALSCoil", "Pneumatic"} - self.WireIOIgnoreList = self.WireIOIgnoreList or { - "ALSCoilEnabled", "ALSCoilRealF5" - } local inputs = {} local outputs = {} local inputTypes = {} @@ -213,9 +212,6 @@ function ENT:Initialize() self.Inputs = WireLib.CreateSpecialInputs(self,inputs,inputTypes) self.Outputs = WireLib.CreateSpecialOutputs(self,outputs,outputTypes) - else - self.WireIOSystems = {} - self.WireIOIgnoreList = {} end -- Setup drivers controls @@ -264,8 +260,10 @@ function ENT:Initialize() -- Passenger related data (must be set by derived trains to allow boarding) self.LeftDoorsOpen = false --self.LeftDoorsBlocked = false + self.LeftDoorPositions = { Vector(0,0,0) } self.RightDoorsOpen = false --self.RightDoorsBlocked = false + self.RightDoorPositions = { Vector(0,0,0) } -- Get default train mass if IsValid(self:GetPhysicsObject()) then @@ -287,7 +285,6 @@ function ENT:Initialize() self:FindFineSkin() -- Initialize train systems self:PostInitializeSystems() - for k,v in pairs(self.CustomSpawnerUpdates) do if k ~= "BaseClass" then v(self) end end end function ENT:GetWagonNumber() return self.WagonNumber or self:EntIndex() @@ -337,7 +334,7 @@ function ENT:Use(ply) local tr = ply:GetEyeTrace() if not tr.Hit then return end local hitpos = self:WorldToLocal(tr.HitPos) - --print(hitpos) + print(hitpos) if self.InteractionZones and ply:GetPos():Distance(tr.HitPos) < 100 then for k,v in pairs(self.InteractionZones) do if hitpos:Distance(v.Pos) < v.Radius then @@ -479,9 +476,7 @@ function ENT:ElectricConnected(train,isRear) if rTIsFront and rC and rC.NoFrontEKK then return end if rC and conf and conf.EKKType ~= rC.EKKType then return end if rTIsFront and rT.FrontCoupledBogeyDisconnect or not rTIsFront and rT.RearCoupledBogeyDisconnect or self.RearCoupledBogeyDisconnect then return end - if not IsValid(self.RearCouple) or self.RearCouple:ElectricDisconnected() or ( - rT.FrontTrain == self and (not IsValid(rT.FrontCouple) or rT.FrontCouple:ElectricDisconnected()) - or rT.RearTrain == self and (not IsValid(rT.RearCouple) or rT.RearCouple:ElectricDisconnected())) then return end + if IsValid(self.RearCouple) and self.RearCouple:ElectricDisconnected() then return end else local fT = self.FrontTrain local fC = fT.SubwayTrain @@ -492,9 +487,7 @@ function ENT:ElectricConnected(train,isRear) if conf.NoFrontEKK or fTIsFront and fC and fC.NoFrontEKK then return end if fC and conf and conf.EKKType ~= fC.EKKType then return end if fTIsFront and fT.FrontCoupledBogeyDisconnect or not fTIsFront and fT.RearCoupledBogeyDisconnect or self.FrontCoupledBogeyDisconnect then return end - if IsValid(self.FrontCouple) and self.FrontCouple:ElectricDisconnected() or ( - fT.FrontTrain == self and (not IsValid(fT.FrontCouple) or fT.FrontCouple:ElectricDisconnected()) - or fT.RearTrain == self and (not IsValid(fT.RearCouple) or fT.RearCouple:ElectricDisconnected())) then return end + if IsValid(self.FrontCouple) and self.FrontCouple:ElectricDisconnected() then return end end return true end @@ -1491,7 +1484,7 @@ function ENT:OnKeyEvent(key,state,ply,helper) end end if self:IsModifier(key) then - if keyT.helper and (helper or keyT[1]) then + if keyT.helper then self:ButtonEvent(helper and keyT.helper or keyT[1],state,ply) elseif not helper then if state and keyT.def and not helper then @@ -1862,7 +1855,7 @@ function ENT:Think() end end local twVal = train:LeaderReadTrainWire(target) - if train.TrainWireInverts[twID] or wires[twID] == true then + if train.TrainWireInverts[twID] then if twVal <= 0 then wires[twID] = true elseif not wires[twID] or wires[twID] ~= true then @@ -1896,14 +1889,12 @@ function ENT:Think() end end end - if Wire_CreateInputs then - local readTrainWire = self.ReadTrainWire - for i=1,32 do - self.TriggerOutput(self,"TrainWire"..i,readTrainWire(self,i)) - end - self.TriggerOutput(self,"TrainWire35",readTrainWire(self,35)) - self.TriggerOutput(self,"TrainWire36",readTrainWire(self,36)) + local readTrainWire = self.ReadTrainWire + for i=1,32 do + self.TriggerOutput(self,"TrainWire"..i,readTrainWire(self,i)) end + self.TriggerOutput(self,"TrainWire35",readTrainWire(self,35)) + self.TriggerOutput(self,"TrainWire36",readTrainWire(self,36)) -- Calculate own speed and acceleration local speed,acceleration = 0,0 @@ -1931,32 +1922,7 @@ function ENT:Think() end self.Plombs.Init = nil end - if self.Electric and self.Electric.Overheat1 then - -- Draw overheat of the engines FIXME - local smoke_intensity = - self.Electric.Overheat1*((self.Electric.T1-200)/400) or - self.Electric.Overheat2*((self.Electric.T2-200)/400) or 0 - -- Generate smoke - self.PrevSmokeTime = self.PrevSmokeTime or CurTime() - if (smoke_intensity > 0.0) and (CurTime() - self.PrevSmokeTime > 0.5+4.0*(1-smoke_intensity)) then - self.PrevSmokeTime = CurTime() - - ParticleEffect("generic_smoke", - self:LocalToWorld(Vector(100*math.random(),40,-80)), - Angle(0,0,0),self) - end - end - - if (not self.SpritesTimer or CurTime()-self.SpritesTimer > 1) and self.GlowingLights then - for _,ply in ipairs(player.GetAll()) do - local inPVS = self:TestPVS(ply) - for _,light in pairs(self.GlowingLights) do - light:SetPreventTransmit(ply,not inPVS) - end - end - self.SpritesTimer = CurTime() - end --[[ -- Update speed and acceleration self.Speed = speed @@ -1978,8 +1944,6 @@ function ENT:Think() self:SetNW2Float("Accel",math.Round((self.OldSpeed or 0) - (self.Speed or 0)*(self.SpeedSign or 0),2)) self:SetNW2Float("TrainSpeed",self.Speed) self.OldSpeed = (self.Speed or 0)*(self.SpeedSign or 0) - - for k,v in pairs(self.CustomThinks) do if k ~= "BaseClass" then v(self) end end self:NextThink(CurTime()+0.05) return true end @@ -1998,7 +1962,7 @@ end -------------------------------------------------------------------------------- -- Default spawn function -------------------------------------------------------------------------------- -function ENT:SpawnFunction(ply, tr,className,rotate,func) +function ENT:SpawnFunction(ply, tr,className,rotate) --MaxTrains limit if self.ClassName ~= "gmod_subway_base" and not self.NoTrain then local Limit1 = math.min(2,GetConVarNumber("metrostroi_maxwagons"))*GetConVarNumber("metrostroi_maxtrains_onplayer")-1 @@ -2034,10 +1998,9 @@ function ENT:SpawnFunction(ply, tr,className,rotate,func) local pos, ang = nil local inhibitrerail = false - if func then - pos,ang = func(ply) --TODO: Make this work better for raw base ent - elseif tr.Hit and self.NoTrain then + + if tr.Hit and self.NoTrain then -- Regular spawn if tr.HitPos:Distance(tr.StartPos) > distancecap then -- Spawnpos is far away, put it at distancecap instead @@ -2109,15 +2072,11 @@ function ENT:OnButtonRelease(button) end -- Clears the serverside keybuffer and fires events -function ENT:ClearKeyBuffer(helper) +function ENT:ClearKeyBuffer() for k,v in pairs(self.KeyBuffer) do local button = self.KeyMap[k] if button ~= nil then - if helper then - if type(button) == "table" and button.helper then - self:ButtonEvent(button.helper,false) - end - elseif type(button) == "string" then + if type(button) == "string" then self:ButtonEvent(button,false) else --Check modifiers as well @@ -2147,9 +2106,11 @@ end function ENT:ButtonEvent(button,state,ply) if ShouldFireEvents(self.ButtonBuffer[button],state) then - if state == false and not self:OnButtonRelease(button,ply) then + if state == false then + if self:OnButtonRelease(button,ply) then return end self:TriggerInput(button,0.0) - elseif state ~= false and not self:OnButtonPress(button,ply) then + else + if self:OnButtonPress(button,ply) then return end self:TriggerInput(button,1.0) if self.Plombs and button:sub(-2,-1) == "Pl" and self.Plombs[button:sub(1,-3)] then local plomb = self.Plombs[button:sub(1,-3)] @@ -2219,7 +2180,7 @@ net.Receive("metrostroi-panel-touch", function(len, ply) -- Player currently driving train = seat:GetNW2Entity("TrainEntity") if (not train) or (not train:IsValid()) then return end - if (seat != train.DriverSeat) and (seat != train.InstructorsSeat) and (not train.CPPICanPhysgun or not train:CPPICanPhysgun(ply)) then return end + if (seat != train.DriverSeat) and (seat != train.InstructorsSeat) and not train:CPPICanPhysgun(ply) then return end else -- Player not driving, check recent train train = IsValid(ply.lastVehicleDriven) and ply.lastVehicleDriven:GetNW2Entity("TrainEntity") or NULL @@ -2260,8 +2221,7 @@ local function HandleExitingPlayer(ply, vehicle) local train = vehicle:GetNW2Entity("TrainEntity") if IsValid(train) then - ply.lastTrain = train - ply.lastTrainSeat = vehicle + -- Move exiting player local seattype = vehicle:GetNW2String("SeatType") local offset @@ -2280,7 +2240,7 @@ local function HandleExitingPlayer(ply, vehicle) ply:SetEyeAngles(vehicle:GetForward():Angle()) -- Server - train:ClearKeyBuffer(seattype) + train:ClearKeyBuffer() -- Client net.Start("metrostroi-cabin-reset") net.WriteEntity(train) @@ -2321,6 +2281,14 @@ hook.Add("JoystickInitialize","metroistroi_cabin",JoystickRegister) hook.Add("PlayerLeaveVehicle", "gmod_subway_81-717-cabin-exit", HandleExitingPlayer ) hook.Add("CanPlayerEnterVehicle","gmod_subway_81-717-cabin-entry", CanPlayerEnter ) +net.Receive("MetrostroiBindPress",function() + local ent = net.ReadEntity() + local bind = net.ReadString() + if IsValid(ent) and ent.OnKeyEvent then + ent:OnKeyEvent(bind,true) + ent:OnKeyEvent(bind,false) + end +end) function ENT:BrokePlomb(but,ply,nosnd) if ply then local nomsg,noplomb = hook.Run("MetrostroiPlombBroken",self,but,ply) @@ -2421,7 +2389,6 @@ function ENT:UpdateWagonNumber() end -- Common functions for RKSU(81-71) trains -------------------------------------------------------------------------------- function ENT:GenerateJerks() - if not IsValid(self.FrontBogey) or not IsValid(self.RearBogey) then return end local jerk = math.abs((self.Acceleration - (self.PrevAcceleration or 0)) / self.DeltaTime) local roll = self:GetLocalAngles().roll @@ -2484,100 +2451,4 @@ if game.SinglePlayer() then net.WriteUInt(button,16) net.Send(ply) end) -end - - - --[[ - if self:GetWagonNumber() == 0000 or self:EntIndex()==1531 then --DEBUG - local accel = 0 - for i=1,#self.WagonList do - accel=accel+self.WagonList[i].Acceleration - end - local drivers = {self.DriverSeat,self.InstructorsSeat,self.ExtraSeat1,self.ExtraSeat2} - if math.abs(accel) > 0.1 then - for k,v in pairs(drivers) do - if IsValid(v) and IsValid(v:GetDriver()) then - v:GetDriver():ChatPrint(Format("v=%.2f I=%.2f RK=%02d a=%.2f",self.Speed,(self.Electric.I13+self.Electric.I24)/2,self.RheostatController.SelectedPosition or 0,accel/#self.WagonList))--(accel/#self.WagonList))) - end - end - end - end - self.TestA = self.TestA or nil - self.TestV = self.TestV or nil - local accel = self.Acceleration - if (self.Speed > 75 or self.Speed > 20 and self.Speed < 60) and accel < -0.5 and not self.TestA then - self.TestA = CurTime() - self.TestV = self.Speed/3600*1000 - self.TestTyp = self.Speed > 55 and 2 or 1 - self.TestS = 0 - end - if accel > -0.5 and self.TestA then - self.TestA = nil - self.TestV = nil - self.TestS = nil - end - - if self:GetWagonNumber() == 0000 or self:EntIndex()==0065 then --DEBUG - local accel = 0 - for i=1,#self.WagonList do - accel=accel+self.WagonList[i].Acceleration - end - local drivers = {self.DriverSeat,self.InstructorsSeat,self.ExtraSeat1,self.ExtraSeat2} - if math.abs(accel) > 0.1 then - for k,v in pairs(drivers) do - if IsValid(v) and IsValid(v:GetDriver()) then - v:GetDriver():ChatPrint(Format("v=%.2f I=%.2f RK=%02d a=%.2f",self.Speed,(self.Electric.I13+self.Electric.I24)/2,self.RheostatController.SelectedPosition or 0,accel/#self.WagonList))--(accel/#self.WagonList))) - end - end - end - end - if self.TestS then self.TestS=self.TestS+self.Speed*self.SpeedSign/3600*1000*self.DeltaTime end - if (self.Speed<2 and self.TestTyp ==2 or self.Speed<2 and self.TestTyp ==1) and self.TestA then - local curSpeed = self.Speed/3600*1000 - local a = (curSpeed-self.TestV)/(CurTime()-self.TestA) - RunConsoleCommand("say",Format("[%05d]V0= %.1f V1=%.1f t=%.2f a=%.2f s=%.1f",self:GetWagonNumber(),self.TestV*3600/1000,curSpeed*3600/1000,CurTime()-self.TestA,a,self.TestS)) - - - self.TestA = nil - self.TestV = nil - self.TestS = nil - end--]] - --[[ - if (self.Speed < 20 or self.Speed < 70) and accel > 0.1 and not self.TestA then - self.TestA = CurTime() - self.TestV = self.Speed/3600*1000 - self.TestTyp = self.Speed > 60 and 2 or self.Speed > 30 and 1 or 0 - print("!!!",self.TestTyp) - self.TestS = 0 - end - if self.TestA and self.KV.ControllerPosition<=0 and (self.Speed<0.1 or self.Speed<1 and self.TestA>0) then - self.TestA = nil - self.TestV = nil - self.TestS = nil - end - if self.TestS then self.TestS=self.TestS+self.Speed*self.SpeedSign/3600*1000*dT end - if (self.Speed>=30 and self.TestTyp ==0 or self.Speed>=60 and self.TestTyp ==1 or self.Speed>=80 and self.TestTyp ==2) and self.TestA then - local curSpeed = self.Speed/3600*1000 - local a = (curSpeed-self.TestV)/(CurTime()-self.TestA) - RunConsoleCommand("say",Format("[%05d]V0= %.1f V1=%.1f t=%.2f a=%.2f",self:GetWagonNumber(),self.TestV*3600/1000,curSpeed*3600/1000,CurTime()-self.TestA,a)) - - - self.TestA = nil - self.TestV = nil - self.TestS = nil - end - if self:GetWagonNumber() == 0000 then --DEBUG - local accel = 0 - for i=1,#self.WagonList do - accel=accel+self.WagonList[i].Acceleration - end - - if math.abs(accel) > 0.1 then - Player(6):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) - Player(7):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) - Player(9):ChatPrint(Format("v=%.2f I=%.2f",self.Speed,(accel/#self.WagonList))) - end - end--]] - - -Metrostroi.OptimisationPatch() \ No newline at end of file +end \ No newline at end of file diff --git a/lua/entities/gmod_subway_base/shared.lua b/lua/entities/gmod_subway_base/shared.lua index b5c31b2..05b75e0 100644 --- a/lua/entities/gmod_subway_base/shared.lua +++ b/lua/entities/gmod_subway_base/shared.lua @@ -9,17 +9,6 @@ ENT.Category = "Metrostroi (utility)" ENT.Spawnable = true ENT.AdminSpawnable = false - -ENT.CustomThinks = ENT.CustomThinks or {} -ENT.CustomSpawnerUpdates = ENT.CustomSpawnerUpdates or {} - -local function destroySound(snd,nogc) - if IsValid(snd) then snd:Stop() end - if not nogc and snd and snd.__gc then snd:__gc() end -end -function ENT:DestroySound(snd,nogc) - destroySound(snd,nogc) -end -------------------------------------------------------------------------------- -- Default initializer only loads up DURA -------------------------------------------------------------------------------- @@ -42,13 +31,6 @@ end function ENT:BoardPassengers(delta) self:SetNW2Float("PassengerCount", math.max(0,math.min(self:PassengerCapacity(),self:GetNW2Float("PassengerCount") + delta))) end - -ENT.LeftDoorPositions = { Vector(0,0,0) } -ENT.RightDoorPositions = { Vector(0,0,0) } -ENT.MirrorCams = { - Vector(450,71,24),Angle(1,180,0),15, - Vector(450,-71,24),Angle(1,180,0),15, -} -------------------------------------------------------------------------------- -- Load/define basic sounds -------------------------------------------------------------------------------- @@ -217,28 +199,39 @@ local function PauseBASS(snd) snd:Pause() snd:SetTime(0) end -function ENT:CreateBASSSound(name,callback,noblock,onerr) - if self.StopSounds or not self.ClientPropsInitialized or self.CreatingCSEnts then return end +function ENT:CreateBASSSound(name,callback) + if self.StopSounds then return end --if self.SoundSpawned and name:find(".wav") then return end --self.SoundSpawned = true - sound.PlayFile(Sound("sound/"..name), "3d noplay mono"..(noblock and " noblock" or ""), function( snd,err,errName ) - if not IsValid(self) then destroySound(snd) return end + sound.PlayFile(Sound("sound/"..name), "3d noplay mono", function( snd,err,errName ) if err then - self:DestroySound(snd) - if err == 4 or err == 37 then self.StopSounds = true end - if err ~= 41 then - MsgC(Color(255,0,0),Format("Sound:%s\n\tErrCode:%s, ErrName:%s\n",name,err,errName)) - if onerr then callback(false) end - elseif GetConVarNumber("metrostroi_drawdebug") ~= 0 then - MsgC(Color(255,255,0),Format("Sound:%s\n\tBASS_ERROR_UNKNOWN (it's normal),ErrCode:%s, ErrName:%s\n",name,err,errName)) - self:CreateBASSSound(name,callback) + if snd then + --if snd and snd.Remove then snd:Remove() end end + if err == 4 or err == 37 then self.StopSounds = true end + MsgC(Color(255,0,0),Format("Sound:%s\n\tErrCode:%s, ErrName:%s,\n",name,err,errName)) return - elseif not self.Sounds then - self:DestroySound(snd) - if onerr then callback(false) end - else + end + if self.Sounds and not err and ( IsValid( snd ) ) then callback(snd) + --[[snd:SetPos(self:GetNW2Entity("seat_driver"):GetPos()) + snd:SetPlaybackRate(pitch) + snd:SetVolume(volume) + if looptbl then + snd:EnableLooping(looptbl.loop == true or looptbl.loop == looptbl.state) + if #looptbl > 2 then + self.Sounds[snd] = looptbl + looptbl.state = (looptbl.state or 1)+1 + looptbl.callback = function() + self:SetSoundState(soundid,volume,pitch) + end + if looptbl.state > #looptbl-1 then looptbl.state = nil end + end + end + --if esnd[5] then + snd:Set3DFadeDistance(200,1e9) + --end + snd:Play()]] end end ) end @@ -287,9 +280,7 @@ function ENT:SetBassParameters(snd,pitch,volume,tbl,looping,spec) --debugoverlay.Sphere(snd:GetPos(),siz2,2,Color(0,0,255,100),false) end function ENT:SetSoundState(soundid,volume,pitch,time) - --volume = (input.IsKeyDown( KEY_LALT ) and soundid == "horn") and 0 or 1+math.sin(CurTime()*3)*0.2 - --pitch = (input.IsKeyDown( KEY_LALT ) and soundid == "horn") and 1 or 1+math.sin(CurTime()*3)*0.2 - if self.StopSounds or not self.ClientPropsInitialized or self.CreatingCSEnts then return end + if self.StopSounds then return end local name = self.SoundNames and self.SoundNames[soundid] local tbl = self.SoundPositions[soundid] local looptbl = type(name) == "table" and name @@ -300,20 +291,17 @@ function ENT:SetSoundState(soundid,volume,pitch,time) if pitch > 0 then sndtbl.pitch = pitch end for i,v in ipairs(name) do if not sndtbl[i] then sndtbl[i] = {} end - if not IsValid(sndtbl[i].sound) and sndtbl[i].sound ~= false then + if not IsValid(sndtbl[i].sound) then + if not IsValid(sndtbl[i].sound) and sndtbl[i].sound and sndtbl[i].sound.Remove then + sndtbl[i].sound:Remove() + end self:CreateBASSSound(v,function(snd) - if not snd then - destroySound(sndtbl[i].sound) - sndtbl[i].sound = nil - return - end - - snd:SetPos(self:LocalToWorld(tbl[3]),self:GetAngles():Forward()) + if not IsValid(self) then return end + snd:SetPos(self:LocalToWorld(tbl[3]),self:GetAngles():Forward()) sndtbl[i].sound = snd sndtbl[i].volume = volume > 0 and sndtbl.volume or volume or 0 self:SetBassParameters(snd,pitch,sndtbl[i].volume,tbl,i==2) - end,true,true) - sndtbl[i].sound = false + end) end end local state = volume > 0 @@ -326,23 +314,18 @@ function ENT:SetSoundState(soundid,volume,pitch,time) end else if looptbl then name = name[1] end - local snd = self.Sounds[soundid] - if not IsValid(snd) and name and snd ~= false then + local oldsnd = self.Sounds[soundid] + if not IsValid(oldsnd) and name then + if not IsValid(oldsnd) and oldsnd and oldsnd.Remove then + oldsnd:Remove() + end self:CreateBASSSound(name,function(snd) - if not snd then - destroySound(self.Sounds[soundid]) - self.Sounds[soundid] = nil - return - end - self.Sounds[soundid] = snd - self.Sounds.isloop[soundid] = true self:SetBassParameters(snd,pitch,volume,tbl,looptbl and looptbl.loop) - end,true,true) - self.Sounds[soundid] = false + end) return end - + local snd = self.Sounds[soundid] if not IsValid(snd) then return end local default_range = 0.80 if ((volume <= 0) or (pitch <= 0)) then @@ -352,10 +335,10 @@ function ENT:SetSoundState(soundid,volume,pitch,time) return end if snd:GetState() ~= GMOD_CHANNEL_PLAYING then - if timeout then + snd:Play() + if time then snd:SetTime(time) end - snd:Play() end snd:SetPlaybackRate(pitch) if tbl and tbl[4] then @@ -427,8 +410,9 @@ if SERVER then end else function ENT:PlayOnceFromPos(id,sndname,volume,pitch,min,max,location) - if self.StopSounds or not self.ClientPropsInitialized or self.CreatingCSEnts then return end - self:DestroySound(self.Sounds[id],true) + if self.StopSounds then return end + if IsValid(self.Sounds[id]) then self.Sounds[id]:Stop() end + if self.Sounds[id] and self.Sounds[id].Remove then self.Sounds[id]:Remove() end self.Sounds[id] = nil if sndname == "_STOP" then return end self.SoundPositions[id] = {min,max,location} @@ -439,7 +423,7 @@ else end) end function ENT:PlayOnce(soundid,location,range,pitch,randoff) - if self.StopSounds or not self.ClientPropsInitialized or self.CreatingCSEnts then return end + if self.StopSounds then return end if not soundid then ErrorNoHalt(debug.Trace()) end @@ -452,23 +436,15 @@ else local soundname = self.SoundNames[soundid] if not soundname then print("NO SOUND",soundname,soundid) continue end if type(soundname) == "table" then soundname = table.Random(soundname) end + if not soundname then ErrorNoHalt(Format("WTF loop sound nil %s %s\n",soundid)) end if IsValid(self.ClientEnts[esnd[1]]) and not self.ClientEnts[esnd[1]].snd then local ent = self.ClientEnts[esnd[1]] - sound.PlayFile( "sound/"..soundname, "3d noplay mono", function( snd,err,errName ) - if not IsValid(self) then destroySound(snd) return end - if err then - self:DestroySound(snd) - if err == 4 or err == 37 then self.StopSounds = true end - if err ~= 41 then - MsgC(Color(255,0,0),Format("Sound:%s\n\tErrCode:%s, ErrName:%s\n",name,err,errName)) - elseif GetConVarNumber("metrostroi_drawdebug") ~= 0 then - MsgC(Color(255,255,0),Format("Sound:%s\n\tBASS_ERROR_UNKNOWN (it's normal),ErrCode:%s, ErrName:%s\n",name,err,errName)) - --self:PlayOnce(soundid,location,range,pitch,randoff) + sound.PlayFile( "sound/"..soundname, "3d noplay mono noblock", function( snd,err,errName ) + if not err and IsValid(ent) and IsValid( snd ) then + if err then + MsgC(Color(255,0,0),Format("Sound:%s\n\tErrCode:%s, ErrName:%s,\n",name,err,errName)) + if err == 4 then self.StopSounds = true end end - return - elseif not IsValid(ent) then - self:DestroySound(snd) - else snd:SetPos(ent:GetPos(),ent:LocalToWorldAngles(esnd[7]):Forward()) snd:SetPlaybackRate(esnd[4]) snd:SetVolume(esnd[3]) @@ -497,9 +473,9 @@ else return end - if IsValid(self.Sounds[soundid]) then - self:DestroySound(self.Sounds[soundid]) - self.Sounds[soundid] = nil + if IsValid(self.Sounds[soundid]) then self.Sounds[soundid]:Stop() end + if not IsValid(self.Sounds[soundid]) and self.Sounds[soundid] and self.Sounds[soundid].Remove then + self.Sounds[soundid]:Remove() end self:CreateBASSSound(soundname,function(snd) self.Sounds[soundid] = snd @@ -612,13 +588,13 @@ end ENT.SubwayTrain = { - Type = "Base", - Name = "Base", - WagType = 2, - ALS = { - HaveAutostop = false, - TwoToSix = true, - RSAs325Hz = true, - Aproove0As325Hz = false, - }, + Type = "Base", + Name = "Base", + WagType = 2, + ALS = { + HaveAutostop = false, + TwoToSix = true, + RSAs325Hz = true, + Aproove0As325Hz = false, + }, } \ No newline at end of file diff --git a/lua/entities/gmod_subway_em508/cl_init.lua b/lua/entities/gmod_subway_em508/cl_init.lua deleted file mode 100644 index 798b981..0000000 --- a/lua/entities/gmod_subway_em508/cl_init.lua +++ /dev/null @@ -1,1978 +0,0 @@ --------------------------------------------------------------------------------- --- All the models, materials, sounds belong to their corresponding authors. Permission is granted to only distribute these models through Garry's Mod Steam Workshop and the official Metrostroi GitHub accounts for use with Garry's Mod and Metrostroi Subway Simulator. --- --- It is forbidden to use any of these models, materials, sounds and other content for any commercial purposes without an explicit permission from the authors. It is forbidden to make any changes in these files in any derivative projects without an explicit permission from the author. --- --- The following models are (C) 2015-2018 oldy (Aleksandr Kravchenko). All rights reserved. --- models\metrostroi_train\81-502: --- - 81-502 (Ema-502 head) --- - 81-501 (Em-501 intermediate) --- models\metrostroi_train\81-702: --- - 81-702 (D head) --- - 81-702 (D intermediate) --- models\metrostroi_train\81-703: --- - 81-703 (E head) --- - 81-508 (E intermediate) --- models\metrostroi_train\81-707: --- - 81-707 (Ezh head) --- - 81-708 (Ezh1 intermediate) --- models\metrostroi_train\81-710: --- - 81-710 (Ezh3 head) --- - 81-508T (Em-508T intermediate) --- models\metrostroi_train\81-717: --- - 81-717 (Moscow head) --- - 81-714 (Moscow intermediate) --- - 81-717 (St. Petersburg head) --- - 81-714 (St. Petersburg intermediate) --- models\metrostroi_train\81-718: --- - 81-718 (TISU head) --- - 81-719 (TISU intermediate) --- models\metrostroi_train\81-720: --- - 81-720 (Yauza head) --- - 81-721 (Yauza intermediate) --- - 81-722 (Yubileyniy head) --- models\metrostroi_train\81-722: --- - 81-723 (Yubileyniy intermediate motor) --- - 81-724 (Yubileyniy intermediate trailer) --------------------------------------------------------------------------------- -include("shared.lua") - ----Вагон типа Еж --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} - -ENT.ButtonMap["Main1"] = { - pos = Vector(455.5,-31.2,-11.2+0.2), - ang = Angle(0,-90,11.5), - width = 285, - height = 180, - scale = 0.0588, - hideseat = 0.2, - - buttons = { - {ID = "KU8Set", x=88,y=35, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", z=-12,vmin=1, vmax=0, - var="KU8",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU10Set", x=187, y=35, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-12,vmin=1, vmax=0, - var="KU10",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU9Set", x=138,y=35, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-9,vmin=1, vmax=0, - var="KU9",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU2Toggle", x=227, y=29,w=42,h=55, tooltip="", model = { - model = "models/metrostroi_train/switches/vudblack.mdl", z=-21, - var="KU2",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, - }}, - - - - {ID = "KU15Set", x=15,y=40,w=42,h=55, tooltip="", model = { - model = "models/metrostroi_train/switches/vudblack.mdl", z=-21, - var="KU15",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - - {ID = "KU1Toggle", x=88,y=80, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-20,scale=0.85,ang=90, - var="KU1",speed=16, - sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "KU11Set", x=138,y=87, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", z=-9,vmin=1, vmax=0, - var="KU11",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - - - {ID = "KU4Set", x=36.5, y=137, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-12,vmin=1, vmax=0, - var="KU4",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU5Set", x=89, y=137, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", z=-12,vmin=1, vmax=0, - var="KU5",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - - {ID = "UV1Set", x=138, y=136, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-12,vmin=1, vmax=0, - var="UV1",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - - - ----Door panel - {ID = "KU6Set", x=188, y=136, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-12,vmin=1, vmax=0, - var="KU6",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU7Set", x=248, y=136, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", z=-12,vmin=1, vmax=0, - var="KU7",speed=16, - sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "KU6KToggle",x=190, y=81, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-20,scale=0.85, - var="KU6K",speed=6,ang=0, - disableoff="KU6Set",disableon="KU7Set", - getfunc = function(ent) - return ent:GetPackedBool("KU6K") and (ent:GetPackedBool("KU6") and 0.8 or 1) or (ent:GetPackedBool("KU7") and 0.2 or 0) - end, - sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} - }}, - {ID = "!KU6K",x=188, y=136, radius=0, model = { - model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2.5,y=-30,vmin=0.83,vmax=1, - var="KU6K",speed=1, - sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - {ID = "!KU7K",x=248, y=136, radius=0, model = { - model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2.5,y=-30,vmin=0,vmax=0.17, - var="KU6K",speed=1, - sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - --{ID = "DoorSelectToggle", x=43.6+43*4.5, y=180, radius=12, tooltip=""}, - } -} - -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} -ENT.ButtonMap["Lamps"] = { - pos = Vector(457.8 ,-30.1-1,-7.4), - ang = Angle(0,-90,90-30), - width = 290, - height = 70, - scale = 0.0588, - hideseat=0.2, - - buttons = { - {ID = "!GRP", x=13+20+0*25+12,y=6, w=50-24,h=50, tooltip="", model = { - lamp = {model = "",bscale=Vector(1.2,0.6,1),z = -45, var="GRP"} - }}, - {ID = "!LSN", x=13+20+1*25+12,y=6, w=50-24,h=50, tooltip="", model = { - lamp = {model = "",bscale=Vector(1.2,0.6,1),z = -45,var="SN",getfunc = function(ent) return ent:GetPackedRatio("RRP")^2*1.01 end} - }}, - {ID = "!RRP", x=13+20+2*25+12,y=6, w=50-24,h=50, tooltip="", model = { - lamp = {model = "",bscale=Vector(1.2,0.6,1),z = -45,var="RP",getfunc = function(ent) return math.Clamp((ent:GetPackedRatio("RRP")-0.45)*7,0,1) end} - }}, - {ID = "!Speedometer1",x=110-6+12,y=9,w=50-24,h=50,tooltip="",model = { - name="Speed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(250,50,20),skin=0,z=-40,ang=Angle(0,0,-90), tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(250,50,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("V1") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*10)%10] - end}, - }}, - {ID = "!Speedometer2",x=110+6+12,y=9,w=50-24,h=50,tooltip="",model = { - name="Speed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",color=Color(250,50,20),skin=0,z=-40,ang=Angle(0,0,-90), tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end, - sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(250,50,20),aa=true,getfunc= function(ent) - if not ent:GetPackedBool("V1") then return 0 end - return strength[math.floor(ent:GetPackedRatio("Speed")*100)%10] - end}, - }}, - {ID = "!SD", x=43+20+3*25+12,y=6, w=50-24,h=50, tooltip="", model = { - lamp = {model = "",bscale=Vector(1.2,0.6,1),z = -45, var="SD",} - }}, - {ID = "!UKS", x=43+20+4*25+12,y=6, w=50-24,h=50, tooltip="", model = { - lamp = {model = "",bscale=Vector(1.2,0.6,1),z = -45, var="UKS",} - }}, - - - { ID = "KU16Toggle", x=255, y=49, radius=10, tooltip="", model = { - model = "models/metrostroi_train/81-502/buttons/tumbler_w_a.mdl",ang = 180,z=-2, - var="KU16",speed=16, - sndvol = 1, snd = function(val) return val and "pnm_on" or "pnm_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["PanelLamp"] = { - pos = Vector(453.7,-57.31,42), - ang = Angle(180,275,-5), - width = 100, - height = 200, - scale = 0.0588, - - buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, - } -} - -ENT.ButtonMap["AVU"] = { - pos = Vector(462.9,-19,35.5), - ang = Angle(0,-95.5,90), - width = 95, - height = 85, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - { ID = "OtklAVUToggle", x=48, y=51, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-2, - var="OtklAVU",speed=16, - plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=-1,y=24,z=-2,var="OtklAVUPl", ID="OtklAVUPl",}, - sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "!AVULight", x=69, y=51, radius=10, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 3, z = -4, - lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(210,170,255),}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255),}, - }}, - } -} -ENT.ClientProps["asotp"] = { - model = "models/metrostroi_train/81-707/asotp.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat = 1, -} -ENT.ButtonMap["ASNP"] = { - pos = Vector(461.42,-35.2,36.4), - ang = Angle(-0.4,-97,90), - width = 115, - height = 60, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "R_ASNPMenuSet",x=58, y=48.5, radius=8, tooltip = "Информатор: Меню",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPMenu",speed=12, vmin=0, vmax=0.9,z=-3, - sndvol = 0.5,snd = function(val) return val and "pnm_button1_on" or "pnm_button1_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPUpSet",x=105, y=14.5, radius=8, tooltip = "Информатор: Вверх",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPUp",speed=12, vmin=0, vmax=0.9,z=-3, - sndvol = 0.5,snd = function(val) return val and "pnm_button1_on" or "pnm_button2_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPDownSet",x=105, y=31, radius=8, tooltip = "Информатор: Вниз",model = { - model = "models/metrostroi_train/81-720/button_round.mdl", - var="R_ASNPDown",speed=12, vmin=0, vmax=0.9,z=-3, - sndvol = 0.5,snd = function(val) return val and "pnm_button2_on" or "pnm_button1_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "R_ASNPOnToggle",x=12, y=18, radius=8, tooltip = "Информатор: Включение",model = { - model = "models/metrostroi_train/81-720/tumbler2.mdl", ang=0, z = -3, - var="R_ASNPOn",speed=12, vmin=1, vmax=0, - sndvol = 0.5,snd = function(val) return val and "pnm_on" or "pnm_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["ASNPScreen"] = { - pos = ENT.ButtonMap["ASNP"].pos+Vector(-0.1,-1.6,-0.85), - ang = Angle(-.4,-97,90), - width = 512, - height = 128, - scale = 0.008, - hideseat = 0.2, - hide=true, -} - - -ENT.ButtonMap["IGLAButtons"] = { - pos = Vector(459.1,-53.7,15.81+1), - ang = Angle(-0,237.1,90), - width = 87, - height = 70, - scale = 0.0625, - hideseat = 0.2, - buttons = { - {ID = "IGLA1USet",x=11, y=39, w=12, h=7, tooltip=""}, - {ID = "IGLA1Set",x=11, y=46, w=12, h=7, tooltip=""}, - {ID = "IGLA1DSet",x=11, y=53, w=12, h=7, tooltip=""}, - {ID = "IGLA2USet",x=65, y=39, w=12, h=7, tooltip=""}, - {ID = "IGLA2Set",x=65, y=46, w=12, h=7, tooltip=""}, - {ID = "IGLA2DSet",x=65, y=53, w=12, h=7, tooltip=""}, - {ID = "!IGLASR",x=17.9, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLASR",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} - }}, - {ID = "!IGLARX",x=27.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLARX",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} - }}, - {ID = "!IGLAErr",x=40.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAErr",color=Color(255,168,000),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-1,} - }}, - {ID = "!IGLAOSP",x=50, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOSP",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} - }}, - {ID = "!IGLAPI",x=59.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAPI",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} - }}, - {ID = "!IGLAOff",x=69, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOff",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} - }}, - } -} -ENT.ButtonMap["IGLA"] = { - pos = ENT.ButtonMap["IGLAButtons"].pos+Vector(-0.30,-0.6,-1.25), - ang = ENT.ButtonMap["IGLAButtons"].ang, - width = 512, - height = 128, - scale = 0.025/2.7, - hideseat = 0.2, - hide=true, - -} -ENT.ClientProps["E_informator"] = { - model = "models/metrostroi_train/equipment/rri_informator_portable.mdl", - pos = Vector(404.75,-38,-4.2), - ang = Angle(0,0,0), - hideseat = 0.2, -} -ENT.ButtonMap["RRI"] = { - pos = ENT.ClientProps["E_informator"].pos+Vector(-0.65,-0.5,5), - ang = Angle(0,90,0), - width = 60, - height = 25, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "RRIEnableToggle",x=10,y=12.5,radius=10,tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-4, - var="RRIEnable",speed=16, - sndvol = 1,snd = function(val) return val and "switchbl_on" or "switchbl_off" end, - sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - {ID = "!RRIRewind",x=30,y=12.5,radius=0,model = { - model = "models/metrostroi_train/81-502/buttons/tumbler_b_a.mdl",ang = 180,z=-3, - getfunc = function(ent) return ent:GetPackedRatio("RRIRewind") end, - var="RRIRewind",speed=8, - sndvol = 0.5,snd = function(_,val) return val==2 and "triple_0-up" or val==0 and "triple_0-down" or "triple_up-0" end, - sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - {ID = "RRIRewindSet2",x=30-5,y=12.5-10,w=10,h=10,tooltip=""}, - {ID = "RRIRewindSet0",x=30-5,y=12.5,w=10,h=10,tooltip=""}, - - {ID = "RRIAmplifierToggle",x=50,y=12.5,radius=10,tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-4, - var="RRIAmplifier",speed=16, - sndvol = 1,snd = function(val) return val and "switchbl_on" or "switchbl_off" end, - sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - {ID = "!RRIOn",x=70,y=12.5,radius=10,tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13, - lamp = { model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255), getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255),}, - }}, - } -} -ENT.ButtonMap["RRIScreen"] = { - pos = ENT.ClientProps["E_informator"].pos+Vector(2,-2.9,5), - ang = Angle(0,90,90), - width = 121, - height = 103, - scale = 0.07, - hideseat = 0.2, - hide=true, - - buttons = { - {ID = "RRIUp",x=30,y=60,radius=10,tooltip=""}, - {ID = "RRIDown",x=30,y=80,radius=10,tooltip=""}, - {ID = "RRILeft",x=20,y=70,radius=10,tooltip=""}, - {ID = "RRIRight",x=40,y=70,radius=10,tooltip=""}, - } -} - ---VU Panel -ENT.ButtonMap["VU"] = { - pos = Vector(464.20,-17,20), - ang = Angle(0,268,90), - width = 70, - height = 100, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "VUToggle", x=0, y=0, w=70, h=100, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=-8, ang = 180, - labels={{model="models/metrostroi_train/81-502/labels/vu_labels.mdl",skin=0,ang=90,z=20.9,x=0,y=-12.5}}, - var="VU",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} -ENT.ButtonMap["KU14"] = { - pos = Vector(463.5,-18,5.3), - ang = Angle(0,268,90), - width = 45, - height = 85, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "KU14Set", x=0, y=0, w=45, h=85, tooltip="", model = { - model = "models/metrostroi_train/switches/vudbrown.mdl", z=0, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=12,ang=90,z=18.9,x=0,y=-25.5}}, - var="KU14",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["KU10R"] = { - pos = Vector(462.6,-15.8,-0.8), - ang = Angle(5,270,90), - width = 140, - height = 80, - scale = 0.0625, - hideseat=0.2, - - buttons = { - { ID = "KU10RSet", x=0, y=0, w=140,h=80, tooltip="", model = { - model = "models/metrostroi_train/81-702/buttons/emer_doors.mdl", z=0, ang=Angle(-90,0,0), - var="KU10R",speed=12, - sndvol = 0.1, snd = function(val) return val and "vu220b1_on" or "vu220b1_off" end, - sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["Stopkran"] = { - pos = Vector(461.6,27,3), - ang = Angle(0,-90,90), - width = 100, - height = 1300, - scale = 0.1/2, - buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=100, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, - } -} -ENT.ClientProps["stopkran"] = { - model = "models/metrostroi_train/81-717/stop_mvm.mdl", - pos = Vector(464.5-0.1,24.4,-3), - ang = Angle(0,270,0), - hide = 0.8, -} -ENT.ClientSounds["EmergencyBrakeValve"] = {{"stopkran",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} - -ENT.ButtonMap["AVMain"] = { - pos = Vector(405.5,40,36), - ang = Angle(0,90,90), - width = 290, - height = 270, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "AVToggle", x=0, y=0, w=290, h=270, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_av8r.mdl",x=-35, y=55, z=23, ang = Angle(90,0,0), - var="AV",speed=0.85, vmin=0.73,vmax=0.80, - sndvol = 1, snd = function(val) return val and "av8_on" or "av8_off" end, - }}, - } -} - - -ENT.ButtonMap["KRR"] = { - pos = Vector(403,-25,4), - ang = Angle(0,90,90), - width = 20, - height = 20, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "KRRSet", x=10, y=10, radius=20, tooltip="", model = { - model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", - var="KRR",speed=16,vmin=1,vmax=0, - sndvol = 0.10, snd = function(val) return val and "button2_on" or "button1_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - }}, - } -} - ----Av1 Panel -ENT.ButtonMap["AV1"] = { - pos = Vector(403.5,39.3,18), - ang = Angle(0,90,90), - width = 340, - height = 140, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "VU3Toggle", x=0, y=0, w=100, h=140, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=20, ang = 180, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=0,ang=90,z=20.9,x=0,y=-12.5}}, - var="VU3",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU2Toggle", x=120, y=0, w=100, h=140, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=20, ang = 180, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=0,ang=90,z=20.9,x=0,y=-12.5}}, - var="VU2",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - {ID = "VU1Toggle", x=240, y=0, w=100, h=140, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=20, ang = 180, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=0,ang=90,z=20.9,x=0,y=-12.5}}, - var="VU1",speed=6, - sndvol = 0.5, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 50, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - - -ENT.ButtonMap["AV2"] = { - pos = Vector(403.5,31.7,26), - ang = Angle(0,90,90), - width = 100, - height = 136, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "RSTToggle", x=0, y=0, w=100, h=136, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=20, ang = 180, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=3,ang=90,z=20.9,x=0,y=-12.5}}, - plomb = {model = "models/metrostroi_train/equipment/vu_plomb_left.mdl",ang=Angle(-90,90,0),x=-8,y=33.7,z=9.3,var="RSTPl", ID="RSTPl",}, - var="RST",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} -ENT.ButtonMap["50V"] = { - pos = Vector(403.4,20.5,8.5), - ang = Angle(0,90,90), - width = 100, - height = 136, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "50VToggle", x=0, y=0, w=100, h=136, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black.mdl", z=20, ang = 180, - var="50V",speed=6, - sndvol = 1, snd = function(val) return val and "vu22_on" or "vu22_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - - --- Battery panel -ENT.ButtonMap["Battery"] = { - pos = Vector(403.5,21.2,17.3), - ang = Angle(0,90,90), - width = 250, - height = 140, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "VBToggle", x=0, y=0, w=250, h=140, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black_3.mdl", z=15, ang=Angle(90,0,180), - var="VB",speed=6,vmin=1,vmax=0, - sndvol = 1, snd = function(val) return val and "vu223_on" or "vu223_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} --- Battery panel -ENT.ButtonMap["PassHeaters"] = { - pos = Vector(404.10,-45,29), - ang = Angle(0,90,90), - width = 250, - height = 140, - scale = 0.0625, - hide = 0.8, - - buttons = { - {ID = "HPassToggle", x=0, y=0, w=250, h=140, tooltip="", model = { - model = "models/metrostroi_train/Equipment/vu22_black_2.mdl", z=15, ang=Angle(90,0,180), - var="HPass",speed=6,vmin=1,vmax=0, - sndvol = 1, snd = function(val) return val and "vu223_on" or "vu223_off" end, - sndmin = 100, sndmax = 1e3, sndang = Angle(0,0,0), - }}, - } -} - --- Parking brake panel -ENT.ButtonMap["ParkingBrake"] = { - pos = Vector(457,45.0,-2.0), - ang = Angle(0,-83,90), - width = 300, - height = 400, - scale = 0.0625, - - buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - } -} - --- Train driver helpers panel -ENT.ButtonMap["DriverMicrophone"] = { - pos = Vector(446,-58.5,10.8), - ang = Angle(0,-89,90), - width = 30, - height = 30, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "R_Program1Set", x=15, y=30, radius=15, tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -5.5, - labels={{model="models/metrostroi_train/81-702/labels/vu_labels.mdl",skin=7,ang=90,z=2,x=0,y=27}}, - var="R_Program1",speed=16,vmin=1,vmax=0, - sndvol = 0.07,snd = function(val) return val and "button1_on" or "button3_off" end, - sndmin = 60,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["HelperPanel"] = { - pos = Vector(453.5,59,22.45), - ang = Angle(0,-53,90), - width = 60, - height = 235, - scale = 0.0625, - hideseat = 0.2, - - buttons = { - {ID = "KU13Set", x=0, y=0, w=60,h=80, tooltip="", model = { - model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, color = Color(255,255,255), - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=9,ang=90,z=18.9,x=0,y=-25.5}}, - var="KU13",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "KU3Toggle", x=0, y=110, w=60,h=80, tooltip="", model = { - model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, color = Color(255,255,255), - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=10,ang=90,z=18.9,x=0,y=-25.5}}, - var="KU3",speed=6, - sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, - }}, - {ID = "R_Program1HSet", x=14, y=220, radius=15, tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, - labels={{model="models/metrostroi_train/81-702/labels/vu_labels.mdl",skin=7,ang=90,z=2,x=0,y=-24}}, - var="R_Program1H",speed=16,vmin=1,vmax=0, - sndvol = 0.07,snd = function(val) return val and "button1_on" or "button3_off" end, - sndmin = 60,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - {ID = "R_Program2HSet", x=44, y=220, radius=15, tooltip="",model = { - model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, - labels={{model="models/metrostroi_train/81-702/labels/vu_labels.mdl",skin=8,ang=90,z=2,x=0,y=-24}}, - var="R_Program2H",speed=16,vmin=1,vmax=0, - sndvol = 0.07,snd = function(val) return val and "button1_on" or "button3_off" end, sndmin = 60,sndmax = 1e3,sndang = Angle(-90,0,0), - }}, - } -} - -ENT.ButtonMap["HVMeters"] = { - pos = Vector(460,-56,28.9), - ang = Angle(0,-90-51.8,90), - - width = 66, - height = 152, - scale = 0.0625, - - buttons = { - {ID = "!EnginesVoltage", x=0,y=0,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!EnginesCurrent", x=0,y=79,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - } -} - -ENT.ButtonMap["BLTLPressure"] = { - pos = Vector(460.5,-54,9.8), - ang = Angle(0,-144,90), - width = 114, - height = 114, - scale = 0.0625, - - buttons = { - {ID = "!BLTLPressure", x=57,y=57,radius=57,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - } -} -ENT.ButtonMap["BCPressure"] = { - pos = Vector(460.4,-49.5,3.5), - ang = Angle(0,-90-20,90), - - width = 76, - height = 76, - scale = 0.0625, - - buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, - } -} -ENT.ButtonMap["BatteryVoltage"] = { - pos = Vector(463.4,-17.3,10.5), - ang = Angle(0,267,90), - width = 68, - height = 68, - scale = 0.0625, - - buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, - } -} -ENT.ButtonMap["DriverValveBLDisconnect"] = { - pos = Vector(450.50,-51,-36.5), - ang = Angle(-90,0,0), - width = 200, - height = 100, - scale = 0.0625, - - buttons = { - {ID = "DriverValveBLDisconnectToggle", x=0, y=0, w=200, h=100, tooltip="", model = { - var="DriverValveBLDisconnect",sndid="brake_disconnect", - sndvol = 1, snd = function(val) return "disconnect_valve" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, - }}, - } -} -ENT.ButtonMap["DriverValveTLDisconnect"] = { - pos = Vector(447+5,-46,-31), - ang = Angle(-90,-10,0), - width = 200, - height = 90, - scale = 0.0625, - - buttons = { - {ID = "DriverValveTLDisconnectToggle", x=0, y=0, w=200, h=90, tooltip="", model = { - var="DriverValveTLDisconnect",sndid="train_disconnect", - sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, - }}, - } -} - -ENT.ButtonMap["FrontPneumatic"] = { - pos = Vector(470,-45.0,-58.0), - ang = Angle(0,90,90), - width = 900, - height = 100, - scale = 0.1, - - buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - } -} -ENT.ClientProps["FrontBrake"] = {-- - model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl", - pos = Vector(450+19, -30, -68.5), - ang = Angle(-15,-90,0), - hide = 2, -} -ENT.ClientProps["FrontTrain"] = {-- - model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl", - pos = Vector(450+19, 30.5, -68.5), - ang = Angle( 15,-90,0), - hide = 2, -} -ENT.ClientSounds["FrontBrakeLineIsolation"] = {{"FrontBrake",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} -ENT.ClientSounds["FrontTrainLineIsolation"] = {{"FrontTrain",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} -ENT.ButtonMap["RearPneumatic"] = { - pos = Vector(-473,45.0,-58.0), - ang = Angle(0,270,90), - width = 900, - height = 100, - scale = 0.1, - - buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - } -} -ENT.ClientProps["RearTrain"] = {-- - model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl", - pos = Vector(-450-21, -30.5, -68.5), - ang = Angle( 15,90,0), - hide = 2, -} -ENT.ClientProps["RearBrake"] = {-- - model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl", - pos = Vector(-450-21, 30, -68.5), - ang = Angle(-15,90,0), - hide = 2, -} -ENT.ClientSounds["RearBrakeLineIsolation"] = {{"RearBrake",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} -ENT.ClientSounds["RearTrainLineIsolation"] = {{"RearTrain",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}} - - -ENT.ButtonMap["GV"] = { - pos = Vector(170-3,50+20,-60), - ang = Angle(0,225-15,90), - width = 260, - height = 260, - scale = 0.1, - buttons = { - {ID = "GVToggle",x=0, y=0, w= 260,h = 260, tooltip="", model = { - var="GV",sndid = "gv", - sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), - snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} - }}, - } -} -ENT.ClientProps["gv"] = { - model = "models/metrostroi/81-717/gv.mdl", - pos = Vector(153.5-3,36+20,-78), - ang = Angle(-90,90,-90), - color = Color(150,255,255), - hide = 0.5, -} -ENT.ClientProps["gv_wrench"] = { - model = "models/metrostroi_train/reversor/reversor_classic.mdl", - pos = ENT.ClientProps["gv"].pos, - ang = Angle(-90,0,0), - hide = 0.5, -} - -ENT.ButtonMap["AirDistributor"] = { - pos = Vector(-215,69,-60), - ang = Angle(0,180,90), - width = 170, - height = 260, - scale = 0.1, - hideseat=0.1, - hide=true, - screenHide = true, - - buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, - } -} - --- UAVA -ENT.ButtonMap["UAVAPanel"] = { - pos = Vector(453.5,56,-5), - ang = Angle(0,-70,90), - width = 180, - height = 200, - scale = 0.0625, - - buttons = { - {ID = "UAVAToggle",x=0, y=0, w=60, h=200, tooltip="", model = { - plomb = {var="UAVAPl", ID="UAVAPl",}, - var="UAVA", - sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, - sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=150, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, - {ID = "UKSDisconnectToggle",x=60, y=150, w=120, h=50, tooltip="",var="UKSDisconnect",states={"Train.Buttons.Closed","Train.Buttons.Opened"}, model = { - plomb = {var="UAVAPl", ID="UAVAPl",}, - }}, - } -} - - -for i=0,3 do - ENT.ClientProps["TrainNumberL"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,69,-26), - ang = Angle(180,0,180), - skin=0, - hide = 1.5, - callback = function(ent) - ent.WagonNumber = false - end, - } -end -for i=0,3 do - ENT.ClientProps["TrainNumberR"..i] = { - model = "models/metrostroi_train/common/bort_numbers.mdl", - pos = Vector(295+i*6.6-4*6.6/2,-66.4,-26), - ang = Angle(0,0,0), - skin=0, - hide = 1.5, - callback = function(ent) - ent.WagonNumber = false - end, - } -end -ENT.ButtonMap["FrontDoor"] = { - pos = Vector(468,17,41), - ang = Angle(0,-90,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "FrontDoor",x=0,y=0,w=642,h=1900, tooltip="", model = { - var="door1",sndid="door1", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, - }}, - } -} - -ENT.ButtonMap["CabinDoor"] = { - pos = Vector(417.5,64,41), - ang = Angle(0,0,90), - width = 642, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "CabinDoor",x=0,y=0,w=642,h=1900, tooltip="", model = { - var="door4",sndid="door4", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, - }}, - } -} - -ENT.ButtonMap["PassengerDoor"] = { - pos = Vector(384,-16,41), - ang = Angle(0,90,90), - width = 700, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=700,h=1900, tooltip="", model = { - var="door3",sndid="door3", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, - }}, - } -} - -ENT.ButtonMap["PassengerDoor1"] = { - pos = Vector(384,19,41), - ang = Angle(0,-90,90), - width = 700, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "PassengerDoor",x=0,y=0,w=700,h=1900, tooltip=""}, - } -} -ENT.ButtonMap["RearDoor"] = { - pos = Vector(-470,-16,41), - ang = Angle(0,90,90), - width = 700, - height = 1900, - scale = 0.1/2, - buttons = { - {ID = "RearDoor",x=0,y=0,w=700,h=1900, tooltip="", model = { - var="door2",sndid="door2", - sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, - sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, - }}, - } -} --------------------------------------------------------------------------------- -ENT.ClientPropsInitialized = false -if not ENT.ClientSounds["br_334"] then ENT.ClientSounds["br_334"] = {} end -table.insert(ENT.ClientSounds["br_334"],{"brake",function(ent,_,var) return "br_334_"..var end,1,1,50,1e3,Angle(-90,0,0)}) -ENT.ClientProps["brake"] = { - model = "models/metrostroi_train/81-703/cabin_cran_334.mdl", - pos = Vector(456.55,-52.57,-4.4), - ang = Angle(0,-133,0), - hideseat = 0.2, -} -ENT.ClientProps["controller"] = { - model = "models/metrostroi_train/81-502/kv_black.mdl", - pos = Vector(457.85,-22.8,-6), - ang = Angle(0,180+13,0), - hideseat = 0.2, -} -ENT.ClientProps["reverser"] = { - model = "models/metrostroi_train/reversor/reversor_classic.mdl", - pos = ENT.ClientProps["controller"].pos+Vector(0.3,0,-0.8), - ang = Angle(180,90,180), - hideseat = 0.2, - modelcallback = function(ent) - return ent.HasGoldenReverser and "models/metrostroi_train/reversor/reversor_gold.mdl" or "models/metrostroi_train/reversor/reversor_classic.mdl" - end, -} -ENT.ClientProps["rcureverser"] = { - model = "models/metrostroi_train/reversor/reversor_classic.mdl", - pos = ENT.ClientProps["controller"].pos+Vector(-4.4,0,-1.5), - ang = Angle(180,180-25,180), - hideseat = 0.2, - modelcallback = function(ent) - return ent.HasGoldenReverser and "models/metrostroi_train/reversor/reversor_gold.mdl" or "models/metrostroi_train/reversor/reversor_classic.mdl" - end, -} -ENT.ClientProps["krureverser"] = { - model = "models/metrostroi_train/reversor/reversor_classic.mdl", - pos = Vector(406.5,-22,-2.5), - ang = Angle(-5,90,90), - hideseat = 0.2, - modelcallback = function(ent) - return ent.HasGoldenReverser and "models/metrostroi_train/reversor/reversor_gold.mdl" or "models/metrostroi_train/reversor/reversor_classic.mdl" - end, -} - -ENT.ClientProps["brake_disconnect"] = { - model = "models/metrostroi_train/81-707/cran1.mdl", - pos = Vector(449.90,-56.47,-33.9), - ang = Angle(7,87,-90), - hideseat = 0.2, -} -ENT.ClientProps["train_disconnect"] = { - model = "models/metrostroi_train/81-707/cran3.mdl", - pos = Vector(453.5,-51.8,-27.5), - ang = Angle(7,79,-90), - hideseat = 0.2, -} - -ENT.ClientProps["parking_brake"] = { - model = "models/metrostroi_train/81-703/cabin_parking.mdl", - pos = Vector(456.72,35.5,-14.843545), - ang = Angle(-90,7,0), - hideseat = 0.2, -} - --------------------------------------------------------------------------------- -ENT.ClientProps["train_line"] = { - model = "models/metrostroi_train/Equipment/arrow_e_nm.mdl", - pos = Vector(457.98,-56.169998+0.1,4.80), - ang = Angle(170.000000,-143.3,89), - hideseat = 0.2, -} - -ENT.ClientProps["brake_line"] = { - model = "models/metrostroi_train/Equipment/arrow_e_tm.mdl", - pos = Vector(457.96,-56.150002+0.1,4.79), - ang = Angle(170.000000,-143.3,89), - hideseat = 0.2, -} - -ENT.ClientProps["brake_cylinder"] = { - model = "models/metrostroi_train/Equipment/arrow_nm.mdl", - pos = Vector(460.05,-51.7,1), - ang = Angle(-110,70.55,-88.9), - hideseat = 0.2, -} ----------------------------------------------------------------- -ENT.ClientProps["voltmeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(458.265,-57.25,25.27), - ang = Angle(-90.1,-51.75,0), - bscale = Vector(1,1,1.3), - hideseat = 0.2, -} -ENT.ClientProps["ampermeter"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(458.34,-57.19,20.65), - ang = Angle(-90,-51.8,0), - bscale = Vector(1,1,1.3), - hideseat = 0.2, -} - -ENT.ClientProps["volt1"] = { - model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", - pos = Vector(463.26,-19.415,7.65), - ang = Angle(-90.7,-2,0), - bscale = Vector(1,1,1.3), - hideseat = 0.2, -} --------------------------------------------------------------------------------- ---[[ENT.ClientProps["book"] = { - model = "models/props_lab/binderredlabel.mdl", - pos = Vector(401.763123,-32.429512,48.305576), - ang = Angle(53,0,90), -}]] - -ENT.ClientProps["salon"] = { - model = "models/metrostroi_train/81-502/ema_salon_501.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2.0, -} -ENT.ClientProps["Ema_mirrors"] = { - model = "models/metrostroi_train/81-707/mirrors_ezh.mdl", - pos = Vector(2,0,0), - ang = Angle(0,0,0), - hide = 2.0, -} -ENT.ClientProps["cabin"] = { - model = "models/metrostroi_train/81-509/em509_cabine.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide=2, -} - -ENT.ClientProps["sunprotectors"] = { - model = "models/metrostroi_train/81-502/sun_protectors.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2.0, -} - - -ENT.ClientProps["asotp"] = { - model = "models/metrostroi_train/81-707/asotp.mdl", - pos = Vector(0,0,1), - ang = Angle(0,0,0), - hide = 2.0, - } -ENT.ClientProps["underwagon"] = { - model = "models/metrostroi_train/81-703/81-703_Underwagon.mdl", - pos = Vector(-23.5,0,-191), - ang = Angle(0,0,0), - hide = 2.0, -} - -ENT.ClientProps["Lamps_pult"] = { - model = "models/metrostroi_train/equipment/lamp_gauges.mdl", - pos = Vector(446.027,-55.398,42.27), - ang = Angle(-4.305,6.175,8), - hideseat = 0.2, -} -ENT.ClientProps["Lamps_emer1"] = { - model = "models/metrostroi_train/81-502/lights_emer2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - --color=Color(255,255,255), - hide = 1.5, -} -ENT.ClientProps["Lamps_emer2"] = { - model = "models/metrostroi_train/81-502/lights_emer.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - --color=Color(255,255,255), - hide = 1.5, -} -ENT.ClientProps["Lamps_half1"] = { - model = "models/metrostroi_train/81-502/lights_group1.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 1.5, -} -ENT.ClientProps["Lamps_half2"] = { - model = "models/metrostroi_train/81-502/light_group2_501.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 1.5, -} -ENT.ClientProps["Lamps_cab1"] = { - model = "models/metrostroi_train/81-502/cabin_lamp_light.mdl", - pos = Vector(0,-0.05,-0.2), - ang = Angle(0,0,0), - hide = 0.8, -} -ENT.ClientProps["Lamp_RTM"] = { - model = "models/metrostroi_train/81-717/rtmlamp.mdl", - pos = Vector(407.7,23.45,28.57), - ang = Angle(0,180,0), - scale=1.02 -} - -ENT.ClientProps["Drawers"] = { - model = "models/metrostroi_train/81-509/em509_drawers.mdl", - pos = Vector(-2,0,0), - ang = Angle(0,0,0), - hideseat=2, -} - -ENT.ClientProps["GRP"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_rpgreen.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -} - -ENT.ClientProps["SN"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_sn.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -} - -ENT.ClientProps["RRP"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_rpred.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -} - -ENT.ClientProps["SD"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_sd.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -} - -ENT.ClientProps["UKS"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_uks.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -} ---[[ -ENT.ClientProps["PreviewLamps6"] = { - model = "models/metrostroi_train/81-509/reflects/reflection_unnown.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hideseat=2, -}]] - -ENT.ClientProps["tab"] = { - model = "models/metrostroi_train/Equipment/tab.mdl", - pos = Vector(16,0,8), - ang = Angle(0,0,0), - skin = 2, - hide = 2, -} -ENT.ButtonMap["Route"] = { - pos = Vector(465.7,35.3,2), - ang = Angle(0,98,90), - width = 153, - height = 130, - scale = 0.0625, - buttons = { - {ID = "RouteNumber1+",x=76.5*0,y=0, w=76.5,h=65, tooltip=""}, - {ID = "RouteNumber2+",x=76.5*1,y=0, w=76.5,h=65, tooltip=""}, - {ID = "RouteNumber1-",x=76.5*0,y=65,w=76.5,h=65, tooltip=""}, - {ID = "RouteNumber2-",x=76.5*1,y=65,w=76.5,h=65, tooltip=""}, - } -} -ENT.ClientProps["route"] = { - model = "models/metrostroi_train/common/routes/ezh/route_holder.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, -} -ENT.ClientProps["route1"] = { - model = "models/metrostroi_train/common/routes/ezh/route_number1.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, - callback = function(ent) - ent.RouteNumber.Reloaded = false - end, -} -ENT.ClientProps["route2"] = { - model = "models/metrostroi_train/common/routes/ezh/route_number2.mdl", - pos = Vector(0,0,0), - ang = Angle(0,0,0), - hide = 2, - callback = function(ent) - ent.RouteNumber.Reloaded = false - end, -} - -ENT.ClientProps["door0x1"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos1.mdl", - pos = Vector(344.692,65.305,-6.7), - ang = Angle(0,-90,0), - hide = 2.0, -} -ENT.ClientProps["door1x1"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos2.mdl", - pos = Vector(110.668,65.305,-6.7), - ang = Angle(0,-90,0), - hide = 2.0, -} -ENT.ClientProps["door2x1"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos3.mdl", - pos = Vector(-122.718,65.305,-6.7), - ang = Angle(0,-90,0), - hide = 2.0, -} -ENT.ClientProps["door3x1"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos4.mdl", - pos = Vector(-356.091,65.305,-6.7), - ang = Angle(0,-90,0), - hide = 2.0, -} -ENT.ClientProps["door0x0"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos4.mdl", - pos = Vector(344.692,-65.305+2.5,-6.7), - ang = Angle(0,90,0), - hide = 2.0, -} -ENT.ClientProps["door1x0"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos3.mdl", - pos = Vector(110.668,-65.305+2.5,-6.7), - ang = Angle(0,90,0), - hide = 2.0, -} -ENT.ClientProps["door2x0"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos2.mdl", - pos = Vector(-122.718,-65.305+2.5,-6.7), - ang = Angle(0,90,0), - hide = 2.0, -} -ENT.ClientProps["door3x0"] = { - model = "models/metrostroi_train/81-710/81-710_doors_pos1.mdl", - pos = Vector(-356.091,-65.305+2.5,-6.7), - ang = Angle(0,90,0), - hide = 2.0, -} -ENT.ClientProps["door1"] = { - model = "models/metrostroi_train/81-710/ezh3_door_noars_with_marshrut.mdl", - pos = Vector(460.62+7.4,-14.53,-7), - ang = Angle(0,-90,0), - hide = 2, - callback = function(ent) - ent.LastStation.Reloaded = false - end, -} -ENT.ButtonMap["LastStation"] = { - pos = Vector(460.62+7.4,-14.53,2), - ang = Angle(0,90,90), - width = 500, - height = 150, - scale = 0.0625, - buttons = { - {ID = "LastStation-",x=000,y=0,w=250,h=150, tooltip=""}, - {ID = "LastStation+",x=250,y=0,w=250,h=150, tooltip=""}, - } -} - -ENT.ClientProps["door2"] = { - model = "models/metrostroi_train/81-710/81-710_door_tor.mdl", - pos = Vector(-462.6-8,16.53,-7.24), - ang = Angle(0,90,0), - hide = 2, -} -ENT.ClientProps["door3"] = { - model = "models/metrostroi_train/81-710/81-710_door_interior_a.mdl", - pos = Vector(382.3+18,-15,-8.1), - ang = Angle(0,90,0), - hide = 2, -} -ENT.ClientProps["door4"] = { - model = "models/metrostroi_train/81-710/81-710_door_cab.mdl", - pos = Vector(411.17+7.6,66.05,-6), - ang = Angle(0,-90,0), - hide = 2, -} -ENT.ClientProps["UAVALever"] = { - model = "models/metrostroi_train/81-703/cabin_uava.mdl", - pos = Vector(449+7.7,56.0,-10.24349), - ang = Angle(0,-90+10,0), - hideseat = 0.8, -} - -ENT.ClientProps["RedLights"] = { - model = "models/metrostroi_train/81-703/81-703_red_light.mdl", - pos = Vector(-23+7.2,1,-191), - ang = Angle(0,0,0.000000), - nohide=true, -} -ENT.ClientProps["DistantLights"] = { - model = "models/metrostroi_train/81-703/81-703_projcetor_light.mdl", - pos = Vector(-23+8.0,1,-191), - ang = Angle(00.000000,0.000000,0.000000), - nohide=true, -} -ENT.ClientProps["WhiteLights"] = { - model = "models/metrostroi_train/81-703/81-703_front_light.mdl", - pos = Vector(-23+7.6,1,-191), - ang = Angle(0,0,0), - nohide=true, -} - - -ENT.Lights = { - [1] = { "headlight", Vector(470,0,-35), Angle(0,0,0), Color(200,130,88), brightness = 4 , fov=95, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [2] = { "headlight", Vector(460,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [21] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=135, farz=90, brightness = 1.5, shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - [22] = { "headlight", Vector(445,-55.0,32.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 1.5,shadows = 0, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - --[24] = { "headlight", Vector(442,-53.0,-0.2), Angle(75,0,0), Color(255,130,88), fov=90, farz=65,brightness = 2,shadows = 0}, - [40] = { "headlight", Vector(457.80,-37.3,-5.3),Angle(45,-40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80, hidden = "cabin"}, - [41] = { "headlight", Vector(457.80,-42.6,-5.3),Angle(45,40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80, hidden = "cabin"}, - - -- Emergency lit - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - -- Cabin - [23] = { "dynamiclight", Vector(425,0,40), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0007, distance = 600, hidden = "cabin"}, - - [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(445.8,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, - Lamp_RTM = {"light", Vector(407.7,23.45,28.57), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden = "Lamp_RTM"}, -} - -function ENT:Initialize() - self.BaseClass.Initialize(self) - - self.FrontLeak = 0 - self.RearLeak = 0 - - --self.Train:SetPackedRatio("EmergencyValve_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyValveEPK_dPdT", leak) - --self.Train:SetPackedRatio("EmergencyBrakeValve_dPdT", leak) - self.ASNP = self:CreateRT("710ASNP",512,128) - self.IGLA = self:CreateRT("710IGLA",512,128) - self.RRIScreen = self:CreateRT("710RRI",128,128) - self.CraneRamp = 0 - self.ReleasedPdT = 0 - self.EmergencyValveRamp = 0 - self.EmergencyValveEPKRamp = 0 - self.EmergencyBrakeValveRamp = 0 -end - -function ENT:UpdateWagonNumber() - for i=0,3 do - local leftNum,rightNum = self.ClientEnts["TrainNumberL"..i],self.ClientEnts["TrainNumberR"..i] - local num = math.floor(self.WagonNumber%(10^(i+1))/10^i) - if IsValid(leftNum) then - leftNum:SetPos(self:LocalToWorld(Vector(295+i*6.6-4*6.6/2,69,-26))) - leftNum:SetSkin(num) - end - if IsValid(rightNum) then - rightNum:SetPos(self:LocalToWorld(Vector(-280-i*6.6-4*6.6/2,-66.6,-26))) - rightNum:SetSkin(num) - end - end -end - --------------------------------------------------------------------------------- -function ENT:Think() - self.BaseClass.Think(self) - if not self.RenderClientEnts or self.CreatingCSEnts then - return - end - - local typ = self:GetNW2Int("AnnType",1) - self:HidePanel("RRI",typ~=1) - self:HidePanel("RRIScreen",typ~=1 or self.CurrentCamera ~= 6) - self:ShowHide("E_informator",typ==1) - self:HidePanel("ASNP",typ~=2) - self:HidePanel("ASNPScreen",typ~=2) - self:HidePanel("IGLAButtons",typ~=2) - self:HidePanel("IGLA",typ~=2) - self:ShowHide("asotp",typ==2) - - -- Parking brake animation - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - self.TrueBrakeAngle = self.TrueBrakeAngle + (self:GetPackedRatio("ManualBrake")*360*3.2 - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - if self.ClientEnts and self.ClientEnts["parking_brake"] then - self.ClientEnts["parking_brake"]:SetPoseParameter("position",1.0-((self.TrueBrakeAngle % 360)/360)) - end - local BAsnd = math.floor(self.TrueBrakeAngle/10) - if self.BrakeAngleSND ~= BAsnd then - if not IsValid(self.Sounds["parking_brake_rolling"]) or self.Sounds["parking_brake_rolling"]:GetState() ~= GMOD_CHANNEL_PLAYING then - self:PlayOnce("parking_brake_rolling","bass",1,1) - end - self.BrakeAngleSND = BAsnd - end - - self:ShowHideSmooth("ars_indicator",self:Animate("L_ARS",self:GetPackedBool("L_ARS") and 1 or 0,0,1,5,false)) - - local HL1 = self:Animate("whitelights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false) - local HL2 = self:Animate("distantlights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false) - local RL = self:Animate("redlights",self:GetPackedBool("RedLight") and 1 or 0,0,1,5,false) - - self:ShowHideSmooth("WhiteLights",HL1) - self:ShowHideSmooth("DistantLights",HL2) - self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0,RL) - self:SetLightPower(6,RL > 0,RL) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) - - local bright = HL1*0.3+HL2*0.7 - self:SetLightPower(1,bright>0,bright) - self:SetLightPower(2,RL>0,RL) - - local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) - self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower("Lamps_pult",PL>0,PL) - self:SetLightPower(21,PL>0,PL) - self:SetLightPower(22,PL>0,PL) - - - if IsValid(self.GlowingLights[1]) then - if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then - self.GlowingLights[1]:SetFarZ(3144) - end - if self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 5144 then - self.GlowingLights[1]:SetFarZ(5144) - end - end - - self:ShowHideSmoothFrom("GRP","!GRP_lamp") - self:ShowHideSmoothFrom("SN","!LSN_lamp") - self:ShowHideSmoothFrom("RRP","!RRP_lamp") - self:ShowHideSmoothFrom("SD","!SD_lamp") - self:ShowHideSmoothFrom("UKS","!UKS_lamp") - - self:ShowHide("Speed1",self:GetPackedBool("V1")) - self:ShowHide("Speed2",self:GetPackedBool("V1")) - local speed = self:GetPackedRatio("Speed")*100.0 - if self:GetPackedBool("V1") then - if IsValid(self.ClientEnts["Speed1"])then self.ClientEnts["Speed1"]:SetSkin(math.floor(speed)%10) end - if IsValid(self.ClientEnts["Speed2"])then self.ClientEnts["Speed2"]:SetSkin(math.floor(speed/10)) end - end - - local Lamps = self:GetPackedRatio("LampsStrength") - - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end - ---PB - self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) - - self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false) - self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0.5,0.25, 4,false) - self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.5,0.25, 4,false) - self:Animate("EPK_disconnect",self:GetPackedBool("EPK") and 1 or 0,0.5,0.25, 3,false) - self:Animate("stopkran", self:GetPackedBool("EmergencyBrakeValve") and 1 or 0,0,0.25, 7, false) - - -- Simulate pressure gauges getting stuck a little - self:Animate("brake", self:GetPackedRatio("CranePosition"), 0.00, 0.48,256,24) - self:Animate("controller",self:GetPackedRatio("ControllerPosition"),0, 0.31, 2,false) - self:Animate("reverser",self:GetPackedRatio("ReverserPosition"),0.6, 0.4, 4,false) - self:Animate("rcureverser",self:GetPackedBool("RCUPosition") and 1 or 0,0.77,0,3,false) - self:Animate("krureverser",self:GetPackedRatio("KRUPosition"),0.5,1,3,false) - self:Animate("volt1", self:GetPackedRatio("BatteryVoltage")^0.99,0.624,0.385,45,3) - - self:ShowHide("reverser",self:GetNW2Int("WrenchMode",0)==1) - self:ShowHide("krureverser",self:GetNW2Int("WrenchMode",0)==2) - self:ShowHide("rcureverser",self:GetNW2Int("WrenchMode",0)==3) - - - - ---Animate brakes - self:Animate("brake_line",self:GetPackedRatio("BLPressure"),0.631, 0.795, 256,2)--,,0.01) - self:Animate("train_line",self:GetPackedRatio("TLPressure"),0.631, 0.795, 256,2)--,,0.01) - self:Animate("brake_cylinder",self:GetPackedRatio("BCPressure")^0.95,0.085, 0.81, 256,2)--,,0.03) - --[[self:Animate("brake_cylinder",self:GetPackedRatio("BCPressure"), 0, 0.743, 32,1)--,,0.03) - local anim = self:Animate("brake_cylinder",self:GetPackedRatio("BCPressure"), 0, 0.743, 2048,6)--,,0.03) - self.BrakeCylinder = self.BrakeCylinder or 0.5 - self.BrakeCylinder = math.Clamp(self.BrakeCylinder + (anim-self.BrakeCylinder)*self.DeltaTime*5 - math.min(0,(self.BrakeCylinder-anim)*math.Rand(0,1)*10)*(self.DeltaTime*33),0,1)]] - self:Animate("voltmeter",self:GetPackedRatio("EnginesVoltage"),0.62,0.385,92,2) - self:Animate("ampermeter",self:GetPackedRatio("EnginesCurrent"),0.63,0.373,92,2) - - - local door2 = self:Animate("door2", self:GetPackedBool("RearDoor") and 0.99 or 0,0,0.25, 8, 1) - local door1 = self:Animate("door1", self:GetPackedBool("FrontDoor") and 0.99 or 0,0,0.22, 8, 1) - local door3 = self:Animate("door3", self:GetPackedBool("PassengerDoor") and 0.99 or 0,1,0.62, 8, 1) - local door4 = self:Animate("door4", self:GetPackedBool("CabinDoor") and 0.99 or 0,1,0.78, 8, 1) - - if self.Door1 ~= (door1 > 0) then - self.Door1 = door1 > 0 - self:PlayOnce("door1","bass",self.Door1 and 1 or 0) - end - if self.Door2 ~= (door2 > 0) then - self.Door2 = door2 > 0 - self:PlayOnce("door2","bass",self.Door2 and 1 or 0) - end - if self.Door3 ~= (door3 < 1) then - self.Door3 = door3 < 1 - self:PlayOnce("door3","bass",self.Door3 and 1 or 0) - end - if self.Door4 ~= (door4 < 1) then - self.Door4 = door4 < 1 - self:PlayOnce("door4","bass",self.Door4 and 1 or 0) - end - - self:Animate("FrontBrake", self:GetNW2Bool("FbI") and 0 or 1,0,1, 3, false) - self:Animate("FrontTrain", self:GetNW2Bool("FtI") and 1 or 0,0,1, 3, false) - self:Animate("RearBrake", self:GetNW2Bool("RbI") and 0 or 1,0,1, 3, false) - self:Animate("RearTrain", self:GetNW2Bool("RtI") and 1 or 0,0,1, 3, false) - - -- Main switch - if self.LastGVValue ~= self:GetPackedBool("GV") then - self.ResetTime = CurTime()+1.5 - self.LastGVValue = self:GetPackedBool("GV") - end - self:Animate("gv_wrench",self.LastGVValue and 1 or 0,0.5,0.9,128,1,false) - self:ShowHideSmooth("gv_wrench", CurTime() < self.ResetTime and 1 or 0.1) - - -- Animate doors - if not self.DoorStates then self.DoorStates = {} end - if not self.DoorLoopStates then self.DoorLoopStates = {} end - for i=0,3 do - for k=0,1 do - local st = k==1 and "DoorL" or "DoorR" - local doorstate = self:GetPackedBool(st) - local id,sid = st..(i+1),"door"..i.."x"..k - local state = self:GetPackedRatio(id) - --print(state,self.DoorStates[state]) - if (state ~= 1 and state ~= 0) ~= self.DoorStates[id] then - if doorstate and state < 1 or not doorstate and state > 0 then - else - if state > 0 then - self:PlayOnce(sid.."o","",1,math.Rand(0.8,1.2)) - else - self:PlayOnce(sid.."c","",1,math.Rand(0.8,1.2)) - end - end - self.DoorStates[id] = (state ~= 1 and state ~= 0) - end - if (state ~= 1 and state ~= 0) then - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) + 2*self.DeltaTime,0,1) - else - self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) - 6*self.DeltaTime,0,1) - end - self:SetSoundState(sid.."r",self.DoorLoopStates[id],0.8+self.DoorLoopStates[id]*0.2) - local n_l = "door"..i.."x"..k--.."a" - --local n_r = "door"..i.."x"..k.."b" - local dlo = 1 - --local dro = 1 - if self.Anims[n_l] then - dlo = math.abs(state-(self.Anims[n_l] and self.Anims[n_l].oldival or 0)) - if dlo <= 0 and self.Anims[n_l].oldspeed then - dlo = self.Anims[n_l].oldspeed/14 - end - end - self:Animate(n_l,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - --self:Animate(n_r,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0) - end - end - - - -- Brake-related sounds - local dT = self.DeltaTime - --self.TunnelCoeff = 0.8 - --self.StreetCoeff = 0 - local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1)) - local rollings = math.max(self.TunnelCoeff*1,self.StreetCoeff) - --if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end - -- Brake-related sounds - local dT = self.DeltaTime - local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1)) - local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1)) - local rol40p = Lerp((speed-25)/12,0.6,1) - local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1)) - local rol40p = Lerp((speed-23)/50,0.6,1) - local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1)) - local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2) - local rol80 = math.Clamp((speed-70)/5,0,1) - local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1) - self:SetSoundState("rolling_10",rollingi*rol10,1) - self:SetSoundState("rolling_40",rollingi*rol40,rol40p) - self:SetSoundState("rolling_70",rollingi*rol70,rol70p) - self:SetSoundState("rolling_80",rollingi*rol80,rol80p) - - local rol_motors = math.Clamp((speed-20)/40,0,1) - self:SetSoundState("rolling_motors",math.max(rollingi,rollings*0.3)*rol_motors,speed/56) - - local rol10 = math.Clamp(speed/15,0,1)*(1-math.Clamp((speed-18)/35,0,1)) - local rol10p = Lerp((speed-15)/14,0.6,0.78) - local rol40 = math.Clamp((speed-18)/35,0,1)*(1-math.Clamp((speed-55)/40,0,1)) - local rol40p = Lerp((speed-15)/66,0.6,1.3) - local rol70 = math.Clamp((speed-55)/20,0,1)--*(1-math.Clamp((speed-72)/5,0,1)) - local rol70p = Lerp((speed-55)/27,0.78,1.15) - --local rol80 = math.Clamp((speed-70)/5,0,1) - --local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2) - self:SetSoundState("rolling_low" ,rol10*rollings,rol10p) --15 - self:SetSoundState("rolling_medium2",rol40*rollings,rol40p) --57 - --self:SetSoundState("rolling_medium1",0 or rol40*rollings,rol40p) --57 - self:SetSoundState("rolling_high2" ,rol70*rollings,rol70p) --70 - - self.ReleasedPdT = math.Clamp(self.ReleasedPdT + 2*(-self:GetPackedRatio("BrakeCylinderPressure_dPdT",0)-self.ReleasedPdT)*dT,0,1) - local release1 = math.Clamp((self.ReleasedPdT-0.1)/0.8,0,1)^2 - self:SetSoundState("release1",release1,1) - self:SetSoundState("release2",(math.Clamp(0.3-release1,0,0.3)/0.3)*(release1/0.3),1.0) - - self.FrontLeak = math.Clamp(self.FrontLeak + 10*(-self:GetPackedRatio("FrontLeak")-self.FrontLeak)*dT,0,1) - self.RearLeak = math.Clamp(self.RearLeak + 10*(-self:GetPackedRatio("RearLeak")-self.RearLeak)*dT,0,1) - self:SetSoundState("front_isolation",self.FrontLeak,0.9+0.2*self.FrontLeak) - self:SetSoundState("rear_isolation",self.RearLeak,0.9+0.2*self.RearLeak) - - self.CraneRamp = math.Clamp(self.CraneRamp + 8.0*((1*self:GetPackedRatio("Crane_dPdT",0))-self.CraneRamp)*dT,-1,1) - self:SetSoundState("crane334_brake_low",math.Clamp((-self.CraneRamp)*2,0,1)^2,1) - local high = math.Clamp(((-self.CraneRamp)-0.5)/0.5,0,1)^1 - self:SetSoundState("crane334_brake_high",high,1.0) - self:SetSoundState("crane013_brake2",high*2,1.0) - self:SetSoundState("crane334_brake_eq_high",--[[ math.Clamp(-self.CraneRamp*0,0,1)---]] math.Clamp(-self:GetPackedRatio("ReservoirPressure_dPdT")-0.2,0,1)^0.8*1,1) - self:SetSoundState("crane334_brake_eq_low",--[[ math.Clamp(-self.CraneRamp*0,0,1)---]] math.Clamp(-self:GetPackedRatio("ReservoirPressure_dPdT")-0.4,0,1)^0.8*1.3,1) - - self:SetSoundState("crane334_release",math.Clamp(self.CraneRamp,0,1)^2,1.0) - - local emergencyBrakeValve = self:GetPackedRatio("EmergencyBrakeValve_dPdT", 0) - self.EmergencyBrakeValveRamp = math.Clamp(self.EmergencyBrakeValveRamp + (emergencyBrakeValve-self.EmergencyBrakeValveRamp)*dT*8,0,1) - self:SetSoundState("valve_brake",self.EmergencyBrakeValveRamp,0.8+self.EmergencyBrakeValveRamp*0.4) - - local emergencyValve = self:GetPackedRatio("EmergencyValve_dPdT", 0)^0.4*1.2 - self.EmergencyValveRamp = math.Clamp(self.EmergencyValveRamp + (emergencyValve-self.EmergencyValveRamp)*dT*16,0,1) - local emer_brake = math.Clamp((self.EmergencyValveRamp-0.9)/0.05,0,1) - local emer_brake2 = math.Clamp((self.EmergencyValveRamp-0.2)/0.4,0,1)*(1-math.Clamp((self.EmergencyValveRamp-0.9)/0.1,0,1)) - self:SetSoundState("emer_brake",emer_brake,1) - self:SetSoundState("emer_brake2",emer_brake2,math.min(1,0.8+0.2*emer_brake2)) - - local emergencyValveEPK = self:GetPackedRatio("EmergencyValveEPK_dPdT",0) - self.EmergencyValveEPKRamp = math.Clamp(self.EmergencyValveEPKRamp + 1.0*((0.5*emergencyValveEPK)-self.EmergencyValveEPKRamp)*dT,0,1) - if self.EmergencyValveEPKRamp < 0.01 then self.EmergencyValveEPKRamp = 0 end - self:SetSoundState("epk_brake",self.EmergencyValveEPKRamp,1.0) - - -- Compressor - local compressorvoltage = Lerp(self:GetPackedRatio("LampsStrength"),0.75,1.05) - local compressorb = self:GetPackedBool("AV") and compressorvoltage or 1 - local compressorspeed = self:GetPackedBool("VB") and compressorb or 0 - local state = self:GetPackedBool("Compressor") - self:SetSoundState("compressor",state and 0.6 or 0,compressorspeed or 0) - - - -- ARS/ringer alert - self:SetSoundState("ring",self:GetPackedBool("Ring") and 1 or 0,1) - - self:ShowHideSmooth("Lamp_RTM",self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false)) - self:SetSoundState("vpr",self:GetPackedBool("VPR") and 1 or 0,1) - - -- RK rotation - if self:GetPackedBool("RK") then self.RKTimer = CurTime() end - state = (CurTime() - (self.RKTimer or 0)) < 0.2 - self.PreviousRKState = self.PreviousRKState or false - if self.PreviousRKState ~= state then - self.PreviousRKState = state - if state then - self:SetSoundState("rk",0.7,1) - else - self:SetSoundState("rk",0,0) - end - end - - local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 - self.NoiseVolume = self.NoiseVolume or 0 - self.AnnLamp = self.AnnLamp or 0 - local noisevolume = 1 - if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end - if self.NoiseVolume > noisevolume then - self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) - else - self.NoiseVolume = math.Clamp(self.NoiseVolume + 0.5*(noisevolume-self.NoiseVolume)*dT,0.1,1) - end - local annvolume = self.Sounds.announcer1 and IsValid(self.Sounds.announcer1) and self.Sounds.announcer1:GetLevel()*math.Rand(0.9,3) or 0 - - local lamp = math.max(annvolume,noise and self.NoiseVolume or 0) - - self.AnnLamp = math.Clamp(self.AnnLamp + 8*(lamp-self.AnnLamp)*dT,0,1) - if self.AnnLamp < 0.01 then self.AnnLamp=0 end - for k,v in ipairs(self.AnnouncerPositions) do - for i=1,2 do - self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) - end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end - end -end - -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end -function ENT:DrawPost() - self.RTMaterial:SetTexture("$basetexture", self.ASNP) - self:DrawOnPanel("ASNPScreen",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(256,64,512,128,0) - end) - - self.RTMaterial:SetTexture("$basetexture", self.IGLA) - self:DrawOnPanel("IGLA",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(256,64+22,512,128+22,0) - end) - - self:DrawOnPanel("AirDistributor",function() - draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) - end) - self.RTMaterial:SetTexture("$basetexture", self.RRIScreen) - self:DrawOnPanel("RRIScreen",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(64,64,128,128,0) - end) -end - -function ENT:OnButtonPressed(button) - if button == "PrevSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - if button == "NextSign" then - self.InfoTableTimeout = CurTime() + 2.0 - end - - if button and button:sub(1,3) == "Num" then - self.InfoTableTimeout = CurTime() + 2.0 - end -end - -function ENT:OnPlay(soundid,location,range,pitch) - if location == "stop" then - if IsValid(self.Sounds[soundid]) then - self.Sounds[soundid]:Pause() - self.Sounds[soundid]:SetTime(0) - end - return - end - if location == "bass" then - if soundid == "VDOL" then - return range > 0 and "vdol_on" or "vdol_off",location,1,pitch - end - if soundid == "VDOP" then - return range > 0 and "vdor_on" or "vdor_off",location,1,pitch - end - if soundid == "VDZ" then - return range > 0 and "vdz_on" or "vdz_off",location,1,pitch - end - if soundid:sub(1,4) == "IGLA" then - return range > 0 and "igla_on" or "igla_off",location,1,pitch - end - if soundid == "LK2" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk2_on" or "lk2_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "LK3" then - local speed = self:GetPackedRatio("Speed") - local id = range > 0 and "lk3_on" or "lk3_off" - self.SoundPositions[id][1] = 350-Lerp(speed/0.1,0,250) - return id,location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "LK1" and range > 0 then - local speed = self:GetPackedRatio("Speed") - self.SoundPositions["lk5_on"][1] = 440-Lerp(speed/0.1,0,330) - return "lk5_on",location,1-Lerp(speed/10,0.2,0.8),pitch - end - if soundid == "RVT" then - return range > 0 and "rvt_on" or "rvt_off",location,1,pitch - end - if soundid == "K6" then - return range > 0 and "k6_on" or nil,location,1,pitch - end - if soundid == "RV2" then - return range > 0 and "r1_5_on" or "r1_5_off",location,1,pitch - end - if soundid == "RPB" then - return range > 0 and "rpb_on" or "rpb_off",location,1,pitch - end - if soundid == "KD" then - return range > 0 and "kd_on" or "kd_off",location,1,pitch - end - if soundid == "KK" then - return range > 0 and "kk_on" or "kk_off",location,1,pitch--0.8 - end - if soundid == "K25" then - return range > 0 and "k25_on" or "k25_off",location,1,pitch - end - if soundid == "RO" then - return range > 0 and "ro_on" or "ro_off",location,1,0.8 - end - if soundid == "Rp8" then - return range > 0 and "rp8_on" or "rp8_off",location,1,pitch - end - if soundid == "ROT" then - return range > 0 and "rot_on" or "rot_off",location,1,pitch - end - if soundid == "AVU" then - return range > 0 and "avu_on" or "avu_off",location,1,0.9 - end - if soundid == "brake" then - self:PlayOnce("brake_f",location,range,pitch) - self:PlayOnce("brake_b",location,range,pitch) - return - end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end - end - return soundid,location,range,pitch -end - - -local dist = { - Back1 = 550, - AVMain = 550, - AV1 = 550, - AV2 = 550, - Battery = 550, -} -for id,panel in pairs(ENT.ButtonMap) do - if not panel.buttons then continue end - for k,v in pairs(panel.buttons) do - if v.model then - local dist = dist[id] or 150 - if v.model.model then - v.model.hideseat=dist - elseif v.model.lamp then - v.model.lamp.hideseat=dist - end - end - end -end -Metrostroi.GenerateClientProps() diff --git a/lua/entities/gmod_subway_em508/init.lua b/lua/entities/gmod_subway_em508/init.lua deleted file mode 100644 index 6c4302c..0000000 --- a/lua/entities/gmod_subway_em508/init.lua +++ /dev/null @@ -1,559 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -ENT.BogeyDistance = 650 -- Needed for gm trainspawner - ---"DURASelectMain","DURASelectAlternate","DURAToggleChannel","DURAPowerToggle", -ENT.SyncTable = { - "VB","AV","VU","VU1","VU2","VU3","RST", "50V", "KU8","KU10","KU10R","KU9","KU2","KU1","KU1","KU11","KU4","KU5","UV1","KU6","KU7","KU6K","KU7K","KU14","KU15","UV1","KU16", - "PanelLamp","OtklAVU","KRR","HPass", - "R_ASNPMenu","R_ASNPUp","R_ASNPDown","R_ASNPOn", - "RRIEnable","RRIAmplifier", - "DriverValveBLDisconnect","DriverValveTLDisconnect","EmergencyBrakeValve", "UKSDisconnect", - "GV", - "R_Program1","R_Program1H","R_Program2H","UAVA","UAVAC", -} -ENT.SyncFunctions = { - "" -} - -function ENT:Initialize() - - self.Plombs = { - --RST = true, - Init = true, - OtklAVU = true, - UKSDisconnect = true, - UAVA = true, - } - -- Set model and initialize - self:SetModel("models/metrostroi_train/81-710/81-508t.mdl") - self.BaseClass.Initialize(self) - self:SetPos(self:GetPos() + Vector(0,0,140)) - - -- Create seat entities - self.DriverSeat = self:CreateSeat("driver",Vector(425,-38.2,-31.5),Angle(0,0,0)) - self.InstructorsSeat = self:CreateSeat("instructor",Vector(430,40,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat1 = self:CreateSeat("instructor",Vector(443,0,-48+6+2.5),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - self.ExtraSeat2 = self:CreateSeat("instructor",Vector(420,-20,-48+6),Angle(0,90,0),"models/vehicles/prisoner_pod_inner.mdl") - - -- Hide seats - self.DriverSeat:SetColor(Color(0,0,0,0)) - self.DriverSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - self.InstructorsSeat:SetColor(Color(0,0,0,0)) - self.InstructorsSeat:SetRenderMode(RENDERMODE_TRANSALPHA) - - self.ExtraSeat1:SetColor(Color(0,0,0,0)) - self.ExtraSeat1:SetRenderMode(RENDERMODE_TRANSALPHA) - self.ExtraSeat2:SetColor(Color(0,0,0,0)) - self.ExtraSeat2:SetRenderMode(RENDERMODE_TRANSALPHA) - - -- Create bogeys - if Metrostroi.BogeyOldMap then - self.FrontBogey = self:CreateBogey(Vector( 317-5,0,-89),Angle(0,180,0),true,"717") - self.RearBogey = self:CreateBogey(Vector(-317+0,0,-89),Angle(0,0,0),false,"717") - self.FrontCouple = self:CreateCouple(Vector( 419.5,0,-75),Angle(0,0,0),true,"702") - self.RearCouple = self:CreateCouple(Vector(-421.5,0,-75),Angle(0,180,0),false,"702") - else - self.FrontBogey = self:CreateBogey(Vector( 317-11,1.0,-85),Angle(0,180,0),true,"717") - self.RearBogey = self:CreateBogey(Vector(-317+0,1.3,-85),Angle(0,0,0),false,"717") - self.FrontCouple = self:CreateCouple(Vector( 421-4-3.6-2,1.0,-72),Angle(0,0,0),true,"702") - self.RearCouple = self:CreateCouple(Vector(-421+2+3.6,1.3,-72),Angle(0,180,0),false,"702") - end - self.FrontBogey:SetNWInt("MotorSoundType",0) - self.RearBogey:SetNWInt("MotorSoundType",0) - self.FrontBogey.PneumaticPow = 1.5 - self.RearBogey.PneumaticPow = 1.5 - self.FrontCouple.EKKDisconnected = true - - -- Initialize key mapping - self.KeyMap = { - [KEY_1] = "KVSetX1B", - [KEY_2] = "KVSetX2", - [KEY_3] = "KVSetX3", - [KEY_4] = "KVSet0", - [KEY_5] = "KVSetT1B", - [KEY_6] = "KVSetT1AB", - [KEY_7] = "KVSetT2", - - [KEY_EQUAL] = {"R_Program1Set",helper="R_Program1HSet"}, - [KEY_MINUS] = {helper="R_Program2HSet"}, - - [KEY_G] = "KU9Set", - - [KEY_0] = "KVReverserUp", - [KEY_9] = "KVReverserDown", - [KEY_PAD_PLUS] = "KVReverserUp", - [KEY_PAD_MINUS] = "KVReverserDown", - [KEY_W] = "KVUp", - [KEY_S] = "KVDown", - [KEY_F] = "PneumaticBrakeUp", - [KEY_R] = "PneumaticBrakeDown", - [KEY_N] = "UV1Set", - - [KEY_A] = {"KU6",helper="KU13Set"}, - [KEY_D] = "KU7", - [KEY_V] = {"KU2Toggle",helper="KU3Toggle"}, - [KEY_L] = "HornEngage", - [KEY_PAD_1] = "PneumaticBrakeSet1", - [KEY_PAD_2] = "PneumaticBrakeSet2", - [KEY_PAD_3] = "PneumaticBrakeSet3", - [KEY_PAD_4] = "PneumaticBrakeSet4", - [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_DIVIDE] = "KU14Set", - - [KEY_BACKSPACE] = {"EmergencyBrake",helper="EmergencyBrakeValveToggle"}, - - [KEY_PAD_ENTER] = "KVWrenchKV", - [KEY_PAD_0] = "DriverValveDisconnect", - [KEY_LSHIFT] = { - [KEY_W] = "KVUp_Unlocked", - - [KEY_1] = "KU4Set", - [KEY_2] = "KU5Set", - [KEY_4] = "KVSet0Fast", - [KEY_L] = "DriverValveDisconnect", - - [KEY_7] = "KVWrenchNone", - [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", - [KEY_0] = "KVWrenchKV", - [KEY_6] = "KVSetT1A", - - [KEY_PAD_ENTER] = "KVWrenchNone", - }, - [KEY_LALT] = { - [KEY_V] = "KU2Toggle", - [KEY_UP] = "ANNUp", - [KEY_DOWN] = "ANNDown", - [KEY_LEFT] = "ANNLeft", - [KEY_RIGHT] = "ANNRight", - }, - } - self.KeyMap[KEY_RALT] = self.KeyMap[KEY_LALT] - self.KeyMap[KEY_RSHIFT] = self.KeyMap[KEY_LSHIFT] - self.KeyMap[KEY_RCONTROL] = self.KeyMap[KEY_LCONTROL] - - - - self.InteractionZones = { - { - ID = "FrontBrakeLineIsolationToggle", - Pos = Vector(462, -30, -62), Radius = 8, - }, - { - ID = "FrontTrainLineIsolationToggle", - Pos = Vector(462, 30, -62), Radius = 8, - }, - { - ID = "RearBrakeLineIsolationToggle", - Pos = Vector(-468, 30, -62), Radius = 8, - }, - { - ID = "RearTrainLineIsolationToggle", - Pos = Vector(-468, -30, -62), Radius = 8, - }, - { - ID = "FrontDoor", - Pos = Vector(462,32,-10), Radius = 12, - }, - { - ID = "CabinDoor", - Pos = Vector(462,58,-10), Radius = 10, - }, - { - ID = "CabinDoor", - Pos = Vector(462,58,-30), Radius = 10, - }, - { - ID = "CabinDoor", - Pos = Vector(395,65,-10), Radius = 16, - }, - { - ID = "PassengerDoor", - Pos = Vector(397,35,8), Radius = 16, - }, - { - ID = "RearDoor", - Pos = Vector(-457,-35,-10), Radius = 20, - }, - { - ID = "GVToggle", - Pos = Vector(155,63.7,-75), Radius = 10, - }, - { - ID = "AirDistributorDisconnectToggle", - Pos = Vector(-224.5, 50, -66), Radius = 20, - }, - } - - -- Cross connections in train wires - self.TrainWireInverts = { - --[18] = true, - --[34] = true, - } - self.TrainWireCrossConnections = { - [5] = 4, -- Reverser F<->B - [31] = 32, -- Doors L<->R - } - - -- KV wrench mode - self:OnButtonPress("KVWrenchNone") - - -- Parking brake ratio - self.ManualBrake = 0.0 - self.RearDoor = false - self.FrontDoor = false - self.CabinDoor = false - self.PassengerDoor = false - - self:TrainSpawnerUpdate() -end - -function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end -end - -function ENT:TrainSpawnerUpdate() - if self:GetNW2Int("AnnType",1) == 1 then - self.Announcer:TriggerInput("Reset","AnnouncementsRRI") - self.Electric:TriggerInput("RRI",1) - - self.RRI:TriggerInput("Disable",0) - self.ASNP:TriggerInput("Disable",1) - self.IGLA_CBKI:TriggerInput("Disable",1) - elseif self:GetNW2Int("AnnType",1) == 2 then - self.Announcer:TriggerInput("Reset","AnnouncementsASNP") - self.Electric:TriggerInput("RRI",0) - - self.RRI:TriggerInput("Disable",1) - self.ASNP:TriggerInput("Disable",0) - self.IGLA_CBKI:TriggerInput("Disable",0) - end - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end -end - --------------------------------------------------------------------------------- - -function ENT:Think() - local Panel = self.Panel - local Pneumatic = self.Pneumatic - - local RetVal = self.BaseClass.Think(self) - self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - - self:SetPackedBool("RedLight",Panel.RedLights>0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 - self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) - self:SetPackedBool("Lamps_cab",emerActive1 > 0) - self:SetPackedBool("Lamps_emer2",emerActive2 > 0) - self:SetPackedBool("Lamps_half1",lightsActive1 > 0) - self:SetPackedBool("Lamps_half2",lightsActive2 > 0) - self:SetPackedRatio("LampsStrength",lightsActive1) - - -- Signal if doors are open or no to platform simulation - self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) - self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) - - -- Red RP - local TW18 = 0 - if Panel.RRP > 0 then - local wags = #self.WagonList - for _,v in ipairs(self.WagonList) do - TW18 = TW18+(v.Panel.TW18 or 0)/wags - end - end - self:SetPackedRatio("RRP",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) - self:SetPackedBool("V1",Panel.V1 > 0) - self:SetPackedBool("UKS",Panel.UKSb == 0 and Panel.UKS > 0 or Panel.UKSb > 0 and CurTime()%0.4>0.2) - self.TrueBrakeAngle = self.TrueBrakeAngle or 0 - if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end - self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ManualBrake - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) - self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) - - self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) - self:SetPackedBool("VPR",Panel.VPR > 0) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) - self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0)) - self:SetPackedBool("AVU",Panel.AVU > 0.5) - self:SetPackedBool("Ring",Panel.Ring > 0.5) - - self:SetPackedBool("RearDoor",self.RearDoor) - self:SetPackedBool("FrontDoor",self.FrontDoor) - self:SetPackedBool("PassengerDoor",self.PassengerDoor) - self:SetPackedBool("CabinDoor",self.CabinDoor) - - self:SetPackedBool("RRIOn",self.RRI_VV.Power>0) - self:SetPackedRatio("RRIRewind",self.RRIRewind.Value/2) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) - --KRR - --self:SetPackedBool("KRR",self.KRR.Value > 0.5) - --print(self.LK1.Value,self.LK2.Value,self.LK3.Value,self.LK4.Value,self.RheostatController.Position,self.PositionSwitch.Position,self.KSH1.Value,self.KSH2.Value) - --print(self.PositionSwitch.SelectedPosition,self.RheostatController.SelectedPosition)--self.Engines.E13/2,self.Engines.RotationRate) - -- Feed packed floats - self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) - self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) - self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) - self:SetPackedRatio("KRUPosition", self.KRU.Position/3) - self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/12) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/12) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) - self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) - self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) - self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150) - self:SetPackedBool("EmergencyBrakeValve",self.EmergencyBrakeValve.Value > 0) - - -- Update ARS system (no ars on E) --- self:SetPackedRatio(3, self.ALS_ARS.Speed/100.0) - self:SetPackedRatio("Speed", self.Speed/100) - -- Exchange some parameters between engines, pneumatic system, and real world - self.Engines:TriggerInput("Speed",self.Speed) - if IsValid(self.FrontBogey) and IsValid(self.RearBogey) and not self.IgnoreEngine then - local A = 2*self.Engines.BogeyMoment - self.FrontBogey.MotorForce = 22050+3000*(A < 0 and 1 or 0) - self.FrontBogey.Reversed = (self.Reverser.NZ > 0.5) - self.RearBogey.MotorForce = 22050+3000*(A < 0 and 1 or 0) - self.RearBogey.Reversed = (self.Reverser.VP > 0.5) - - -- These corrections are required to beat source engine friction at very low values of motor power - local P = math.max(0,0.04449 + 1.06879*math.abs(A) - 0.465729*A^2) - if math.abs(A) > 0.4 then P = math.abs(A) end - if math.abs(A) < 0.05 then P = 0 end - if self.Speed < 10 then P = P*(1.0 + 0.5*(10.0-self.Speed)/10.0) end - self.RearBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - self.FrontBogey.MotorPower = P*0.5*((A > 0) and 1 or -1) - - -- Apply brakes - local add = 1 - if math.abs(self:GetAngles().pitch) > 4 then - add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 - end - self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT - self.FrontBogey.ParkingBrakePressure = self.ManualBrake - self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT - end - - self:GenerateJerks() - - -- Temporary hacks - --self:SetNW2Float("V",self.Speed) - --self:SetNW2Float("A",self.Acceleration) - - return RetVal -end - --------------------------------------------------------------------------------- -function ENT:OnButtonPress(button,ply) - if string.find(button,"PneumaticBrakeSet") then - self.Pneumatic:TriggerInput("BrakeSet",tonumber(button:sub(-1,-1))) - return - end - if button:sub(1,3) == "ANN" then - local ID = button:sub(4,-1) - if self:GetNW2Int("AnnType",1) == 1 then - self.RRI:TriggerInput(ID,1) - elseif ID == "Up" then - self.R_ASNPUp:TriggerInput("Set",1) - elseif ID == "Down" then - self.R_ASNPDown:TriggerInput("Set",1) - elseif ID == "Right" then - self.R_ASNPMenu:TriggerInput("Set",1) - end - return - end - - if button == "FrontDoor" then self.FrontDoor = not self.FrontDoor end - if button == "RearDoor" then self.RearDoor = not self.RearDoor end - if button == "PassengerDoor" then self.PassengerDoor = not self.PassengerDoor end - if button == "CabinDoor" then self.CabinDoor = not self.CabinDoor end - - -- Parking brake - if button == "ParkingBrakeLeft" then - self.ManualBrake = math.max(0.0,self.ManualBrake - 0.05) - if self.ManualBrake == 0.0 then return end - --print(self.ManualBrake) - end - if button == "ParkingBrakeRight" then - self.ManualBrake = math.min(1.0,self.ManualBrake + 0.05) - if self.ManualBrake == 1.0 then return end - --print(self.ManualBrake) - end - - if button == "KVUp" then - if self.KV.ControllerPosition ~= -1 then - self.KV:TriggerInput("ControllerUp",1.0) - end - end - if button == "KVUp_Unlocked" then - self.KV:TriggerInput("ControllerUp",1.0) - end - if button == "KVDown" then - self.KV:TriggerInput("ControllerDown",1.0) - end - - - if button == "KVSetT1B" then - if self.KV.ControllerPosition == -1 then - self.KV:TriggerInput("ControllerSet",-2) - else - self.KV:TriggerInput("ControllerSet",-1) - end - end - if button == "KVSetX1B" then - if self.KV.ControllerPosition == 1 then - self.KV:TriggerInput("ControllerSet",2) - else - self.KV:TriggerInput("ControllerSet",1) - end - end - if button == "KVSetT1AB" then - if self.KV.ControllerPosition == -2 then - self.KV:TriggerInput("ControllerSet",-1) - else - self.KV:TriggerInput("ControllerSet",-2) - end - end - - if button == "KVWrenchKV" or button == "KVWrenchKV9" then - if self.KVWrenchMode == 0 then - self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 1 - self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) - end - end - if button == "KVWrenchNone" then - if self.KVWrenchMode == 0 then - self:PlayOnce("revers_in","cabin",0.7) - self.KVWrenchMode = 3 - elseif self.KVWrenchMode ~= 0 and self.KV.ReverserPosition == 0 and self.KRU.Position == 0 then - if self.KVWrenchMode == 2 then - self:PlayOnce("kru_out","cabin",0.7) - else - self:PlayOnce("revers_out","cabin",0.7) - end - self.KVWrenchMode = 0 - self.KV:TriggerInput("Enabled",0) - self.KRU:TriggerInput("Enabled",0) - end - end - if button == "KVWrenchKRU" then - if self.KVWrenchMode == 0 then - self:PlayOnce("kru_in","cabin",0.7) - self.KVWrenchMode = 2 - self.KRU:TriggerInput("Enabled",1) - end - end - if (self.KVWrenchMode == 3) and (button == "KVReverserUp") then self.KV:TriggerInput("RCU",1) end - if (self.KVWrenchMode == 3) and (button == "KVReverserDown") then self.KV:TriggerInput("RCU",0) end - -- KRU - if (self.KVWrenchMode == 2) and (button == "KVReverserUp") then self.KRU:TriggerInput("Up",1) end - if (self.KVWrenchMode == 2) and (button == "KVReverserDown") then self.KRU:TriggerInput("Down",1) end - if (self.KVWrenchMode == 2) and (button == "KVSetX1B") then self.KRU:TriggerInput("SetX1",1) end - if (self.KVWrenchMode == 2) and (button == "KVSetX2") then self.KRU:TriggerInput("SetX2",1) end - if (self.KVWrenchMode == 2) and (button == "KVSet0") then self.KRU:TriggerInput("Set0",1) end - if button == "KU6" and not self.KU7Pressed and self.KU7.Value == 0 then self.KU6K:TriggerInput("Open",1) end - if button == "KU7" and not self.KU6Pressed and self.KU6.Value == 0 then self.KU6K:TriggerInput("Close",1) end - if button == "KU6" and not self.KU7Pressed and self.KU2.Value < 1 and self.KU7.Value == 0 then self.KU6:TriggerInput("Close",1) end - if button == "KU7" and not self.KU6Pressed and self.KU2.Value < 1 and self.KU6.Value == 0 then self.KU7:TriggerInput("Close",1) end - if button == "KU6" then self.KU6Pressed = true end - if button == "KU7" then self.KU7Pressed = true end - if button == "EmergencyBrake" then - self.KV:TriggerInput("ControllerSet",-3) - self.Pneumatic:TriggerInput("BrakeSet",7) - self.DriverValveBLDisconnect:TriggerInput("Set",1) - end - if button == "DriverValveDisconnect" then - if self.DriverValveBLDisconnect.Value == 0 or self.DriverValveTLDisconnect.Value == 0 then - self.DriverValveBLDisconnect:TriggerInput("Set",1) - self.DriverValveTLDisconnect:TriggerInput("Set",1) - else - --self:PlayOnce("pneumo_disconnect1","cabin",0.9) - self.DriverValveBLDisconnect:TriggerInput("Set",0) - self.DriverValveTLDisconnect:TriggerInput("Set",0) - end - end -end - -function ENT:OnButtonRelease(button) - if string.find(button,"PneumaticBrakeSet") then - if button == "PneumaticBrakeSet1" and (self.Pneumatic.DriverValvePosition == 1) then - self.Pneumatic:TriggerInput("BrakeSet",2) - end - return - end - if button == "KU6" and self.KU2.Value < 1 then self.KU6:TriggerInput("Open",1) end - if button == "KU7" and self.KU2.Value < 1 then self.KU7:TriggerInput("Open",1) end - if button == "KU6" then self.KU6Pressed = false end - if button == "KU7" then self.KU7Pressed = false end - - if button:sub(1,3) == "ANN" then - local ID = button:sub(4,-1) - if self:GetNW2Int("TrainType",1) == 1 then - self.RRI:TriggerInput(ID,0) - elseif ID == "Up" then - self.R_ASNPUp:TriggerInput("Set",0) - elseif ID == "Down" then - self.R_ASNPDown:TriggerInput("Set",0) - elseif ID == "Right" then - self.R_ASNPMenu:TriggerInput("Set",0) - end - return - end - - if button == "KVSetT1AB" then - if self.KV.ControllerPosition > -2 then - self.KV:TriggerInput("ControllerSet",-2) - end - end - if button == "KVSetX1B" then - if self.KV.ControllerPosition > 1 then - self.KV:TriggerInput("ControllerSet",1) - end - end - if button == "KVSetT1B" then - if self.KV.ControllerPosition < -1 then - self.KV:TriggerInput("ControllerSet",-1) - end - end -end - -function ENT:OnCouple(train,isfront) - if isfront and self.FrontAutoCouple then - self.FrontBrakeLineIsolation:TriggerInput("Open",1.0) - self.FrontTrainLineIsolation:TriggerInput("Open",1.0) - self.FrontAutoCouple = false - elseif not isfront and self.RearAutoCouple then - self.RearBrakeLineIsolation:TriggerInput("Open",1.0) - self.RearTrainLineIsolation:TriggerInput("Open",1.0) - self.RearAutoCouple = false - end - self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file diff --git a/lua/entities/gmod_subway_em508/shared.lua b/lua/entities/gmod_subway_em508/shared.lua deleted file mode 100644 index 3985b1c..0000000 --- a/lua/entities/gmod_subway_em508/shared.lua +++ /dev/null @@ -1,681 +0,0 @@ -ENT.Type = "anim" -ENT.Base = "gmod_subway_base" - -ENT.PrintName = "Em508 (81-508)" -ENT.Author = "" -ENT.Contact = "" -ENT.Purpose = "" -ENT.Instructions = "" -ENT.Category = "Metrostroi (trains)" -ENT.SkinsType = "81-707" -ENT.Model = "models/metrostroi_train/81-710/81-508t.mdl" - -ENT.Spawnable = true -ENT.AdminSpawnable = false -ENT.DontAccelerateSimulation = false - -function ENT:PassengerCapacity() - return 300 -end - -function ENT:GetStandingArea() - return Vector(-450,-30,-55),Vector(380,30,-55) -end - -local function GetDoorPosition(i,k) - return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) -end - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - -ENT.AnnouncerPositions = { - {Vector(420,-38.2 ,35),80,0.4}, - {Vector(-3,-60, 62),300,0.3}, - {Vector(-3,60 ,62),300,0.3}, -} - -ENT.MirrorCams = { - Vector(441,72,8),Angle(1,180,0),15, - Vector(441,-72,8),Angle(1,180,0),15, -} - -ENT.Cameras = { - {Vector(407+8.5+15,32,16) ,Angle(0,180,0),"Train.703.Breakers1"}, - {Vector(407+8.5+13,48,21) ,Angle(0,180,0),"Train.703.Breakers2"}, - {Vector(407+8.5+28,48,16) ,Angle(0,40,0),"Train.Common.HelpersPanel"}, - {Vector(407+8.5+11,37,5) ,Angle(30,0,0),"Train.703.Parking"}, - {Vector(407.5+45,-38,36),Angle(10,-5,0),"Train.Common.ASNP","ASNP"}, - {Vector(407.5+40,-50.3,12.7),Angle(0,-30,0),"Train.Common.IGLA","IGLAButtons"}, - {Vector(407+8.5+08,-36,15),Angle(35,180,0),"Train.Common.RRI","RRI"}, - {Vector(407+8.5+62,40,2) ,Angle(20,180,0),"Train.Common.RouteNumber"}, - {Vector(407+8.5+70,2,6) ,Angle(20,180,0),"Train.Common.LastStation"}, - {Vector(450+8+6,0,26),Angle(60,0,0),"Train.Common.CouplerCamera"}, -} -function ENT:InitializeSounds() - self.BaseClass.InitializeSounds(self) - self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} - self.SoundNames["rolling_10"] = {loop=true,"subway_trains/717/rolling/10_rolling.wav"} - self.SoundNames["rolling_40"] = {loop=true,"subway_trains/717/rolling/40_rolling.wav"} - self.SoundNames["rolling_70"] = {loop=true,"subway_trains/717/rolling/70_rolling.wav"} - self.SoundNames["rolling_80"] = {loop=true,"subway_trains/717/rolling/80_rolling.wav"} - self.SoundPositions["rolling_5"] = {480,1e12,Vector(0,0,0),0.10} - self.SoundPositions["rolling_10"] = {480,1e12,Vector(0,0,0),0.17} - self.SoundPositions["rolling_40"] = {480,1e12,Vector(0,0,0),0.40} - self.SoundPositions["rolling_70"] = {480,1e12,Vector(0,0,0),0.46} - self.SoundPositions["rolling_80"] = {480,1e12,Vector(0,0,0),0.60} - - self.SoundNames["rolling_motors"] = {loop=true,"subway_trains/ezh/rolling/rolling_motors.wav"} - self.SoundPositions["rolling_motors"] = {480,1e12,Vector(0,0,0),.4} - - self.SoundNames["rolling_low"] = {loop=true,"subway_trains/717/rolling/rolling_outside_low.wav"} - self.SoundNames["rolling_medium1"] = {loop=true,"subway_trains/717/rolling/rolling_outside_medium1.wav"} - self.SoundNames["rolling_medium2"] = {loop=true,"subway_trains/717/rolling/rolling_outside_medium2.wav"} - self.SoundNames["rolling_high2"] = {loop=true,"subway_trains/717/rolling/rolling_outside_high2.wav"} - self.SoundPositions["rolling_low"] = {480,1e12,Vector(0,0,0),0.6} - self.SoundPositions["rolling_medium1"] = {600,1e12,Vector(0,0,0),1} - self.SoundPositions["rolling_medium2"] = {600,1e12,Vector(0,0,0),1} - self.SoundPositions["rolling_high2"] = {600,1e12,Vector(0,0,0),1.00} - - self.SoundNames["pneumo_disconnect2"] = "subway_trains/common/pneumatic/pneumo_close.mp3" - self.SoundNames["pneumo_disconnect1"] = { - "subway_trains/common/pneumatic/pneumo_open.mp3", - "subway_trains/common/pneumatic/pneumo_open2.mp3", - } - self.SoundPositions["pneumo_disconnect2"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - self.SoundPositions["pneumo_disconnect1"] = {60,1e9,Vector(431.8,-50.1+1.5,-33.7),1} - - self.SoundNames["avu_off"] = "subway_trains/717/relays/lsd_2.mp3" - self.SoundNames["avu_on"] = "subway_trains/717/relays/new/kd_on.mp3" - self.SoundPositions["avu_on"] = {60,1e9, Vector(453,-40,-45),0.5} - self.SoundPositions["avu_off"] = {60,1e9, Vector(453,-40,-45),0.5} - --Подвагонка - self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk2_on.mp3" - self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk5_on"] = "subway_trains/717/pneumo/lk1_on.mp3" - self.SoundNames["lk5_off"] = "subway_trains/717/pneumo/lk2_off.mp3" - self.SoundNames["lk3_on"] = "subway_trains/717/pneumo/lk3_on.mp3" - self.SoundNames["lk3_off"] = "subway_trains/717/pneumo/lk3_off.mp3" - self.SoundPositions["lk2_on"] = {440,1e9,Vector(-60,-40,-66),0.22} - self.SoundPositions["lk2_off"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk5_on"] = {440,1e9,Vector(-60,-40,-66),0.30} - self.SoundPositions["lk5_off"] = self.SoundPositions["lk2_off"] - self.SoundPositions["lk3_on"] = self.SoundPositions["lk2_on"] - self.SoundPositions["lk3_off"] = self.SoundPositions["lk2_off"] - - self.SoundNames["compressor"] = {loop=1.79,"subway_trains/717/compressor/compressor_717_start2.wav","subway_trains/717/compressor/compressor_717_loop2.wav", "subway_trains/717/compressor/compressor_717_stop2.wav"} - self.SoundPositions["compressor"] = {485,1e9,Vector(-118,-40,-66),0.55} - self.SoundNames["compressor_reflection"] = {"subway_trains/common/junk/junk_background2.wav"} - self.SoundPositions["compressor_reflection"] = {150,1e9,Vector(300,0,0)} - self.SoundPositions["compressor_reflection"] = {150,1e9,Vector(-300,0,0)} - self.SoundNames["rk"] = {"subway_trains/ezh/rk/rk_start.wav","subway_trains/ezh/rk/rk_spin.wav","subway_trains/ezh/rk/rk_stop.wav"} - self.SoundPositions["rk"] = {50,1e9,Vector(110,-40,-75),0.22} - - - self.SoundNames["ezh3_revers_0-f"] = {"subway_trains/717/kv70/reverser_0-f_1.mp3","subway_trains/717/kv70/reverser_0-f_2.mp3"} - self.SoundNames["ezh3_revers_f-0"] = {"subway_trains/717/kv70/reverser_f-0_1.mp3","subway_trains/717/kv70/reverser_f-0_2.mp3"} - self.SoundNames["ezh3_revers_0-b"] = {"subway_trains/717/kv70/reverser_0-b_1.mp3","subway_trains/717/kv70/reverser_0-b_2.mp3"} - self.SoundNames["ezh3_revers_b-0"] = {"subway_trains/717/kv70/reverser_b-0_1.mp3","subway_trains/717/kv70/reverser_b-0_2.mp3"} - self.SoundNames["revers_in"] = {"subway_trains/ezh3/kv66/revers_in.mp3"} - self.SoundNames["revers_out"] = {"subway_trains/ezh3/kv66/revers_out.mp3"} - self.SoundNames["rcu_in"] = {"subway_trains/ezh3/kv66/revers_in.mp3"} - self.SoundNames["rcu_out"] = {"subway_trains/ezh3/kv66/revers_out.mp3"} - self.SoundNames["rcu_on"] = {"subway_trains/ezh3/kv66/rcu_on.mp3","subway_trains/ezh3/kv66/rcu_on2.mp3"} - self.SoundNames["rcu_off"] = "subway_trains/ezh3/kv66/rcu_off.mp3" - self.SoundPositions["ezh3_revers_0-f"] = {80,1e9,Vector(457.85,-22.8,-6)} - self.SoundPositions["ezh3_revers_f-0"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["ezh3_revers_0-b"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["ezh3_revers_b-0"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["revers_in"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["revers_out"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["rcu_on"] = self.SoundPositions["ezh3_revers_0-f"] - self.SoundPositions["rcu_off"] = self.SoundPositions["rcu_on"] - self.SoundPositions["rcu_in"] = self.SoundPositions["rcu_on"] - self.SoundPositions["rcu_out"] = self.SoundPositions["rcu_on"] - - self.SoundNames["kru_in"] = { - "subway_trains/717/kru/kru_insert1.mp3", - "subway_trains/717/kru/kru_insert2.mp3" - } - self.SoundPositions["kru_in"] = {80,1e9,Vector(452.3,-24.0,4.0)} - self.SoundNames["kru_out"] = { - "subway_trains/717/kru/kru_eject1.mp3", - "subway_trains/717/kru/kru_eject2.mp3", - "subway_trains/717/kru/kru_eject3.mp3", - } - self.SoundPositions["kru_out"] = self.SoundPositions["kru_in"] - - self.SoundNames["kru_0_1"] = { - "subway_trains/717/kru/kru0-1_1.mp3", - "subway_trains/717/kru/kru0-1_2.mp3", - "subway_trains/717/kru/kru0-1_3.mp3", - "subway_trains/717/kru/kru0-1_4.mp3", - } - self.SoundNames["kru_1_2"] = { - "subway_trains/717/kru/kru1-2_1.mp3", - "subway_trains/717/kru/kru1-2_2.mp3", - "subway_trains/717/kru/kru1-2_3.mp3", - "subway_trains/717/kru/kru1-2_4.mp3", - } - self.SoundNames["kru_2_1"] = { - "subway_trains/717/kru/kru2-1_1.mp3", - "subway_trains/717/kru/kru2-1_2.mp3", - "subway_trains/717/kru/kru2-1_3.mp3", - "subway_trains/717/kru/kru2-1_4.mp3", - } - self.SoundNames["kru_1_0"] = { - "subway_trains/717/kru/kru1-0_1.mp3", - "subway_trains/717/kru/kru1-0_2.mp3", - "subway_trains/717/kru/kru1-0_3.mp3", - "subway_trains/717/kru/kru1-0_4.mp3", - } - self.SoundNames["kru_2_3"] = { - "subway_trains/717/kru/kru1-2_1.mp3", - "subway_trains/717/kru/kru1-2_2.mp3", - "subway_trains/717/kru/kru1-2_3.mp3", - "subway_trains/717/kru/kru1-2_4.mp3", - } - self.SoundNames["kru_3_2"] = { - "subway_trains/717/kru/kru2-1_1.mp3", - "subway_trains/717/kru/kru2-1_2.mp3", - "subway_trains/717/kru/kru2-1_3.mp3", - "subway_trains/717/kru/kru2-1_4.mp3", - } - self.SoundPositions["kru_0_1"] = self.SoundPositions["kru_in"] - self.SoundPositions["kru_1_2"] = self.SoundPositions["kru_in"] - self.SoundPositions["kru_2_1"] = self.SoundPositions["kru_in"] - self.SoundPositions["kru_1_0"] = self.SoundPositions["kru_in"] - self.SoundPositions["kru_2_3"] = self.SoundPositions["kru_in"] - self.SoundPositions["kru_3_2"] = self.SoundPositions["kru_in"] - - self.SoundNames["kr_left"] = "subway_trains/ezh3/controller/krishechka_left.mp3" - self.SoundNames["kr_right"] = "subway_trains/ezh3/controller/krishechka_right.mp3" - - self.SoundNames["switch_off"] = { - "subway_trains/717/switches/tumbler_slim_off1.mp3", - "subway_trains/717/switches/tumbler_slim_off2.mp3", - "subway_trains/717/switches/tumbler_slim_off3.mp3", - "subway_trains/717/switches/tumbler_slim_off4.mp3", - } - self.SoundNames["switch_on"] = { - "subway_trains/717/switches/tumbler_slim_on1.mp3", - "subway_trains/717/switches/tumbler_slim_on2.mp3", - "subway_trains/717/switches/tumbler_slim_on3.mp3", - "subway_trains/717/switches/tumbler_slim_on4.mp3", - } - - self.SoundNames["switchbl_off"] = { - "subway_trains/717/switches/tumbler_fatb_off1.mp3", - "subway_trains/717/switches/tumbler_fatb_off2.mp3", - "subway_trains/717/switches/tumbler_fatb_off3.mp3", - } - self.SoundNames["switchbl_on"] = { - "subway_trains/717/switches/tumbler_fatb_on1.mp3", - "subway_trains/717/switches/tumbler_fatb_on2.mp3", - "subway_trains/717/switches/tumbler_fatb_on3.mp3", - } - - self.SoundNames["triple_down-0"] = { - "subway_trains/717/switches/tumbler_triple_down-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_down-0_2.mp3", - } - self.SoundNames["triple_0-up"] = { - "subway_trains/717/switches/tumbler_triple_0-up_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-up_2.mp3", - } - self.SoundNames["triple_up-0"] = { - "subway_trains/717/switches/tumbler_triple_up-0_1.mp3", - "subway_trains/717/switches/tumbler_triple_up-0_2.mp3", - } - self.SoundNames["triple_0-down"] = { - "subway_trains/717/switches/tumbler_triple_0-down_1.mp3", - "subway_trains/717/switches/tumbler_triple_0-down_2.mp3", - } - self.SoundNames["button1_off"] = { - "subway_trains/ezh3/switches/button_off1.mp3", - "subway_trains/ezh3/switches/button_off2.mp3", - } - self.SoundNames["button1_on"] = { - "subway_trains/ezh3/switches/button_on1.mp3", - "subway_trains/ezh3/switches/button_on2.mp3", - } - self.SoundNames["button2_off"] = { - "subway_trains/ezh3/switches/button_off3.mp3", - "subway_trains/ezh3/switches/button_off4.mp3", - } - self.SoundNames["button2_on"] = { - "subway_trains/ezh3/switches/button_on3.mp3", - "subway_trains/ezh3/switches/button_on4.mp3", - } - self.SoundNames["button3_off"] = { - "subway_trains/ezh3/switches/button_off6.mp3", - "subway_trains/ezh3/switches/button_off5.mp3", - } - self.SoundNames["button3_on"] = { - "subway_trains/ezh3/switches/button_on5.mp3", - "subway_trains/ezh3/switches/button_on6.mp3", - } - - self.SoundNames["uava_reset"] = { - "subway_trains/common/uava/uava_reset1.mp3", - "subway_trains/common/uava/uava_reset2.mp3", - "subway_trains/common/uava/uava_reset4.mp3", - } - self.SoundPositions["uava_reset"] = {80,1e9,Vector(456.70,56.0,-10.23349),0.6} - self.SoundNames["gv_f"] = {"subway_trains/ezh3/kv66/rcu_on.mp3","subway_trains/ezh3/kv66/rcu_on2.mp3"} - self.SoundNames["gv_b"] = "subway_trains/ezh3/kv66/rcu_off.mp3" - self.SoundPositions["gv_f"] = {80,1e2,Vector(153.5-3,36+20,-78),0.5} - self.SoundPositions["gv_b"] = self.SoundPositions["gv_f"] - - self.SoundNames["vb1a_off"] = { - "subway_trains/d/vb1a/vb1a_off1.wav", - "subway_trains/d/vb1a/vb1a_off2.wav", - "subway_trains/d/vb1a/vb1a_off3.wav", - } - self.SoundNames["vb1a_on"] = { - "subway_trains/d/vb1a/vb1a_on1.wav", - "subway_trains/d/vb1a/vb1a_on2.wav", - "subway_trains/d/vb1a/vb1a_on3.wav", - } - - self.SoundNames["vu220b1_off"] = { - "subway_trains/d/vu220b1/vu220b1_off1.wav", - "subway_trains/d/vu220b1/vu220b1_off2.wav", - "subway_trains/d/vu220b1/vu220b1_off3.wav", - "subway_trains/d/vu220b1/vu220b1_off4.wav", - "subway_trains/d/vu220b1/vu220b1_off5.wav", - } - self.SoundNames["vu220b1_on"] = { - "subway_trains/d/vu220b1/vu220b1_on1.wav", - "subway_trains/d/vu220b1/vu220b1_on2.wav", - "subway_trains/d/vu220b1/vu220b1_on3.wav", - "subway_trains/d/vu220b1/vu220b1_on4.wav", - "subway_trains/d/vu220b1/vu220b1_on5.wav", - } - - self.SoundNames["vu13a_off"] = { - "subway_trains/d/vu13a/vu13a_off1.wav", - "subway_trains/d/vu13a/vu13a_off2.wav", - "subway_trains/d/vu13a/vu13a_off3.wav", - "subway_trains/d/vu13a/vu13a_off4.wav", - "subway_trains/d/vu13a/vu13a_off5.wav", - } - self.SoundNames["vu13a_on"] = { - "subway_trains/d/vu13a/vu13a_on1.wav", - "subway_trains/d/vu13a/vu13a_on2.wav", - "subway_trains/d/vu13a/vu13a_on3.wav", - "subway_trains/d/vu13a/vu13a_on4.wav", - } - - - self.SoundNames["disconnect_valve"] = "subway_trains/common/switches/pneumo_disconnect_switch.mp3" - - --Краны - self.SoundNames["brake_f"] = {"subway_trains/common/pneumatic/vz_brake_on2.mp3","subway_trains/common/pneumatic/vz_brake_on3.mp3","subway_trains/common/pneumatic/vz_brake_on4.mp3"} - self.SoundPositions["brake_f"] = {50,1e9,Vector(317-8,0,-82),0.13} - self.SoundNames["brake_b"] = self.SoundNames["brake_f"] - self.SoundPositions["brake_b"] = {50,1e9,Vector(-317+0,0,-82),0.13} - self.SoundNames["release1"] = {loop=true,"subway_trains/common/pneumatic/release_0.wav"} - self.SoundPositions["release1"] = {350,1e9,Vector(-183,0,-70),1} - self.SoundNames["release2"] = {loop=true,"subway_trains/common/pneumatic/release_low.wav"} - self.SoundPositions["release2"] = {350,1e9,Vector(-183,0,-70),0.4} - - self.SoundNames["front_isolation"] = {loop=true,"subway_trains/common/pneumatic/isolation_leak.wav"} - self.SoundPositions["front_isolation"] = {300,1e9,Vector(469, 0,-63),1} - self.SoundNames["rear_isolation"] = {loop=true,"subway_trains/common/pneumatic/isolation_leak.wav"} - self.SoundPositions["rear_isolation"] = {300,1e9,Vector(-473, 0,-63),1} - - self.SoundNames["crane013_brake2"] = {loop=true,"subway_trains/common/pneumatic/013_brake2.wav"} - self.SoundPositions["crane013_brake2"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.86} - self.SoundNames["crane334_brake_high"] = {loop=true,"subway_trains/common/pneumatic/334_brake.wav"} - self.SoundPositions["crane334_brake_high"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.85} - self.SoundNames["crane334_brake_low"] = {loop=true,"subway_trains/common/pneumatic/334_brake_slow.wav"} - self.SoundPositions["crane334_brake_low"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.75} - self.SoundNames["crane334_brake_2"] = {loop=true,"subway_trains/common/pneumatic/334_brake_slow.wav"} - self.SoundPositions["crane334_brake_2"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.85} - self.SoundNames["crane334_brake_eq_high"] = {loop=true,"subway_trains/common/pneumatic/334_release_reservuar.wav"} - self.SoundPositions["crane334_brake_eq_high"] = {80,1e9,Vector(456.55,-52.57,-70),0.45} - self.SoundNames["crane334_brake_eq_low"] = {loop=true,"subway_trains/common/pneumatic/334_brake_slow2.wav"} - self.SoundPositions["crane334_brake_eq_low"] = {80,1e9,Vector(456.55,-52.57,-70),0.45} - self.SoundNames["crane334_release"] = {loop=true,"subway_trains/common/pneumatic/334_release3.wav"} - self.SoundPositions["crane334_release"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.2} - self.SoundNames["crane334_release_2"] = {loop=true,"subway_trains/common/pneumatic/334_release2.wav"} - self.SoundPositions["crane334_release_2"] = {80,1e9,Vector(456.55,-52.57,-4.4),0.2} - - self.SoundNames["valve_brake"] = {loop=true,"subway_trains/common/pneumatic/epv_loop.wav"} - self.SoundPositions["valve_brake"] = {400,1e9,Vector(464.5-0.1,24.4,-50),1} - - --self.SoundNames["emer_brake"] = {loop=0.8,"subway_trains/common/pneumatic/autostop_start.wav","subway_trains/common/pneumatic/autostop_loop.wav", "subway_trains/common/pneumatic/autostop_end.wav"} - self.SoundNames["emer_brake"] = {loop=true,"subway_trains/common/pneumatic/autostop_loop.wav"} - self.SoundNames["emer_brake2"] = {loop=true,"subway_trains/common/pneumatic/autostop_loop_2.wav"} - self.SoundPositions["emer_brake"] = {600,1e9,Vector(380,-65,-75)} - self.SoundPositions["emer_brake2"] = self.SoundPositions["emer_brake"] - - self.SoundNames["pneumo_TL_open"] = { - "subway_trains/common/334/334_open.mp3", - } - self.SoundNames["pneumo_TL_open_background"] = { - "subway_trains/common/334/334_open_pipeinside.mp3", - } - self.SoundPositions["pneumo_TL_open_background"] = {180,1e9,Vector(449.90,-56.47,-33.9),0.2} - - self.SoundNames["pneumo_TL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - self.SoundNames["pneumo_BL_disconnect"] = { - "subway_trains/common/334/334_close.mp3", - } - - self.SoundNames["igla_on"] = "subway_trains/common/other/igla/igla_on1.mp3" - self.SoundNames["igla_off"] = "subway_trains/common/other/igla/igla_off2.mp3" - self.SoundNames["igla_start1"] = "subway_trains/common/other/igla/igla2_start1.mp3" - self.SoundNames["igla_start2"] = "subway_trains/common/other/igla/igla2_start2.mp3" - self.SoundPositions["igla_on"] = {50,1e9,Vector(459.1,-53.7+2,15.81+1),0.1} - self.SoundPositions["igla_off"] = {50,1e9,Vector(459.1,-53.7+2,15.81+1),0.1} - self.SoundPositions["igla_start1"] = {50,1e9,Vector(459.1,-53.7+2,15.81+1),0.1} - self.SoundPositions["igla_start2"] = {50,1e9,Vector(459.1,-53.7+2,15.81+1),0.1} - - self.SoundNames["pnm_on"] = {"subway_trains/common/pnm/pnm_switch_on.mp3","subway_trains/common/pnm/pnm_switch_on2.mp3"} - self.SoundNames["pnm_off"] = "subway_trains/common/pnm/pnm_switch_off.mp3" - self.SoundNames["pnm_button1_on"] = { - "subway_trains/common/pnm/pnm_button_push.mp3", - "subway_trains/common/pnm/pnm_button_push2.mp3", - } - - self.SoundNames["pnm_button2_on"] = { - "subway_trains/common/pnm/pnm_button_push3.mp3", - "subway_trains/common/pnm/pnm_button_push4.mp3", - } - - self.SoundNames["pnm_button1_off"] = { - "subway_trains/common/pnm/pnm_button_release.mp3", - "subway_trains/common/pnm/pnm_button_release2.mp3", - "subway_trains/common/pnm/pnm_button_release3.mp3", - } - - self.SoundNames["pnm_button2_off"] = { - "subway_trains/common/pnm/pnm_button_release4.mp3", - "subway_trains/common/pnm/pnm_button_release5.mp3", - } - - self.SoundNames["horn0"] = {loop=0.8,"subway_trains/common/pneumatic/horn/horn0_start.wav","subway_trains/common/pneumatic/horn/horn0_loop.wav", "subway_trains/common/pneumatic/horn/horn0_end.wav"} - self.SoundNames["horn"] = {loop=0.6,"subway_trains/common/pneumatic/horn/horn3_start.wav","subway_trains/common/pneumatic/horn/horn3_loop.wav", "subway_trains/common/pneumatic/horn/horn3_end.wav"} - self.SoundPositions["horn"] = {1100,1e9,Vector(475,-20,-55)} - self.SoundPositions["horn0"] = self.SoundPositions["horn"] - - self.SoundNames["pak_on"] = "subway_trains/717/switches/rc_on.mp3" - self.SoundNames["pak_off"] = "subway_trains/717/switches/rc_off.mp3" - - self.SoundNames["kv70_fix_on"] = {"subway_trains/717/kv70/kv70_fix_on1.mp3","subway_trains/717/kv70/kv70_fix_on2.mp3"} - self.SoundNames["kv70_fix_off"] = {"subway_trains/717/kv70/kv70_fix_off1.mp3","subway_trains/717/kv70/kv70_fix_off2.mp3"} - self.SoundNames["kv40_0_t1"] = {"subway_trains/ezh/kv40_2/0_t1.mp3"} - self.SoundNames["kv40_t1_0"] = {"subway_trains/ezh/kv40_2/t1_0.mp3"} - self.SoundNames["kv40_t1_t1a"] = {"subway_trains/ezh/kv40_2/t1_t1a.mp3"} - self.SoundNames["kv40_t1a_t1"] = {"subway_trains/ezh/kv40_2/t1a_t1.mp3"} - self.SoundNames["kv40_t1a_t2"] = {"subway_trains/ezh/kv40_2/t1a_t2.mp3"} - self.SoundNames["kv40_t2_t1a"] = {"subway_trains/ezh/kv40_2/t2_t1a.mp3"} - self.SoundNames["kv40_0_x1"] = {"subway_trains/ezh/kv40_2/0_x1_2.mp3"} - self.SoundNames["kv40_x1_0"] = {"subway_trains/ezh/kv40_2/x1_0.mp3"} - self.SoundNames["kv40_x1_x2"] = {"subway_trains/ezh/kv40_2/x1_x2.mp3"} - self.SoundNames["kv40_x2_x1"] = {"subway_trains/ezh/kv40_2/x2_x1.mp3"} - self.SoundNames["kv40_x2_x3"] = {"subway_trains/ezh/kv40_2/x2_x3.mp3"} - self.SoundNames["kv40_x3_x2"] = {"subway_trains/ezh/kv40_2/x3_x2.mp3"} - self.SoundPositions["kv70_fix_on"] = {100,1e9,Vector(457.85,-22.8,-6),1} - self.SoundPositions["kv70_fix_off"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_0_t1"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv70_t1_0_fix"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_t1_0"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_t1_t1a"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_t1a_t1"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_t1a_t2"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_t2_t1a"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_0_x1"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_x1_0"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_x1_x2"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_x2_x1"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_x2_x3"] = self.SoundPositions["kv70_fix_on"] - self.SoundPositions["kv40_x3_x2"] = self.SoundPositions["kv70_fix_on"] - - self.SoundNames["ring_old"] = {loop=0.15,"subway_trains/717/ring/ringo_start.wav","subway_trains/717/ring/ringo_loop.wav","subway_trains/717/ring/ringo_end.mp3"} - self.SoundPositions["ring_old"] = {60,1e9,Vector(400,-30,55),0.5} - - self.SoundNames["vpr"] = {loop=0.8,"subway_trains/common/other/radio/vpr_start.wav","subway_trains/common/other/radio/vpr_loop.wav","subway_trains/common/other/radio/vpr_off.wav"} - self.SoundPositions["vpr"] = {50,1e9,Vector(403,-38.2 ,55),0.05} - - self.SoundNames["cab_door_open"] = "subway_trains/common/door/cab/door_open.mp3" - self.SoundNames["cab_door_close"] = "subway_trains/common/door/cab/door_close.mp3" - - self.SoundNames["parking_brake_rolling"] = {"subway_trains/ezh3/parking_brake_rolling1.mp3","subway_trains/ezh3/parking_brake_rolling2.mp3","subway_trains/ezh3/parking_brake_rolling3.mp3","subway_trains/ezh3/parking_brake_rolling4.mp3"} - self.SoundPositions["parking_brake_rolling"] = {65,1e9,Vector(456.72,35.5,-14.843545),0.1} - self.SoundNames["av8_on"] = {"subway_trains/common/switches/av8/av8_on.mp3","subway_trains/common/switches/av8/av8_on2.mp3"} - self.SoundNames["av8_off"] = {"subway_trains/common/switches/av8/av8_off.mp3","subway_trains/common/switches/av8/av8_off2.mp3"} - self.SoundPositions["av8_on"] = {100,1e9,Vector(405,40,30)} - self.SoundPositions["av8_off"] = {100,1e9,Vector(405,40,30)} - - self.SoundNames["vu22_on"] = {"subway_trains/ezh3/vu/vu22_on1.mp3", "subway_trains/ezh3/vu/vu22_on2.mp3", "subway_trains/ezh3/vu/vu22_on3.mp3"} - self.SoundNames["vu22_off"] = {"subway_trains/ezh3/vu/vu22_off1.mp3", "subway_trains/ezh3/vu/vu22_off2.mp3", "subway_trains/ezh3/vu/vu22_off3.mp3"} - self.SoundNames["vu223_on"] = {"subway_trains/common/switches/vu22/vu22_3_on.mp3"} - self.SoundNames["vu223_off"] = {"subway_trains/common/switches/vu22/vu22_3_off.mp3"} - - --DOORS - self.SoundNames["vdol_on"] = { - "subway_trains/common/pneumatic/door_valve/VDO_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_on.mp3", - } - self.SoundNames["vdol_off"] = { - "subway_trains/common/pneumatic/door_valve/VDO_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDO2_off.mp3", - } - self.SoundPositions["vdol_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdol_off"] = {100,1e9,Vector(410,20,-45)} - self.SoundNames["vdor_on"] = self.SoundNames["vdol_on"] - self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] - self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] - self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end - self.SoundNames["vdz_on"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_on.mp3", - } - self.SoundNames["vdz_off"] = { - "subway_trains/common/pneumatic/door_valve/VDZ_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ2_off.mp3", - "subway_trains/common/pneumatic/door_valve/VDZ3_off.mp3", - } - self.SoundPositions["vdz_on"] = {100,1e9,Vector(410,20,-45)} - self.SoundPositions["vdz_off"] = {100,1e9,Vector(410,20,-45)} - - self.SoundNames["kk_off"] = "subway_trains/common/pneumatic/ak11b_off2.mp3" - self.SoundNames["kk_on"] = "subway_trains/common/pneumatic/ak11b_on2.mp3" - self.SoundPositions["kk_on"] = {100,1e9,Vector(407,-55,-5),0.3} - self.SoundPositions["kk_off"] = {100,1e9,Vector(407,-55,-5),0.3} - - for i=0,3 do - for k=0,1 do - self.SoundNames["door"..i.."x"..k.."r"] = {"subway_trains/common/door/door_roll.wav",loop=true} - self.SoundPositions["door"..i.."x"..k.."r"] = {150,1e9,GetDoorPosition(i,k),0.11} - self.SoundNames["door"..i.."x"..k.."o"] = {"subway_trains/common/door/door_open_end5.mp3","subway_trains/common/door/door_open_end6.mp3","subway_trains/common/door/door_open_end7.mp3"} - self.SoundPositions["door"..i.."x"..k.."o"] = {350,1e9,GetDoorPosition(i,k),2} - self.SoundNames["door"..i.."x"..k.."c"] = {"subway_trains/common/door/door_close_end.mp3","subway_trains/common/door/door_close_end2.mp3","subway_trains/common/door/door_close_end3.mp3","subway_trains/common/door/door_close_end4.mp3","subway_trains/common/door/door_close_end5.mp3"} - self.SoundPositions["door"..i.."x"..k.."c"] = {400,1e9,GetDoorPosition(i,k),2} - end - end - - for k,v in ipairs(self.AnnouncerPositions) do - self.SoundNames["announcer_noise1_"..k] = {loop=true,"subway_announcers/upo/noiseS1.wav"} - self.SoundPositions["announcer_noise1_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - self.SoundNames["announcer_noise2_"..k] = {loop=true,"subway_announcers/upo/noiseS2.wav"} - self.SoundPositions["announcer_noise2_"..k] = {v[2] or 300,1e9,v[1],v[3]*0.5} - end - - self.SoundNames["RKR"] = "subway_trains/common/pneumatic/rkr2.mp3" - self.SoundPositions["RKR"] = {330,1e9,Vector(-27,-40,-66),0.22} - self.SoundNames["PN2end"] = {"subway_trains/common/pneumatic/vz2_end.mp3","subway_trains/common/pneumatic/vz2_end_2.mp3","subway_trains/common/pneumatic/vz2_end_3.mp3","subway_trains/common/pneumatic/vz2_end_4.mp3"} - self.SoundPositions["PN2end"] = {350,1e9,Vector(-183,0,-70),0.3} -end - -function ENT:InitializeSystems() - -- Электросистема Е - self:LoadSystem("Electric","81_703_Electric") - - -- Токоприёмник - self:LoadSystem("TR","TR_3B") - -- Электротяговые двигатели - self:LoadSystem("Engines","DK_108D") - - -- Резисторы для реостата/пусковых сопротивлений - self:LoadSystem("KF_47A","81_703_KF_47A") - -- Резисторы для ослабления возбуждения - self:LoadSystem("KF_50A") - -- Ящик с предохранителями - self:LoadSystem("YAP_57") - - -- Резисторы для цепей управления - --self:LoadSystem("YAS_44V") - self:LoadSystem("Reverser","PR_722D") - -- Реостатный контроллер для управления пусковыми сопротивления - self:LoadSystem("RheostatController","EKG_17A") - -- Групповой переключатель положений - self:LoadSystem("PositionSwitch","EKG_18A") - -- Кулачковый контроллер - self:LoadSystem("KV","KV_40") - -- Контроллер резервного управления (KRP) - self:LoadSystem("KRU") - - - -- Ящики с реле и контакторами - self:LoadSystem("LK_755A") - self:LoadSystem("YAR_13A") - --self:LoadSystem("YAR_27") - self:LoadSystem("YAK_36") - self:LoadSystem("YAK_31A") - self:LoadSystem("YAS_44V") - self:LoadSystem("YARD_2") - self:LoadSystem("PR_109A") - - -- Пневмосистема 81-703 - self:LoadSystem("Pneumatic","81_703_Pneumatic") - -- Панель управления Е - self:LoadSystem("Panel","81_508_Panel") - -- Everything else - self:LoadSystem("Battery") - self:LoadSystem("Horn") - - self:LoadSystem("Announcer","81_71_Announcer", "AnnouncementsASNP") - self:LoadSystem("ASNP","81_71_ASNP") - self:LoadSystem("ASNP_VV","81_71_ASNP_VV") - self:LoadSystem("RRI","81_71_RRI") - self:LoadSystem("RRI_VV","81_71_RRI_VV") - - self:LoadSystem("IGLA_CBKI","IGLA_CBKI2") - - self:LoadSystem("RouteNumber","81_71_RouteNumber",2) - self:LoadSystem("LastStation","81_71_LastStation","710","door1") - self:LoadSystem("IGLA_PCBK") - - self:LoadSystem("ALSCoil") - self:LoadSystem("UKS","81_508_UKS") -end -function ENT:PostInitializeSystems() - self.Electric:TriggerInput("Type",self.Electric.Em) -end - -ENT.SubwayTrain = { - Type = "E", - Name = "81-508", - WagType = 0, - ARS = { - NoEPK = true, - }, - ALS = { - HaveAutostop = true, - }, - EKKType = 703, -} -ENT.NumberRanges = {{3001,3100},{3301,3400},{3501,3699},{4701,4750},{4851,4900}} - -ENT.Spawner = { - model = { - "models/metrostroi_train/81-703/81-703.mdl", - "models/metrostroi_train/81-703/703_cabine.mdl", - "models/metrostroi_train/81-703/703_salon.mdl", - {"models/metrostroi_train/81-703/81-703_Underwagon.mdl",pos=Vector(-23.5,0,-191)}, - {"models/metrostroi_train/81-502/sun_protectors.mdl",pos=Vector(-8,0,0)}, - {"models/metrostroi_train/81-502/mirrors_ema.mdl",pos=Vector(-7.7,0,0)}, - }, - interim = "gmod_subway_ezh1", - func = function(ent,i,maxi) - if ent:GetClass() == "gmod_subway_em508" then - ent.VU:TriggerInput("Set",1) - ent.UAVA:TriggerInput("Set",0) - ent.Plombs.VU = nil - ent.Plombs.UAVA = true - else - ent.VU:TriggerInput("Set",0) - ent.UAVA:TriggerInput("Set",1) - ent.Plombs.VU = true - ent.Plombs.UAVA = nil - end - end, - Metrostroi.Skins.GetTable("Texture","Texture",false,"train"), - Metrostroi.Skins.GetTable("PassTexture","PassTexture",false,"pass"), - Metrostroi.Skins.GetTable("CabTexture","CabTexture",false,"cab"), - {"Announcer","Spawner.710.Announcer","List",function() - local Announcer = {} - if Metrostroi.AnnouncementsRRI then - table.insert(Announcer,Metrostroi.GetPhrase("Spawner.710.RRI")) - end - for k,v in pairs(Metrostroi.AnnouncementsASNP or {}) do if not v.asnp then Announcer[k+1] = v.name or k end end - return Announcer - end, nil,function(ent,val,rot,i,wagnum,rclk) - if Metrostroi.AnnouncementsRRI and val==1 then - ent:SetNW2Int("AnnType",1) - ent:SetNW2Int("Announcer",1) - else - ent:SetNW2Int("Announcer",val-1) - ent:SetNW2Int("AnnType",2) - end - end}, - {"SpawnMode","Spawner.Common.SpawnMode","List",{"Spawner.Common.SpawnMode.Full","Spawner.Common.SpawnMode.Deadlock","Spawner.Common.SpawnMode.NightDeadlock","Spawner.Common.SpawnMode.Depot"}, nil,function(ent,val,rot,i,wagnum,rclk) - if rclk then return end - if ent._SpawnerStarted~=val then - ent.VB:TriggerInput("Set",val<=2 and 1 or 0) - ent.AV:TriggerInput("Set",val<=2 and 1 or 0) - if ent.RRI then - local first = i==1 or _LastSpawner~=CurTime() - - ent.VU2:TriggerInput("Set",(val<=2 and first) and 1 or 0) - --ent.VR:TriggerInput("Set",val<=2 and 1 or 0) - ent.RRIEnable:TriggerInput("Set",val<=2 and 1 or 0) - ent.RRIAmplifier:TriggerInput("Set",val<=2 and 1 or 0) - ent.R_ASNPOn:TriggerInput("Set",val<=2 and 1 or 0) - ent.KU1:TriggerInput("Set",(val==1 and first) and 1 or 0) - _LastSpawner=CurTime() - ent.CabinDoor = val==4 and first - ent.PassengerDoor = val==4 - ent.RearDoor = val==4 - else - ent.FrontDoor = val==4 - ent.RearDoor = val==4 - end - ent.GV:TriggerInput("Set",val<4 and 1 or 0) - ent._SpawnerStarted = val - end - if val==1 then ent.KO:TriggerInput("Close",1) else ent.KO:TriggerInput("Open",1) end - ent.Pneumatic.TrainLinePressure = val==3 and math.random()*4 or val==2 and 4.5+math.random()*3 or 7.6+math.random()*0.6 - if val==4 then ent.Pneumatic.BrakeLinePressure = 5.2 end - end}, -} diff --git a/lua/entities/gmod_subway_em508t/cl_init.lua b/lua/entities/gmod_subway_em508t/cl_init.lua index e3ae78a..c8c7131 100644 --- a/lua/entities/gmod_subway_em508t/cl_init.lua +++ b/lua/entities/gmod_subway_em508t/cl_init.lua @@ -60,7 +60,6 @@ end ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -- Main panel @@ -74,15 +73,9 @@ ENT.ButtonMap["Main"] = { buttons = { ----Лампы - {ID = "!RedRP", x=70+33*0,y=22, radius=20, tooltip="", model = { - sprite = {bright=0.2,size=0.25,scale=0.07,color=Color(255,93,0),z=7,lamp="light_rRP",hidden="ezh3_lrp"} - }}, - {ID = "!GreenRP",x=70+33*1,y=22, radius=20, tooltip="", model = { - sprite = {bright=0.2,size=0.25,scale=0.07,color=Color(8, 255, 170),z=7,lamp="Green_rp",hidden="ezh3_lrpgreen"} - }}, - {ID = "!SD", x=70+33*3,y=22, radius=20, tooltip="", model = { - sprite = {bright=0.2,size=0.25,scale=0.07,color=Color(53, 147, 255),z=7,lamp="light_SD",hidden="ezh3_lsd"} - }}, + {ID = "!RedRP", x=70+33*0,y=22, radius=20, tooltip=""}, + {ID = "!GreenRP",x=70+33*1,y=22, radius=20, tooltip=""}, + {ID = "!SD", x=70+33*3,y=22, radius=20, tooltip=""}, ----Кнопки { ID = "KU12Set", x=31, y=90, radius=20, tooltip="", model = { @@ -114,7 +107,6 @@ ENT.ButtonMap["Main"] = { var="V2",speed=9, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, { ID = "V1Toggle", x=31+45*4, y=90+65, radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-45, @@ -272,8 +264,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip=""}, } } @@ -298,7 +290,6 @@ ENT.ButtonMap["HelperPanel"] = { var="V3",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -313,8 +304,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0,y=0,w=66,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!EnginesVoltage", x=0,y=69,w=66,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0,y=0,w=66,h=60,tooltip=""}, + {ID = "!EnginesVoltage", x=0,y=69,w=66,h=60,tooltip=""}, } } @@ -327,7 +318,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -339,7 +330,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -350,7 +341,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip=""}, } } ENT.ButtonMap["DriverValveBLDisconnect"] = { @@ -365,7 +356,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -381,7 +371,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -391,10 +380,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -417,10 +409,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -450,7 +445,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -477,7 +471,7 @@ ENT.ButtonMap["AirDistributor"] = { hideseat=0.1, hide=true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } ENT.ClientProps["tab"] = { @@ -500,7 +494,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -516,7 +509,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -532,7 +524,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -558,7 +549,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -730,12 +720,6 @@ ENT.ClientProps["Lamps_half2"] = { ang = Angle(0,0,0), nohide = true, } -ENT.ClientProps["Lamps_cab1"] = { - model = "models/metrostroi_train/81-502/cabin_lamp_light.mdl", - pos = Vector(0,-0.05,0), - ang = Angle(0,0,0), - hide = 0.8, -} -------------------------------------------------------------------------------- -- Add doors --[[ local function GetDoorPosition(i,k,j) @@ -869,23 +853,7 @@ for i=0,3 do end ENT.Lights = { [1] = { "headlight", Vector(470,0,-35), Angle(0,0,0), Color(200,130,88), brightness = 4 , fov=100, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [22] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=110, farz=65, brightness = 3, shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden="Lamps_pult"}, - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - - -- Cabin - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "salon"}, - - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - Lamps_pult = {"light", Vector(445.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=110, farz=65, brightness = 3, shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() @@ -940,14 +908,10 @@ function ENT:Think() local HL1 = self:Animate("whitelights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false) local HL2 = self:Animate("distantlights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) - self:SetLightPower("Lamps_pult",HL1>0,HL1) self:ShowHideSmooth("Lamps_pult",HL1) - self:SetLightPower(22,HL1>0,HL1) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and HL1>0,HL1) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -961,35 +925,14 @@ function ENT:Think() end end - local Lamps = self:GetPackedRatio("LampsStrength") - - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab",cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("Lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0.5,0.25, 4,false) self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.5,0.25, 4,false) @@ -1183,9 +1126,9 @@ function ENT:Think() end local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1196,16 +1139,12 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) diff --git a/lua/entities/gmod_subway_em508t/init.lua b/lua/entities/gmod_subway_em508t/init.lua index bebf307..6bbc912 100644 --- a/lua/entities/gmod_subway_em508t/init.lua +++ b/lua/entities/gmod_subway_em508t/init.lua @@ -107,7 +107,7 @@ function ENT:Initialize() [KEY_7] = "KVWrenchNone", [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -173,6 +173,21 @@ function ENT:Initialize() }, } + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + + -- Cabin + [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { --[18] = true, @@ -183,6 +198,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -196,28 +219,39 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic + self:SetPackedBool("PanelLights",self.Panel["Headlights1"]> 0.5) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) self:SetPackedBool("Lamps_cab",emerActive1 > 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Switch and button states @@ -225,26 +259,26 @@ function ENT:Think() -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end self:SetPackedRatio("RRP",math.Clamp(TW18^1.2,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -253,22 +287,22 @@ function ENT:Think() self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150) @@ -298,12 +332,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -376,13 +410,11 @@ function ENT:OnButtonPress(button,ply) self.KV:TriggerInput("ControllerSet",-2) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then @@ -460,4 +492,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_em508t/shared.lua b/lua/entities/gmod_subway_em508t/shared.lua index d4bb40e..c8c6f54 100644 --- a/lua/entities/gmod_subway_em508t/shared.lua +++ b/lua/entities/gmod_subway_em508t/shared.lua @@ -25,12 +25,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,0 or 180,0),90 or 15, - Vector(441,-72,15),Angle(1,0 or 180,0),90 or 15, -} - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.4}, {Vector(-3,-60, 62),300,0.3}, @@ -45,14 +39,6 @@ ENT.Cameras = { {Vector(450+13,0,26),Angle(60,0,0),"Train.Common.CouplerCamera"}, } --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} @@ -500,14 +486,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -580,7 +562,7 @@ function ENT:InitializeSystems() -- Ящики с реле и контакторами self:LoadSystem("LK_755A") self:LoadSystem("YAR_15A") - self:LoadSystem("YAR_27") + self:LoadSystem("YAR_27",nil,"Ezh3") self:LoadSystem("YAK_37A") self:LoadSystem("YAK_36") self:LoadSystem("YAS_44V") @@ -602,7 +584,6 @@ function ENT:InitializeSystems() self:LoadSystem("IGLA_PCBK") end function ENT:PostInitializeSystems() - self.YAR_27:TriggerInput("NoRKTT",1) end ENT.SubwayTrain = { diff --git a/lua/entities/gmod_subway_ezh/cl_init.lua b/lua/entities/gmod_subway_ezh/cl_init.lua index 5e1ce78..8d44a89 100644 --- a/lua/entities/gmod_subway_ezh/cl_init.lua +++ b/lua/entities/gmod_subway_ezh/cl_init.lua @@ -42,7 +42,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["Lamps1"] = { @@ -56,67 +55,43 @@ ENT.ButtonMap["Lamps1"] = { buttons = { ----Лампы {ID = "!AV", x=44.6,y=35.2, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(0,-10,0), color=Color(200,255,255) , var="L_AV", - lcolor=Color(255,80,5),lx = -2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,80,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(2,-8.5,0), color=Color(200,255,255) , var="L_AV"} }}, {ID = "!SEQ", x=44.6+27.3,y=35.2, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(0,-8.5,0), var="SEQ", - lcolor=Color(5,255,80),lx = -2,ly=-3,lz = 12,lbright=1,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(2,-8.5,0), var="SEQ"} }}, {ID = "!ARS", x=44.6+70.7,y=35.17, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(0,-8.5,0), var="L_ARS", - lcolor=Color(5,255,80),lx = -2,ly=-3,lz = 12,lbright=1,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(2,-8.5,0), var="L_ARS" } }}, {ID = "!AB", x=44.6+141.33,y=35.17, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(0,-8.5,0), color=Color(200,255,255), var="AB" , - lcolor=Color(255,80,5),lx = -2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,80,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(2,-8.5,0), color=Color(200,255,255), var="AB" } }}, {ID = "!SD", x=231.35,y=35.18, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(0,-8.5,0), color=Color(50,100,255), var="SD", - lcolor=Color(5,80,255),lx = -2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,80,255)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(2,-8.5,0), color=Color(50,100,255), var="SD" } }}, {ID = "!LSN", x=231.5 + 27.6,y=35.18, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(0,-8.5,0), color=Color(255,100,100), var="LSN", getfunc = function(ent,min,max) return ent:GetPackedRatio("LSN") end, - lcolor=Color(255,20,5),lx = -2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=-Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(2,-8.5,0), color=Color(255,100,100), var="LSN", getfunc = function(ent,min,max) return ent:GetPackedRatio("LSN") end} }}, {ID = "!AV1", x=59,y=74.3, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="L_AV1" , - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="L_AV1" } }}, {ID = "!RRP", x=245.3,y=74.3, radius=20, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="RP", - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="RP"} }}, {ID = "!KT", x=116.25,y=101.1, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="KT", - lcolor=Color(5,255,40),lx=-2,ly=-3,lz = 12,lbright=1,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,40)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="KT"} }}, {ID = "!VD", x=116.25+23.85,y=101.1, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), var="KVD", - lcolor=Color(5,255,80),lx=-2,ly=-3,lz = 12,lbright=1,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), var="KVD"} }}, {ID = "!RS", x=116.25+23.85*1.987,y=101.1, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), var="RS", - lcolor=Color(5,255,80),lx=-2,ly=-3,lz = 12,lbright=1,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -6, ang=Angle(1,-8.5,0), var="RS"} }}, {ID = "!LN", x=116.25+23.85*2.945,y=101.1, radius=12, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), var="LN", - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=93,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -6, ang=Angle(1,-8.5,0), var="LN"} }}, @@ -131,7 +106,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -155,7 +130,6 @@ ENT.ButtonMap["Main1"] = { var="ALSFreq",speed=16, vmin=1, vmax=0, sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"} }}, {ID = "1:KVTSet", x=246, y=11, radius=11, tooltip="", model = { model = "models/metrostroi_train/81-502/buttons/button_big_1.mdl", z = 0,ang=Angle(5,0,0), @@ -185,7 +159,6 @@ ENT.ButtonMap["Main1"] = { end, sndvol = 1, snd = function(val) return val and "kr_left" or "kr_right" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, {ID = "1:KU6Set", x=43.6+43*4, y=180, radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -246,7 +219,6 @@ ENT.ButtonMap["Main1"] = { var="KU2",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "1:KU10Set", x=43.6+43*5, y=243, radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudblack.mdl", z=-19, @@ -268,34 +240,22 @@ ENT.ButtonMap["LampsALS1"] = { buttons = { ----Лампы АЛС {ID = "!LNF",x=15.5,y=15, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_och.mdl",z=0, var="04", ang=90, - lcolor=Color(255,20,5),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_och.mdl",z=0, var="04", ang=90} }}, {ID = "!L0",x=32,y=15, radius = 15,tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_0.mdl",z=0, var="00", ang=90, - lcolor=Color(255,80,5),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(255,80,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_0.mdl",z=0, var="00", ang=90} }}, {ID = "!L40",x=47,y=15, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_40.mdl",z=0, var="40", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_40.mdl",z=0, var="40", ang=90} }}, {ID = "!L60",x=69,y=15, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_60.mdl",z=0, var="60", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_60.mdl",z=0, var="60", ang=90} }}, {ID = "!L70",x=90,y=15, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_70.mdl",z=0, var="70", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_70.mdl",z=0, var="70", ang=90} }}, {ID = "!L80",x=113,y=15, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_80.mdl",z=0, var="80", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_80.mdl",z=0, var="80", ang=90} }}, } } @@ -362,7 +322,6 @@ ENT.ButtonMap["Main2"] = { end, sndvol = 1, snd = function(val) return val and "kr_left" or "kr_right" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Left","Train.Buttons.Right"} }}, @@ -372,7 +331,6 @@ ENT.ButtonMap["Main2"] = { var="ALSFreq",speed=16, sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"} }}, { ID = "2:ARSToggle", x=163.5, y=183.5, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_pp250.mdl",ang = 180,z=3, @@ -410,7 +368,6 @@ ENT.ButtonMap["Main2"] = { var="KU2",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "2:KU10Set", x=43.6+43*5, y=243, radius=20, tooltip="", model = { model = "models/metrostroi_train/switches/vudwhite.mdl", z=-19, color = Color(149,95,32), @@ -431,46 +388,30 @@ ENT.ButtonMap["Lamps2"] = { buttons = { ----Лампы {ID = "!RRP2",x=44.6,y=33.9, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="RP", - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="RP"} }}, {ID = "!LPU2",x=44+27.8,y=33.9, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), var="SEQ", - lcolor=Color(5,255,80),lx=-2,ly=-3,lz = 12,lbright=1,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), var="SEQ"} }}, {ID = "!VD2",x=152.15,y=99.9, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), var="KVD", - lcolor=Color(5,255,80),lx=-2,ly=-3,lz = 12,lbright=1,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,80)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), var="KVD"} }}, {ID = "!KT2",x=116.2,y=99.9, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="KT", - lcolor=Color(5,255,40),lx=-2,ly=-3,lz = 12,lbright=1,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,40)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="KT"} }}, {ID = "!AB2",x=151.4+35,y=99.9, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="AB", - lcolor=Color(5,255,40),lx=-2,ly=-3,lz = 12,lbright=1,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,255,40)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,255,150), var="AB"} }}, {ID = "!SD2",x=231.3,y=33.9, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(50,100,255), var="SD", - lcolor=Color(5,80,255),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(5,80,255)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_green.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(50,100,255), var="SD"} }}, {ID = "!LN2",x=245.3,y=72.95, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), var="LN", - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), var="LN"} }}, {ID = "!LSN2",x=231.5 + 27.6,y=33.9, radius=12, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="LSN", getfunc = function(ent,min,max) return ent:GetPackedRatio("LSN") end, - lcolor=Color(255,20,5),lx=-2,ly=-3,lz = 12,lbright=1.5,lfov=100,lfar=16,lnear=8,lshadows=0,lang=Angle(0,0,0)}, - sprite = {bright=0.3,size=.25,scale=0.025,z=-8,color=Color(255,20,5)}, + lamp = {model = "models/metrostroi_train/81-707/ezh_lamp_red.mdl",z = -9, ang=Angle(1,-8.5,0), color=Color(255,100,100), var="LSN", getfunc = function(ent,min,max) return ent:GetPackedRatio("LSN") end} }}, @@ -495,7 +436,6 @@ ENT.ButtonMap["AVU"] = { {ID = "!AVULight", x=69, y=51, radius=10, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 3, z = -4, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(210,170,255),}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255)}, }}, } } @@ -511,34 +451,22 @@ ENT.ButtonMap["LampsALS2"] = { buttons = { ----Лампы АЛС {ID = "!LNF_2",x=17,y=16, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_och.mdl",z=-0.3, var="04", ang=90, - lcolor=Color(255,20,5),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(255,20,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_och.mdl",z=-0.3, var="04", ang=90} }}, {ID = "!L0_2",x=32.3,y=16, radius = 15,tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_0.mdl",z=-0.3, var="00", ang=90, - lcolor=Color(255,80,5),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(255,80,5)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_0.mdl",z=-0.3, var="00", ang=90} }}, {ID = "!L40_2",x=48.6,y=16, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_40.mdl",z=-0.3, var="40", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_40.mdl",z=-0.3, var="40", ang=90} }}, {ID = "!L60_2",x=70.2,y=16, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_60.mdl",z=-0.3, var="60", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_60.mdl",z=-0.3, var="60", ang=90} }}, {ID = "!L70_2",x=91,y=16, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_70.mdl",z=-0.3, var="70", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_70.mdl",z=-0.3, var="70", ang=90} }}, {ID = "!L80_2",x=113,y=16, radius = 15, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_80.mdl",z=-0.3, var="80", ang=90, - lcolor=Color(5,255,80),lz = 16,lbright=2,lfov=105,lfar=16,lnear=8,lshadows=0,}, - sprite = {bright=0.2,size=.25,scale=0.035,vscale=0.03,z=0,color=Color(5,255,80)}, + lamp = {speed=16,model = "models/metrostroi_train/81-707/ezh_lamp_80.mdl",z=-0.3, var="80", ang=90} }}, } }--]] @@ -612,27 +540,21 @@ ENT.ButtonMap["IGLAButtons"] = { {ID = "IGLA2DSet",x=65, y=53, w=12, h=7, tooltip=""}, {ID = "!IGLASR",x=17.9, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLASR",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!IGLARX",x=27.5, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLARX",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!IGLAErr",x=40.5, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAErr",color=Color(255,168,000),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-1,} }}, {ID = "!IGLAOSP",x=50, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOSP",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} }}, {ID = "!IGLAPI",x=59.5, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAPI",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, {ID = "!IGLAOff",x=69, y=10.5, radius=3, tooltip="", model = { lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOff",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} }}, } } @@ -648,7 +570,7 @@ ENT.ButtonMap["IGLA"] = { } ENT.ClientProps["E_informator"] = { model = "models/metrostroi_train/equipment/rri_informator_portable.mdl", - pos = Vector(404.75,-36-4,-4.2), + pos = Vector(404.7,-36-4,-4.2), ang = Angle(0,0,0), hideseat = 0.2, } @@ -685,8 +607,8 @@ ENT.ButtonMap["RRI"] = { }}, {ID = "!RRIOn",x=70,y=12.5,radius=10,tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13, - lamp = { model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255), getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255),}, + lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255)}, + getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end, }}, } } @@ -748,7 +670,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=100, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=100, h=1300, tooltip=""}, } } ENT.ClientProps["stopkran"] = { @@ -934,8 +856,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip=""}, } } @@ -962,7 +884,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU3",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "R_Program1HSet", x=14, y=220, radius=15, tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3, @@ -992,12 +913,9 @@ ENT.ButtonMap["AB1"] = { {ID = "AB1Set", x=0,y=0,w=40,h=50,tooltip="", model = { model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0, var="AB1",speed=16, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true, var="ABLamp", speed=6,z=2.5, - lcolor=Color(255,130,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=8,color=Color(255,130,40)}, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=13,ang=90,z=1.3,x=0,y=-20}}, + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true, var="ABLamp", speed=6,z=2.2}, + labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=13,ang=90,z=1,x=0,y=-20}}, sndvol = 0.10, snd = function(val) return val and "button1_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetNW2Bool("ABLamp") and "Train.Buttons.CanAB" or ent:GetNW2Bool("AB") and "Train.Buttons.InAB" end, }}, } } @@ -1011,14 +929,11 @@ ENT.ButtonMap["AB2"] = { buttons = { {ID = "AB2Set", x=0,y=0,w=40,h=50,tooltip="", model = { - model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0, - var="AB2",speed=16, - lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true, var="ABLamp", speed=6,z=2.5, - lcolor=Color(255,130,40),lz = 8,lfov=145,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.2,size=.5,scale=0.1,z=8,color=Color(255,130,40)}, - labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=13,ang=90,z=1.3,x=0,y=-20}}, + model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl", + lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true, var="ABLamp", speed=6,z=2.2}, + labels={{model="models/metrostroi_train/81-707/labels/vu_labels.mdl",skin=13,ang=90,z=1,x=0,y=-20}}, + var="AB2",speed=16,vmin=1,vmax=0, sndvol = 0.10, snd = function(val) return val and "button1_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0), - tooltipFunc = function(ent) return ent:GetNW2Bool("ABLamp") and "Train.Buttons.CanAB" or ent:GetNW2Bool("AB") and "Train.Buttons.InAB" end, }}, } } @@ -1033,8 +948,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesCurrent", x=0,y=0,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!EnginesVoltage", x=0,y=79,w=66,h=72,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, + {ID = "!EnginesCurrent", x=0,y=0,w=66,h=72,tooltip=""}, + {ID = "!EnginesVoltage", x=0,y=79,w=66,h=72,tooltip=""}, } } ENT.ButtonMap["Speedometer"] = { @@ -1045,7 +960,7 @@ ENT.ButtonMap["Speedometer"] = { scale = 0.0625, buttons = { - {ID = "!Speedometer", x=0, y=0, w=100, h=70, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, + {ID = "!Speedometer", x=0, y=0, w=100, h=70, tooltip=""}, } } @@ -1058,7 +973,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -1070,7 +985,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -1081,7 +996,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip=""}, } } ENT.ButtonMap["DriverValveBLDisconnect"] = { @@ -1096,7 +1011,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1112,7 +1026,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1129,7 +1042,6 @@ ENT.ButtonMap["EPKDisconnect"] = { var="EPK",sndid="EPK_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -1140,10 +1052,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -1166,10 +1081,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -1199,7 +1117,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -1228,7 +1145,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -1242,12 +1159,12 @@ ENT.ButtonMap["UAVAPanel"] = { buttons = { {ID = "UAVAToggle",x=0, y=0, w=60, h=200, tooltip="", model = { - plomb = {var="UAVAPl", ID="UAVAPl",}, + plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl",}, var="UAVA", sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } @@ -1287,7 +1204,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1303,7 +1219,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1319,7 +1234,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1345,7 +1259,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1788,46 +1701,13 @@ ENT.ClientProps["WhiteLights"] = { ENT.Lights = { [1] = { "headlight", Vector(470,0,-35), Angle(0,0,0), Color(200,130,88), brightness = 4 , fov=95, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(460,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [21] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=135, farz=90, brightness = 1.5, shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - [22] = { "headlight", Vector(445,-55.0,32.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 1.5,shadows = 0, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, + [22] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=135, farz=90, brightness = 1.5, shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, + [23] = { "headlight", Vector(445,-55.0,32.2), Angle(0,0,0), Color(255,130,88), fov=125, farz=65,brightness = 1.5,shadows = 0, texture = "models/metrostroi_train/equipment/headlight"}, --[24] = { "headlight", Vector(442,-53.0,-0.2), Angle(75,0,0), Color(255,130,88), fov=90, farz=65,brightness = 2,shadows = 0}, - [40] = { "headlight", Vector(457.80,-37.3,-5.3),Angle(45,-40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80, hidden = "cabin"}, - [41] = { "headlight", Vector(457.80,-42.6,-5.3),Angle(45,40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80, hidden = "cabin"}, - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - - -- Cabin - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "cabin"}, - - [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - Lamps_pult = {"light", Vector(445.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, - Lamp_RTM = {"light", Vector(416.593567,-55.343071,10.316401), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden = "Lamp_RTM"}, - - speedo1 = {"light", Vector(457.82+0.2,-40.1-0.1-0.05,-6.93-0.05), Angle(0,0,0),Color(255,180,60),brightness=0.2,scale=0.04,vscale=0.05, texture = "sprites/light_glow02",size=0.5, hidden = "speedo1"}, - speedo2 = {"light", Vector(457.82+0.2,-40.1+0.89-0.1+0.05,-6.93-0.05), Angle(0,0,0),Color(255,180,60),brightness=0.2,scale=0.04,vscale=0.05, texture = "sprites/light_glow02",size=0.5, hidden = "speedo2"}, + [40] = { "headlight", Vector(457.80,-37.3,-5.3),Angle(45,-40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80}, + [41] = { "headlight", Vector(457.80,-42.6,-5.3),Angle(45,40,120) , Color(255,125,25), farz = 6, nearz = 1, shadows = 0, brightness = 16, fov = 80}, } -local strength = { - [0] = 0.86, - [1] = 0.29, - [2] = 0.71, - [3] = 0.71, - [4] = 0.57, - [5] = 0.71, - [6] = 0.86, - [7] = 0.43, - [8] = 1.00, - [9] = 0.86, -} function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1897,11 +1777,9 @@ function ENT:Think() self:ShowHide("speedo2",typ==2 and self:GetPackedBool("V1") and speed >= 10) if IsValid(self.ClientEnts["speedo1"])then self.ClientEnts["speedo1"]:SetSkin(math.floor(speed)%10) - self:SetLightPower("speedo1",true,strength[math.floor(speed)%10]) end if IsValid(self.ClientEnts["speedo2"])then - self.ClientEnts["speedo2"]:SetSkin(math.floor(speed/10)%10) - self:SetLightPower("speedo2",true,strength[math.floor(speed*10)%10]) + self.ClientEnts["speedo2"]:SetSkin(math.floor(speed/10)) end -- Parking brake animation self.TrueBrakeAngle = self.TrueBrakeAngle or 0 @@ -1926,24 +1804,18 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0,RL) - self:SetLightPower(6,RL > 0,RL) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) self:SetLightPower(2,RL>0,RL) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) - self:SetLightPower("Lamps_pult",PL>0,PL) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower(21,PL>0,PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(23,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) - self:SetLightPower(40,typ==1 and HL1>0,HL1) - self:SetLightPower(41,typ==1 and HL1>0,HL1) + self:SetLightPower(40,typ==1 and IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) + self:SetLightPower(41,typ==1 and IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) if IsValid(self.GlowingLights[1]) then if not self:GetPackedBool("HeadLights1") and self.GlowingLights[1]:GetFarZ() ~= 3144 then @@ -1956,32 +1828,13 @@ function ENT:Think() local Lamps = self:GetPackedRatio("LampsStrength") - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("Lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) --self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,5,false)) ---PB self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false) @@ -2184,9 +2037,7 @@ function ENT:Think() -- ARS/ringer alert self:SetSoundState("ring",self:GetPackedBool("Ring") and 1 or 0,1) - local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false) - self:ShowHideSmooth("Lamp_RTM",lamps_rtm) - self:SetLightPower("Lamp_RTM",lamps_rtm > 0,lamps_rtm) + self:ShowHideSmooth("Lamp_RTM",self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false)) self:SetSoundState("vpr",self:GetPackedBool("VPR") and 1 or 0,1) -- RK rotation @@ -2203,10 +2054,10 @@ function ENT:Think() end local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 self.AnnLamp = self.AnnLamp or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -2223,18 +2074,16 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) + self.RTMaterial:SetTexture("$basetexture", self.ASNP) self:DrawOnPanel("ASNPScreen",function(...) surface.SetMaterial(self.RTMaterial) @@ -2349,9 +2198,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_ezh/init.lua b/lua/entities/gmod_subway_ezh/init.lua index 5cdf359..0ddb8b2 100644 --- a/lua/entities/gmod_subway_ezh/init.lua +++ b/lua/entities/gmod_subway_ezh/init.lua @@ -9,7 +9,7 @@ ENT.SyncTable = { "VB","AV","VU","VU1","VU2","VU3","DoorSelect","KU4","KU5","KU9","KU15","KU14","KU1","VAH","VAD","KU16","KU2","KU3","KU3L","KU13","KU6","KU7","KU10","KU8","KU11","KRR","OtklAVU","ARS","ALS","KVT","KB","KAH","R_UNch","R_ZS","R_G","R_Radio","R_ASNPOn","R_Program1","R_Program2","R_Program1H","R_Program2H","RC1","ALSFreq","PB","KU6K","RST","UOS", "AB1","AB2", "RRIEnable","RRIAmplifier", - "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA","UAVAC", + "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA", "GV" } ENT.SyncFunctions = { @@ -65,7 +65,6 @@ function ENT:Initialize() self.RearBogey:SetNWInt("MotorSoundType",0) self.FrontBogey.PneumaticPow = 1.5 self.RearBogey.PneumaticPow = 1.5 - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -76,6 +75,7 @@ function ENT:Initialize() [KEY_5] = "KVSetT1B", [KEY_6] = "KVSetT1AB", [KEY_7] = "KVSetT2", + [KEY_8] = "KRP", [KEY_EQUAL] = {"R_Program1Set",helper="R_Program1HSet"}, [KEY_MINUS] = {"R_Program2Set",helper="R_Program2HSet"}, @@ -100,7 +100,8 @@ function ENT:Initialize() [KEY_PAD_3] = "PneumaticBrakeSet3", [KEY_PAD_4] = "PneumaticBrakeSet4", [KEY_PAD_5] = "PneumaticBrakeSet5", - [KEY_PAD_DIVIDE] = "KU14Set", + [KEY_PAD_DIVIDE] = "KRPSet", + [KEY_PAD_MULTIPLY] = "KAHSet", [KEY_SPACE] = "PBSet", [KEY_BACKSPACE] = {"EmergencyBrake",helper="EmergencyBrakeValveToggle"}, @@ -119,11 +120,9 @@ function ENT:Initialize() [KEY_7] = "KVWrenchNone", [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", - - [KEY_PAD_ENTER] = "KVWrenchNone", }, [KEY_LALT] = { [KEY_V] = "KU2Toggle", @@ -189,6 +188,23 @@ function ENT:Initialize() }, } + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + + -- Cabin + [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + + [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { --[18] = true, @@ -199,6 +215,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -240,33 +264,47 @@ function ENT:TrainSpawnerUpdate() self.ASNP:TriggerInput("Disable",0) self.IGLA_CBKI:TriggerInput("Disable",0) end - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local ALS_ARS = self.ALS_ARS - local Pneumatic = self.Pneumatic - self:SetPackedBool("RedLight",Panel.RedLights > 0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + + local redlights = self.Panel.RedLights>0 + self:SetPackedBool("RedLight",redlights) + self:SetLightPower(5,redlights) + self:SetLightPower(6,redlights) self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - local power = Panel.V1 > 0.5 + local power = self.Panel.V1 > 0.5 self:SetPackedBool("V1",power) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) self:SetPackedBool("Lamps_cab",emerActive1 > 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Switch and button states @@ -274,22 +312,22 @@ function ENT:Think() -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) self:SetPackedBool("RRIOn",self.RRI_VV.Power>0) self:SetPackedRatio("RRIRewind",self.RRIRewind.Value/2) local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags @@ -297,63 +335,63 @@ function ENT:Think() end self:SetPackedBool("RP",TW18 > 0.5) self:SetPackedRatio("LSN",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ManualBrake - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) - self:SetPackedBool("SEQ",Panel.Sequence > 0) + self:SetPackedBool("SEQ",self.Panel.Sequence > 0) -- OCh - self:SetPackedBool("04",ALS_ARS.NoFreq > 0) + self:SetPackedBool("04",self.ALS_ARS.NoFreq > 0) -- 0 - self:SetPackedBool("00",ALS_ARS.F5 > 0) + self:SetPackedBool("00",self.ALS_ARS.F5 > 0) -- 40 - self:SetPackedBool("40",ALS_ARS.F4 > 0) + self:SetPackedBool("40",self.ALS_ARS.F4 > 0) -- 60 - self:SetPackedBool("60",ALS_ARS.F3 > 0) + self:SetPackedBool("60",self.ALS_ARS.F3 > 0) -- 70 - self:SetPackedBool("70",ALS_ARS.F2 > 0) + self:SetPackedBool("70",self.ALS_ARS.F2 > 0) -- 80 - self:SetPackedBool("80",ALS_ARS.F1 > 0) + self:SetPackedBool("80",self.ALS_ARS.F1 > 0) -- ЛН - self:SetPackedBool("LN",ALS_ARS.LN > 0) - self:SetPackedBool("AB",ALS_ARS.AB > 0) - self:SetPackedBool("ABLamp",ALS_ARS.ABReady > 0) - self:SetPackedBool("L_ARS",ALS_ARS.ARS > 0) - self:SetPackedBool("L_AV",ALS_ARS.AV > 0) - self:SetPackedBool("L_AV1",ALS_ARS.AV1 > 0) + self:SetPackedBool("LN",self.ALS_ARS.LN > 0) + self:SetPackedBool("AB",self.ALS_ARS.AB > 0) + self:SetPackedBool("ABLamp",self.ALS_ARS.ABReady > 0) + self:SetPackedBool("L_ARS",self.ALS_ARS.ARS > 0) + self:SetPackedBool("L_AV",self.ALS_ARS.AV > 0) + self:SetPackedBool("L_AV1",self.ALS_ARS.AV1 > 0) - self:SetPackedBool("KT",Panel.KT > 0) - self:SetPackedBool("KVD",ALS_ARS.LVD > 0) - self:SetPackedBool("RS",ALS_ARS.F6 > 0) + self:SetPackedBool("KT",self.Panel.KT > 0) + self:SetPackedBool("KVD",self.ALS_ARS.LVD > 0) + self:SetPackedBool("RS",self.ALS_ARS.F6 > 0) - self:SetPackedBool("AVU",Panel.AVU > 0.5) + self:SetPackedBool("AVU",self.Panel.AVU > 0.5) - self:SetPackedBool("Ring",Panel.Ring > 0.5) + self:SetPackedBool("Ring",self.Panel.Ring > 0.5) -- Секвенция (задействие РПУ, замыкание РВЗ) --self:SetPackedBool("LPU",(self.RPU.Value == 1.0) and (self:ReadTrainWire(1) > 0.5 or self:ReadTrainWire(6) > 0.5)) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) - self:SetPackedBool("VPR",Panel.VPR > 0) + self:SetPackedBool("VPR",self.Panel.VPR > 0) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedRatio("KRUPosition", self.KRU.Position/3) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150) @@ -386,12 +424,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -484,13 +522,11 @@ function ENT:OnButtonPress(button,ply) self.KV:TriggerInput("ControllerSet",-2) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then @@ -600,4 +636,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_ezh/shared.lua b/lua/entities/gmod_subway_ezh/shared.lua index 6e19285..c93cd52 100644 --- a/lua/entities/gmod_subway_ezh/shared.lua +++ b/lua/entities/gmod_subway_ezh/shared.lua @@ -25,26 +25,12 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { {Vector(420,-38.2 ,35),80,0.33}, {Vector(-3,-60, 62),300,0.2}, {Vector(-3,60 ,62),300,0.2}, } --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - ENT.Cameras = { {Vector(407.5+18,32,21),Angle(0,180,0),"Train.703.Breakers1"}, {Vector(407.5+18,50,24),Angle(5,180,0),"Train.703.Breakers2"}, @@ -471,14 +457,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -613,11 +595,8 @@ ENT.Spawner = { }, spawnfunc = function(i,tbls,tblt) local WagNum = tbls.WagNum - if tbls.EWagons and i==1 then - tbls.EID = 2+math.floor(math.random()*(WagNum-2)) - end if 10.9) and "gmod_subway_81-703_int" or "gmod_subway_ezh1" + return (tbls.EWagons and math.random()>0.75) and "gmod_subway_81-703_int" or "gmod_subway_ezh1" else return "gmod_subway_ezh" end @@ -670,7 +649,6 @@ ENT.Spawner = { ent.PassengerDoor = val==4 ent.RearDoor = val==4 else - ent.VU2:TriggerInput("Set",0) ent.FrontDoor = val==4 ent.RearDoor = val==4 end diff --git a/lua/entities/gmod_subway_ezh1/cl_init.lua b/lua/entities/gmod_subway_ezh1/cl_init.lua index e8db411..7c1f595 100644 --- a/lua/entities/gmod_subway_ezh1/cl_init.lua +++ b/lua/entities/gmod_subway_ezh1/cl_init.lua @@ -60,7 +60,6 @@ end ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} ENT.ButtonMap["PanelLamp"] = { @@ -71,7 +70,7 @@ ENT.ButtonMap["PanelLamp"] = { scale = 0.0588, buttons = { - {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip="",var="PanelLights"}, + {ID = "PanelLampToggle", x=0, y=0, w=100, h=200, tooltip=""}, } } @@ -86,16 +85,13 @@ ENT.ButtonMap["Main"] = { buttons = { {ID = "!GRP", x=25+41.7*3,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(98,178,178),z = 10, var="GRP",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(40,255,100),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_green.mdl",color = Color(140,255,255),z = 10, var="GRP",} }}, {ID = "!RRP", x=25+41.7*4,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(178,112,112),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,60,60),z=12} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_red3.mdl",color = Color(255,160,160),z = 10, var="RRP", getfunc = function(ent,min,max) return ent:GetPackedRatio("RRP") end} }}, {ID = "!SD", x=25+41.7*5,y=29, radius=20, tooltip="", model = { - lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(178,178,178),z = 10, var="SD",}, - sprite = {bright=0.25,size=0.25,scale=0.07,color=Color(255,255,255),z=12,} + lamp = {model = "models/metrostroi_train/81-703/cabin_lamp_white.mdl",color = Color(255,255,255),z = 10, var="SD",} }}, {ID = "KU4Set", x=30+40*0, y=100, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",ang = 180-30,z=0,vmin=1,vmax=0, @@ -146,7 +142,6 @@ ENT.ButtonMap["Main"] = { var="KU2",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -270,8 +265,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip=""}, } } @@ -298,7 +293,6 @@ ENT.ButtonMap["HelperPanel"] = { var="KU3",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, } } @@ -313,8 +307,8 @@ ENT.ButtonMap["HVMeters"] = { scale = 0.0625, buttons = { - {ID = "!EnginesVoltage", x=0,y=0,w=66,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!EnginesCurrent", x=0,y=69,w=66,h=60,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, + {ID = "!EnginesCurrent", x=0,y=0,w=66,h=60,tooltip=""}, + {ID = "!EnginesVoltage", x=0,y=69,w=66,h=60,tooltip=""}, } } @@ -327,7 +321,7 @@ ENT.ButtonMap["BLTLPressure"] = { scale = 0.0625, buttons = { - {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, + {ID = "!BLTLPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BCPressure"] = { @@ -339,7 +333,7 @@ ENT.ButtonMap["BCPressure"] = { scale = 0.0625, buttons = { - {ID = "!BCPressure", x=38,y=38,radius=38,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BCPressure", x=38,y=38,radius=38,tooltip=""}, } } ENT.ButtonMap["BatteryVoltage"] = { @@ -350,7 +344,7 @@ ENT.ButtonMap["BatteryVoltage"] = { scale = 0.0625, buttons = { - {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end}, + {ID = "!BatteryVoltage", x=0,y=0,w=68,h=68,tooltip=""}, } } ENT.ButtonMap["DriverValveBLDisconnect"] = { @@ -365,7 +359,6 @@ ENT.ButtonMap["DriverValveBLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -381,7 +374,6 @@ ENT.ButtonMap["DriverValveTLDisconnect"] = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -392,10 +384,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -418,10 +413,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -450,7 +448,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -479,7 +476,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -518,7 +515,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -534,7 +530,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -550,7 +545,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -576,7 +570,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -855,22 +848,7 @@ ENT.ClientProps["WhiteLights"] = { ENT.Lights = { [1] = { "headlight", Vector(470,0,-35), Angle(0,0,0), Color(200,130,88), brightness = 4 , fov=100, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, - [22] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=110, farz=65, brightness = 3, shadows = 1, texture = "models/metrostroi_train/equipment/headlight", hidden = "Lamps_pult"}, - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, - - -- Cabin - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "cabin"}, - - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - Lamps_pult = {"light", Vector(445.5,-55.5,42), Angle(0,0,0),Color(255,220,180),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "Lamps_pult"}, - Lamps_cab = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(255,220,180),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "Lamps_cab1"}, + [22] = { "headlight", Vector(445,-55,41), Angle(75, 70,45), Color(190, 130, 88), fov=110, farz=65, brightness = 3, shadows = 1, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -924,14 +902,10 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local PL = HL1*self:Animate("lamps_pult",self:GetPackedBool("PanelLights") and 1 or 0,0,1,12,false) - self:SetLightPower("Lamps_pult",PL>0,PL) self:ShowHideSmooth("Lamps_pult",PL) - self:SetLightPower(22,PL>0,PL) + self:SetLightPower(22,IsValid(self.ClientEnts.Lamps_pult) and PL>0,PL) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -947,32 +921,14 @@ function ENT:Think() local Lamps = self:GetPackedRatio("LampsStrength") - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("Lamps_cab1",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("Lamps_cab", cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_cab1",self:Animate("Lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) + --self:ShowHideSmooth("Lamps_full",self:Animate("lamps_full",self:GetPackedBool("Lamps_full") and Lamps or 0,0,1,5,false)) self:Animate("brake_disconnect",self:GetPackedBool("DriverValveBLDisconnect") and 1 or 0,0.5,0.25, 4,false) self:Animate("train_disconnect",self:GetPackedBool("DriverValveTLDisconnect") and 1 or 0,0.5,0.25, 4,false) @@ -1167,9 +1123,9 @@ function ENT:Think() end local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 - local noisevolume = 1 + local noisevolume = 0 if self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1180,15 +1136,12 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume(work and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume) - return self:GetPackedBool("AnnPlay") and volume or 0 -end -function ENT:DrawPost() +function ENT:DrawPost(special) self:DrawOnPanel("AirDistributor",function() draw.DrawText(self:GetNW2Bool("AD") and "Air Distributor ON" or "Air Distributor OFF","Trebuchet24",0,0,Color(0,0,0,255)) end) diff --git a/lua/entities/gmod_subway_ezh1/init.lua b/lua/entities/gmod_subway_ezh1/init.lua index b155aa0..3d1489c 100644 --- a/lua/entities/gmod_subway_ezh1/init.lua +++ b/lua/entities/gmod_subway_ezh1/init.lua @@ -9,7 +9,7 @@ ENT.SyncTable = { "VB","AV","VU","VU1","VU2","VU3","DoorSelect","KU4","KU5","KU9","KU15","KU14","KU1","VAH","VAD","KU16","KU2","KU3","KU3L","KU13","KU6","KU7","KU10","KU8","KU11","KRR","OtklAVU","ARS","ALS","KVT","KB","KAH","R_UNch","R_ZS","R_G","R_Radio","R_Program1","R_Program2","R_Program1H","R_Program2H","RC1","ALSFreq","PB","KU6K","RST","UOS", "AB1","AB2", "RRIEnable","RRIAmplifier", - "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA","UAVAC", + "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA", "GV" } ENT.SyncFunctions = { @@ -106,11 +106,9 @@ function ENT:Initialize() [KEY_L] = "DriverValveDisconnect", [KEY_7] = "KVWrenchNone", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", - - [KEY_PAD_ENTER] = "KVWrenchNone", }, [KEY_LALT] = { @@ -172,6 +170,21 @@ function ENT:Initialize() }, } + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(219,66*2,31*1.5), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(219,66*2,31*1.5), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255, 176, 59), brightness = 4, distance = 260}, + + -- Cabin + [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { --[18] = true, @@ -182,6 +195,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -195,32 +216,43 @@ function ENT:Initialize() end function ENT:TrainSpawnerUpdate() - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic self:SetPackedBool("PanelLights",self.PanelLamp.Value > 0.5) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) - local power = Panel.V1 > 0.5 + local power = self.Panel.V1 > 0.5 self:SetPackedBool("V1",power) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 self:SetPackedBool("Lamps_emer1",emerActive1 > 0 and lightsActive1 == 0) self:SetPackedBool("Lamps_cab",emerActive1 > 0) + --self:SetLightPower(9, false) + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Switch and button states @@ -228,26 +260,26 @@ function ENT:Think() -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags end end self:SetPackedRatio("RRP",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end if self.ManualBrake > 0.999 and self.ManualBrake < self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -256,22 +288,22 @@ function ENT:Think() self:SetPackedRatio("LampsCount",math.Clamp(1-self.Electric.Cosume,0.3,1)) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetPackedRatio("ControllerPosition", (self.KV.ControllerPosition+3)/7) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Engines.E24/2000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage/150) @@ -301,12 +333,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -379,13 +411,11 @@ function ENT:OnButtonPress(button,ply) self.KV:TriggerInput("ControllerSet",-2) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then @@ -468,4 +498,17 @@ function ENT:OnCouple(train,isfront) self.RearAutoCouple = false end self.BaseClass.OnCouple(self,train,isfront) -end \ No newline at end of file +end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end diff --git a/lua/entities/gmod_subway_ezh1/shared.lua b/lua/entities/gmod_subway_ezh1/shared.lua index 3f5c9d5..9e6124c 100644 --- a/lua/entities/gmod_subway_ezh1/shared.lua +++ b/lua/entities/gmod_subway_ezh1/shared.lua @@ -25,12 +25,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { {Vector(412,-49 ,61),80,0.4}, {Vector(-3,-60, 62),300,0.3}, @@ -44,15 +38,6 @@ ENT.Cameras = { {Vector(407.5+30,40,5) ,Angle(30,10,0),"Train.703.Parking"}, {Vector(450+13,0,26),Angle(60,0,0),"Train.Common.CouplerCamera"}, } - --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} @@ -465,14 +450,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", diff --git a/lua/entities/gmod_subway_ezh3/cl_init.lua b/lua/entities/gmod_subway_ezh3/cl_init.lua index 7681ddf..5a9f56f 100644 --- a/lua/entities/gmod_subway_ezh3/cl_init.lua +++ b/lua/entities/gmod_subway_ezh3/cl_init.lua @@ -41,7 +41,6 @@ include("shared.lua") ENT.ClientProps = {} ENT.ButtonMap = {} ENT.AutoAnims = {} -ENT.AutoAnimNames = {} ENT.ClientSounds = {} -- Main panel @@ -79,15 +78,15 @@ ENT.ButtonMap["Main"] = { }}, {ID = "SAMMXTLamp", x=46+29*3, y=61+15+48*1, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 2, z = -0, - --lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""} + lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""} }}, {ID = "SAMMSignal1", x=58+29*3, y=32, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 4, z = -0, - --lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""--[[ , var="SAMMOn"--]] } + lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""--[[ , var="SAMMOn"--]] } }}, {ID = "SAMMSignal2", x=54+29*2, y=32, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 4, z = -0, - --lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""--[[ , var="SAMMBlok"--]] } + lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",z = -1.7, var=""--[[ , var="SAMMBlok"--]] } }}, {ID = "SAMMOnToggle", x=58+29*3, y=69, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t2.mdl",ang = 180,z=1, @@ -140,7 +139,6 @@ ENT.ButtonMap["Main"] = { var="VU14",speed=16, sndvol = 1, snd = function(val) return val and "switch_on" or "switch_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.LNear","Train.Buttons.LFar"}, }}, {ID = "GLightsToggle", x=258, y=61+4+48*1, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t2.mdl",ang = 180,z=-2, @@ -182,9 +180,7 @@ ENT.ButtonMap["Main"] = { }}, {ID = "RKLamp", x=292, y=61+1, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_kblamp.mdl", skin = 2, z = 5,-- color = Color(60,255,255), - lamp = {model = "models/metrostroi_train/81-710/ezh3_kblamp2.mdl",z = 5-4,color = Color(255,150,150), var="LRK", - lcolor=Color(255,50,20),lz = 20,lbright=2,lfov=130,lfar=16,lnear=8,lshadows=0}, - sprite = {bright=0.4,size=0.25,scale=0.07,color=Color(255,50,20),z=6} + lamp = {model = "models/metrostroi_train/81-710/ezh3_kblamp2.mdl",z = 5-4,color = Color(255,150,150), var="LRK"} }}, {ID = "ARSToggle", x=374, y=61+4, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t2.mdl",ang = 180,z=-2, @@ -203,7 +199,6 @@ ENT.ButtonMap["Main"] = { var="V2",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "R_RadioToggle", x=374, y=160, radius=20, tooltip="", model = { model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-2, @@ -299,7 +294,6 @@ ENT.ButtonMap["Main"] = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", z = -4.1, --lamp = {model = "models/metrostroi_train/81/lamp_on.mdl",skin = 2, var="AnnPlay"} lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=75,x=-0.3,y=-0.3,z=22,color=Color(255,130,90),var="AnnPlay",getfunc=function(ent) return (ent.AnnLamp or 0)^1.5*2 end}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(255,130,90)}, }}, } } @@ -312,50 +306,26 @@ ENT.ButtonMap["Panel"] = { scale = 0.0588, buttons = { --ARS - {ID = "!L0", x=272,y=12,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 180, 25),y=-1,z=-3,lamp="light_0",hidden="ezh3_l0"} - }}, - {ID = "!L04", x=309,y=12,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 180, 25),y=-1,z=-3,lamp="light_OCh",hidden="ezh3_loch"} - }}, - {ID = "!L40", x=272,y=50,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 251, 148),y=-2,z=-3,lamp="light_40",hidden="ezh3_l40"} - }}, - {ID = "!L60", x=309,y=50,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(116, 212, 163),y=-2,z=-3,lamp="light_60",hidden="ezh3_l60"} - }}, - {ID = "!L70", x=272,y=85,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(116, 212, 163),y=0,z=-3,lamp="light_70",hidden="ezh3_l70"} - }}, - {ID = "!L80", x=309,y=85,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(104, 190, 146),y=0,z=-3,lamp="light_80",hidden="ezh3_l80"} - }}, + {ID = "!L0", x=272,y=12,tooltip="",w=22, h=13}, + {ID = "!L04", x=309,y=12,tooltip="",w=22, h=13}, + {ID = "!L40", x=272,y=50,tooltip="",w=22, h=13}, + {ID = "!L60", x=309,y=50,tooltip="",w=22, h=13}, + {ID = "!L70", x=272,y=85,tooltip="",w=22, h=13}, + {ID = "!L80", x=309,y=85,tooltip="",w=22, h=13}, - {ID = "!LKT", x=272+189,y=17,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 200, 25),y=-1,z=-3,lamp="light_KT",hidden="ezh3_lkt"} - }}, - {ID = "!LSN", x=309+189,y=17,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 180, 25),y=-1,z=-3,lamp="light_rRP",hidden="ezh3_lrp"} - }}, - {ID = "!LKVD", x=272+189,y=50,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(255, 251, 148),y=0,z=-3,lamp="light_KVD",hidden="ezh3_lkvd"} - }}, - {ID = "!LRP", x=309+189,y=50,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(76, 167, 121),y=0,z=-3,lamp="Green_rp",hidden="ezh3_lrpgreen"} - }}, - {ID = "!LPU", x=272+189,y=83,tooltip="",w=22, h=13--[[, model = { - sprite = {bright=0 or 0.15,size=0.25,scale=0.06,vscale=0.04,color=Color(255,20,40),y=-4,z=-3,lamp="LPU",hidden="ezh3_lpu"} - }]]}, - {ID = "!LSD", x=309+189,y=83,tooltip="",w=22, h=13, model = { - sprite = {bright=0.20,size=0.25,scale=0.05,vscale=0.04,color=Color(136, 159, 211),y=0,z=-3,lamp="light_SD",hidden="ezh3_lsd"} - }}, + {ID = "!LKT", x=272+189,y=17,tooltip="",w=22, h=13}, + {ID = "!LSN", x=309+189,y=17,tooltip="",w=22, h=13}, + {ID = "!LKVD", x=272+189,y=50,tooltip="",w=22, h=13}, + {ID = "!LRP", x=309+189,y=50,tooltip="",w=22, h=13}, + {ID = "!LPU", x=272+189,y=83,tooltip="",w=22, h=13}, + {ID = "!LSD", x=309+189,y=83,tooltip="",w=22, h=13}, - {ID = "!BatteryVoltage", x=120-80,y=25,tooltip="",w=60, h=50,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")) end}, - {ID = "!EnginesCurrent", x=120-8,y=25,tooltip="",w=60, h=50,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent")*1000-500) end}, - {ID = "!HighVoltage", x=120+80-18,y=25,tooltip="",w=60, h=50,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.HighVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end}, - {ID = "!Speedometer", x=352,y=25,tooltip="",w=85, h=70,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end}, - {ID = "!BLTLPressure", x=588,y=65,tooltip="",radius=40,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end}, - {ID = "!BCPressure", x=688,y=65,tooltip="",radius=40,tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end}, + {ID = "!BatteryVoltage", x=120-80,y=25,tooltip="",w=60, h=50}, + {ID = "!EnginesCurrent", x=120-8,y=25,tooltip="",w=60, h=50}, + {ID = "!HighVoltage", x=120+80-18,y=25,tooltip="",w=60, h=50}, + {ID = "!Speedometer", x=352,y=25,tooltip="",w=85, h=70}, + {ID = "!BLTLPressure", x=588,y=65,tooltip="",radius=40}, + {ID = "!BCPressure", x=688,y=65,tooltip="",radius=40}, } } @@ -442,7 +412,7 @@ ENT.ButtonMap["Stopkran"] = { height = 1300, scale = 0.1/2, buttons = { - {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"}, + {ID = "EmergencyBrakeValveToggle",x=0, y=0, w=200, h=1300, tooltip=""}, } } @@ -571,28 +541,22 @@ ENT.ButtonMap["IGLAButtons"] = { {ID = "IGLA2Set",x=65, y=46, w=12, h=7, tooltip=""}, {ID = "IGLA2DSet",x=65, y=53, w=12, h=7, tooltip=""}, {ID = "!IGLASR",x=17.9, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLASR",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLASR",color=Color(175,250,20),z=-2.5}, }}, {ID = "!IGLARX",x=27.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLARX",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLARX",color=Color(255,56,30),z=-2.5}, }}, {ID = "!IGLAErr",x=40.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAErr",color=Color(255,168,000),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,168,000),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAErr",color=Color(255,168,000),z=-2.5}, }}, {ID = "!IGLAOSP",x=50, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOSP",color=Color(175,250,20),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOSP",color=Color(175,250,20),z=-2.5}, }}, {ID = "!IGLAPI",x=59.5, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAPI",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAPI",color=Color(255,56,30),z=-2.5}, }}, {ID = "!IGLAOff",x=69, y=10.5, radius=3, tooltip="", model = { - lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOff",color=Color(255,56,30),z=-2}, - sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=-1,} + lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl", var="IGLAOff",color=Color(255,56,30),z=-2.5}, }}, } } @@ -647,7 +611,6 @@ ENT.ButtonMap["RRI"] = { model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13, lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255), getfunc=function(ent,min,max,var) return ent:GetPackedBool(var) and (1-(ent.AnnLamp or 0)^1.5*0.6) or 0 end,}, - sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255)}, }}, } } @@ -695,8 +658,8 @@ ENT.ButtonMap["ParkingBrake"] = { scale = 0.0625, buttons = { - {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, - {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.ParkingBrake"),ent:GetPackedRatio("ManualBrake")*100) end}, + {ID = "ParkingBrakeLeft",x=0, y=0, w=150, h=400, tooltip=""}, + {ID = "ParkingBrakeRight",x=150, y=0, w=150, h=400, tooltip=""}, } } @@ -722,7 +685,6 @@ ENT.ButtonMap["HelperPanel"] = { var="V3",speed=6, sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Unlocked","Train.Buttons.Locked"}, }}, {ID = "R_Program1HSet", x=14, y=220, radius=15, tooltip="",model = { model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = 8, @@ -753,13 +715,11 @@ ENT.ButtonMap["DriverValveBLTLDisconnect"] = { var="DriverValveBLDisconnect",sndid="brake_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, {ID = "DriverValveTLDisconnectToggle", x=95, y=0, w=75, h=100, tooltip="", model = { var="DriverValveTLDisconnect",sndid="train_disconnect", sndvol = 1, snd = function(val) return val and "pneumo_TL_open" or "pneumo_TL_disconnect" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -776,7 +736,6 @@ ENT.ButtonMap["EPKDisconnect"] = { var="EPK",sndid="EPK_disconnect", sndvol = 1, snd = function(val) return "disconnect_valve" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - states={"Train.Buttons.Closed","Train.Buttons.Opened"}, }}, } } @@ -787,10 +746,13 @@ ENT.ButtonMap["FrontPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["FrontBrake"] = {-- @@ -813,10 +775,13 @@ ENT.ButtonMap["RearPneumatic"] = { width = 900, height = 100, scale = 0.1, + hideseat=0.2, + hide=true, + screenHide = true, buttons = { - {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, - {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}}, + {ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip=""}, + {ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip=""}, } } ENT.ClientProps["RearTrain"] = {-- @@ -845,7 +810,6 @@ ENT.ButtonMap["GV"] = { var="GV",sndid = "gv", sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), snd = function(val) return val and "gv_f" or "gv_b" end, - states={"Train.Buttons.Disconnected","Train.Buttons.On"} }}, } } @@ -874,7 +838,7 @@ ENT.ButtonMap["AirDistributor"] = { screenHide = true, buttons = { - {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}}, + {ID = "AirDistributorDisconnectToggle",x=0, y=0, w= 170,h = 260, tooltip=""}, } } @@ -888,12 +852,12 @@ ENT.ButtonMap["UAVAPanel"] = { buttons = { {ID = "UAVAToggle",x=0, y=0, w=60, h=200, tooltip="", model = { - plomb = {var="UAVAPl", ID="UAVAPl",}, + plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=-20,x=6,y=65,z=-122,var="UAVAPl", ID="UAVAPl",}, var="UAVA", sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end, sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0), }}, - {ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}}, + {ID = "UAVAContactSet",x=60, y=0, w=120, h=200, tooltip=""}, } } @@ -955,7 +919,6 @@ ENT.ButtonMap["FrontDoor"] = { var="door1",sndid="door1", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -971,7 +934,6 @@ ENT.ButtonMap["CabinDoor"] = { var="door4",sndid="door4", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -987,7 +949,6 @@ ENT.ButtonMap["PassengerDoor"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1002,7 +963,6 @@ ENT.ButtonMap["PassengerDoor1"] = { var="door3",sndid="door3", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1017,7 +977,6 @@ ENT.ButtonMap["RearDoor"] = { var="door2",sndid="door2", sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end, sndmin=90, sndmax = 1e3, sndang = Angle(-90,0,0), - noTooltip = true, }}, } } @@ -1203,84 +1162,72 @@ ENT.ClientProps["ezh3_l0"] = { model = "models/metrostroi_train/81-710/ezh3_l0.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_loch"] = { model = "models/metrostroi_train/81-710/ezh3_loch.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_l40"] = { model = "models/metrostroi_train/81-710/ezh3_l40.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_l60"] = { model = "models/metrostroi_train/81-710/ezh3_l60.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_l70"] = { model = "models/metrostroi_train/81-710/ezh3_l70.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_l80"] = { model = "models/metrostroi_train/81-710/ezh3_l80.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lkt"] = { model = "models/metrostroi_train/81-710/ezh3_lkt.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lkvd"] = { model = "models/metrostroi_train/81-710/ezh3_lkvd.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lpu"] = { model = "models/metrostroi_train/81-710/ezh3_lpu.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lsd"] = { model = "models/metrostroi_train/81-710/ezh3_lsd.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lrp"] = { model = "models/metrostroi_train/81-710/ezh3_lrp.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lrpgreen"] = { model = "models/metrostroi_train/81-710/ezh3_lrpgreen.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), - color = Color(200,200,200), hideseat = 1.0, } ENT.ClientProps["ezh3_lamp1"] = { @@ -1494,31 +1441,13 @@ ENT.Lights = { [1] = { "headlight", Vector(470,0,-35), Angle(0,0,0), Color(200,130,88), brightness = 4 , fov=100, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [2] = { "headlight", Vector(460,0,45), Angle(-20,0,0), Color(255,0,0), fov=164 ,brightness = 0.3, farz=250,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, - [19] = { "headlight", Vector(458.467194,-39.912831,-5.513901), Angle(45,-0.000000,0.000000), Color(255,145,25), farz = 16.7, nearz = 1, shadows = 1, brightness = 2, fov = 155,panellight=true,hidden = "Gauges_lit"}, + [10] = { "headlight", Vector(458.467194,-39.912831,-5.513901), Angle(45,-0.000000,0.000000), Color(255,145,25), farz = 16.7, nearz = 1, shadows = 1, brightness = 2, fov = 155}, --manometers - [20] = { "headlight", Vector(457.679059,-50.208813,-5.092313), Angle(45,0.000000,0.000000), Color(255,145,25), farz = 16, nearz = 1, shadows = 1, brightness = 2, fov = 155,panellight=true,hidden = "Gauges_lit"}, - [21] = { "headlight", Vector(457.579059,-57.208813,-4.092313), Angle(45,0.000000,0.000000), Color(255,145,25), farz = 16, nearz = 1, shadows = 1, brightness = 2, fov = 150,panellight=true,hidden = "Gauges_lit"}, - [22] = { "headlight", Vector(432+18.5,-33.5,47.2), Angle(90,0,0), Color(252, 157, 77), farz = 200, nearz = 0.1, shadows = 0, brightness = 0.3, fov = 160, texture = "models/metrostroi_train/equipment/headlight",hidden = "ezh3_lamp1"}, - --[24] = { "headlight", Vector(448.20+9.4,-55.86,-4.8), Angle(93,0,60), Color(255,145,25), farz = 15, nearz = 1, shadows = 1, brightness = 0, fov = 80}, + [20] = { "headlight", Vector(457.679059,-50.208813,-5.092313), Angle(45,0.000000,0.000000), Color(255,145,25), farz = 16, nearz = 1, shadows = 1, brightness = 2, fov = 155}, + [21] = { "headlight", Vector(457.579059,-57.208813,-4.092313), Angle(45,0.000000,0.000000), Color(255,145,25), farz = 16, nearz = 1, shadows = 1, brightness = 2, fov = 150}, + [24] = { "headlight", Vector(448.20+9.4,-55.86,-4.8), Angle(93,0,60), Color(255,145,25), farz = 15, nearz = 1, shadows = 1, brightness = 0, fov = 80}, --cabinlight - - [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, - [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, - - -- Cabin - [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600, hidden = "salon3"}, - - [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02", size = 2 }, - [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 }, - - ezh3_lamp1 = {"light", Vector(451,-33.5,47.2), Angle(0,0,0),Color(252, 157, 77),brightness = 0.35,scale = 0.4, texture = "sprites/light_glow02", hidden = "ezh3_lamp1"}, - ezh3_lamp2 = {"light", Vector(404,1.2,56), Angle(0,0,0),Color(252, 157, 77),brightness = 0.25,scale = 0.3, texture = "sprites/light_glow02", hidden = "ezh3_lamp2"}, + [22] = { "headlight", Vector(432+18.5,-33.5,47.2), Angle(90,0,0), Color(240,230,255), farz = 200, nearz = 0.1, shadows = 0, brightness = 0.3, fov = 160, texture = "models/metrostroi_train/equipment/headlight"}, } function ENT:Initialize() self.BaseClass.Initialize(self) @@ -1564,10 +1493,13 @@ function ENT:Think() local val = self:Animate("gauges_lit",self:GetPackedBool("GaugeLights") and 1 or 0,0,1,12,false) self:ShowHideSmooth("Gauges_lit",val) - self:SetLightPower(19,val>0,val)--self:GetPackedBool("PanelLights")) + + self:SetLightPower(10,val>0,val)--self:GetPackedBool("PanelLights")) self:SetLightPower(20,val>0,val)--self:GetPackedBool("PanelLights")) self:SetLightPower(21,val>0,val)--self:GetPackedBool("PanelLights")) + self:SetLightPower(22,self:GetPackedBool("PanelLights")) + local typ = self:GetNW2Int("AnnType",1) self:HidePanel("RRI",typ~=1) self:HidePanel("RRIScreen",typ~=1 or self.CurrentCamera ~= 9) @@ -1593,33 +1525,13 @@ function ENT:Think() end local Lamps = self:GetPackedRatio("LampsStrength") - - local emer1 = self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false) - local cab = self:Animate("lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false) - local emer2 = self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false) - local half1 = self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false) - local half2 = self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false) - - self:ShowHideSmooth("Lamps_emer1",emer1) - self:ShowHideSmooth("ezh3_lamp2",cab) - self:ShowHideSmooth("Lamps_emer2",emer2) - self:ShowHideSmooth("Lamps_half1",half1,Color(255,105+half1*150,105+half1*150)) - self:ShowHideSmooth("Lamps_half2",half2,Color(255,105+half2*150,105+half2*150)) - self:SetLightPower(23, cab > 0,cab) - self:SetLightPower("ezh3_lamp2",cab > 0,cab) - if not self:GetPackedBool("Lamps_half1") then - self:SetLightPower(9,emer1 > 0,emer1*0.2+emer2*0.8) - self:SetLightPower(10,emer2 > 0,emer2) - self:SetLightPower(11, false) - self:SetLightPower(12, false) - self:SetLightPower(13, false) - else - self:SetLightPower(9,false) - self:SetLightPower(10,false) - self:SetLightPower(11, half1 > 0, half1*0.1+half2*0.9) - self:SetLightPower(12, half1 > 0, half1*0.4+half2*0.6) - self:SetLightPower(13, half1 > 0, half1*0.9+half2*0.1) - end + self:ShowHideSmooth("Lamps_emer1",self:Animate("lamps_emer1",self:GetPackedBool("Lamps_emer1") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("ezh3_lamp2",self:Animate("Lamps_cab",self:GetPackedBool("Lamps_cab") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("Lamps_emer2",self:Animate("lamps_emer2",self:GetPackedBool("Lamps_emer2") and 1 or 0,0,1,5,false)) + local RedH1 = self.SmoothHide["Lamps_half1"] or 0 + local RedH2 = self.SmoothHide["Lamps_half2"] or 0 + self:ShowHideSmooth("Lamps_half1",self:Animate("lamps_half1",self:GetPackedBool("Lamps_half1") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH1*150,105+RedH1*150)) + self:ShowHideSmooth("Lamps_half2",self:Animate("lamps_half2",self:GetPackedBool("Lamps_half2") and 0.4+Lamps*0.6 or 0,0,1,5,false),Color(255,105+RedH2*150,105+RedH2*150)) local HL1 = self:Animate("whitelights",self:GetPackedBool("HeadLights1") and 1 or 0,0,1,5,false) local HL2 = self:Animate("distantlights",self:GetPackedBool("HeadLights2") and 1 or 0,0,1,5,false) @@ -1628,11 +1540,6 @@ function ENT:Think() self:ShowHideSmooth("WhiteLights",HL1) self:ShowHideSmooth("DistantLights",HL2) self:ShowHideSmooth("RedLights",RL) - self:SetLightPower(5,RL > 0,RL) - self:SetLightPower(6,RL > 0,RL) - self:SetLightPower(30,HL1 > 0, HL1) - self:SetLightPower(31,HL1 > 0, HL1) - self:SetLightPower(32,HL2 > 0, HL2) local bright = HL1*0.3+HL2*0.7 self:SetLightPower(1,bright>0,bright) @@ -1647,17 +1554,13 @@ function ENT:Think() end end - local panel = self:Animate("L_2",self:GetPackedBool("PanelLights") and 1 or 0,0,1,5,false) - self:ShowHideSmooth("ezh3_lamp1",panel) - self:SetLightPower("ezh3_lamp1",panel > 0,panel) - self:SetLightPower(22,panel > 0,panel) - self:ShowHideSmooth("ezh3_lkvd",self:Animate("light_KVD",self:GetPackedBool("KVD") and 1 or 0,0,1,5,false)) self:ShowHideSmooth("ezh3_lkt",self:Animate("light_KT",self:GetPackedBool("KT") and 1 or 0,0,1,5,false)) self:ShowHideSmooth("ezh3_lrpgreen",self:Animate("Green_rp",self:GetPackedBool("GRP") and 1 or 0,0,1,5,false)) self:ShowHideSmooth("ezh3_lrp",self:Animate("light_rRP",self:GetPackedRatio("LSN"),0,1,5,false)) self:ShowHideSmooth("ezh3_lsd",self:Animate("light_SD",self:GetPackedBool("SD") and 1 or 0,0,1,5,false)) - self:ShowHideSmooth("ezh3_lpu",self:Animate("LPU",self:GetPackedBool("LPU") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("ezh3_lamp1",self:Animate("L_2",self:GetPackedBool("PanelLights") and 1 or 0,0,1,5,false)) + self:ShowHideSmooth("ezh3_lpu",self:Animate("LPU",(self:GetPackedBool("LPU") and self:GetPackedBool(32)) and 1 or 0,0,1,5,false)) ---ARS self:ShowHideSmooth("ezh3_loch",self:Animate("light_OCh",self:GetPackedBool("AR04") and 1 or 0,0,1,5,false)) self:ShowHideSmooth("ezh3_l0",self:Animate("light_0",self:GetPackedBool("AR0") and 1 or 0,0,1,5,false)) @@ -1894,7 +1797,7 @@ function ENT:Think() local cabspeaker = self:GetPackedBool("AnnCab") local work = self:GetPackedBool("AnnPlay") - local noise = self:GetNW2Int("AnnouncerBuzz",-1) > 0 + local noise = self:GetNW2Bool("AnnouncerBuzz",false) self.NoiseVolume = self.NoiseVolume or 0 self.AnnLamp = self.AnnLamp or 0 @@ -1903,7 +1806,7 @@ function ENT:Think() self.AnnVolume = math.Clamp(self.AnnVolume + 0.5*(annvolume-self.AnnVolume)*dT,0.1,1) end--]] - local noisevolume = 1 + local noisevolume = 0 if work and self.Sounds["announcer1"] and IsValid(self.Sounds["announcer1"]) then noisevolume = (1-(self.Sounds["announcer1"]:GetLevel())*math.Rand(0.9,3))*1 end if self.NoiseVolume > noisevolume then self.NoiseVolume = math.Clamp(self.NoiseVolume + 8*(noisevolume-self.NoiseVolume)*dT,0.1,1) @@ -1920,20 +1823,16 @@ function ENT:Think() for i=1,2 do self:SetSoundState(Format("announcer_noise%d_%d",i,k),noise and (k ~= 1 and work or k==1 and cabspeaker) and self.NoiseVolume*(v[3] or 1) or 0,1) end - if IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and (v[3] or 1) or 0) end + if self.Sounds["announcer"..k] and IsValid(self.Sounds["announcer"..k]) then self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and (v[3] or 1) or 0) end end end -function ENT:OnAnnouncer(volume, id) - local cabspeaker = self:GetPackedBool("AnnCab") - local work = self:GetPackedBool("AnnPlay") - return (id ~= 1 and work or id == 1 and cabspeaker) and volume or 0 -end - function ENT:Draw() self.BaseClass.Draw(self) end -function ENT:DrawPost() +function ENT:DrawPost(special) + --local dc = render.GetLightColor(self:LocalToWorld(Vector(460.0,0.0,5.0))) + self.RTMaterial:SetTexture("$basetexture", self.IGLA) self:DrawOnPanel("IGLA",function(...) surface.SetMaterial(self.RTMaterial) @@ -2031,9 +1930,6 @@ function ENT:OnPlay(soundid,location,range,pitch) self:PlayOnce("brake_b",location,range,pitch) return end - if soundid == "UAVAC" then - return "uava_reset",location,range,pitch - end end return soundid,location,range,pitch end diff --git a/lua/entities/gmod_subway_ezh3/init.lua b/lua/entities/gmod_subway_ezh3/init.lua index 6cbeb4f..3d96f3f 100644 --- a/lua/entities/gmod_subway_ezh3/init.lua +++ b/lua/entities/gmod_subway_ezh3/init.lua @@ -10,7 +10,7 @@ ENT.SyncTable = { "R_Program1H","R_Program2H", "SAMMSchemeOff","SAMMStart","SAMMReset","SAMMOn","SAMMBlok","SAMMX2","SAMMAhead","SAMMAccept","SAMMUnit", "RRIEnable","RRIAmplifier", - "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA","UAVAC", + "DriverValveBLDisconnect","DriverValveTLDisconnect","EPK","EmergencyBrakeValve","UAVA", "GV" } @@ -50,8 +50,8 @@ function ENT:Initialize() if Metrostroi.BogeyOldMap then self.FrontBogey = self:CreateBogey(Vector( 317-5,0,-89),Angle(0,180,0),true,"717") self.RearBogey = self:CreateBogey(Vector(-317+0,0,-89),Angle(0,0,0),false,"717") - self.FrontCouple = self:CreateCouple(Vector( 419.5+3.5,0,-75),Angle(0,0,0),true,"702") - self.RearCouple = self:CreateCouple(Vector(-421.5-3.5,0,-75),Angle(0,180,0),false,"702") + self.FrontCouple = self:CreateCouple(Vector( 419.5+3.5,0,-75),Angle(0,0,0),true,"722") + self.RearCouple = self:CreateCouple(Vector(-421.5-3.5,0,-75),Angle(0,180,0),false,"717") else self.FrontBogey = self:CreateBogey(Vector( 317-11,1.0,-85),Angle(0,180,0),true,"717") self.RearBogey = self:CreateBogey(Vector(-317+0,1.3,-85),Angle(0,0,0),false,"717") @@ -62,7 +62,6 @@ function ENT:Initialize() self.RearBogey:SetNWInt("MotorSoundType",0) self.FrontBogey.PneumaticPow = 1.5 self.RearBogey.PneumaticPow = 1.5 - self.FrontCouple.EKKDisconnected = true -- Initialize key mapping self.KeyMap = { @@ -121,7 +120,7 @@ function ENT:Initialize() [KEY_7] = "KVWrenchNone", [KEY_8] = "KVWrenchKRU", - [KEY_9] = "KVWrenchKV9", + [KEY_9] = "KVWrenchKV", [KEY_0] = "KVWrenchKV", [KEY_6] = "KVSetT1A", @@ -192,6 +191,23 @@ function ENT:Initialize() }, } + self.Lights = { + [9] = { "dynamiclight", Vector(200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [10] = { "dynamiclight", Vector(-150, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 3, distance = 200}, + [11] = { "dynamiclight", Vector( 200, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [12] = { "dynamiclight", Vector( 0, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + [13] = { "dynamiclight", Vector(-260, 0, -5), Angle(0,0,0), Color(255,220,180), brightness = 4, distance = 260}, + + -- Cabin + [23] = { "dynamiclight", Vector(432,-10.0,20), Angle(0,0,0), Color(252, 157, 77), brightness = 0.0005, distance = 600}, + + [5] = { "light", Vector(465+5,-32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [6] = { "light", Vector(465+5, 32, 48), Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [30] = { "light", Vector(465+5 , -45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [31] = { "light", Vector(465+5 , 45, -37), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 1.5, texture = "sprites/light_glow02.vmt" }, + [32] = { "light", Vector(465+5 , 0, 48), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, + } + -- Cross connections in train wires self.TrainWireInverts = { --[18] = true, @@ -203,6 +219,14 @@ function ENT:Initialize() [31] = 32, -- Doors L<->R } + -- Setup door positions + self.LeftDoorPositions = {} + self.RightDoorPositions = {} + for i=0,3 do + table.insert(self.LeftDoorPositions,Vector(353.0 - 35*0.5 - 231*i,65,-1.8)) + table.insert(self.RightDoorPositions,Vector(353.0 - 35*0.5 - 231*i,-65,-1.8)) + end + -- KV wrench mode self:OnButtonPress("KVWrenchNone") @@ -242,51 +266,64 @@ function ENT:TrainSpawnerUpdate() self.ASNP:TriggerInput("Disable",0) self.IGLA_CBKI:TriggerInput("Disable",0) end - self.Pneumatic.VDLoud = math.random()<0.06 and 0.9+math.random()*0.2 - if self.Pneumatic.VDLoud then self.Pneumatic.VDLoudID = math.random(1,5) end + self.Pneumatic.VDOLLoud = math.random()<0.25 and 0.9+math.random()*0.2 + self.Pneumatic.VDORLoud = math.random()<0.25 and 0.9+math.random()*0.2 end -------------------------------------------------------------------------------- function ENT:Think() local RetVal = self.BaseClass.Think(self) - local Panel = self.Panel - local Pneumatic = self.Pneumatic - self:SetPackedBool("PanelLights",Panel.PanelLights> 0.5) - self:SetPackedBool("GaugeLights",Panel.GaugeLights > 0.5) - self:SetPackedBool("RedLight",Panel.RedLights>0) - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + self:SetPackedBool("PanelLights",self.Panel.PanelLights> 0.5) + self:SetPackedBool("GaugeLights",self.Panel.GaugeLights > 0.5) + local redlights = self.Panel.RedLights>0 + self:SetPackedBool("RedLight",redlights) + self:SetLightPower(5,redlights) + self:SetLightPower(6,redlights) - local power = Panel.V1 > 0.5 + local power = self.Panel.V1 > 0.5 self:SetPackedBool("V1p",power) - local lightsActive2 = math.min(1,Panel.MainLights2) - local lightsActive1 = math.min(1,Panel.MainLights1)^2 - local emerActive1 = Panel.EmergencyLights1 - local emerActive2 = Panel.EmergencyLights2 + local lightsActive2 = math.min(1,self.Panel.MainLights2)^2 + local lightsActive1 = math.min(1,self.Panel.MainLights1)^2 + local emerActive1 = self.Panel.EmergencyLights1 + local emerActive2 = self.Panel.EmergencyLights2 + self:SetLightPower(23, emerActive1 > 0) self:SetPackedBool("Lamps_cab",emerActive1 > 0) self:SetPackedBool("Lamps_emer2",emerActive2 > 0) self:SetPackedBool("Lamps_half1",lightsActive1 > 0) self:SetPackedBool("Lamps_half2",lightsActive2 > 0) + if lightsActive1 == 0 then + self:SetLightPower(9,emerActive1 > 0,emerActive1*0.3+emerActive2*0.7) + self:SetLightPower(10,emerActive2 > 0) + self:SetLightPower(11, false) + self:SetLightPower(12, false) + self:SetLightPower(13, false) + else + self:SetLightPower(9,false) + self:SetLightPower(10,false) + self:SetLightPower(11, lightsActive1 > 0, lightsActive1*0.1+lightsActive2*0.9) + self:SetLightPower(12, lightsActive1 > 0, lightsActive1*0.4+lightsActive2*0.6) + self:SetLightPower(13, lightsActive1 > 0, lightsActive1*0.9+lightsActive2*0.1) + end self:SetPackedRatio("LampsStrength",lightsActive1) -- Signal if doors are open or no to platform simulation self.LeftDoorsOpen = - (Pneumatic.LeftDoorState[1] > 0.5) or - (Pneumatic.LeftDoorState[2] > 0.5) or - (Pneumatic.LeftDoorState[3] > 0.5) or - (Pneumatic.LeftDoorState[4] > 0.5) + (self.Pneumatic.LeftDoorState[1] > 0.5) or + (self.Pneumatic.LeftDoorState[2] > 0.5) or + (self.Pneumatic.LeftDoorState[3] > 0.5) or + (self.Pneumatic.LeftDoorState[4] > 0.5) self.RightDoorsOpen = - (Pneumatic.RightDoorState[1] > 0.5) or - (Pneumatic.RightDoorState[2] > 0.5) or - (Pneumatic.RightDoorState[3] > 0.5) or - (Pneumatic.RightDoorState[4] > 0.5) + (self.Pneumatic.RightDoorState[1] > 0.5) or + (self.Pneumatic.RightDoorState[2] > 0.5) or + (self.Pneumatic.RightDoorState[3] > 0.5) or + (self.Pneumatic.RightDoorState[4] > 0.5) self:SetPackedBool("RRIOn",self.RRI_VV.Power>0) self:SetPackedRatio("RRIRewind",self.RRIRewind.Value/2) local TW18 = 0 - if Panel.RRP > 0 then + if self.Panel.RRP > 0 then local wags = #self.WagonList for _,v in ipairs(self.WagonList) do TW18 = TW18+(v.Panel.TW18 or 0)/wags @@ -294,8 +331,8 @@ function ENT:Think() end --self:SetPackedBool("RP",TW18 > 0.5) self:SetPackedRatio("LSN",math.Clamp(TW18^0.7,0,1)) - self:SetPackedBool("GRP",Panel.GRP > 0) - self:SetPackedBool("SD",Panel.SD > 0) + self:SetPackedBool("GRP",self.Panel.GRP > 0) + self:SetPackedBool("SD",self.Panel.SD > 0) self.TrueBrakeAngle = self.TrueBrakeAngle or 0 if self.ManualBrake < 0.001 and self.ManualBrake > self.TrueBrakeAngle then self.TrueBrakeAngle = self.ManualBrake end @@ -303,49 +340,49 @@ function ENT:Think() self.TrueBrakeAngle = self.TrueBrakeAngle + (self.ManualBrake - self.TrueBrakeAngle)*2.0*(self.DeltaTime or 0) self:SetPackedRatio("ManualBrake",self.TrueBrakeAngle) - self:SetPackedBool("LRK",Panel.Sequence > 0) - self:SetPackedBool("KT",Panel.KT > 0) - self:SetPackedBool("AVU",Panel.AVU > 0.5) - self:SetPackedBool("RingEnabled",Panel.Ring > 0.5) + self:SetPackedBool("LRK",self.Panel.Sequence > 0) + self:SetPackedBool("KT",self.Panel.KT > 0) + self:SetPackedBool("AVU",self.Panel.AVU > 0.5) + self:SetPackedBool("RingEnabled",self.Panel.Ring > 0.5) self:SetNW2Int("WrenchMode",self.KVWrenchMode) - self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0) + self:SetPackedBool("Compressor",self.Pneumatic.Compressor == 1.0) self:SetPackedBool("RK",self.RheostatController.Velocity ~= 0.0) self:SetPackedBool("RearDoor",self.RearDoor) self:SetPackedBool("FrontDoor",self.FrontDoor) self:SetPackedBool("PassengerDoor",self.PassengerDoor) self:SetPackedBool("CabinDoor",self.CabinDoor) - self:SetPackedBool("AnnPlay",Panel.AnnouncerPlaying > 0) + self:SetPackedBool("AnnPlay",self.Panel.AnnouncerPlaying > 0) if self:GetNW2Int("AnnType",1) == 1 then self:SetPackedBool("AnnCab",self.RRI_VV.CabinSpeakerPower > 0) else self:SetPackedBool("AnnCab",self.ASNP_VV.CabinSpeakerPower > 0) end - self:SetPackedBool("VPR",Panel.VPR > 0) + self:SetPackedBool("VPR",self.Panel.VPR > 0) - self:SetPackedRatio("CranePosition", Pneumatic.DriverValvePosition/7) + self:SetPackedRatio("CranePosition", self.Pneumatic.DriverValvePosition/7) self:SetNW2Int("ControllerPosition", (self.KV.ControllerPosition+3)) self:SetPackedRatio("ReverserPosition", 1-(self.KV.ReverserPosition+1)/2) self:SetNW2Int("KRUPosition", self.KRU.Position) self:SetPackedBool("RCUPosition", self.KV.RCU > 0) - self:SetPackedRatio("BLPressure", Pneumatic.ReservoirPressure/16.0) - self:SetPackedRatio("TLPressure", Pneumatic.TrainLinePressure/16.0) - self:SetPackedRatio("BCPressure", math.min(2.7,Pneumatic.BrakeCylinderPressure)/6.0) + self:SetPackedRatio("BLPressure", self.Pneumatic.ReservoirPressure/16.0) + self:SetPackedRatio("TLPressure", self.Pneumatic.TrainLinePressure/16.0) + self:SetPackedRatio("BCPressure", math.min(2.7,self.Pneumatic.BrakeCylinderPressure)/6.0) self:SetPackedRatio("EnginesVoltage", self.Electric.Main750V/1000.0) self:SetPackedRatio("EnginesCurrent", 0.5 + 0.5*(self.Electric.I24/500.0)) self:SetPackedRatio("BatteryVoltage",self.Panel["V1"]*self.Battery.Voltage) self:SetPackedBool("RT300",self.Electric.ThyristorControllerPower*self.Electric.ThyristorControllerWork>0) - self:SetPackedBool("AR04",Panel.AR04 > 0) - self:SetPackedBool("AR0",Panel.AR0 > 0) - self:SetPackedBool("AR40",Panel.AR40 > 0) - self:SetPackedBool("AR60",Panel.AR60 > 0) - self:SetPackedBool("AR70",Panel.AR70 > 0) - self:SetPackedBool("AR80",Panel.AR80 > 0) - self:SetPackedBool("KT",Panel.KT) - self:SetPackedBool("KVD",Panel.KVD > 0) + self:SetPackedBool("AR04",self.Panel.AR04 > 0) + self:SetPackedBool("AR0",self.Panel.AR0 > 0) + self:SetPackedBool("AR40",self.Panel.AR40 > 0) + self:SetPackedBool("AR60",self.Panel.AR60 > 0) + self:SetPackedBool("AR70",self.Panel.AR70 > 0) + self:SetPackedBool("AR80",self.Panel.AR80 > 0) + self:SetPackedBool("KT",self.Panel.KT) + self:SetPackedBool("KVD",self.Panel.KVD > 0) self:SetPackedRatio("Speed", self.Speed/100) -- Exchange some parameters between engines, pneumatic system, and real world @@ -372,12 +409,12 @@ function ENT:Think() add = math.min((math.abs(self:GetAngles().pitch)-4)/2,1)*2 end self.FrontBogey.PneumaticBrakeForce = 50000.0-2000 - self.FrontBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.FrontBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.FrontBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.FrontBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT self.FrontBogey.ParkingBrakePressure = self.ManualBrake self.RearBogey.PneumaticBrakeForce = 50000.0-2000 - self.RearBogey.BrakeCylinderPressure = Pneumatic.BrakeCylinderPressure*add - self.RearBogey.BrakeCylinderPressure_dPdT = -Pneumatic.BrakeCylinderPressure_dPdT + self.RearBogey.BrakeCylinderPressure = self.Pneumatic.BrakeCylinderPressure*add + self.RearBogey.BrakeCylinderPressure_dPdT = -self.Pneumatic.BrakeCylinderPressure_dPdT end self:GenerateJerks() @@ -458,13 +495,11 @@ function ENT:OnButtonPress(button,ply) self.KV:TriggerInput("ControllerSet",-2) end end - if button == "KVWrenchKV" or button == "KVWrenchKV9" then + if button == "KVWrenchKV" then if self.KVWrenchMode == 0 then self:PlayOnce("revers_in","cabin",0.7) self.KVWrenchMode = 1 self.KV:TriggerInput("Enabled",1) - else - self:TriggerInput(button == "KVWrenchKV9" and "KVReverserDown" or "KVReverserUp",1) end end if button == "KVWrenchNone" then @@ -575,3 +610,16 @@ function ENT:OnCouple(train,isfront) end self.BaseClass.OnCouple(self,train,isfront) end + +function ENT:TriggerTurbostroiInput(sys,name,val) + self.BaseClass.TriggerTurbostroiInput(self,sys,name,val) + if sys == "Panel" then + if name == "Headlights1" or name == "Headlights2" then + self:SetPackedBool("Headlights1",self.Panel["Headlights1"] > 0) + self:SetPackedBool("Headlights2",self.Panel["Headlights2"] > 0) + self:SetLightPower(30,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(31,self.Panel["Headlights1"] > 0.5) + self:SetLightPower(32,self.Panel["Headlights2"] > 0.5) + end + end +end \ No newline at end of file diff --git a/lua/entities/gmod_subway_ezh3/shared.lua b/lua/entities/gmod_subway_ezh3/shared.lua index 891ce26..06fa1e8 100644 --- a/lua/entities/gmod_subway_ezh3/shared.lua +++ b/lua/entities/gmod_subway_ezh3/shared.lua @@ -25,12 +25,6 @@ end local function GetDoorPosition(i,k) return Vector(359.0 - 35/2 - 229.5*i,-65*(1-2*k),7.5) end - -ENT.MirrorCams = { - Vector(441,72,15),Angle(1,180,0),15, - Vector(441,-72,15),Angle(1,180,0),15, -} - ENT.AnnouncerPositions = { {Vector(420,-38.2 ,40),80,0.4}, {Vector(-3,-60, 62),300,0.3}, @@ -52,14 +46,6 @@ ENT.Cameras = { {Vector(450+13,0,26),Angle(60,0,0),"Train.Common.CouplerCamera"}, } --- Setup door positions -ENT.LeftDoorPositions = {} -ENT.RightDoorPositions = {} -for i=0,3 do - table.insert(ENT.LeftDoorPositions,GetDoorPosition(i,1)) - table.insert(ENT.RightDoorPositions,GetDoorPosition(i,0)) -end - function ENT:InitializeSounds() self.BaseClass.InitializeSounds(self) self.SoundNames["rolling_5"] = {loop=true,"subway_trains/common/junk/junk_background3.wav"} @@ -414,8 +400,8 @@ function ENT:InitializeSounds() self.SoundPositions["samm_revers_out"] = {60,1e9,Vector(442.2-6,-50,-10)} self.SoundPositions["samm_revers_in"] = {60,1e9,Vector(442.2-6,-50,-10)} - self.SoundNames["ring"] = {loop=0.15,"subway_trains/717/ring/ringo_start.wav","subway_trains/717/ring/ringo_loop.wav","subway_trains/717/ring/ringo_end.mp3"}--{loop=0.15,"subway_trains/717/ring/ring_start.wav","subway_trains/717/ring/ring_loop.wav","subway_trains/717/ring/ring_end.wav"} - self.SoundPositions["ring"] = {60,1e9,Vector(400,-30,55),0.5}--{100,1e9,Vector(445,-55,-15),0.2} + self.SoundNames["ring"] = {loop=0.15,"subway_trains/717/ring/ring_start.wav","subway_trains/717/ring/ring_loop.wav","subway_trains/717/ring/ring_end.wav"} + self.SoundPositions["ring"] = {100,1e9,Vector(445,-55,-15),0.2} self.SoundNames["vpr"] = {loop=0.8,"subway_trains/common/other/radio/vpr_start.wav","subway_trains/common/other/radio/vpr_loop.wav","subway_trains/common/other/radio/vpr_off.wav"} self.SoundPositions["vpr"] = {60,1e9,Vector(420,-38.2 ,40),0.05} @@ -504,14 +490,10 @@ function ENT:InitializeSounds() self.SoundNames["vdor_off"] = self.SoundNames["vdol_off"] self.SoundPositions["vdor_on"] = self.SoundPositions["vdol_on"] self.SoundPositions["vdor_off"] = self.SoundPositions["vdol_off"] - for i=1,5 do - self.SoundNames["vdol_loud"..i] = "subway_trains/common/pneumatic/door_valve/vdo"..(2+i).."_on.mp3" - self.SoundNames["vdop_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundNames["vzd_loud"..i] = self.SoundNames["vdol_loud"..i] - self.SoundPositions["vdol_loud"..i] = {100,1e9,Vector(410,20,-45),1} - self.SoundPositions["vdop_loud"..i] = self.SoundPositions["vdol_loud"..i] - self.SoundPositions["vzd_loud"..i] = self.SoundPositions["vdol_loud"..i] - end + self.SoundNames["vdol_loud"] = "subway_trains/common/pneumatic/door_valve/vdo3_on.mp3" + self.SoundNames["vdop_loud"] = self.SoundNames["vdol_loud"] + self.SoundPositions["vdol_loud"] = {100,1e9,Vector(410,20,-45),1} + self.SoundPositions["vdop_loud"] = self.SoundPositions["vdol_loud"] self.SoundNames["vdz_on"] = { "subway_trains/common/pneumatic/door_valve/VDZ_on.mp3", "subway_trains/common/pneumatic/door_valve/VDZ2_on.mp3", @@ -586,7 +568,7 @@ function ENT:InitializeSystems() -- Ящики с реле и контакторами self:LoadSystem("LK_755A") self:LoadSystem("YAR_15A") - self:LoadSystem("YAR_27") + self:LoadSystem("YAR_27",nil,"Ezh3") self:LoadSystem("YAK_37A") self:LoadSystem("YAK_36") self:LoadSystem("YAS_44V") @@ -618,7 +600,6 @@ function ENT:InitializeSystems() end function ENT:PostInitializeSystems() self.Electric:TriggerInput("RRI",1) - self.YAR_27:TriggerInput("NoRKTT",1) end ENT.SubwayTrain = { @@ -697,7 +678,6 @@ ENT.Spawner = { ent.PassengerDoor = val==4 ent.RearDoor = val==4 else - ent.VU2:TriggerInput("Set",0) ent.FrontDoor = val==4 ent.RearDoor = val==4 end diff --git a/lua/entities/gmod_subway_tatra_t3/cl_init.lua b/lua/entities/gmod_subway_tatra_t3/cl_init.lua index ac6340a..49c5048 100644 --- a/lua/entities/gmod_subway_tatra_t3/cl_init.lua +++ b/lua/entities/gmod_subway_tatra_t3/cl_init.lua @@ -1,17 +1 @@ -include("shared.lua") ---[[ENT.ClientProps = {} -ENT.ClientProps["body"] = { - model = "models/tram/lm57/lm57_body.mdl", - pos = Vector(0,0,-60), - ang = Angle(0,0,0), - hide = 2.0, - scale = 100/2.54/0.75, -} -ENT.ClientProps["interior"] = { - model = "models/tram/lm57/lm57_int.mdl", - pos = Vector(0,0,-60), - ang = Angle(0,0,0), - hide = 2.0, - scale = 100/2.54/0.75, -} -Metrostroi.GenerateClientProps()]] \ No newline at end of file +include("shared.lua") \ No newline at end of file diff --git a/lua/entities/gmod_subway_tatra_t3/init.lua b/lua/entities/gmod_subway_tatra_t3/init.lua index b15a183..4b1c94c 100644 --- a/lua/entities/gmod_subway_tatra_t3/init.lua +++ b/lua/entities/gmod_subway_tatra_t3/init.lua @@ -5,11 +5,11 @@ include("shared.lua") --------------------------------------------------- --- Defined train information +-- Defined train information -- Types of wagon(for wagon limit system): --- 0 = Head or intherim --- 1 = Only head --- 2 = Only intherim +-- 0 = Head or intherim +-- 1 = Only head +-- 2 = Only intherim --------------------------------------------------- ENT.SubwayTrain = { Type = "Tatra", @@ -24,19 +24,19 @@ function ENT:Initialize() self:SetModel("models/metrostroi/tatra_t3/tatra_t3.mdl") self.BaseClass.Initialize(self) self:SetPos(self:GetPos() + Vector(0,0,140)) - + -- Create seat entities self.DriverSeat = self:CreateSeat("driver",Vector(305,10,-12)) --self.InstructorsSeat = self:CreateSeat("instructor",Vector(395,35,-30)) - + -- Create bogeys self.FrontBogey = self:CreateBogey(Vector( 160,0,-60),Angle(0,180,0),true,"tatra") self.RearBogey = self:CreateBogey(Vector(-150,0,-60),Angle(0,0,0),false,"tatra") - + -- Create joins self.FrontJoin = self:CreateJoin(Vector(350,0,-50),false) self.RearJoin = self:CreateJoin(Vector(-350,0,-50),true) - + -- Initialize key mapping self.KeyMap = { [KEY_W] = "Drive", @@ -65,7 +65,7 @@ function ENT:CreateJoin(pos,rev) xmin = -2 xmax = 5 end - + constraint.AdvBallsocket( join, self, diff --git a/lua/entities/gmod_track_arm/cl_init.lua b/lua/entities/gmod_track_arm/cl_init.lua deleted file mode 100644 index e1aa306..0000000 --- a/lua/entities/gmod_track_arm/cl_init.lua +++ /dev/null @@ -1,458 +0,0 @@ -include("shared.lua") - --------------------------------------------------------------------------------- -ENT.ClientProps = {} -ENT.ButtonMap = {} -ENT.AutoAnims = {} -ENT.AutoAnimNames = {} -ENT.ClientSounds = {} -ENT.ClientPropsInitialized = false - - -ENT.ButtonMap["ARM"] = { - pos = Vector(-4.9,9.1,50.3), - ang = Angle(0,-90-1,90), - width = 800, - height = 600, - scale = 0.02*1.2, - mouse = true -} -ENT.ClientProps["ARMPK"] = { - model = "models/cyber_metrostroi/pc_arm/pc_screen.mdl", - pos = Vector(-5,0,31.2), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMMonitor"] = { - model = "models/cyber_metrostroi/pc_arm/pc_body.mdl", - pos = Vector(-5,15,0), - ang = Angle(0,180,0), - bscale = Vector(4/3,1,1), -} -ENT.ClientProps["ARMKeyboard"] = { - model = "models/cyber_metrostroi/pc_arm/pc_keyboard.mdl", - pos = Vector(-15,-2,31), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMMouse"] = { - model = "models/cyber_metrostroi/pc_arm/pc_mouse.mdl", - pos = Vector(-18,-20,32), - ang = Angle(0,180,0), -} -ENT.ClientProps["ARMBreen"] = { - model = "models/props_combine/breenglobe.mdl", - pos = Vector(-11,30,39.5), - ang = Angle(0,-180+45,0), -} - -function ENT:Initialize() - self.BaseClass.Initialize(self) - self.ARM = self:CreateRT("ARM",1024,1024) - for k,v in pairs(self.Types) do - for i,tex in pairs(v) do - if type(tex) == "table" and type(tex[1]) == "string" then - tex.mat = surface.GetTextureID(tex[1]) - end - end - end -end - -function ENT:CamMoved() - self:HandleMouse(false) - gui.EnableScreenClicker(self.CurrentCamera ~= 0) -end - -function ENT:Think() - self.BaseClass.Think(self) - if not self.RenderClientEnts or self.CreatingCSEnts then - return - end - - if not self.ARM then return end - --self.MouseX = 0 - --self.MouseY = 0 - self.MouseX = self:GetNW2Int("CursorX",0) - self.MouseY = self:GetNW2Int("CursorY",0) - render.PushRenderTarget(self.ARM,0,0,1024, 1024) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.OverrideAlphaWriteEnable(true, true) - surface.SetDrawColor(0,0,0) - surface.DrawRect(0,0,800,600) - self:ARMMonitor() - cam.End2D() - render.PopRenderTarget() -end - -function ENT:Draw() - self.BaseClass.Draw(self) -end - - -function ENT:DrawPost() - self.RTMaterial:SetTexture("$basetexture", self.ARM) - self:DrawOnPanel("ARM",function(...) - surface.SetMaterial(self.RTMaterial) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(512,512,1024,1024,0) - end) -end - - -local gray = Color(100,100,100) -local black = Color(0,0,0) -local white = Color(150,150,150) -local green = Color(0,50,0) - -local function GetTextures(segm,typ) - return segm[typ],segm.maintex or segm[typ] -end ---Get texture Width and Height -local function GetWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.w or dtex.w,tex.h or dtex.h -end ---Get real(original) texture Width and Height -local function GetRWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.rw or dtex.rw,tex.rh or dtex.rh -end ---Get X and Y adds -local function GetXYA(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end -local function drawSegment(w,h,u0,v0,u1,v1,segm,typ,align) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex,dtex = GetTextures(segm,typ) - if dtex.mat then - local sx,sy = GetXY(w,h) - local sw,sh = GetWH(segm,typ) - local sxa = tex.x or dtex.x or 0 - local xa,ya = GetXYA(segm,typ) - local rw,rh = GetRWH(segm,typ) - surface.SetDrawColor(tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) - end -end -local function drawElement(sx,sy,u0,v0,u1,v1,segm,typ,col) - --local segm = self.Types[typ] - if not segm or not segm[typ] then return end - local tex = segm[typ] - local dtex = segm.maintex or tex - --local sx,sy = 100+w*36,100+h*70 - local sw,sh = tex.w or dtex.w,tex.h or dtex.h - local sxa = tex.x or dtex.x or 0 - local xa,ya = tex.xa or dtex.xa or 0,tex.ya or dtex.ya or 0 - local rw,rh = tex.rw or dtex.rw,tex.rh or dtex.rh - surface.SetDrawColor(col or tex.col or dtex.col or white) - surface.SetTexture(tex.mat or dtex.mat) - surface.DrawTexturedRectUV(sx+xa+sxa*u0,sy+ya-(rh-8)*v0 ,rw,rh,(rw/sw)*u0,(rh/sh)*v0,(rw/sw)*u1,(rh/sh)*v1) -end - -local mouse = surface.GetTextureID("gui/info") - -local function createFont(name,font,size,weight) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = weight or 400, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) -end -createFont("Arial10","Arial",10,400) -createFont("Arial11","Arial",11,400) -createFont("Arial13","Arial",13,400) -createFont("Arial15","Arial",15,400) -createFont("Arial15B","Arial",15,800) -createFont("Arial20","Arial",20,800) - -local colorConverter = { - r = Color(0,0,0), - y = Color(240,240,71), - g = Color(41,202,26), - b = Color(26,84,202), - w = Color(255,255,255), -} -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - - -function ENT:ARMMonitor() - if self.FilterMag then - render.PopFilterMag() - render.PopFilterMin() - end - - render.PushFilterMag( TEXFILTER.POINT ) - render.PushFilterMin( TEXFILTER.POINT ) - self.FilterMag = true - surface.SetDrawColor(gray) - surface.DrawRect(0,0,800,600) - local station = self:GetNW2Int("ARM:Station",0) - --draw.SimpleText("АРМ ДЫЫСЦЫПЫ","Metrostroi_BUKPSpeed",400, 300,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if station > 0 and Metrostroi.ARMConfigGenerated and Metrostroi.ARMConfigGenerated[station] then - local armTable = Metrostroi.ARMConfigGenerated[station] - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"maintex") - end - local w,h = 0,0 - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if Metrostroi.GetARMInfo(station,id,"occup2") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_x") - end - if Metrostroi.GetARMInfo(station,id,"switch_m") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_m") - elseif Metrostroi.GetARMInfo(station,id,"switch_a") then - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_a") end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_a") - elseif Metrostroi.GetARMInfo(station,id,"switch_na") then - if Metrostroi.GetARMInfo(station,id,"occup") then - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_a") - end - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_an") - drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"switch_mn") - else - if Metrostroi.GetARMInfo(station,id,"occup") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"occup_m") - elseif Metrostroi.GetARMInfo(station,id,"route") then drawSegment(segm.x,segm.y,u0,v0,u1,v1,segm.segm,"route_m") end - end - if segm.signal1 then - local sig = segm.signal1 - local typ = self.Types["tl_"..sig.type] - - local x,y = 100+(segm.x+segm.width)*36,100+segm.y*70-(sig.top and -26 or 15) - local rw,rh = GetRWH(typ,"maintex") - local sx,sy = x-rw-2,y-rh-2 - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y-(sig.top and -7 or 15),Color(0,0,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_BOTTOM) - drawElement(sx,sy,0,0,1,1,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal1") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal1I") then - drawElement(sx+13*(sig.type-1),sy,0,0,1,1,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal1Y") then - drawElement(sx+13*(sig.type-2),sy,0,0,1,1,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx,sy,0,0,1,1,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx,sy,0,0,1,1,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - if segm.signal2 then - local sig = segm.signal2 - local typ = self.Types["tl_"..sig.type] - - local rw,rh = GetRWH(typ,"maintex") - local x,y = 100+(segm.x)*36+2,100+segm.y*70+(sig.top and -38 or 3) - local sx,sy = x-1,y+rh - - draw.SimpleText(sig.name,"Metrostroi_Arial10",x, y+(sig.top and -2 or 20),Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_TOP) - drawElement(sx,sy,1,1,0,0,typ,"maintex") - local colors = Metrostroi.GetARMInfo(station,id,"signal2") or "" - if sig.type > 1 and Metrostroi.GetARMInfo(station,id,"signal2I") then - drawElement(sx+rw-12-13*(sig.type-1),sy,1,1,0,0,typ,"full",colorConverter.w) - end - if sig.type > 2 and Metrostroi.GetARMInfo(station,id,"signal2Y") then - drawElement(sx+rw-12-13*(sig.type-2),sy,1,1,0,0,typ,"full",colorConverter.y) - end - if colors ~= "" and #colors == 1 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"full",colorConverter[color] or Color(0,0,0)) - elseif colors ~= "" and #colors == 2 then - local color = colors:lower() - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h1",colorConverter[color[1]] or Color(0,0,0)) - drawElement(sx+rw-12,sy,1,1,0,0,typ,"h2",colorConverter[color[2]] or Color(0,0,0)) - end - end - end - for id,obj in ipairs(armTable.objects) do - if obj.type=="b" then - local x1,y1 = GetXY(obj.x1,obj.y1) - local x2,y2 = GetXY(obj.x2,obj.y2) - local w,h = x2-x1,y2-y1 - --Metrostroi.DrawRectOL(x1,y1,x2-x1,y2-y1,Color(255,255,255),2,Color(200,200,200)) - surface.SetDrawColor(200,200,200) - surface.DrawRect(x1,y1,w,h) - surface.SetDrawColor(255,255,255) - surface.DrawOutlinedRect(x1,y1,w,h) - surface.SetFont("Metrostroi_Arial20") - local fw,fh = 0,0 - local rows = string.Explode("\n",obj.name) - for _,text in ipairs(rows) do - local w,h = surface.GetTextSize(text) - fw,fh = math.max(w,fw),math.max(h,fh) - end - for i=#rows,1,-1 do - local x,y = x1+w/2,y1+h/2+(i-1)*20-(#rows-1)*20/2 - surface.SetDrawColor(150,150,150) - surface.DrawRect(x-fw/2-5,y-fh/2-5,fw+10,fh+10) - draw.SimpleText(rows[i],"Metrostroi_Arial20",x, y,Color(40,40,40),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - if obj.type=="cl" then - local x,y = GetXY(obj.x,obj.y) - if obj.right then x = x-50 y = y-30 end - --Metrostroi.DrawRectOL(x1,y1,x2-x1,y2-y1,Color(255,255,255),2,Color(200,200,200)) - surface.SetDrawColor(60,60,60) - surface.DrawRect(x,y,50,30) - draw.SimpleText(Format("%02d:%02d",23,30),"Metrostroi_Arial15",x+4, y+4,Color(150,255,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_TOP) - end - end - for id,button in ipairs(armTable.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - local sw,sh = 15,25 - local xa,ya = 3,12 - if button.type=="r" then - sw,sh = 15,25 - xa,ya = 3,12 - end - if button.type=="pn" then - sw,sh = 15,15 - xa,ya = -sw/2,-sh/2 - end - if button.type=="rn" then - surface.SetFont("Metrostroi_Arial15") - local w,h = surface.GetTextSize(button.name) - sw,sh = w+9,15 - xa,ya = -sw/2,-sh/2 - end - local x,y = sx+xa,sy+ya - if Metrostroi.GetARMInfo(station,1000+id,"buttonSelected") then - surface.SetDrawColor(Color(80,80,180)) - elseif Metrostroi.GetARMInfo(station,1000+id,"buttonPressable") then - surface.SetDrawColor(Color(220,220,220)) - else - if button.type=="pn" then - surface.SetDrawColor(Color(20,20,20)) - else - surface.SetDrawColor(Color(120,120,120)) - end - end - surface.DrawRect(x,y,sw,sh) - Metrostroi.DrawLine(x,y,x,y+sh,Color(240,240,240),2) - Metrostroi.DrawLine(x-1,y,x+sw,y,Color(240,240,240),2) - Metrostroi.DrawLine(x+sw,y,x+sw,y+sh,Color(60,60,60),2) - Metrostroi.DrawLine(x,y+sh,x+sw+1,y+sh,Color(60,60,60),2) - - if button.type=="rn" then - draw.SimpleText(button.name,"Metrostroi_Arial15B",x+sw/2, y+sh/2,Color(50,50,50),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - for id,text in ipairs(armTable.info) do - local x,y = 100+text.x*36,100+text.y*70 - local w,h = 45,13 - if text.col then - surface.SetDrawColor(text.col) - surface.DrawRect(x,y,w,h) - end - draw.SimpleText(text.text,"Metrostroi_Arial13",x+2, y+h/2,Color(50,50,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(x,y,x,y+h,Color(240,240,240),2) - Metrostroi.DrawLine(x-1,y,x+w,y,Color(240,240,240),2) - Metrostroi.DrawLine(x+w,y,x+w,y+h,Color(60,60,60),2) - Metrostroi.DrawLine(x,y+h,x+w+1,y+h,Color(60,60,60),2) - - --[[ if button.type=="rn" then - draw.SimpleText(button.name,"Metrostroi_Arial15B",x+sw/2, y+sh/2,Color(50,50,50),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end--]] - end - end - for i,v in ipairs(Metrostroi.ARMConfigGenerated) do - if i == station then - surface.SetDrawColor(Color(110,140,170)) - elseif math.InRangeXYR(self.MouseX,self.MouseY,20+(i-1)*30,20,30,20) then - surface.SetDrawColor(Color(80,110,140)) - else - surface.SetDrawColor(Color(100,130,160)) - end - - surface.DrawRect(20+(i-1)*31,20,30,20) - draw.SimpleText(v.shortname or v.id,"Metrostroi_Arial20",35+(i-1)*31, 30,Color(40,60,170),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if station > 0 and Metrostroi.ARMConfigGenerated and Metrostroi.ARMConfigGenerated[station] then - local armTable = Metrostroi.ARMConfigGenerated[station] - for id,segm in ipairs(armTable) do - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - ----[[ DEBUG - local w,h = GetXY(segm.x+segm.width*u0,segm.y) - surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(w+5*u1-5*u0,h,w,h) - surface.DrawLine(w,h+5,w,h) - local w,h = GetSegmPos(segm,false) - surface.SetDrawColor(Color(255,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6,w,h) - local w,h = GetSegmPos(segm,true) - if w then - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(w-6*u1+6*u0,h,w,h) - surface.DrawLine(w,h-6*v1+6*v0,w,h) - end - local x,y = 100+(segm.x+segm.width)*36,100+segm.y*70-4 - local rw,rh = GetRWH(segm.segm,"maintex") - local sx,sy = x-rw-2,y-rh-2 - - surface.SetDrawColor(Color(0,0,0,150)) - surface.DrawRect(sx,y-7,30,10) - draw.SimpleText(Format("%.1f:%.1f",segm.x,segm.y),"Metrostroi_Arial11",sx, y-2,Color(255,255,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) ---]] - end - end - --if self.CurrentCamera == 0 then - surface.SetDrawColor(255,255,255) - surface.SetTexture(mouse) - surface.DrawTexturedRectRotated(self.MouseX,self.MouseY,8,8,0) - --end - - surface.SetDrawColor(0,0,0,200) - surface.DrawRect(0,0,800,600) - render.PopFilterMag() - render.PopFilterMin() - self.FilterMag = false -end -Metrostroi.GenerateClientProps() \ No newline at end of file diff --git a/lua/entities/gmod_track_arm/init.lua b/lua/entities/gmod_track_arm/init.lua deleted file mode 100644 index bcb5bd5..0000000 --- a/lua/entities/gmod_track_arm/init.lua +++ /dev/null @@ -1,207 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") - -function ENT:Initialize() - self:SetModel("models/props_combine/breendesk.mdl") - self.BaseClass.Initialize(self) - self.DriverSeat = self:CreateSeat("driver", Vector(-40, 0, 0), Angle(0, 0, 0), "models//nova/chair_office02.mdl") - self.CursorX = 0 - self.CursorY = 0 - self:CursorMove(0, 0) - self.Station = 0 -end - -hook.Add("AcceptInput", "metrostroi_arm_trigger_check", function(ent, inputName, activator, called, data) - if inputName == "ARMStartTouch" then - called.ARMTriggered = true - print(called, called:GetName(), activator, "Enable") - end - - if inputName == "ARMEndTouch" then - called.ARMTriggered = false - print(called, called:GetName(), activator, "Disable") - end -end) - - -local function GetOccupation(tbl) - for sID,signame in ipairs(tbl) do - if signame[1] == "@" then - local trigger = Metrostroi.ARMGet(signame:sub(2,-1), "trigger") - if not trigger or trigger.ARMTriggered then - return true - end - elseif signame ~= "" then - local signal = Metrostroi.ARMGet(signame, "signal") - if not signal or signal.OccupiedBy and signal.OccupiedBy ~= signal then - return true - end - end - end - return false -end - -function ENT:Think() - local armTbl = Metrostroi.ARMTable - local armConf = Metrostroi.ARMConfigGenerated - local station = armConf[self.Station] - local armTblStation = armTbl[self.Station] - if not station then return end - if not armTblStation or (IsValid(armTblStation.Controller) and armTblStation.Controller ~= self) then return end - armTblStation.Controller = self - for buttonID,button in ipairs(station.buttons) do - --print(button,button.selected) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonPressable",button.pressable) - Metrostroi.ARMSync(self.Station, 1000+buttonID, "buttonSelected",button.selected) - end - for segmID, segm in ipairs(station) do - if type(segm) == "table" then - if segm.occup then - Metrostroi.ARMSync(self.Station, segmID, "occup", segm.occupied) - end - - if segm.occup2 then - Metrostroi.ARMSync(self.Station, segmID, "occup2", segm._occup or GetOccupation(segm.occup2)) - end - Metrostroi.ARMSync(self.Station, segmID, "route", segm.route and true) - - - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - local main = switch and switch.MainTrack and not switch.AlternateTrack - local alt = switch and not switch.MainTrack and switch.AlternateTrack - Metrostroi.ARMSync(self.Station, segmID, "switch_m", main) - Metrostroi.ARMSync(self.Station, segmID, "switch_a", alt) - Metrostroi.ARMSync(self.Station, segmID, "switch_na", not main and not alt) - end - if segm.signal1 then - local signal = Metrostroi.ARMGet(segm.signal1.name, "signal") - local colors = signal and signal.Colors - if segm.signal1.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal1I", signal and signal.InvationSignal) end - if segm.signal1.type > 2 and colors then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal1Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal1", colors) - end - if segm.signal2 then - local signal = Metrostroi.ARMGet(segm.signal2.name, "signal") - local colors = signal and signal.Colors - if segm.signal2.type > 1 then Metrostroi.ARMSync(self.Station, segmID, "signal2I", signal and signal.InvationSignal) end - if segm.signal2.type > 2 and colors then - local Y = #colors:gsub("[^yY]","") > 1 - if Y then colors = colors:SetChar(colors:find("[yY]"),"") end - Metrostroi.ARMSync(self.Station, segmID, "signal2Y", Y) - end - Metrostroi.ARMSync(self.Station, segmID, "signal2", colors) - end - end - end - - self:NextThink(CurTime() + 0.5) - - return true -end - -function ENT:OnRemove() -end - -function ENT:CursorMove(sys, dX, dY) - self.CursorX = sys == "" and math.Clamp(self.CursorX + dX * 200, 0, 800) or dX - self.CursorY = sys == "" and math.Clamp(self.CursorY + dY * 200, 0, 600) or dY - self:SetNW2Int("CursorX", math.floor(self.CursorX or 0)) - self:SetNW2Int("CursorY", math.floor(self.CursorY or 0)) -end - -local function GetTextures(segm,typ) - return segm[typ],segm.maintex or segm[typ] -end ---Get real(original) texture Width and Height -local function GetRWH(segm,typ) - local tex,dtex = GetTextures(segm,typ) - return tex.rw or dtex.rw,tex.rh or dtex.rh -end -local function GetXY(x,y) - return 100+x*36,100+y*70 -end - - -function ENT:RouteButtonPressed(button) - --if not button.routes then return end - if self.RouteChoosing then - for k,v in ipairs(self.RouteChoosing.routes) do - if v.endButtons and table.HasValue(v.endButtons,button) then - Metrostroi.CentralisationPrepareRoute(self.Station,v) - break - end - end - elseif button.routes and not self.RouteChoosing and button.pressable then - self.RouteChoosing = button - for _,route in ipairs(self.RouteChoosing.routes) do - print(route.endButtons) - if not route.endButtons then continue end - for _,b in ipairs(route.endButtons) do b.selected = true end - end - end -end -function ENT:PanelTouch(state--[[ , x, y--]] ) - for i, v in ipairs(Metrostroi.ARMConfig) do - if math.InRangeXYR(self.CursorX, self.CursorY, 20 + (i - 1) * 30, 20, 30, 20) then - self.Station = i - self:SetNW2Int("ARM:Station", i) - end - end - if not state then return end - local ResetRoute = false - if self.RouteChoosing then - for _,route in ipairs(self.RouteChoosing.routes) do - if not route.endButtons then continue end - for _,b in ipairs(route.endButtons) do b.selected = false end - end - ResetRoute = true - end - --[[ local RouteChoosing = self.RouteChoosing - self.RouteChoosing = nil--]] - local confGenStation = Metrostroi.ARMConfigGenerated[self.Station] - if not confGenStation then return end - for k,button in pairs(confGenStation.buttons) do - local sx,sy = 100+button.x*36,100+button.y*70 - if button.type == "r" and math.InRangeXYR(self.CursorX, self.CursorY, sx+3,sy+12,15,25) then - self:RouteButtonPressed(button) - --[[ local sw,sh = 15,25 - local xa,ya = 3,12 - local x,y = sx+xa,sy+ya math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) - if RouteChoosing then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - for k,v in ipairs(RouteChoosing.routes) do - if k == Format("%s-%s",button.name,v.name) then - Metrostroi.CentralisationPrepareRoute(self.Station,v) - end - end - end - elseif not self.RouteChoosing and button.pressable then - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,sw,sh) then - self.RouteChoosing = button - for k,v in ipairs(button.routes) do - if v.buttonend then - v.buttonend.selected = true - end - end - end - end--]] - end - end - if not self.RouteChoosing then - for k,segm in ipairs(confGenStation) do - local x,y = GetXY(segm.x,segm.y) - local w,h = GetRWH(segm.segm,"maintex") - if math.InRangeXYR(self.CursorX, self.CursorY, x,y,w,h) then - segm._occup = not segm._occup - print(segm) - end - end - end - if ResetRoute then self.RouteChoosing = nil end -end \ No newline at end of file diff --git a/lua/entities/gmod_track_arm/shared.lua b/lua/entities/gmod_track_arm/shared.lua deleted file mode 100644 index c877f8c..0000000 --- a/lua/entities/gmod_track_arm/shared.lua +++ /dev/null @@ -1,836 +0,0 @@ -ENT.Type = "anim" - ---Inherit subway base for some need functions -ENT.Base = "gmod_subway_base" -ENT.NoTrain = true - -ENT.Category = "Metrostroi" - -ENT.Spawnable = false -ENT.AdminSpawnable = true - -ENT.Cameras = { - {Vector(-18+3,0,43+2),Angle(0,0,0),"Common.ARM.Monitor1",true}, -} -ENT.Types = { - --Main segments - [0.25]={ - maintex = {"metrostroi_arm/sec025",w=8,h=8,rw=7,rh=8,}, - occup_m = {"metrostroi_arm/sec025_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec025_m",col=Color(39,103,63)}, - width = 0.25, - next_m = {x=0.25,y=0} - }, - [0.5]={ - maintex = {"metrostroi_arm/sec05",w=16,h=8,rw=16,rh=8,}, - occup_m = {"metrostroi_arm/sec05_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec05_m",col=Color(39,103,63)}, - width = 0.5, - next_m = {x=0.5,y=0} - }, - [1]={ - maintex = {"metrostroi_arm/sec1",w=64,h=8,rw=34,rh=8,}, - occup_m = {"metrostroi_arm/sec1_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec1_m",col=Color(39,103,63)}, - width = 1, - next_m = {x=1,y=0} - }, - [2]={ - maintex = {"metrostroi_arm/sec2",w=128,h=8,rw=70,rh=8,}, - occup_m = {"metrostroi_arm/sec2_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec2_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=0} - }, - [3]={ - maintex = {"metrostroi_arm/sec3",w=128,h=8,rw=106,rh=8,}, - occup_m = {"metrostroi_arm/sec3_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec3_m",col=Color(39,103,63)}, - width = 3, - next_m = {x=3,y=0} - }, - [4]={ - maintex = {"metrostroi_arm/sec4",w=256,h=8,rw=142,rh=8,}, - occup_m = {"metrostroi_arm/sec4_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec4_m",col=Color(39,103,63)}, - width = 4, - next_m = {x=4,y=0} - }, - [5]={ - maintex = {"metrostroi_arm/sec5",w=256,h=8,rw=178,rh=8,}, - occup_m = {"metrostroi_arm/sec5_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/sec5_m",col=Color(39,103,63)}, - width = 5, - next_m = {x=5,y=0} - }, - --Switches and helpers - sw = { - maintex = {"metrostroi_arm/switch",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/switch_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/switch_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/switch_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/switch_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/switch_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/switch_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/switch_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/switch_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - ["2sw"] = { - maintex = {"metrostroi_arm/2-switch_half",w=128,h=256,rw=70,rh=143,}, - occup_m = {"metrostroi_arm/2-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch_half_as",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch_half_ms",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - }, - ["2swm"] = { - maintex = {"metrostroi_arm/2-switch-middle_half",w=128,h=128,rw=70,rh=73,}, - occup_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/2-switch-middle_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/2-switch-middle_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/2-switch-middle_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/2-switch-middle_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/2-switch-middle_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=1.5,y=1}, - }, - ["4sw"] = { - maintex = {"metrostroi_arm/4-switch_quarter",w=128,h=256,rw=73,rh=143,x=-3,}, - occup_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/4-switch_quarter_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/4-switch_quarter_a1",col=Color(39,103,63)}, - occup_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(255,255,255)}, - route_x = {"metrostroi_arm/4-switch_quarter_a2",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/4-switch_quarter_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=2}, - acc_x = ">", - acc_y = "!", - }, - ["4sws"] = { - maintex = {"metrostroi_arm/4-switch_quarter_small",w=64,h=128,rw=53,rh=78,x=-1,}, - occup_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(255,255,255),x=-1,}, - route_m = {"metrostroi_arm/4-switch_quarter_small_m",col=Color(39,103,63),x=-1,}, - occup_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(255,255,255),x=-1,}, - route_a = {"metrostroi_arm/4-switch_quarter_small_a",col=Color(39,103,63),x=-1,}, - switch_m = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/4-switch_quarter_small_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/4-switch_quarter_small_as",col=Color(200,50,50)}, - width = 1.5, - next_m = {x=1.5,y=0}, - next_a = {x=1.5,y=1}, - acc_x = ">", - acc_y = "!", - }, - ofd = { - maintex = {"metrostroi_arm/offset_down",w=64,h=256,rw=57,rh=143,}, - occup_m = {"metrostroi_arm/offset_down_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offset_down_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=2}, - }, - ofds = { - maintex = {"metrostroi_arm/offsed_down_small",w=128,h=128,rw=70,rh=78,}, - occup_m = {"metrostroi_arm/offsed_down_small_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/offsed_down_small_m",col=Color(39,103,63)}, - width = 2, - next_m = {x=2,y=1}, - }, - ysw = { - maintex = {"metrostroi_arm/y-switch_half",w=128,h=128,rw=70,rh=108,}, - occup_m = {"metrostroi_arm/y-switch_half_m",col=Color(255,255,255)}, - route_m = {"metrostroi_arm/y-switch_half_m",col=Color(39,103,63)}, - occup_a = {"metrostroi_arm/y-switch_half_a",col=Color(255,255,255)}, - route_a = {"metrostroi_arm/y-switch_half_a",col=Color(39,103,63)}, - switch_m = {"metrostroi_arm/y-switch_half_ms",col=Color(41,202,26)}, - switch_a = {"metrostroi_arm/y-switch_half_as",col=Color(240,240,71)}, - switch_mn = {"metrostroi_arm/y-switch_half_ms",col=Color(200,50,50)}, - switch_an = {"metrostroi_arm/y-switch_half_as",col=Color(200,50,50)}, - width = 2, - next_m = {x=2,y=0}, - next_a = {x=2,y=1}, - }, - --Signals - tl_1 = { - maintex = {"metrostroi_arm/tl_1",w=32,h=16,rw=21,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_2 = { - maintex = {"metrostroi_arm/tl_2",w=64,h=16,rw=34,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, - tl_3 = { - maintex = {"metrostroi_arm/tl_3",w=64,h=16,rw=47,rh=13}, - full = {"metrostroi_arm/tl_f",w=16,h=16,rw=12,rh=12}, - h1 = {"metrostroi_arm/tl_h1",w=16,h=16,rw=12,rh=12}, - h2 = {"metrostroi_arm/tl_h2",w=16,h=16,rw=12,rh=12}, - }, -} -if CLIENT then - for i,segm in pairs(ENT.Types) do - for k,tex in pairs(segm) do - if type(tex) ~= "table" or type(tex[1]) ~= "string" then continue end - tex.mat = surface.GetTextureID(tex[1]) - end - segm.id = i - end -end - --------------- --- Syntax of table --- { --- station = "ID,abbreviation,full name" --- First line of segments --- {"segment type:occupation checkers,...,occupation checkers:lights:...:lights"}, --- Second line of segments --- {x=x indent,skip=y indent(skips y segments vertically),"segment type:occupation checkers main,...,occupation checkers main:occupation checkers alt,...,occupation checkers alt:lights:...:lights"}, --- } --- segment type can have > or ! on start, when we want mirror it vertically or horisontally --- Occupation checkers can be triggers(have @ in start of trigger name) or signals --- Lights can be empty, if we want take light name from occupation checkers --- Lights can have ! when stay in right direction or !! when stay in opposite direction --- Lights can have > when we want switch light location from bottom to top --- Examples ---{ --- station = "001,ST,Station name", --- { --- {"1:L1:!","1:L3:!","sw:@sw1trigger:@sw3trigger"} --- {x=1,"1:L2",">sw:@sw2trigger:@sw3rigger"}, --- } ---} --------------- -Metrostroi.ARMConfig = { - --[=[ - { - station = "451,ВБ,Уоллеса брина", - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","sw:1","3:1","3:1"}, - {x=7,"0.5:1","4sws:1",">4sws:1","1:1","1:1"},{skip=1}, - {x=7,"0.5:1","!4sws:1",">!4sws:1","1:1","1:1"}, - {"0.5:1","0.5:1","0.5:1","0.5:1","1:1","1:1","1:1","!sw:1","3:1","3:1"}, - },{ - station="915,РЧ,Речная", - {x=3.5,"0.5:RX22","1:RX22","1:RX20","0.5:RX98","4sw:::RX1:0",">4sw:::RX3:","1","2","2","1","1"},{skip=3}, - {"1:201","0.5:203","0.5:205","0.5:207","0.5:209","0.5:211","0.5:213","1:215","1:217","0.5:219","!4sw:::RX2::!!2RX95",">!4sw:::RX4:","1","2","2","1","1"}, - },{ - station="110,МД,Международная", - {"1:145//:!1","1:143:!1","1:141//:!1","0.5:RC137","0.5:139M:!1","3:137:!>1","sw:@wt_md_s1:@wt_md_s1:MD1:!!>2D:!>2G","3:@wt_md_t1_1::!2MD3","2:@wt_md_t1_2"}, - {x=9,"4sws:@wt_md_s3::MD3",">4sws:@wt_md_s5::MD5:!2MD1","2:@wt_md_t3"},{skip=1}, - {x=9,"!4sws:@wt_md_s4::MD4",">!4sws:@wt_md_s6::MD6:!>2MD2","2:@wt_md_t4"}, - {"1:MD148:!!2","1:MD146:!!2","1:MD144:!!2","1:MD142:!!2:!1 OP","1:MD140:!!2","1:RC144A","1:RC142","!sw:@wt_md_s2:@wt_md_s2:MD2:!!2MD138G:!1E","3:@wt_md_t2_1::!>2MD4","2:@wt_md_t2_2"}, - objects={ - {type="b",name="МЕЖДУНАРОДНАЯ",x1=4+0.3,y1=0+0.6,x2=7-0.3,y2=4-0.6,}, - {type="cl",path=1,x=4+0.4,y=0+0.65}, - {type="cl",path=2,x=7-0.4,y=4-0.65, right=true}, - }, - buttons = { - {type="r" ,y=4-0.6 ,x=0,name="2I"}, - {type="pn",y=4-0.6 ,x=0.3,name="2IA"}, - {type="r" ,y=4-0.6 ,x=4,name="OP"}, - {type="r" ,y=4 ,x=6+0.4, name="MD138G"}, - {type="r" ,y=4-0.6 ,x=9,name="E"}, - {type="r" ,y=3 ,x=12,name="4I"}, - {type="r" ,y=1-0.6 ,x=12,name="3I"}, - {type="r" ,y=0-0.6 ,x=6+0.4, name="D"}, - {type="pn",y=0-0.6 ,x=6.7,name="DA"}, - {type="r" ,y=0 ,x=9,name="G"}, - {type="pn",y=1+0.3 ,x=1.4,name="CPS"}, - {type="rn",y=2-0.3 ,x=1.4,name="ГОК"}, - {type="pn",y=1+0.3 ,x=2.5,name="CRI"}, - {type="rn",y=2-0.3 ,x=2.5,name="ОМО"}, - - {type="rn",y=1.6 ,x=9,name="АО 3П"}, - {type="rn",y=2.4 ,x=9,name="АО 4П"}, - }, - info= { - {y=4.7,x=6.3,text="ТЕСТ"}, - {y=4.7,x=7.65,text="АВ:Х3",col=Color(50,230,50)}, - {y=4.95,x=7.65,text="АВ:ДВ",col=Color(50,230,50)}, - {y=5.2, x=7.65,text="УПО",col=Color(50,230,50)}, - {y=4.7,x=9,text="П1ДЦ",col=Color(255,230,50)}, - {y=4.95,x=9,text="П2ДЦ",col=Color(255,230,50)}, - }, - routes = { - ["2I-OP"] = { - signals={"MD148","MD146","MD144","MD142"},mode=1, - first={0,4},last={3,4}, - }, - ["OP-MD138G"] = { - signals={"MD140"},mode=1, - first={4,4},last={6,4}, - }, - ["MD138G-4I"] = { - signals={"MD138G"},mode=3, - first={7,4},last={12,3}, - }, - ["MD138G-3I"] = { - signals={"MD138G"},mode=3, - first={7,4},last={12,1},checks={{9,1},{10.5,3}}, - }, - ["4I-OP"] = { - signals={"MD2"},mode=3, - first={12,3},last={4,4}, - }, - ["3I-OP"] = { - signals={"MD1"},mode=3, - first={12,1},last={4,4},checks={{9,1},{10.5,3}}, - }, - ["MD138G-E"] = { - signals={"MD138G"},mode=3, - first={7,4},last={9,4}, - }, - ["E-MD138G"] = { - signals={"E"},mode=3, - first={7,4},last={4,4}, - }, - ["D-4I"] = { - signals={"D"},mode=3, - first={7,0},last={12,3},checks={{9,3},{10.5,1}}, - }, - ["D-3I"] = { - signals={"D"},mode=3, - first={7,0},last={12,1}, - }, - ["D-G"] = { - signals={"D"},mode=3, - first={7,0},last={9,0}, - }, - ["G-D"] = { - signals={"G"},mode=3, first={7,0},last={4,0}, - }, - ["4I-D"] = { - signals={"MD2"},mode=3, - first={12,3},last={4,0},checks={{9,3},{10.5,1},{3.5,0}},ignore={{12,3}} - }, - ["3I-D"] = { - signals={"MD1"},mode=3, - first={12,1},last={4,0},checks={{3.5,0}}, - }, - }, - signals = { - --"LensesStr": "YYG-RW", - MD148={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD146={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD144={ - Mode=1, --AB 1/5 - R="4",RY="42",Y="1",YG="13",G="3",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD142={ - Mode=1, --AB 1/5 - R="3",RY="31",Y="1",G="2",IS="4", --Lenses ID - Autostop = true,AO = false,bs=4, - }, - MD140={ - Mode=1, --AB 1/5 - R="4",RY="42",--[[ Y="1",--]] YG="13",IS="5", --Lenses ID - Autostop = true,AO = false,bs=3, - }, - MD138G={ - Mode=1, --AB 1/5 - R="3",RY="32",W="1",IS="4", --Lenses ID - Autostop = true,AO = false,bs=1, - }, - MD3={ - Mode=1, --AB 1/5 - R="1",IS="2", - Autostop = true,AO = false, - }, - MD4={ - Mode=1, --AB 1/5 - R="1",IS="2", - Autostop = true,AO = false, - }, - MD1={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - MD2={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - E={ - Mode=1, --AB 1/5 - R="2",W="1", - Autostop = true,AO = false, - }, - G={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - D={ - Mode=1, --AB 1/5 - R="2",W="1",IS="3", - Autostop = true,AO = false, - }, - } - },{ - station="112,ПТ,Политехническая", - {x=1,"1:PT2TB","2:PT2TA","2:PT2T:!!2PT2","2:PT4SA:!!2PT4",">2swm:@wt_pt_t4::PT4:!3PT968M:!!2G ","1:PT966A","2:PT966:!>2","sw:@wt_pt_t6::PT6:!>2PT964:!!>3A","1:962"}, - {x=15,"1:PT6SS","1:963"}, - {x=1,"1:77:!1","1:75:!1","1:73:!1","1:71:!>1",">2swm:@wt_pt_t1::PT1:!!>2B","!2swm:@wt_pt_t3::PT3:!>2PT69","1:PT67M:!2","1:PT65B","1:PT65A","1:PT65:!2","1:PT63:!2:!!1 OP ","1:PT61:!2","1:PT59:!2","1:PT57:!2"},{skip=1}, - {"1:PT70:!!2:!1 OP2 ","1:PT68:!!2","2:@wt_pt_t2:!!2PT66","!2swm:@wt_pt_t4::PT2:!!3PT64","2","2:62:!!1","1:60:!!1","2:60A","1:58M:!!1","1:56:!!1","1:54:!!1","1: 52:!!1"}, - {}, - objects={ - {type="b",name="ПОЛИТЕХНИ-\nЧЕСКАЯ I",x1=10+0.3,y1=0+0.6,x2=13-0.3,y2=2-0.6,}, - {type="b",name="ПОЛИТЕХНИ-\nЧЕСКАЯ II",x1=10+0.3,y1=4+0.6,x2=13-0.3,y2=6-0.6,}, - {type="cl",path=3,x=10+0.4,y=0+0.3}, - {type="cl",path=1,x=10+0.4,y=1+0.3}, - {type="cl",path=2,x=13-0.4,y=5-0.3, right=true}, - }, - labels = { - - }, - buttons = { - --{type="r",y=0-0.6 ,x=1, start="3T",target={1,0},flip=true}, - --{type="r",y=0 ,x=3+0.4,start="PT2",target={1,0},flip=true}, - - --{type="r",y=4-0.6 ,x=1, signal=" OP2 "}, - --{type="r",y=4 ,x=-1+0.4, signal="PT70"}, - --{type="r",y=4 ,x=3+0.4, signal="2P",target={8,4}}, - ----{type="r",y=4 ,x=7+0.4, signal="62"}, - --{type="r",y=2 ,x=5, signal="71"}, - --{type="r",y=2-0.6 ,x=4+0.4, signal="B",target={5,2}}, - --{type="r",y=2-0.6 ,x=17, signal="PT57"}, - --{type="r",y=2-0.6 ,x=10, signal="PT67M"}, - --{type="r",y=2 ,x=12+0.4,signal=" OP "}, - --{type="r",y=0-0.6 ,x=10, signal="PT968M",flip=true}, - --{type="r",y=0 ,x=15, signal="PT964",flip=true}, - --{type="r",y=1-0.6 ,x=15, signal="4O",target={15,1},flip=true}, - --{type="r",y=0-0.6 ,x=12+0.4,signal="A",flip=true}, - }, - routes = { - --[[ PT2 = {"A"}, - PT70 = {" OP ","A","2P"}, - --PT64 = {" OP ","A","PT64"}, - B = {" OP ","A"}, - PT57 = {"PT67M"}, - PT964 = {"PT968M"}, - PT67M = {"71"," OP2 "}, - PT968M = {"3T","71"," OP2 "}, - A={"4O"}--]] - }, - signals = { - --"LensesStr": "YYG-RW", - PT70={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT68={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT66={ - Mode=1, --AB 1/5 - R="4",RY="41",Y="2",YG="23",G="3",IS="5", --Lenses ID - Autostop = true,AO = false, - }, - PT64={ --"YWY-GRW - Mode=1, --AB 1/5 - R="5",RY="51",Y="3",YG="34",G="4",IS="6",W="2",YY="13",YbY="1b3", --Lenses ID - Autostop = true,AO = false, - routes = { - [" OP "]={path=2,mode=3},--Path-2, Mode: W - A={path=3,mode=2},--Path-2, Mode: YY - } - } - } - },{ - station="115,ОК,Октябрьская", - {"1","1","1","1","3","sw:::OK1","1"}, - {x=9,"4sws:::OK3",">4sws:::OK5","1"},{skip=1}, - {x=9,"!4sws:::OK4",">!4sws:::OK6","1"}, - {"1","1","1","1","3","!sw:::OK2","5"}, - objects={ - {type="b",name="ОКТЯБРЬСКАЯ",x1=4+0.3,y1=0+0.6,x2=7-0.3,y2=4-0.6,}, - {type="cl",path=1,x=4+0.4,y=0+0.65}, - {type="cl",path=2,x=7-0.4,y=4-0.65, right=true}, - }, - }--]=] -} - -print("MetrostroiARM:Generating ARM table...") -local errors,warnings = 0,0 -local function ARMGenError(text,err) - MsgC(Color(255,err and 0 or 255,0),"MetrostroiARM:"..text.."\n") - ErrorNoHalt() - if err then errors = errors + 1 else warnings = warnings + 1 end -end - -local function ParseARMTable(text,station,line,segm) - local resultTbl = {} - - local tbl = string.Explode(":",text) - - local typ = tbl[1] - if typ:find("^[>!]") then - resultTbl.invertX = typ:find(">") - resultTbl.invertY = typ:find("!") - typ = typ:gsub("^[>!]+","") - end - local segmTyp = ENT.Types[tonumber(typ) or typ] - if not segmTyp then return {error = 1,type = tbl[1]} end - table.remove(tbl,1) - - for i,str in ipairs(tbl) do - if str:find(",") then - tbl[i] = string.Explode(",",str) - end - if str:sub(1,2) == "!!" then - resultTbl.signal2 = str:sub(3,-1) - elseif str[1] == "!" then - resultTbl.signal1 = str:sub(2,-1) - end - end - resultTbl.occup = type(tbl[1]) == "table" and tbl[1] or {tbl[1]} - if segmTyp.occup_a then - resultTbl.occupAlt = type(tbl[2]) == "table" and tbl[2] or {tbl[2]} - resultTbl.switch = tbl[3] - if segmTyp.occup_x then - resultTbl.occup2 = type(tbl[4]) == "table" and tbl[4] or {tbl[4]} - end - end - - if resultTbl.signal1 then - local signal = resultTbl.signal1:gsub("^[>]+","") - local top = resultTbl.signal1:find("^>") - - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal1 = {name=name,type=typ or 1,top = top,segm=resultTbl,dir=false} - end - if resultTbl.signal2 then - local signal = resultTbl.signal2:gsub("^[>]+","") - local top = resultTbl.signal2:find("^>") - local typ = tonumber(signal[1]) - local name = signal:sub(2,-1) - if not typ then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment not found. Using default 1",station,line,segm),false) - name = signal[1]..name - elseif typ < 1 or typ > 3 then - ARMGenError(Format("Parser warning. Signal type in id station %d line %d segm %d segment have wrong ID, must be in range 1..3. Using default 1",station,line,segm),false) - typ = 1 - end - if name == "" then name = resultTbl.occup[1] end - resultTbl.signal2 = {name=name,type=typ or 1,top = top,segm=resultTbl,dir=true} - end - resultTbl.type = typ - resultTbl.width = segmTyp.width or 1 - resultTbl.segm = segmTyp - return resultTbl -end - - -Metrostroi.ARMConfigGenerated = {} -local id = 0 -for i,station in ipairs(Metrostroi.ARMConfig) do - if not Metrostroi.ARMConfigGenerated[i] then Metrostroi.ARMConfigGenerated[i] = {} end - local genStation = Metrostroi.ARMConfigGenerated[i] - local y = 0 - - MsgC(Color(0, 222, 255),"MetrostroiARM:Solving station ",i,"\n") - if #station == 0 then ARMGenError(Format("Parser warning. Empty station %d! Skipping...",i),false) continue end - if not station.station then ARMGenError(Format("Parser error. Can't find station name in station %d! Skipping...",i),true) continue end - - local stationTbl = string.Explode(",",station.station) - if not stationTbl or #stationTbl < 3 or not tonumber(stationTbl[1]) then ARMGenError(Format("Parser error. Malformed station data in station %d! Skipping...",i),true) continue end - - genStation.id = stationTbl[1] - genStation.shortname = stationTbl[2] - genStation.name = stationTbl[3] - genStation.buttons = {} - genStation.routes = station.routes or {} - genStation.objects = station.objects or {} - genStation.info = station.info or {} - genStation.signals = station.signals or {} - for lineID,line in ipairs(station) do - local x = line.x or 0 - for segmID,segm in ipairs(line) do - if type(segm) ~= "string" then - ARMGenError(Format("Parser error on station %d line %d segm %d, excepted string,got %s. Skipping segment...",i,lineID,segmID,type(segm)),true) - continue - end - local segmTbl= ParseARMTable(segm,i,lineID,segmID) - if segmTbl.error then - ARMGenError(Format("Parser warning. Skipping station %d line %d segm %d segment, type error(type '%s' not found)",i,lineID,segmID,segmTbl.type),false) - continue - end - if segmTbl.signal1 then - for name,sig in pairs(genStation.signals) do - if name==segmTbl.signal1.name then - sig.sig = segmTbl.signal1 - sig.segm = segmTbl - end - end - end - if segmTbl.signal2 then - for name,sig in pairs(genStation.signals) do - if name==segmTbl.signal2.name then - sig.sig = segmTbl.signal2 - sig.segm = segmTbl - end - end - end - segmTbl.x = x - segmTbl.y = y - segmTbl.id = table.insert(genStation,segmTbl) - x = x + (segmTbl.width or 1) - end - y = y + (line.skip or 1) - end - if station.buttons then - for _,button in pairs(station.buttons) do - button.pressable = false - button.selected = false - button.isbutton = true - if button.type == "r" then - button.segm = ENT.Types.button_normal - end - table.insert(genStation.buttons,button) - end - end - if station.routes then - for name,route in pairs(station.routes) do - route.name = name - end - end -end - -function ENT.FindSegment(station,x,y) - for segmid,segm in ipairs(station) do - if segm.x == x and segm.y == y then return segm end - end -end - -local function GetXY(x,y) - return 100+x*36,100+y*70 -end - -local function GetSegmPos(segm,alt) - local x,y = segm.x,segm.y - local segmt = segm.segm - local u0,v0,u1,v1 = 0,0,1,1 - if segm.invertX then u0,u1 = 1,0 end - if segm.invertY then v0,v1 = 1,0 end - if alt == nil then - return GetXY(x+segm.width*u0,y) - elseif alt == false and segmt.next_m then - return GetXY(x+segmt.next_m.x-segm.width*u0,y+segmt.next_m.y) - --print(123,x,y) - elseif alt and segmt.next_a then - return GetXY(x+segmt.next_a.x*u1-segmt.next_a.x*u0+segmt.width*u0,y+segmt.next_a.y*v1-segmt.next_a.y*v0) - end -end - - - -local function ARMSetNextCompare(posX,posY,segm,nsegm) - local xp,yp = GetSegmPos(segm) - local x,y = GetSegmPos(nsegm) - if sx and posX == x and posY == y then - nsegm.prev = segm - return true - end - - sx,sy = GetSegmPos(nsegm,false) - if sx and posX == sx and posY == sy then - nsegm.next_m = segm - return true - end - if not nsegm.segm.next_a then return end - sx,sy = GetSegmPos(nsegm,true) - if x ~= xp and y ~= yp and sx and posX == sx and posY == sy then - nsegm.next_a = segm - return true - end -end - -local function ARMSetNext(station) - for csegmid,csegm in ipairs(station) do - for segmid,segm in ipairs(station) do - if segm == csegm then continue end - - local posX,posY = GetSegmPos(csegm) - if ARMSetNextCompare(posX,posY,csegm,segm) then - csegm.prev = segm - --break - end - local posOX,posOY = GetSegmPos(csegm,false) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_m = segm - --break - end - local posAX,posAY = GetSegmPos(segm) - if not csegm.segm.next_a or posX == posAX or posY == posAY then continue end - posOX,posOY = GetSegmPos(csegm,true) - if ARMSetNextCompare(posOX,posOY,csegm,segm) then - csegm.next_a = segm - --break - end - end - end -end -for i,st in ipairs(Metrostroi.ARMConfigGenerated) do ARMSetNext(st) end - -local iter = 0 -function ENT.TraceSegments(station,segm,to,dir,last,checked,trace) - if not checked then iter=0 checked = {} end - iter = iter + 1 - if iter > 10000 then ARMGenError(Format("Routes generation error. Max iter reached!"),true) return false end - - if not trace then trace = {} end - if last == to then return trace end - if not segm or checked[segm] then return restbl end - checked[segm] = true - local segmIndex = table.insert(trace,{segm.id}) - - local segmM,segmA = segm.next_m,segm.next_a - local segmP = segm.prev - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if segmA and mainM then - local trace= table.Copy(trace) - trace[segmIndex][2] = true - local result = ENT.TraceSegments(station,segmA,to,dir,segm,checked,trace) - if result then return result end - end - if segmM and mainM then - return ENT.TraceSegments(station,segmM,to,dir,segm,checked,trace) - end - if segmP and mainP then - trace[segmIndex][2] = last and segm.next_a == last or nil-- or segmP.next_a == segm or nil - return ENT.TraceSegments(station,segmP,to,dir,segm,checked,trace) - end - if segm == to then return trace end -end -for i,station in ipairs(Metrostroi.ARMConfigGenerated) do - for name,route in pairs(station.routes) do - if not route.first or not route.last then ARMGenError(Format("Route check[%s]. Skipping route, missing first/last...",name),false) continue end - - local first,last = ENT.FindSegment(station,route.first[1],route.first[2]),ENT.FindSegment(station,route.last[1],route.last[2]) - if not first or not last then ARMGenError(Format("Route check[%s]. Skipping route, can't find first/last on selected pos...",name),false) continue end - - if route.checks then - for k,segmt in pairs(route.checks) do - route.checks[k] = ENT.FindSegment(station,segmt[1],segmt[2]) - end - end - local trace1 = ENT.TraceSegments(station,first,last,false) - if trace1 then - route.dir,route.route,route.directions = false,{},{} - for i,segm in ipairs(trace1) do - table.insert(route.route,station[segm[1]]) - route.directions[i] = segm[2] - end - if route.ignore then - route.ignores = {} - for k,segmti in pairs(route.ignore) do - local segm = ENT.FindSegment(station,segmti[1],segmti[2]) - for i,segmt in ipairs(route.route) do - if segm == segmt then route.ignores[i] = segm end - end - end - end - continue - end - local trace2 = ENT.TraceSegments(station,first,last,true) - if trace2 then - route.dir,route.route,route.directions = true,{},{} - for i,segm in ipairs(trace2) do - table.insert(route.route,station[segm[1]]) - route.directions[i] = segm[2] - end - if route.ignore then - route.ignores = {} - for k,segmti in pairs(route.ignore) do - local segm = ENT.FindSegment(station,segmti[1],segmti[2]) - for i,segmt in ipairs(route.route) do - if segm == segmt then route.ignores[i] = segm end - end - end - end - continue - end - ARMGenError(Format("Route check[%s]. Can't find path from start on end.",name),false) - end - for _,button in pairs(station.buttons) do - for name,route in pairs(station.routes) do - if name:find("-") then - local buttonName = name:sub(1,name:find("-")-1) - local buttonNameEnd = name:sub(name:find("-")+1,-1) - if button.name == buttonName then - if not route.startButtons then route.startButtons = {} end - table.insert(route.startButtons, button) - button.pressable = true - - if not button.routes then button.routes = {} end - table.insert(button.routes,route) - end - if button.name == buttonNameEnd then - if not route.endButtons then route.endButtons = {} end - table.insert(route.endButtons, button) - end - end - end - end -end -if errors == 0 and warnings == 0 then - MsgC(Color(0,255,0),"MetrostroiARM:Generate finished without errors and warnings.\n") -elseif errors == 0 then - MsgC(Color(255,255,0),"MetrostroiARM:Generate finished with "..warnings.." warnings.\n") -else - MsgC(Color(255,0,0),"MetrostroiARM:Generate finished with "..errors.." errors and "..warnings.." warnings!\n") -end ---PrintTable(Metrostroi.ARMConfigGenerated) - -for k,v in ipairs(Metrostroi.ARMConfigGenerated) do - Metrostroi.ARMTable[k] = { - occChecks = {}, - net = {}, - signal = {}, - switch = {}, - routes = {}, - } -end \ No newline at end of file diff --git a/lua/entities/gmod_track_autodrive_plate/cl_init.lua b/lua/entities/gmod_track_autodrive_plate/cl_init.lua index a95ce8b..d86f422 100644 --- a/lua/entities/gmod_track_autodrive_plate/cl_init.lua +++ b/lua/entities/gmod_track_autodrive_plate/cl_init.lua @@ -1,27 +1,19 @@ include("shared.lua") -local debug = GetConVar("metrostroi_drawsignaldebug") -local function enableDebug() - if debug:GetBool() then - hook.Add("PostDrawTranslucentRenderables","MetrostroiAutoDebug",function(bDrawingDepth,bDrawingSkybox) - for _,ent in pairs(ents.FindByClass("gmod_track_autodrive_plate")) do - if bDrawingDepth and LocalPlayer():GetPos():Distance(sig:GetPos()) < 512 then - local pos = sig:LocalToWorld(Vector(0,0,0)) - local ang = sig:LocalToWorldAngles(Angle(0,90,90)) - cam.Start3D2D(pos, ang, 0.25) - surface.SetDrawColor(125, 125, 0, 255) - surface.DrawRect(-40, -20, 80, 20) - cam.End3D2D() - end - end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiAutoDebug") - end -end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiAutoDebug") -cvars.AddChangeCallback( "metrostroi_drawsignaldebug", enableDebug) -enableDebug() +hook.Add("PostDrawOpaqueRenderables", "gmod_track_autodrive_plate_debug_draw", function(isDD) + if isDD then return end + if GetConVarNumber("metrostroi_drawsignaldebug") == 0 then return end + --print(2) + for _,self in pairs(ents.FindByClass("gmod_track_autodrive_plate")) do + local pos = self:LocalToWorld(Vector(0,0,0)) + local ang = self:LocalToWorldAngles(Angle(0,90,90)) + cam.Start3D2D(pos , ang, 0.25) + surface.SetDrawColor(125, 125, 0, 255) + surface.DrawRect(-40, -20, 80, 20) + cam.End3D2D() + end +end ) + function ENT:Initialize() end @@ -30,6 +22,10 @@ function ENT:OnRemove() end function ENT:RemoveModels() end +function ENT:Think() + self:NextThink(CurTime()+5) + return true +end function ENT:Draw() self:DrawModel() diff --git a/lua/entities/gmod_track_clock_interval/cl_init.lua b/lua/entities/gmod_track_clock_interval/cl_init.lua index 9531965..8818fb8 100644 --- a/lua/entities/gmod_track_clock_interval/cl_init.lua +++ b/lua/entities/gmod_track_clock_interval/cl_init.lua @@ -43,6 +43,7 @@ function ENT:Think() local dT = Metrostroi.GetTimedT() --local interval = -dT + os.time() - (self:GetIntervalResetTime()+GetGlobalFloat("MetrostroiTY")) local interval = Metrostroi.GetSyncTime() - (self:GetIntervalResetTime() + GetGlobalFloat("MetrostroiTY")) + if (interval <= (9 * 60 + 59)) and (interval >= 0) then if IsValid(self.Digits[1]) then self.Digits[1]:SetSkin(math.floor(interval / 60)) end if IsValid(self.Digits[2]) then self.Digits[2]:SetSkin(math.floor((interval % 60) / 10)) end diff --git a/lua/entities/gmod_track_pa_marker/cl_init.lua b/lua/entities/gmod_track_pa_marker/cl_init.lua index 3823051..e6f5137 100644 --- a/lua/entities/gmod_track_pa_marker/cl_init.lua +++ b/lua/entities/gmod_track_pa_marker/cl_init.lua @@ -1,7 +1,20 @@ include("shared.lua") +function ENT:Initialize() +end + +function ENT:OnRemove() +end +function ENT:RemoveModels() +end +function ENT:Think() + self.CanDraw = GetConVarNumber("metrostroi_drawsignaldebug")>0 + self:NextThink(CurTime()+5) + return true +end + + local mat = Material("vgui/bg-lines") ---[[ function ENT:Draw() if not self.CanDraw then return end cam.Start3D() @@ -15,35 +28,9 @@ function ENT:Draw() --render.DrawSprite( pos, 16, 16, white ) cam.End3D() self:DrawModel() -end]] - -function ENT:Draw() end - -local debug = GetConVar("metrostroi_drawsignaldebug") -local function enableDebug() - if debug:GetBool() then - hook.Add("PostDrawTranslucentRenderables","MetrostroiPAMarkerDebug",function(bDrawingDepth,bDrawingSkybox) - for _,ent in pairs(ents.FindByClass("gmod_track_autodrive_plate")) do - if bDrawingDepth and LocalPlayer():GetPos():Distance(sig:GetPos()) < 512 then - cam.Start3D() - render.SetMaterial(mat) - --render.DrawQuadEasy(self:GetPos(),self:GetAngles():Forward(),600,600,Color(255,255,255),0) - - render.DrawQuadEasy(ent:GetPos(),-ent:GetAngles():Forward(),600,300,Color(255,0,0),0) - render.DrawLine( ent:GetPos(), ent:LocalToWorld(Vector(50,0,0)), Color(255,0,0)) - render.DrawLine( ent:GetPos(), ent:LocalToWorld(Vector(0,50,0)), Color(0,255,0)) - render.DrawLine( ent:GetPos(), ent:LocalToWorld(Vector(0,0,50)), Color(0,0,255)) - --render.DrawSprite( pos, 16, 16, white ) - cam.End3D() - ent:DrawModel() - end - end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiPAMarkerDebug") +cvars.AddChangeCallback("metrostroi_drawsignaldebug", function() + for k,auto in pairs(ents.FindByClass("gmod_track_autodrive_coil")) do + auto:Initialize() end -end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiPAMarkerDebug") -cvars.AddChangeCallback( "metrostroi_drawsignaldebug", enableDebug) -enableDebug() \ No newline at end of file +end,"PAMarker") \ No newline at end of file diff --git a/lua/entities/gmod_track_pa_marker/init.lua b/lua/entities/gmod_track_pa_marker/init.lua index 55aabc2..d9a66a3 100644 --- a/lua/entities/gmod_track_pa_marker/init.lua +++ b/lua/entities/gmod_track_pa_marker/init.lua @@ -33,6 +33,7 @@ function ENT:SetTrackPosition(path,x) local results = Metrostroi.GetPositionOnTrack(self:GetPos(),self:GetAngles()) local pos,ang = Metrostroi.GetTrackPosition(path,x) if not pos then + --for k,v in pairs(results[1]) do print(k,v) end pos,ang = Metrostroi.GetTrackPosition(results[1].path,results[1].x) if not pos then ErrorNoHalt(Format("Metrostroi: Can't find PA track position: %s!\n",self:GetPos())) diff --git a/lua/entities/gmod_track_platform/cl_init.lua b/lua/entities/gmod_track_platform/cl_init.lua index a0bd866..ed14c7b 100644 --- a/lua/entities/gmod_track_platform/cl_init.lua +++ b/lua/entities/gmod_track_platform/cl_init.lua @@ -48,7 +48,6 @@ function ENT:Initialize() self.NonPassengerSounds = CreateSound(self,Sound( "ambient/levels/canals/tunnel_wind_loop1.wav" )) self.ClientModels = {} self.CleanupModels = {} - self:DrawShadow(false) end function ENT:OnRemove() @@ -165,11 +164,13 @@ function ENT:Think() self.DeltaTime = (CurTime() - self.PrevTime) self.PrevTime = CurTime() if self:IsDormant() then - if self.Pool then + if self.PlatformDrawn then self:OnRemove() + self.PlatformDrawn = false end return end + self.PlatformDrawn = true if self:GetNW2Bool("MustPlayAnnounces") then self.PassengerSounds:SetSoundLevel(105) @@ -214,7 +215,6 @@ function ENT:Think() self:PopulatePlatform(platformStart,platformEnd,stationCenter) end - local modelCount = 0 -- Check if set of models changed if (CurTime() - (self.ModelCheckTimer or 0) > 1.0) and poolReady then self.ModelCheckTimer = CurTime() @@ -244,8 +244,6 @@ function ENT:Think() self.ClientModels[i]:SetModelScale(self.Pool[i].scale,0) self.ClientModels[i]:DestroyShadow() self.ClientModels[i]:DrawShadow(false) - modelCount = modelCount + 1 - if modelCount > 15 then poolReady = false self.ModelCheckTimer = self.ModelCheckTimer - 0.9 break end end else -- Model found that is not in window @@ -272,7 +270,6 @@ function ENT:Think() end end end - -- Add models for cleanup of people who left trains self.PassengersLeft = self.PassengersLeft or self:GetNW2Int("PassengersLeft") while poolReady and (self.PassengersLeft < self:GetNW2Int("PassengersLeft")) do @@ -318,32 +315,19 @@ function ENT:Think() -- Animate models for cleanup for k,v in pairs(self.CleanupModels) do -- if not v or not IsValid(v) then self.CleanupModels[k] = nil return end - if not IsValid(v.ent) then - self.CleanupModels[k] = nil - continue - end + if not IsValid(v.ent) then continue end -- Get pos and target in XY plane local pos = v.ent:GetPos() local target = v.target pos.z = 0 target.z = 0 - local distance = pos:DistToSqr(target) - local count = self:GetNW2Int("TrainDoorCount",0) - -- Delete if reached the target point - if distance < 2*256--[[threshold]] or math.abs(LocalPlayer():GetPos().z - v.ent:GetPos().z) > 256 or count == 0 then - v.ent:Remove() - self.CleanupModels[k] = nil - continue - end - - -- Find direction in which pedestrians must walk local targetDir = (target - pos):GetNormalized() -- Make it go along the platform if too far - local threshold = 16 - if distance > 36864--[[192]] then + local distance = pos:Distance(target) + if distance > 192 then local platformDir = (platformEnd-platformStart):GetNormalized() local projection = targetDir:Dot(platformDir) if math.abs(projection) > 0.1 then @@ -352,19 +336,27 @@ function ENT:Think() end -- Move pedestrian + local threshold = 16 local speed = 1024 - if distance > 1048576--[[1024]] then speed = 2048 end + if distance > 1024 then speed = 256 end v.ent:SetPos(v.ent:GetPos() + targetDir*math.min(threshold,speed*self.DeltaTime)) -- Rotate pedestrian v.ent:SetAngles(targetDir:Angle() + Angle(0,180,0)) + -- Delete if reached the target point + if distance < 2*threshold or LocalPlayer():GetPos().z - v.ent:GetPos().z > 500 then + v.ent:Remove() + self.CleanupModels[k] = nil + end - --[[ Check if door can be reached at all (it still exists) + + -- Check if door can be reached at all (it still exists) + local count = self:GetNW2Int("TrainDoorCount",0) local distance = 1e9 local new_target = target for j=1,count do local vec = self:GetNW2Vector("TrainDoor"..j,Vector(0,0,0)) - local d = vec:DistToSqr(v.target) + local d = vec:Distance(v.target) if d < distance then new_target = vec distance = d @@ -374,7 +366,7 @@ function ENT:Think() --if distance > 32 --then v.target = self:GetPos() --else v.target = new_target - --end]] + --end end end diff --git a/lua/entities/gmod_track_platform/init.lua b/lua/entities/gmod_track_platform/init.lua index 4c76e58..d7e53ef 100644 --- a/lua/entities/gmod_track_platform/init.lua +++ b/lua/entities/gmod_track_platform/init.lua @@ -37,7 +37,7 @@ function ENT:Initialize() -- Get platform parameters self.VMF = self.VMF or {} self.PlatformStart = ents.FindByName(self.VMF.PlatformStart or "")[1] - self.SignOff = tonumber(self.VMF.Sign or self.VMF.NoSign or "0") == 1 + self.SignOff = tonumber(self.VMF.Sign or "0") == 1 self.PlatformEnd = ents.FindByName(self.VMF.PlatformEnd or "")[1] self.StationIndex = tonumber(self.VMF.StationIndex) or 100 self.PlatformIndex = tonumber(self.VMF.PlatformIndex) or 1 @@ -136,7 +136,6 @@ function ENT:Initialize() self.NoEntry.specarr = Sound(Metrostroi.StationAnnouncesTo[self.StationIndex][3]) self.NoEntry.specdep = Sound(Metrostroi.StationAnnouncesTo[self.StationIndex][4]) end]] - self:DrawShadow(false) end function ENT:OnRemove() @@ -151,6 +150,7 @@ function ENT:KeyValue(key, value) self.VMF[key] = value end + -------------------------------------------------------------------------------- -- Process platform logic -------------------------------------------------------------------------------- @@ -226,14 +226,6 @@ function ENT:GetDoorState() return false end -local function getPassengerRate(passCount) - if passCount < 80 then - return 1-((passCount/80)^3)*0.2 - else - return 1-math.min(1, (((passCount-80)/220)^0.6)*0.85+0.2) - end -end - ENT.TESTTEST = false local dT = 0.25 local trains = {} @@ -315,8 +307,7 @@ function ENT:Think() end -- Open doors on station - if stopped_fine and (v.SOSD or self.OldOpened and not self.OpenedBySOSD) then - self.OpenedBySOSD = v.SOSD + if stopped_fine and v.SOSD then self.HorliftTimer1 = self.HorliftTimer1 or CurTime() if ((CurTime() - self.HorliftTimer1) > 0.5) then if not self.HorliftTimer2 then self:FireHorliftDoors("Open") end @@ -362,38 +353,17 @@ function ENT:Think() if not left_side then door_count = #v.RightDoorPositions end -- Get maximum boarding rate for normal russian subway train doors - local max_boarding_rate = getPassengerRate(v:GetNW2Int("PassengerCount")) * 1.4 * door_count * dT - --print(Format("R:%.2f\tS:%.2f\tP:% 3d",max_boarding_rate,getPassengerRate(v:GetNW2Int("PassengerCount")),v:GetNW2Int("PassengerCount"))) + local max_boarding_rate = 1.4 * door_count * dT -- Get boarding rate based on passenger density local boarding_rate = math.min(max_boarding_rate,passenger_count) if self.PlatformLast then boarding_rate = 0 end -- Get rate of leaving local leaving_rate = 1.4 * door_count * dT if v.PassengersToLeave == 0 and not v.AnnouncementToLeaveWagonAcknowledged then leaving_rate = 0 end + if v.AnnouncementToLeaveWagonAcknowledged then leaving_rate = leaving_rate*1.5 end -- Board these passengers into train - local speedLimit = math.max(0,1-math.abs(v.Speed/5)) - local boarded,left,count - --if v.AnnouncementToLeaveWagonAcknowledged then - if v.AnnouncementToLeaveWagonAcknowledged then - boarded = 0 - left = math.ceil(math.min(math.max(2,leaving_rate + 0.5),v:GetNW2Int("PassengerCount"))*speedLimit*1.5) - count = v:GetNW2Int("PassengerCount") - else - count = self:PopulationCount() + v.PassengersToLeave - boarded = math.ceil(math.min(math.max(2,boarding_rate+0.5),self:PopulationCount())*speedLimit) - left = math.ceil(math.min(math.max(2,leaving_rate +0.5),v.PassengersToLeave)*speedLimit) - end - if (v.PrevLeftDoorsOpening ~= v.LeftDoorsOpening) then - v.CanStuckPassengerLeft = not v.LeftDoorsOpening and ((boarded > 0 or left > 0) and math.min(1,count/100) or math.min(1,count/400)) - v.PrevLeftDoorsOpening = v.LeftDoorsOpening - if v.LeftDoorsOpening then v.LastPlatform = nil end - end - if (v.PrevRightDoorsOpening ~= v.RightDoorsOpening) then - v.CanStuckPassengerRight = not v.RightDoorsOpening and ((boarded > 0 or left > 0) and math.min(1,count/100) or math.min(1,count/400)) - v.PrevRightDoorsOpening = v.RightDoorsOpening - if v.RightDoorsOpening then v.LastPlatform = nil end - end - + local boarded = math.min(math.max(2,math.floor(boarding_rate+0.5)),v.AnnouncementToLeaveWagonAcknowledged and 0 or self:PopulationCount()) + local left = math.min(math.max(2,math.floor(leaving_rate +0.5)),v.AnnouncementToLeaveWagonAcknowledged and v:GetNW2Int("PassengerCount") or v.PassengersToLeave) if math.random() <= math.Clamp(17-passenger_count,0,17)/17*0.5 then boarded = 0 end if math.random() <= math.Clamp(17-v.PassengersToLeave,0,17)/17*0.5 then left = 0 end local passenger_delta = boarded - left @@ -432,11 +402,11 @@ function ENT:Think() -- Keep list of door positions if left_side then - for k, vec in ipairs(v.LeftDoorPositions) do + for k, vec in pairs(v.LeftDoorPositions) do table.insert(boardingDoorList, v:LocalToWorld(vec)) end else - for k, vec in ipairs(v.RightDoorPositions) do + for k, vec in pairs(v.RightDoorPositions) do table.insert(boardingDoorList, v:LocalToWorld(vec)) end end @@ -548,7 +518,7 @@ function ENT:Think() end]] -- Add passengers if (not self.PlatformLast) and (#boardingDoorList == 0) then - local target = (Metrostroi.PassengersScale or 50)*self.PopularityIndex --300 + local target = GetConVarNumber("metrostroi_passengers_scale",50)*self.PopularityIndex --300 -- then target = target*0.1 end if target <= 0 then @@ -583,7 +553,6 @@ function ENT:Think() self.ARSOverride = true self.OldOpened = self:GetDoorState() self.OldPeopleGoing = PeopleGoing - if not self.OldOpened then self.OpenedBySOSD = false end end -- Block local ARS sections if self.ARSOverride ~= nil then diff --git a/lua/entities/gmod_track_pneumatic_snake/init.lua b/lua/entities/gmod_track_pneumatic_snake/init.lua index cab2a4e..e72fdd1 100644 --- a/lua/entities/gmod_track_pneumatic_snake/init.lua +++ b/lua/entities/gmod_track_pneumatic_snake/init.lua @@ -25,13 +25,11 @@ function ENT:Touch(ent) self:SetPos(ent:LocalToWorld(ent.SnakePos or Vector(cpos.x+0.13,cpos.y+0,cpos.z+6.5))) self:SetAngles(ent:LocalToWorldAngles(ent.SnakeAng or Angle(0,90,0))) if IsValid(constraint.Weld(ent,self,0,0,0--[[33000]],true,false)) then - self.CoupledWith = ent + self.CoupledWith = ent ent.DepotPneumo = self - DropEntityIfHeld(ent) - - --[[if self.LastPickup and self:IsPlayerHolding() then + if self.LastPickup and self:IsPlayerHolding() then self.LastPickup:DropObject() - end]] + end sound.Play("buttons/lever2.wav",self:GetPos()) end end diff --git a/lua/entities/gmod_track_signal/cl_init.lua b/lua/entities/gmod_track_signal/cl_init.lua index bf649b9..7894825 100644 --- a/lua/entities/gmod_track_signal/cl_init.lua +++ b/lua/entities/gmod_track_signal/cl_init.lua @@ -169,7 +169,6 @@ net.Receive("metrostroi-signal", function() if not IsValid(ent) then return end ent.LightType = net.ReadInt(3) ent.Name = net.ReadString() - --ent.Name = " BUDAPEiT"..string.gsub(ent.Name,"[A-Za-z]*","") ent.Lenses = net.ReadString() ent.ARSOnly = ent.Lenses == "ARSOnly" ent.RouteNumberSetup = net.ReadString() @@ -546,132 +545,130 @@ local ars = { {"75 Hz", "80 KM/H"}, } local function enableDebug() - if debug:GetBool() then - hook.Add("PostDrawTranslucentRenderables","MetrostroiSignalDebug",function(bDrawingDepth,bDrawingSkybox) - for _,ent in pairs(ents.FindByClass("gmod_track_signal")) do - if bDrawingDepth and LocalPlayer():GetPos():Distance(sig:GetPos()) < 384 then - local pos = sig:LocalToWorld(Vector(48,0,150)) - local ang = sig:LocalToWorldAngles(Angle(0,180,90)) - cam.Start3D2D(pos, ang, 0.25) - - if sig:GetNW2Bool("Debug",false) then - surface.SetDrawColor(sig.ARSOnly and 255 or 125, 125, 0, 255) - surface.DrawRect(0, -60, 364, 210) - if not sig.ARSOnly then - surface.DrawRect(0, 155, 240, 170) - surface.DrawRect(0, 330, 240, 190) - surface.SetDrawColor(0,0,0, 255) - surface.DrawRect(245, 155, 119, 365) - else - surface.DrawRect(0, 155, 364, 150) - surface.DrawRect(0, 310, 364, 190) - end - - if sig.Name then - draw.DrawText(Format("Joint main info (%d)",sig:EntIndex()),"Trebuchet24",5,-60,Color(200,0,0,255)) - draw.DrawText("Signal name: "..sig.Name,"Trebuchet24", 15, -40,Color(0,0,0,255)) - draw.DrawText("TrackID: "..sig:GetNW2Int("PosID",0),"Trebuchet24", 25, -20,Color(0,0,0,255)) - draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("Pos",0)),"Trebuchet24", 135, -20,Color(0,0,0,255)) - draw.DrawText(Format("NextSignalName: %s",sig:GetNW2String("NextSignalName","N/A")),"Trebuchet24", 15, 0,Color(0,0,0,255)) - draw.DrawText(Format("TrackID: %s",sig:GetNW2Int("NextPosID",0)),"Trebuchet24", 25, 20,Color(0,0,0,255)) - draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("NextPos",0)),"Trebuchet24", 135, 20,Color(0,0,0,255)) - draw.DrawText(Format("Dist: %.02f",sig:GetNW2Float("DistanceToNext",0)),"Trebuchet24", 15, 40,Color(0,0,0,255)) - draw.DrawText(Format("PrevSignalName: %s",sig:GetNW2String("PrevSignalName","N/A")),"Trebuchet24", 15, 60,Color(0,0,0,255)) - draw.DrawText(Format("TrackID: %s",sig:GetNW2Int("PrevPosID",0)),"Trebuchet24", 25, 80,Color(0,0,0,255)) - draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("PrevPos",0)),"Trebuchet24", 135, 80,Color(0,0,0,255)) - draw.DrawText(Format("DistPrev: %.02f",sig:GetNW2Float("DistanceToPrev",0)),"Trebuchet24", 15, 100,Color(0,0,0,255)) - draw.DrawText(Format("Current route: %d",sig:GetNW2Int("CurrentRoute",-1)),"Trebuchet24", 15, 120,Color(0,0,0,255)) - - draw.DrawText("AB info","Trebuchet24",5,160,Color(200,0,0,255)) - draw.DrawText(Format("Occupied: %s",sig:GetNW2Bool("Occupied",false) and "Y" or "N"),"Trebuchet24",5,180,Color(0,0,0,255)) - draw.DrawText(Format("Linked to controller: %s",sig:GetNW2Bool("LinkedToController",false) and "Y" or "N"),"Trebuchet24",5,200,Color(0,0,0,255)) - draw.DrawText(Format("Num: %d",sig:GetNW2Int("ControllersNumber",0)),"Trebuchet24",10,220,Color(0,0,0,255)) - draw.DrawText(Format("Controller logic: %s",sig:GetNW2Bool("BlockedByController",false) and "Y" or "N"),"Trebuchet24",5,240,Color(0,0,0,255)) - draw.DrawText(Format("Autostop: %s",not sig.ARSOnly and sig.AutostopPresent and (sig:GetNW2Bool("Autostop") and "Up" or "Down") or "No present"),"Trebuchet24",5,260,Color(0,0,0,255)) - draw.DrawText(Format("2/6: %s",sig:GetNW2Bool("2/6",false) and "Y" or "N"),"Trebuchet24",5,280,Color(0,0,0,255)) - draw.DrawText(Format("FreeBS: %d",sig:GetNW2Int("FreeBS")),"Trebuchet24",5,300,Color(0,0,0,255)) - - draw.DrawText("ARS info","Trebuchet24",5,335,Color(200,0,0,255)) - local num = 0 - for i,tbl in pairs(ars) do - if not tbl then continue end - if sig:GetNW2Bool("CurrentARS"..(i-1),false) then - draw.DrawText(Format("(% s)",tbl[1]),"Trebuchet24",5,355+num*20,Color(0,100,0,255)) - draw.DrawText(Format("%s",tbl[2]),"Trebuchet24",105,355+num*20,Color(0,100,0,255)) - else - draw.DrawText(Format("(% s)",tbl[1]),"Trebuchet24",5,355+num*20,Color(0,0,0,255)) - draw.DrawText(Format("%s",tbl[2]),"Trebuchet24",105,355+num*20,Color(0,0,0,255)) - end - num = num+1 - end - if sig:GetNW2Bool("CurrentARS325",false) or sig:GetNW2Bool("CurrentARS325_2",false) then - draw.DrawText("(325 Hz)","Trebuchet24",5,355+num*20,Color(0,100,0,255)) - draw.DrawText(Format("LN:%s Apr0:%s",sig:GetNW2Bool("CurrentARS325",false) and "Y" or "N",sig:GetNW2Bool("CurrentARS325_2",false) and "Y" or "N"),"Trebuchet24",105,355+num*20,Color(0,100,0,255)) - else - draw.DrawText("(325 Hz)","Trebuchet24",5,355+num*20,Color(0,0,0,255)) - draw.DrawText(Format("LN:%s Apr0:%s",sig:GetNW2Bool("CurrentARS325",false) and "Y" or "N",sig:GetNW2Bool("CurrentARS325_2",false) and "Y" or "N"),"Trebuchet24",105,355+num*20,Color(0,0,0,255)) - end + for k,sig in pairs(ents.FindByClass("gmod_track_signal")) do + if debug:GetBool() then + hook.Add("PostDrawTranslucentRenderables",sig,function(bDrawingDepth,bDrawingSkybox) + if bDrawingDepth and IsValid(sig) and LocalPlayer():GetPos():Distance(sig:GetPos()) < 384 then + local pos = sig:LocalToWorld(Vector(48,0,150)) + local ang = sig:LocalToWorldAngles(Angle(0,180,90)) + cam.Start3D2D(pos, ang, 0.25) + if sig:GetNW2Bool("Debug",false) then + surface.SetDrawColor(sig.ARSOnly and 255 or 125, 125, 0, 255) + surface.DrawRect(0, -60, 364, 210) if not sig.ARSOnly then - draw.DrawText("Signal info","Trebuchet24",250,160,Color(200,0,0,255)) - local ID = 0 - local ID2 = 0 - local first = true - for _,v in ipairs(sig.LensesTBL) do - local data - if not sig.TrafficLightModels[sig.LightType][v] then - data = sig.TrafficLightModels[sig.LightType][#v-1] + surface.DrawRect(0, 155, 240, 170) + surface.DrawRect(0, 330, 240, 190) + surface.SetDrawColor(0,0,0, 255) + surface.DrawRect(245, 155, 119, 365) + else + surface.DrawRect(0, 155, 364, 150) + surface.DrawRect(0, 310, 364, 190) + end + + if sig.Name then + draw.DrawText(Format("Joint main info (%d)",sig:EntIndex()),"Trebuchet24",5,-60,Color(200,0,0,255)) + draw.DrawText("Signal name: "..sig.Name,"Trebuchet24", 15, -40,Color(0,0,0,255)) + draw.DrawText("TrackID: "..sig:GetNW2Int("PosID",0),"Trebuchet24", 25, -20,Color(0,0,0,255)) + draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("Pos",0)),"Trebuchet24", 135, -20,Color(0,0,0,255)) + draw.DrawText(Format("NextSignalName: %s",sig:GetNW2String("NextSignalName","N/A")),"Trebuchet24", 15, 0,Color(0,0,0,255)) + draw.DrawText(Format("TrackID: %s",sig:GetNW2Int("NextPosID",0)),"Trebuchet24", 25, 20,Color(0,0,0,255)) + draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("NextPos",0)),"Trebuchet24", 135, 20,Color(0,0,0,255)) + draw.DrawText(Format("Dist: %.02f",sig:GetNW2Float("DistanceToNext",0)),"Trebuchet24", 15, 40,Color(0,0,0,255)) + draw.DrawText(Format("PrevSignalName: %s",sig:GetNW2String("PrevSignalName","N/A")),"Trebuchet24", 15, 60,Color(0,0,0,255)) + draw.DrawText(Format("TrackID: %s",sig:GetNW2Int("PrevPosID",0)),"Trebuchet24", 25, 80,Color(0,0,0,255)) + draw.DrawText(Format("PosX: %.02f",sig:GetNW2Float("PrevPos",0)),"Trebuchet24", 135, 80,Color(0,0,0,255)) + draw.DrawText(Format("DistPrev: %.02f",sig:GetNW2Float("DistanceToPrev",0)),"Trebuchet24", 15, 100,Color(0,0,0,255)) + draw.DrawText(Format("Current route: %d",sig:GetNW2Int("CurrentRoute",-1)),"Trebuchet24", 15, 120,Color(0,0,0,255)) + + draw.DrawText("AB info","Trebuchet24",5,160,Color(200,0,0,255)) + draw.DrawText(Format("Occupied: %s",sig:GetNW2Bool("Occupied",false) and "Y" or "N"),"Trebuchet24",5,180,Color(0,0,0,255)) + draw.DrawText(Format("Linked to controller: %s",sig:GetNW2Bool("LinkedToController",false) and "Y" or "N"),"Trebuchet24",5,200,Color(0,0,0,255)) + draw.DrawText(Format("Num: %d",sig:GetNW2Int("ControllersNumber",0)),"Trebuchet24",10,220,Color(0,0,0,255)) + draw.DrawText(Format("Controller logic: %s",sig:GetNW2Bool("BlockedByController",false) and "Y" or "N"),"Trebuchet24",5,240,Color(0,0,0,255)) + draw.DrawText(Format("Autostop: %s",not sig.ARSOnly and sig.AutostopPresent and (sig:GetNW2Bool("Autostop") and "Up" or "Down") or "No present"),"Trebuchet24",5,260,Color(0,0,0,255)) + draw.DrawText(Format("2/6: %s",sig:GetNW2Bool("2/6",false) and "Y" or "N"),"Trebuchet24",5,280,Color(0,0,0,255)) + draw.DrawText(Format("FreeBS: %d",sig:GetNW2Int("FreeBS")),"Trebuchet24",5,300,Color(0,0,0,255)) + + draw.DrawText("ARS info","Trebuchet24",5,335,Color(200,0,0,255)) + local num = 0 + for i,tbl in pairs(ars) do + if not tbl then continue end + if sig:GetNW2Bool("CurrentARS"..(i-1),false) then + draw.DrawText(Format("(% s)",tbl[1]),"Trebuchet24",5,355+num*20,Color(0,100,0,255)) + draw.DrawText(Format("%s",tbl[2]),"Trebuchet24",105,355+num*20,Color(0,100,0,255)) else - data = sig.TrafficLightModels[sig.LightType][v] + draw.DrawText(Format("(% s)",tbl[1]),"Trebuchet24",5,355+num*20,Color(0,0,0,255)) + draw.DrawText(Format("%s",tbl[2]),"Trebuchet24",105,355+num*20,Color(0,0,0,255)) end - if not data then continue end - - --sig.NamesOffset = sig.NamesOffset + Vector(0,0,data[1]) - local cols = { - R = Color(200,0,0), - Y = Color(200,200,0), - G = Color(0,200,0), - W = Color(200,200,200), - B = Color(0,0,200), - } - if v ~= "M" then - for i = 1,#v do - ID2 = ID2 + 1 - local State = tonumber(sig.Sig[ID2]) == 1 and "X" or (tonumber(sig.Sig[ID2]) == 2 and (RealTime() % 1.2 > 0.4)) and "B" or false - draw.DrawText(Format(v[i],sig:EntIndex()),"Trebuchet24",250,160 + ID*20 + ID2*20,cols[v[i]]) - if State then - draw.DrawText(State,"Trebuchet24",280,160 + ID*20 + ID2*20,cols[v[i]]) - end - end - else - ID2 = ID2 + 1 - draw.DrawText("M","Trebuchet24",250,160 + ID*20 + ID2*20,Color(200,200,200)) - draw.DrawText(sig.Num or "none","Trebuchet24",280,160 + ID*20 + ID2*20,Color(200,200,200)) - - --if Metrostroi.RoutePointer[sig.Num[1]] then sig.Models[1][sig.RouteNumber]:SetSkin(Metrostroi.RoutePointer[sig.Num[1]]) end - end - - ID = ID + 1 + num = num+1 end + if sig:GetNW2Bool("CurrentARS325",false) or sig:GetNW2Bool("CurrentARS325_2",false) then + draw.DrawText("(325 Hz)","Trebuchet24",5,355+num*20,Color(0,100,0,255)) + draw.DrawText(Format("LN:%s Apr0:%s",sig:GetNW2Bool("CurrentARS325",false) and "Y" or "N",sig:GetNW2Bool("CurrentARS325_2",false) and "Y" or "N"),"Trebuchet24",105,355+num*20,Color(0,100,0,255)) + else + draw.DrawText("(325 Hz)","Trebuchet24",5,355+num*20,Color(0,0,0,255)) + draw.DrawText(Format("LN:%s Apr0:%s",sig:GetNW2Bool("CurrentARS325",false) and "Y" or "N",sig:GetNW2Bool("CurrentARS325_2",false) and "Y" or "N"),"Trebuchet24",105,355+num*20,Color(0,0,0,255)) + end + + if not sig.ARSOnly then + draw.DrawText("Signal info","Trebuchet24",250,160,Color(200,0,0,255)) + local ID = 0 + local ID2 = 0 + local first = true + for _,v in ipairs(sig.LensesTBL) do + local data + if not sig.TrafficLightModels[sig.LightType][v] then + data = sig.TrafficLightModels[sig.LightType][#v-1] + else + data = sig.TrafficLightModels[sig.LightType][v] + end + if not data then continue end + + --sig.NamesOffset = sig.NamesOffset + Vector(0,0,data[1]) + local cols = { + R = Color(200,0,0), + Y = Color(200,200,0), + G = Color(0,200,0), + W = Color(200,200,200), + B = Color(0,0,200), + } + if v ~= "M" then + for i = 1,#v do + ID2 = ID2 + 1 + local State = tonumber(sig.Sig[ID2]) == 1 and "X" or (tonumber(sig.Sig[ID2]) == 2 and (RealTime() % 1.2 > 0.4)) and "B" or false + draw.DrawText(Format(v[i],sig:EntIndex()),"Trebuchet24",250,160 + ID*20 + ID2*20,cols[v[i]]) + if State then + draw.DrawText(State,"Trebuchet24",280,160 + ID*20 + ID2*20,cols[v[i]]) + end + end + else + ID2 = ID2 + 1 + draw.DrawText("M","Trebuchet24",250,160 + ID*20 + ID2*20,Color(200,200,200)) + draw.DrawText(sig.Num or "none","Trebuchet24",280,160 + ID*20 + ID2*20,Color(200,200,200)) + + --if Metrostroi.RoutePointer[sig.Num[1]] then sig.Models[1][sig.RouteNumber]:SetSkin(Metrostroi.RoutePointer[sig.Num[1]]) end + end + + ID = ID + 1 + end + end + else + draw.DrawText("No data...","Trebuchet24",5,0,Color(0,0,0,255)) end else - draw.DrawText("No data...","Trebuchet24",5,0,Color(0,0,0,255)) + surface.SetDrawColor(sig.ARSOnly and 255 or 125, 125, 0, 255) + surface.DrawRect(0, 0, 364, 25) + draw.DrawText("Debug disabled...","Trebuchet24",5,0,Color(0,0,0,255)) end - else - surface.SetDrawColor(sig.ARSOnly and 255 or 125, 125, 0, 255) - surface.DrawRect(0, 0, 364, 25) - draw.DrawText("Debug disabled...","Trebuchet24",5,0,Color(0,0,0,255)) - end - cam.End3D2D() + cam.End3D2D() end - end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiSignalDebug") + end) + else + hook.Remove("PostDrawTranslucentRenderables",sig) + end end end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiSignalDebug") +hook.Remove("PostDrawTranslucentRenderables","SignalDebug") cvars.AddChangeCallback( "metrostroi_drawsignaldebug", enableDebug) enableDebug() - -Metrostroi.OptimisationPatch() \ No newline at end of file diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index e58d90f..5e97e61 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -3,6 +3,7 @@ AddCSLuaFile("shared.lua") include("shared.lua") util.AddNetworkString "metrostroi-signal" util.AddNetworkString "metrostroi-signal-state" +CreateConVar("metrostroi_ars_independent",0,{FCVAR_ARCHIVE},"Enable independent ARS codes") function ENT:SetSprite(index,active,model,scale,brightness,pos,color) if active and self.Sprites[index] then return end if not active and not self.Sprites[index] then return end @@ -77,110 +78,107 @@ function ENT:CloseRoute(route) end end -function MSignalSayHook(ply, comm, fromULX) - if ulx and not fromULX then return end - for i,sig in pairs(ents.FindByClass("gmod_track_signal")) do - local comm = comm - if comm:sub(1,8) == "!sactiv " then - comm = comm:sub(9,-1):upper() +function ENT:SayHook(ply, comm) + if comm:sub(1,8) == "!sactiv " then + comm = comm:sub(9,-1):upper() - comm = string.Explode(":",comm) - if sig.Routes then - for k,v in pairs(sig.Routes) do - if (v.RouteName and v.RouteName:upper() == comm[1] or comm[1] == "*") and v.Emer then - if sig.LastOpenedRoute and k ~= sig.LastOpenedRoute then sig:CloseRoute(sig.LastOpenedRoute) end - v.IsOpened = true - break - end + comm = string.Explode(":",comm) + if self.Routes then + for k,v in pairs(self.Routes) do + if (v.RouteName and v.RouteName:upper() == comm[1] or comm[1] == "*") and v.Emer then + if self.LastOpenedRoute and k ~= self.LastOpenedRoute then self:CloseRoute(self.LastOpenedRoute) end + v.IsOpened = true + break end end - elseif comm:sub(1,10) == "!sdeactiv " then - comm = comm:sub(11,-1):upper() + end + elseif comm:sub(1,10) == "!sdeactiv " then + comm = comm:sub(11,-1):upper() - comm = string.Explode(":",comm) - if sig.Routes then - for k,v in pairs(sig.Routes) do - if (v.RouteName and v.RouteName:upper() == comm[1] or comm[1] == "*") and v.Emer then - v.IsOpened = false - break - end + comm = string.Explode(":",comm) + if self.Routes then + for k,v in pairs(self.Routes) do + if (v.RouteName and v.RouteName:upper() == comm[1] or comm[1] == "*") and v.Emer then + v.IsOpened = false + break end end - elseif comm:sub(1,8) == "!sclose " then - comm = comm:sub(9,-1):upper() + end + elseif comm:sub(1,8) == "!sclose " then + comm = comm:sub(9,-1):upper() - comm = string.Explode(":",comm) - if comm[1] == sig.Name then - if sig.Routes[1] and sig.Routes[1].Manual then - sig:CloseRoute(1) + comm = string.Explode(":",comm) + if comm[1] == self.Name then + if self.Routes[1] and self.Routes[1].Manual then + self:CloseRoute(1) + else + if not self.Close then + self.Close = true + end + if self.InvationSignal then + self.InvationSignal = false + end + if (self.LastOpenedRoute and self.LastOpenedRoute == 1) or self.Routes[1].Repeater then + self:CloseRoute(1) else - if not sig.Close then - sig.Close = true - end - if sig.InvationSignal then - sig.InvationSignal = false - end - if (sig.LastOpenedRoute and sig.LastOpenedRoute == 1) or sig.Routes[1].Repeater then - sig:CloseRoute(1) - else - sig:OpenRoute(1) - end - end - elseif sig.Routes then - for k,v in pairs(sig.Routes) do - if v.RouteName and v.RouteName:upper() == comm[1] then - if sig.LastOpenedRoute and k ~= sig.LastOpenedRoute then sig:CloseRoute(sig.LastOpenedRoute) end - sig:CloseRoute(k) - end + self:OpenRoute(1) end end - elseif comm:sub(1,7) == "!sopen " then - comm = comm:sub(8,-1):upper() - comm = string.Explode(":",comm) - if comm[1] == sig.Name then - if comm[2] then - if sig.NextSignals[comm[2]] then - local Route - for k,v in pairs(sig.Routes) do - if v.NextSignal == comm[2] then Route = k break end - end - sig:OpenRoute(Route) - end - else - if sig.Routes[1] and sig.Routes[1].Manual then - sig:OpenRoute(1) - elseif sig.Close then - sig.Close = false - end - end - elseif sig.Routes then - for k,v in pairs(sig.Routes) do - if v.RouteName and v.RouteName:upper() == comm[1] then - if sig.LastOpenedRoute and k ~= sig.LastOpenedRoute then sig:CloseRoute(sig.LastOpenedRoute) end - sig:OpenRoute(k) - end + elseif self.Routes then + for k,v in pairs(self.Routes) do + if v.RouteName and v.RouteName:upper() == comm[1] then + if self.LastOpenedRoute and k ~= self.LastOpenedRoute then self:CloseRoute(self.LastOpenedRoute) end + self:CloseRoute(k) end end - elseif comm:sub(1,7) == "!sopps " then - comm = comm:sub(8,-1):upper() - comm = string.Explode(":",comm) - if comm[1] == sig.Name then - sig.InvationSignal = true + end + elseif comm:sub(1,7) == "!sopen " then + comm = comm:sub(8,-1):upper() + comm = string.Explode(":",comm) + if comm[1] == self.Name then + RunConsoleCommand("say",comm) + if comm[2] then + if self.NextSignals[comm[2]] then + local Route + for k,v in pairs(self.Routes) do + if v.NextSignal == comm[2] then Route = k break end + end + self:OpenRoute(Route) + end + else + if self.Routes[1] and self.Routes[1].Manual then + self:OpenRoute(1) + elseif self.Close then + self.Close = false + end end - elseif comm:sub(1,7) == "!sclps " then - comm = comm:sub(8,-1):upper() - comm = string.Explode(":",comm) - if comm[1] == sig.Name then - sig.InvationSignal = false + elseif self.Routes then + for k,v in pairs(self.Routes) do + if v.RouteName and v.RouteName:upper() == comm[1] then + if self.LastOpenedRoute and k ~= self.LastOpenedRoute then self:CloseRoute(self.LastOpenedRoute) end + self:OpenRoute(k) + end end end + elseif comm:sub(1,7) == "!sopps " then + comm = comm:sub(8,-1):upper() + comm = string.Explode(":",comm) + if comm[1] == self.Name then + self.InvationSignal = true + end + elseif comm:sub(1,7) == "!sclps " then + comm = comm:sub(8,-1):upper() + comm = string.Explode(":",comm) + if comm[1] == self.Name then + self.InvationSignal = false + end end end -hook.Add("PlayerSay","metrostroi-signal-say", function(ply, comm) MSignalSayHook(ply,comm) end) function ENT:Initialize() self:SetModel("models/metrostroi/signals/mus/ars_box.mdl") self.Sprites = {} self.Sig = "" + hook.Add("PlayerSay","metrostroi-signal-say"..self:EntIndex(), function(ply, comm) self:SayHook(ply,comm) end) self.FreeBS = 1 self.OldBSState = 1 self.OutputARS = 1 @@ -313,11 +311,12 @@ end function ENT:OnRemove() Metrostroi.UpdateSignalEntities() + hook.Remove("PlayerSay","metrostroi-signal-say"..self:EntIndex()) Metrostroi.PostSignalInitialize() end function ENT:GetARS(ARSID,Force1_5,Force2_6) - if self.OverrideTrackOccupied then return ARSID == 2 end + if self.OverrideTrackOccupied then return ARSID == 0 end if not self.ARSSpeedLimit then return false end local nxt = self.ARSNextSpeedLimit == 2 and 0 or self.ARSNextSpeedLimit ~= 1 and self.ARSNextSpeedLimit return self.ARSSpeedLimit == ARSID or ((self.TwoToSix and not Force1_5 or Force2_6) and nxt and nxt == ARSID and self.ARSSpeedLimit > nxt) @@ -330,7 +329,7 @@ end end--]] function ENT:GetRS() - if self.OverrideTrackOccupied or not self.TwoToSix or not self.ARSSpeedLimit then return false end + if not self.TwoToSix or not self.ARSSpeedLimit then return false end --if self.ARSSpeedLimit == 1 or self.ARSSpeedLimit == 2 then return false end if self.ARSSpeedLimit ~= 0 and self.ARSSpeedLimit== 2 then return false end return (self.ARSSpeedLimit > 4 or self.ARSSpeedLimit == 4 and self.Approve0) and (not self.ARSNextSpeedLimit or self.ARSNextSpeedLimit >= self.ARSSpeedLimit) @@ -468,8 +467,25 @@ function ENT:ARSLogic(tim) elseif self.Routes[self.Route].ARSCodes then local ARSCodes = self.Routes[self.Route].ARSCodes self.ARSNextSpeedLimit = IsValid(self.NextSignalLink) and self.NextSignalLink.ARSSpeedLimit or tonumber(ARSCodes[1]) - self.ARSSpeedLimit = tonumber(ARSCodes[math.min(#ARSCodes, self.FreeBS+1)]) or 0 - if self.InvationSignal and self.ARSSpeedLimit == 2 then self.ARSSpeedLimit = 1 end + --[[ if GetConVarNumber("metrostroi_ars_independent") > 0 then + self.ARSSpeedLimit = tonumber(ARSCodes[#ARSCodes] or "1") + elseif self.TwoToSix then + local curr = ARSCodes[math.min(#ARSCodes, self.FreeBS+1)] + local max = tonumber(ARSCodes[#ARSCodes])--FIXME + if curr == "1" or curr == "0" or curr == "2" or self.ARSNextSpeedLimit == nil or not max then + self.ARSSpeedLimit = IsValid(self.NextSignalLink) and tonumber(curr) or tonumber(ARSCodes[1] or "1") + else + if self.ARSNextSpeedLimit == 4 and max >= 6 then + self.ARSSpeedLimit = 6 + elseif self.ARSNextSpeedLimit == 0 or self.ARSNextSpeedLimit == 2 or self.ARSNextSpeedLimit == 1 and max >= 4 then + self.ARSSpeedLimit = 4 + else + self.ARSSpeedLimit = math.min(max,self.ARSNextSpeedLimit + 1) + end + end + else--]] + self.ARSSpeedLimit = tonumber(ARSCodes[math.min(#ARSCodes, self.FreeBS+1)]) or 0 + --end end end if self.NextSignalLink ~= false and (self.Occupied or not self.NextSignalLink or not self.NextSignalLink.FreeBS) then @@ -553,12 +569,12 @@ function ENT:Think() local number = "" if self.MU or self.ARSOnly or self.RouteNumberSetup and self.RouteNumberSetup ~= "" or self.RouteNumber and self.RouteNumber ~= "" then if self.NextSignalLink then - if not self.NextSignalLink.Red and not self.Red then + if not self.NextSignalLink.AutoEnabled and not self.AutoEnabled then self.RouteNumberOverrite = self.NextSignalLink.RouteNumberOverrite ~= "" and self.NextSignalLink.RouteNumberOverrite or self.NextSignalLink.RouteNumber else self.RouteNumberOverrite = self.RouteNumber end - if self.NextSignalLink.RouteNumberOverrite and (not self.Red or self.InvationSignal) and self.Routes[self.Route or 1].EnRou then + if self.NextSignalLink.RouteNumberOverrite and not self.AutoEnabled and (self.Routes[self.Route or 1].EnRou or self.InvationSignal) then number = number..self.NextSignalLink.RouteNumberOverrite end if self.NextSignalLink.RouteNumber and (self.Routes[self.Route or 1].EnRou and not self.AutoEnabled or self.InvationSignal) then @@ -720,5 +736,3 @@ net.Receive("metrostroi-signal", function(_, ply) if not IsValid(ent) or not ent.SendUpdate then return end ent:SendUpdate(ply) end) - -Metrostroi.OptimisationPatch() \ No newline at end of file diff --git a/lua/entities/gmod_track_signs/cl_init.lua b/lua/entities/gmod_track_signs/cl_init.lua index ccd49d9..1f8870b 100644 --- a/lua/entities/gmod_track_signs/cl_init.lua +++ b/lua/entities/gmod_track_signs/cl_init.lua @@ -1,34 +1,24 @@ include("shared.lua") -local debug = GetConVar("metrostroi_drawsignaldebug") -local function enableDebug() - if debug:GetBool() then - hook.Add("PostDrawTranslucentRenderables","MetrostroiSignDebug",function(bDrawingDepth,bDrawingSkybox) - for _,ent in pairs(ents.FindByClass("gmod_track_signs")) do - if bDrawingDepth and LocalPlayer():GetPos():Distance(sig:GetPos()) < 512 then - local pos = sig:LocalToWorld(Vector(0,0,0)) - local ang = sig:LocalToWorldAngles(Angle(0,90,90)) - cam.Start3D2D(pos, ang, 0.25) - surface.SetDrawColor(125, 125, 0, 255) - surface.DrawRect(-40, -20, 80, 20) - cam.End3D2D() - end - end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiSignDebug") - end -end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiSignDebug") -cvars.AddChangeCallback( "metrostroi_drawsignaldebug", enableDebug) -enableDebug() +hook.Add("PostDrawOpaqueRenderables", "metrostroi_sign_debug_draw", function(isDD) + if isDD then return end + if GetConVarNumber("metrostroi_drawsignaldebug") == 0 then return end + --print(2) + for _,self in pairs(ents.FindByClass("gmod_track_signs")) do + local pos = self:LocalToWorld(Vector(0,0,0)) + local ang = self:LocalToWorldAngles(Angle(0,90,90)) + cam.Start3D2D(pos , ang, 0.25) + surface.SetDrawColor(125, 125, 0, 255) + surface.DrawRect(-40, -20, 80, 20) + cam.End3D2D() + end +end ) function ENT:Initialize() --self.ModelProp = self:GetNWInt("Model") end function ENT:OnRemove() - print(12323) self:RemoveModels() --self.LightType = 0 --hook.Remove("PostDrawOpaqueRenderables") @@ -38,7 +28,7 @@ function ENT:RemoveModels() self.Model = nil end function ENT:Think() - self:SetNextClientThink(CurTime()+5) + self:NextThink(CurTime()+5) --if self.SendReq == nil or (self.SendReq and CurTime() - self.SendReq <= 0) then return true elseif self.SendReq then self.SendReq = false end if self:IsDormant() or Metrostroi and Metrostroi.ReloadClientside then if IsValid(self.Model) then @@ -61,10 +51,7 @@ function ENT:Think() end self:RemoveModels() end - if not self.ModelProp then - self:SetNextClientThink(CurTime()+1) - return true - end + if not self.ModelProp then return true end if not IsValid(self.Model) then --ents.CreateClientProp("models/metrostroi/81-717/reverser.mdl") --hook.Add("MetrostroiBigLag",self.Model,function(ent) @@ -88,16 +75,7 @@ function ENT:Think() local RAND = math.random(-10,10) local pos = self.ModelProp.pos + self.Offset local ang = self.ModelProp.angles - if not self.ModelProp.noauto then - pos = pos+Vector(0,0,RAND/5) - if self.ModelProp.axis == 1 then - ang = ang+Angle(RAND,0,0) - elseif self.ModelProp.axis == 2 then - ang = ang+Angle(0,RAND,0) - else - ang = ang+Angle(0,0,RAND) - end - end + if not self.ModelProp.noauto then pos = pos+Vector(0,0,RAND/5); ang = ang+Angle(0,0,RAND) end if self.Left then pos = pos*Vector(1,-1,1) end if self.Left and self.ModelProp.rotate then ang = ang-Angle(0,180,0) end self.Model:SetParent(self) diff --git a/lua/entities/gmod_track_signs/shared.lua b/lua/entities/gmod_track_signs/shared.lua index 8b432bb..e541ef4 100644 --- a/lua/entities/gmod_track_signs/shared.lua +++ b/lua/entities/gmod_track_signs/shared.lua @@ -273,239 +273,4 @@ ENT.SignModels[45] = { pos = Vector(0,100,50), angles = Angle(0,90,0), noauto = true, -} - -ENT.SignModels[46] = { - model = "models/metrostroi/signs/forward_x2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[47] = { - model = "models/metrostroi/signs/tedoff_kn.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[48] = { - model = "models/metrostroi/signs/tedoff_p1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[49] = { - model = "models/metrostroi/signs/tedoff_p2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[50] = { - model = "models/metrostroi/signs/tedoff_pn.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[51] = { - model = "models/metrostroi/signs/tedoff_t1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[52] = { - model = "models/metrostroi/signs/tedoff_t2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[53] = { - model = "models/metrostroi/signs/tedoff_t3.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[54] = { - model = "models/metrostroi/signs/tedoff_t4.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[55] = { - model = "models/metrostroi/signs/tedon_kn.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[56] = { - model = "models/metrostroi/signs/tedon_p1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[57] = { - model = "models/metrostroi/signs/tedon_p2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[58] = { - model = "models/metrostroi/signs/tedon_pn.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[59] = { - model = "models/metrostroi/signs/tedon_t1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[60] = { - model = "models/metrostroi/signs/tedon_t2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[61] = { - model = "models/metrostroi/signs/tedon_t3.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[62] = { - model = "models/metrostroi/signs/tedon_t4.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[63] = { - model = "models/metrostroi/signs/tedoff_722_1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[64] = { - model = "models/metrostroi/signs/tedoff_722_2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[65] = { - model = "models/metrostroi/signs/tedoff_722_3.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[66] = { - model = "models/metrostroi/signs/tedoff_722_4.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[67] = { - model = "models/metrostroi/signs/tedoff_722_5.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[68] = { - model = "models/metrostroi/signs/tedoff_722_6.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[69] = { - model = "models/metrostroi/signs/tedoff_722_7.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[70] = { - model = "models/metrostroi/signs/tedoff_722_8.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[71] = { - model = "models/metrostroi/signs/tedoff_722_9.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[72] = { - model = "models/metrostroi/signs/tedoff_722_10.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[73] = { - model = "models/metrostroi/signs/tedoff_outside.mdl", - pos = Vector(0,110,100), - angles = Angle(0,-90,0), - noauto = true, -} -ENT.SignModels[74] = { - model = "models/metrostroi/signs/tedon_722_1.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[75] = { - model = "models/metrostroi/signs/tedon_722_2.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[76] = { - model = "models/metrostroi/signs/tedon_722_3.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[77] = { - model = "models/metrostroi/signs/tedon_722_4.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[78] = { - model = "models/metrostroi/signs/tedon_722_5.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[79] = { - model = "models/metrostroi/signs/tedon_722_6.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[80] = { - model = "models/metrostroi/signs/tedon_722_7.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[81] = { - model = "models/metrostroi/signs/tedon_722_8.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[82] = { - model = "models/metrostroi/signs/tedon_722_9.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[83] = { - model = "models/metrostroi/signs/tedon_722_10.mdl", - pos = Vector(0,115,140), - angles = Angle(0,-90,0), - axis=1, -} -ENT.SignModels[84] = { - model = "models/metrostroi/signs/tedon_outside.mdl", - pos = Vector(0,110,100), - angles = Angle(0,-90,0), - noauto = true, } \ No newline at end of file diff --git a/lua/entities/gmod_track_switch/cl_init.lua b/lua/entities/gmod_track_switch/cl_init.lua index 8a6c5bf..0a1c208 100644 --- a/lua/entities/gmod_track_switch/cl_init.lua +++ b/lua/entities/gmod_track_switch/cl_init.lua @@ -1,26 +1,20 @@ include("shared.lua") -local debug = GetConVar("metrostroi_drawsignaldebug") -local function enableDebug() - if debug:GetBool() then - hook.Add("PostDrawTranslucentRenderables","MetrostroiSwitchDebug",function(bDrawingDepth,bDrawingSkybox) - for _,ent in pairs(ents.FindByClass("gmod_track_switch")) do - if bDrawingDepth and LocalPlayer():GetPos():Distance(sig:GetPos()) < 512 then - local pos = ent:LocalToWorld(Vector(30,0,75)) - local ang = ent:LocalToWorldAngles(Angle(0,180,90)) - cam.Start3D2D(pos, ang, 0.25) - surface.SetDrawColor(125, 125, 0, 255) - surface.DrawRect(0, 0, 160, 24) +function ENT:Initialize() + hook.Add("PostDrawOpaqueRenderables", "metrostroi_switch_draw_"..self:EntIndex(), function() + --print(1) + if GetConVarNumber("metrostroi_drawsignaldebug") ~= 1 then return end + --print(2) + local pos = self:LocalToWorld(Vector(30,0,75)) + local ang = self:LocalToWorldAngles(Angle(0,180,90)) + cam.Start3D2D(pos, ang, 0.25) + surface.SetDrawColor(125, 125, 0, 255) + surface.DrawRect(0, 0, 160, 24) - draw.DrawText("SwitchID:"..ent:GetNW2String("ID"),"Trebuchet24",5,0,Color(0,0,0,255)) - cam.End3D2D() - end - end - end) - else - hook.Remove("PostDrawTranslucentRenderables","MetrostroiSwitchDebug") - end + draw.DrawText("SwitchID:"..self:GetNW2String("ID"),"Trebuchet24",5,0,Color(0,0,0,255)) + cam.End3D2D() + end ) end -hook.Remove("PostDrawTranslucentRenderables","MetrostroiSwitchDebug") -cvars.AddChangeCallback( "metrostroi_drawsignaldebug", enableDebug) -enableDebug() \ No newline at end of file +function ENT:OnRemove() + hook.Remove("PostDrawOpaqueRenderables", "metrostroi_switch_draw_"..self:EntIndex()) +end \ No newline at end of file diff --git a/lua/entities/gmod_train_autodrive_coil/cl_init.lua b/lua/entities/gmod_train_autodrive_coil/cl_init.lua index d536e6b..4ea4ef6 100644 --- a/lua/entities/gmod_train_autodrive_coil/cl_init.lua +++ b/lua/entities/gmod_train_autodrive_coil/cl_init.lua @@ -8,7 +8,6 @@ function ENT:Initialize() break end end - self:DrawShadow(false) end function ENT:Draw() if not self.CanDraw then return end diff --git a/lua/entities/gmod_train_bogey/cl_init.lua b/lua/entities/gmod_train_bogey/cl_init.lua index b65f80d..7405ec2 100644 --- a/lua/entities/gmod_train_bogey/cl_init.lua +++ b/lua/entities/gmod_train_bogey/cl_init.lua @@ -1,103 +1,64 @@ include("shared.lua") --- Bogey-related sounds -ENT.SoundNames = {} -ENT.SoundNames["ted1_703"] = "subway_trains/bogey/engines/703/speed_8.wav" -ENT.SoundNames["ted2_703"] = "subway_trains/bogey/engines/703/speed_16.wav" -ENT.SoundNames["ted3_703"] = "subway_trains/bogey/engines/703/speed_24.wav" -ENT.SoundNames["ted4_703"] = "subway_trains/bogey/engines/703/speed_32.wav" -ENT.SoundNames["ted5_703"] = "subway_trains/bogey/engines/703/speed_40.wav" -ENT.SoundNames["ted6_703"] = "subway_trains/bogey/engines/703/speed_48.wav" -ENT.SoundNames["ted7_703"] = "subway_trains/bogey/engines/703/speed_56.wav" -ENT.SoundNames["ted8_703"] = "subway_trains/bogey/engines/703/speed_64.wav" -ENT.SoundNames["ted9_703"] = "subway_trains/bogey/engines/703/speed_72.wav" -ENT.SoundNames["ted10_703"] = "subway_trains/bogey/engines/703/speed_80.wav" -ENT.SoundNames["ted11_703"] = "subway_trains/bogey/engines/703/speed_88.wav" ---ENT.SoundNames["tedm_703"] = "subway_trains/bogey/engines/703/engines_medium.wav" - -ENT.SoundNames["ted1_717"] = "subway_trains/bogey/engines/717/engines_8.wav" -ENT.SoundNames["ted2_717"] = "subway_trains/bogey/engines/717/engines_16.wav" -ENT.SoundNames["ted3_717"] = "subway_trains/bogey/engines/717/engines_24.wav" -ENT.SoundNames["ted4_717"] = "subway_trains/bogey/engines/717/engines_32.wav" -ENT.SoundNames["ted5_717"] = "subway_trains/bogey/engines/717/engines_40.wav" -ENT.SoundNames["ted6_717"] = "subway_trains/bogey/engines/717/engines_48.wav" -ENT.SoundNames["ted7_717"] = "subway_trains/bogey/engines/717/engines_56.wav" -ENT.SoundNames["ted8_717"] = "subway_trains/bogey/engines/717/engines_64.wav" -ENT.SoundNames["ted9_717"] = "subway_trains/bogey/engines/717/engines_72.wav" -ENT.SoundNames["ted10_717"] = "subway_trains/bogey/engines/717/engines_80.wav" - -ENT.SoundNames["ted11_720"] = "subway_trains/bogey/engines/720/speed_88.wav" -ENT.SoundNames["ted1_720"] = "subway_trains/bogey/engines/720/speed_8.wav" -ENT.SoundNames["ted2_720"] = "subway_trains/bogey/engines/720/speed_16.wav" -ENT.SoundNames["ted3_720"] = "subway_trains/bogey/engines/720/speed_24.wav" -ENT.SoundNames["ted4_720"] = "subway_trains/bogey/engines/720/speed_32.wav" -ENT.SoundNames["ted5_720"] = "subway_trains/bogey/engines/720/speed_40.wav" -ENT.SoundNames["ted6_720"] = "subway_trains/bogey/engines/720/speed_48.wav" -ENT.SoundNames["ted7_720"] = "subway_trains/bogey/engines/720/speed_56.wav" -ENT.SoundNames["ted8_720"] = "subway_trains/bogey/engines/720/speed_64.wav" -ENT.SoundNames["ted9_720"] = "subway_trains/bogey/engines/720/speed_72.wav" -ENT.SoundNames["ted10_720"] = "subway_trains/bogey/engines/720/speed_80.wav" ---*0.975 ---*1.025 -ENT.SoundNames["flangea"] = "subway_trains/bogey/skrip1.wav" -ENT.SoundNames["flangeb"] = "subway_trains/bogey/skrip2.wav" -ENT.SoundNames["flange1"] = "subway_trains/bogey/flange_9.wav" -ENT.SoundNames["flange2"] = "subway_trains/bogey/flange_10.wav" -ENT.SoundNames["brakea_loop1"] = "subway_trains/bogey/braking_async1.wav" -ENT.SoundNames["brakea_loop2"] = "subway_trains/bogey/braking_async2.wav" -ENT.SoundNames["brake_loop1"] = "subway_trains/bogey/brake_rattle3.wav" -ENT.SoundNames["brake_loop2"] = "subway_trains/bogey/brake_rattle4.wav" -ENT.SoundNames["brake_loop3"] = "subway_trains/bogey/brake_rattle5.wav" -ENT.SoundNames["brake_loop4"] = "subway_trains/bogey/brake_rattle6.wav" -ENT.SoundNames["brake_loopb"] = "subway_trains/common/junk/junk_background_braking1.wav" -ENT.SoundNames["brake2_loop1"] = "subway_trains/bogey/brake_rattle2.wav" -ENT.SoundNames["brake2_loop2"] = "subway_trains/bogey/brake_rattle_h.wav" -ENT.SoundNames["brake_squeal1"] = "subway_trains/bogey/brake_squeal1.wav" -ENT.SoundNames["brake_squeal2"] = "subway_trains/bogey/brake_squeal2.wav" - -ENT.EngineSNDConfig = { - { - {"ted1_703" ,08,00,16,1}, - {"ted2_703" ,16,08-4,24,1}, - {"ted3_703" ,24,16-4,32,1}, - {"ted4_703" ,32,24-4,40,1}, - {"ted5_703" ,40,32-4,48,1}, - {"ted6_703" ,48,40-4,56,1}, - {"ted7_703" ,56,48-4,64,1}, - {"ted8_703" ,64,56-4,72,1}, - {"ted9_703" ,72,64-4,80,1}, - {"ted10_703",80,72-4,88,1}, - {"ted11_703",88,80-4 ,1}, - }, - { - {"ted1_717" ,08,00,16,1}, - {"ted2_717" ,16,08-4,24,1}, - {"ted3_717" ,24,16-4,32,1}, - {"ted4_717" ,32,24-4,40,1}, - {"ted5_717" ,40,32-4,48,1}, - {"ted6_717" ,48,40-4,56,1}, - {"ted7_717" ,56,48-4,64,1}, - {"ted8_717" ,64,56-4,72,1}, - {"ted9_717" ,72,64-4,80,1}, - {"ted10_717",80,72-4 ,1}, - }, - { - {"ted1_720" ,08,00,16,1*0.4}, - {"ted2_720" ,16,08-4,24,1*0.43}, - {"ted3_720" ,24,16-4,32,1*0.46}, - {"ted4_720" ,32,24-4,40,1*0.49}, - {"ted5_720" ,40,32-4,48,1*0.52}, - {"ted6_720" ,48,40-4,56,1*0.55}, - {"ted7_720" ,56,48-4,64,1*0.58}, - {"ted8_720" ,64,56-4,72,1*0.61}, - {"ted9_720" ,72,64-4,80,1*0.64}, - {"ted10_720",80,72-4,88,1*0.67}, - {"ted11_720",88,80-4 ,1*0.7}, - }, -} - -------------------------------------------------------------------------------- function ENT:ReinitializeSounds() + -- Bogey-related sounds + self.SoundNames = {} + self.EngineSNDConfig = {} + + self.SoundNames["ted1_703"] = "subway_trains/bogey/engines/703/speed_8.wav" + self.SoundNames["ted2_703"] = "subway_trains/bogey/engines/703/speed_16.wav" + self.SoundNames["ted3_703"] = "subway_trains/bogey/engines/703/speed_24.wav" + self.SoundNames["ted4_703"] = "subway_trains/bogey/engines/703/speed_32.wav" + self.SoundNames["ted5_703"] = "subway_trains/bogey/engines/703/speed_40.wav" + self.SoundNames["ted6_703"] = "subway_trains/bogey/engines/703/speed_48.wav" + self.SoundNames["ted7_703"] = "subway_trains/bogey/engines/703/speed_56.wav" + self.SoundNames["ted8_703"] = "subway_trains/bogey/engines/703/speed_64.wav" + self.SoundNames["ted9_703"] = "subway_trains/bogey/engines/703/speed_72.wav" + self.SoundNames["ted10_703"] = "subway_trains/bogey/engines/703/speed_80.wav" + self.SoundNames["ted11_703"] = "subway_trains/bogey/engines/703/speed_88.wav" + --self.SoundNames["tedm_703"] = "subway_trains/bogey/engines/703/engines_medium.wav" + + self.SoundNames["ted1_717"] = "subway_trains/bogey/engines/717/engines_8.wav" + self.SoundNames["ted2_717"] = "subway_trains/bogey/engines/717/engines_16.wav" + self.SoundNames["ted3_717"] = "subway_trains/bogey/engines/717/engines_24.wav" + self.SoundNames["ted4_717"] = "subway_trains/bogey/engines/717/engines_32.wav" + self.SoundNames["ted5_717"] = "subway_trains/bogey/engines/717/engines_40.wav" + self.SoundNames["ted6_717"] = "subway_trains/bogey/engines/717/engines_48.wav" + self.SoundNames["ted7_717"] = "subway_trains/bogey/engines/717/engines_56.wav" + self.SoundNames["ted8_717"] = "subway_trains/bogey/engines/717/engines_64.wav" + self.SoundNames["ted9_717"] = "subway_trains/bogey/engines/717/engines_72.wav" + self.SoundNames["ted10_717"] = "subway_trains/bogey/engines/717/engines_80.wav" + + self.SoundNames["ted11_720"] = "subway_trains/bogey/engines/720/speed_88.wav" + self.SoundNames["ted1_720"] = "subway_trains/bogey/engines/720/speed_8.wav" + self.SoundNames["ted2_720"] = "subway_trains/bogey/engines/720/speed_16.wav" + self.SoundNames["ted3_720"] = "subway_trains/bogey/engines/720/speed_24.wav" + self.SoundNames["ted4_720"] = "subway_trains/bogey/engines/720/speed_32.wav" + self.SoundNames["ted5_720"] = "subway_trains/bogey/engines/720/speed_40.wav" + self.SoundNames["ted6_720"] = "subway_trains/bogey/engines/720/speed_48.wav" + self.SoundNames["ted7_720"] = "subway_trains/bogey/engines/720/speed_56.wav" + self.SoundNames["ted8_720"] = "subway_trains/bogey/engines/720/speed_64.wav" + self.SoundNames["ted9_720"] = "subway_trains/bogey/engines/720/speed_72.wav" + self.SoundNames["ted10_720"] = "subway_trains/bogey/engines/720/speed_80.wav" + --*0.975 + --*1.025 + self.SoundNames["flangea"] = "subway_trains/bogey/skrip1.wav" + self.SoundNames["flangeb"] = "subway_trains/bogey/skrip2.wav" + self.SoundNames["flange1"] = "subway_trains/bogey/flange_9.wav" + self.SoundNames["flange2"] = "subway_trains/bogey/flange_10.wav" + self.SoundNames["brakea_loop1"] = "subway_trains/bogey/braking_async1.wav" + self.SoundNames["brakea_loop2"] = "subway_trains/bogey/braking_async2.wav" + self.SoundNames["brake_loop1"] = "subway_trains/bogey/brake_rattle3.wav" + self.SoundNames["brake_loop2"] = "subway_trains/bogey/brake_rattle4.wav" + self.SoundNames["brake_loop3"] = "subway_trains/bogey/brake_rattle5.wav" + self.SoundNames["brake_loop4"] = "subway_trains/bogey/brake_rattle6.wav" + self.SoundNames["brake_loopb"] = "subway_trains/common/junk/junk_background_braking1.wav" + self.SoundNames["brake2_loop1"] = "subway_trains/bogey/brake_rattle2.wav" + self.SoundNames["brake2_loop2"] = "subway_trains/bogey/brake_rattle_h.wav" + self.SoundNames["brake_squeal1"] = "subway_trains/bogey/brake_squeal1.wav" + self.SoundNames["brake_squeal2"] = "subway_trains/bogey/brake_squeal2.wav" + -- Remove old sounds if self.Sounds then for k,v in pairs(self.Sounds) do @@ -107,14 +68,20 @@ function ENT:ReinitializeSounds() -- Create sounds self.Sounds = {} + self.Playing = {} for k,v in pairs(self.SoundNames) do - --[[local e = self + --if not file.Exists(v, "MOD") then +-- self.SoundNames[k] = nil + --end + util.PrecacheSound(v) + local e = self if (k == "brake3a") and IsValid(self:GetNW2Entity("TrainWheels")) then e = self:GetNW2Entity("TrainWheels") - end]] - self.Sounds[k] = CreateSound(self, Sound(v)) + end + self.Sounds[k] = CreateSound(e, Sound(v)) end + self.Async = nil self.MotorSoundType = nil end function ENT:SetSoundState(sound,volume,pitch,name,level ) @@ -151,9 +118,7 @@ end function ENT:Initialize() self.MotorPowerSound = 0 - self.SmoothAngleDelta = 0 - self.CurrentBrakeSqueal = 0 - self:ReinitializeSounds() +-- self:ReinitializeSounds() end function ENT:OnRemove() @@ -161,45 +126,79 @@ function ENT:OnRemove() for k,v in pairs(self.Sounds) do v:Stop() end - self.Sounds = {} + self.Sounds = nil end end -------------------------------------------------------------------------------- function ENT:Think() + if not self.Sounds then + self:ReinitializeSounds() + end self.PrevTime = self.PrevTime or RealTime()-0.33 self.DeltaTime = (RealTime() - self.PrevTime) self.PrevTime = RealTime() -- Get interesting parameters local train = self:GetNW2Entity("TrainEntity") + --local rollingi = math.min(1,train.TunnelCoeff+math.Clamp((train.StreetCoeff-0.6)/0.3,0,1)*0.8) + --print(self:GetPos()) + --local rollings = train.StreetCoeff local soundsmul = 1 local streetC,tunnelC = 0,1 if IsValid(train) then streetC,tunnelC = train.StreetCoeff or 0,train.TunnelCoeff or 1 soundsmul = math.Clamp(tunnelC^1.5+(streetC^0.5)*0.2,0,1) end - + local motorPower = self:GetMotorPower() local speed = self:GetSpeed() - - -- Engine sound - local motorPower = self:GetMotorPower()*(1+math.max(0,(speed-55)/35)*0.4) - if self.MotorSoundType ~= self:GetNWInt("MotorSoundType",1) or self.DisableEngines ~= self:GetNWBool("DisableEngines") then - if self.MotorSoundType then - for _,snd in ipairs(self.EngineSNDConfig[self.MotorSoundType+1]) do - self:SetSoundState(snd[1],0,0) - end - end - + if self.MotorSoundType ~= self:GetNWInt("MotorSoundType",1)then self.MotorSoundType = self:GetNWInt("MotorSoundType",1) - self.DisableEngines = self:GetNWBool("DisableEngines") - self.MotorSoundArr = self.EngineSNDConfig [self.MotorSoundType+1] + for k,v in pairs(self.EngineSNDConfig) do self:SetSoundState(v[1],0,0) end + self.EngineSNDConfig = {} + if self.MotorSoundType==2 then + table.insert(self.EngineSNDConfig,{"ted1_720" ,08,00,16,1*0.4}) + table.insert(self.EngineSNDConfig,{"ted2_720" ,16,08-4,24,1*0.43}) + table.insert(self.EngineSNDConfig,{"ted3_720" ,24,16-4,32,1*0.46}) + table.insert(self.EngineSNDConfig,{"ted4_720" ,32,24-4,40,1*0.49}) + table.insert(self.EngineSNDConfig,{"ted5_720" ,40,32-4,48,1*0.52}) + table.insert(self.EngineSNDConfig,{"ted6_720" ,48,40-4,56,1*0.55}) + table.insert(self.EngineSNDConfig,{"ted7_720" ,56,48-4,64,1*0.58}) + table.insert(self.EngineSNDConfig,{"ted8_720" ,64,56-4,72,1*0.61}) + table.insert(self.EngineSNDConfig,{"ted9_720" ,72,64-4,80,1*0.64}) + table.insert(self.EngineSNDConfig,{"ted10_720",80,72-4,88,1*0.67}) + table.insert(self.EngineSNDConfig,{"ted11_720",88,80-4 ,1*0.7}) + elseif self.MotorSoundType==0 then + table.insert(self.EngineSNDConfig,{"ted1_703" ,08,00,16,1}) + table.insert(self.EngineSNDConfig,{"ted2_703" ,16,08-4,24,1}) + table.insert(self.EngineSNDConfig,{"ted3_703" ,24,16-4,32,1}) + table.insert(self.EngineSNDConfig,{"ted4_703" ,32,24-4,40,1}) + table.insert(self.EngineSNDConfig,{"ted5_703" ,40,32-4,48,1}) + table.insert(self.EngineSNDConfig,{"ted6_703" ,48,40-4,56,1}) + table.insert(self.EngineSNDConfig,{"ted7_703" ,56,48-4,64,1}) + table.insert(self.EngineSNDConfig,{"ted8_703" ,64,56-4,72,1}) + table.insert(self.EngineSNDConfig,{"ted9_703" ,72,64-4,80,1}) + table.insert(self.EngineSNDConfig,{"ted10_703",80,72-4,88,1}) + table.insert(self.EngineSNDConfig,{"ted11_703",88,80-4 ,1}) + else + table.insert(self.EngineSNDConfig,{"ted1_717" ,08,00,16,1}) + table.insert(self.EngineSNDConfig,{"ted2_717" ,16,08-4,24,1}) + table.insert(self.EngineSNDConfig,{"ted3_717" ,24,16-4,32,1}) + table.insert(self.EngineSNDConfig,{"ted4_717" ,32,24-4,40,1}) + table.insert(self.EngineSNDConfig,{"ted5_717" ,40,32-4,48,1}) + table.insert(self.EngineSNDConfig,{"ted6_717" ,48,40-4,56,1}) + table.insert(self.EngineSNDConfig,{"ted7_717" ,56,48-4,64,1}) + table.insert(self.EngineSNDConfig,{"ted8_717" ,64,56-4,72,1}) + table.insert(self.EngineSNDConfig,{"ted9_717" ,72,64-4,80,1}) + table.insert(self.EngineSNDConfig,{"ted10_717",80,72-4 ,1}) + end end - - if not self.DisableEngines and self.MotorSoundArr then - self.MotorPowerSound = math.Clamp(self.MotorPowerSound + (motorPower - self.MotorPowerSound)*self.DeltaTime*3,-1.5,1.5) + self.Async = self:GetNWBool("Async") + -- Engine sound + if not self:GetNWBool("DisableEngines") then + self.MotorPowerSound = math.Clamp(self.MotorPowerSound + (motorPower - self.MotorPowerSound)*self.DeltaTime*3,-1,1) local t = RealTime()*2.5 - local modulation = math.max(0,(speed-60)/30)*0.7+(0.2 + 1.0*math.max(0,0.2+math.sin(t)*math.sin(t*3.12)*math.sin(t*0.24)*math.sin(t*4.0)))*math.Clamp((speed-15)/60,0,1) + local modulation = (0.2 + 1.0*math.max(0,0.2+math.sin(t)*math.sin(t*3.12)*math.sin(t*0.24)*math.sin(t*4.0)))*math.Clamp(speed/4,0,1) local mod2 = 1.0-math.min(1.0,(math.abs(self.MotorPowerSound)/0.1)) if (speed > -1.0) and (math.abs(self.MotorPowerSound)+modulation) >= 0.0 then --local startVolRamp = 0.2 + 0.8*math.max(0.0,math.min(1.0,(speed - 1.0)*0.5)) @@ -209,6 +208,7 @@ function ENT:Think() else powerVolRamp = 0.3*modulation*mod2 + 2*math.abs(self.MotorPowerSound)--2.0*(math.abs(motorPower)^2) end + --math.max(0.3,math.min(1.0,math.abs(motorPower))) --local k,x = 1.0,math.max(0,math.min(1.1,(speed-1.0)/80)) --local motorPchRamp = (k*x^3 - k*x^2 + x) @@ -216,10 +216,11 @@ function ENT:Think() local volumemul = math.min(1,(speed/4)^3) local motorsnd = math.min(1.0,math.max(0.0,1.25*(math.abs(self.MotorPowerSound)))) local motorvol = (soundsmul^0.3)*math.Clamp(motorsnd + powerVolRamp,0,1)*volumemul + --local motorsnd = math.min(1.0,math.max(0.0,1.25*(math.abs(self.MotorPowerSound)-0.15) )) - for i,snd in ipairs(self.MotorSoundArr) do - local prev = self.MotorSoundArr[i-1] - local next = self.MotorSoundArr[i+1] + for i,snd in ipairs(self.EngineSNDConfig or {}) do + local prev = self.EngineSNDConfig[i-1] + local next = self.EngineSNDConfig[i+1] local volume = 1 if prev and speed <= prev[4] then volume = math.max(0,1-(prev[4]-speed)/(prev[4]-snd[3])) @@ -227,26 +228,34 @@ function ENT:Think() volume = math.max(0,(snd[4]-speed)/(snd[4]-next[3])) end local pitch = math.max(0,speed/snd[2])+0.06*streetC - self:SetSoundState(snd[1],motorvol*volume*(snd[5] or 1),math.Clamp(pitch,0,2)) + if self.Async then + self:SetSoundState(snd[1].."1",motorvol*volume*(snd[5] or 1),math.Clamp(pitch,0,2),snd[1],false) + --self:SetSoundState(snd[1].."2",0,0,true) + else + self:SetSoundState(snd[1].."1",motorvol*volume*(snd[5] or 1),math.Clamp(pitch,0,2),snd[1],false) + --self:SetSoundState(snd[1].."2",0,0,true) + --self:SetSoundState(snd[1].."1",((motorsnd + powerVolRamp)*volume)*(snd.vol or 1)*volumemul,pitch*0.975,snd[1],false) + --self:SetSoundState(snd[1].."2",((motorsnd + powerVolRamp)*volume)*(snd.vol or 1)*volumemul,pitch*1.025,snd[1],true) + end end + --[[ if self.MotorSoundType==0 then + self:SetSoundState("tedm_703",math.min(1,(soundsmul^0.3)*motorsnd*2)*math.Clamp((speed-20)/10,0,1)*(1-math.Clamp((speed-38)/20,0,1))*0.18,math.max(0,speed/35.4)+0.06*streetC) + else + self:SetSoundState("tedm_703",0,0) + end--]] + else + for k,v in pairs(self.EngineSNDConfig) do + self:SetSoundState(v[1].."1",0,0,v[1],false) + end + self:SetSoundState(v[1].."2",0,0,v[1],true) end end - - --Stop old sounds when we changind brake squeal type - if self.Async ~= self:GetNWBool("Async") then - self:SetSoundState("brake_loop1",0,0) - self:SetSoundState("brake_loop2",0,0) - self:SetSoundState("brake_loop3",0,0) - self:SetSoundState("brake_loop4",0,0) - self:SetSoundState("brake_loopb",0,0) - self:SetSoundState("brake2_loop1",0,0) - self:SetSoundState("brake2_loop2",0,0) - self:SetSoundState("brakea_loop1",0,0) - self:SetSoundState("brakea_loop2",0,0) - - self.Async = self:GetNWBool("Async") - end - + -- Brake squeal sound + --if speed > 2 then + --brakeRamp = 1 - math.min(1.0,math.max(0.0,(speed-3)/10.0)) + --end + if squealSound == 0 then squealSound = 1 end + if squealSound == 3 then squealSound = 2 end if self.Async then local brakeSqueal = self:GetNW2Float("BrakeSqueal",0) if (brakeSqueal) > 0.0 then @@ -255,21 +264,52 @@ function ENT:Think() local squealPitch = nominalSqueal+secondSqueal*0.05 local squealVolume = math.Clamp(speed/2,0,1) - local volume = brakeSqueal*squealVolume* math.Clamp(1-(speed-2)/3,0,1) + local volume = brakeSqueal*squealVolume self:SetSoundState("brakea_loop1",volume*(1-secondSqueal*0.5)*0.4,squealPitch,false,75) self:SetSoundState("brakea_loop2",volume*secondSqueal*0.4,squealPitch,false,75) - elseif self.CurrentBrakeSqueal > 0 then + else self:SetSoundState("brakea_loop1",0,0) self:SetSoundState("brakea_loop2",0,0) end - self.CurrentBrakeSqueal = brakeSqueal + self:SetSoundState("brake_loop1",0,0) + self:SetSoundState("brake_loop2",0,0) + self:SetSoundState("brake_loop3",0,0) + self:SetSoundState("brake_loop4",0,0) + self:SetSoundState("brake_loopb",0,0) + self:SetSoundState("brake2_loop1",0,0) + self:SetSoundState("brake2_loop2",0,0) else - local brakeSqueal1 = math.max(0.0,math.min(2,self:GetNW2Float("BrakeSqueal1"))) - if not self.SquealVolume or brakeSqueal1 <= 0 and self.CurrentBrakeSqueal > 0 or self.SquealType ~= self:GetNW2Int("SquealType",1) then - self.SquealType = self:GetNW2Int("SquealType",1) - self.SquealSound1 = "brake_loop"..self.SquealType - self.SquealVolume = self.SquealType == 1 and 0.2 or 1 - + local squealSound = self:GetNW2Int("SquealSound",0) + local brakeSqueal1 = math.max(0.0,math.min(2,self:GetNW2Float("BrakeSqueal1")))--FIXME math.max(0.0,math.min(1,self:GetNW2Float("BrakeSqueal1"))) + --local brakeSqueal2 = 0--FIXME local brakeSqueal2 = math.max(0.0,math.min(1,self:GetNW2Float("BrakeSqueal2"))) + --local brakeSqueal2 = math.max(0.0,math.min(1,self:GetNW2Float("BrakeSqueal2"))) + --local brakeRamp = math.min(1.0,math.max(0.0,speed/2.0)) + local brakeRamp1 = math.min(1.0,math.max(0.0,(speed-10)/50.0))^1.5 + local brakeRamp2 = math.min(1.0,math.max(0.0,speed/3.0)) + if true or (brakeSqueal1) > 0.0 then + local ramp = 0.3+math.Clamp((40-speed)/40,0,1)*0.7 + local typ = self:GetNW2Int("SquealType",1) + self:SetSoundState("brake_loop1",typ==1 and soundsmul*brakeSqueal1*ramp*0.2 or 0,1+0.05*(1.0-brakeRamp2)) + self:SetSoundState("brake_loop2",typ==2 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) + self:SetSoundState("brake_loop3",typ==3 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) + self:SetSoundState("brake_loop4",typ==4 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) + self:SetSoundState("brake_loopb",typ<=4 and 0*soundsmul*brakeSqueal1*ramp*0.4 or 0,1+0.05*(1.0-brakeRamp2)) + --spb only + local loop_h = soundsmul*brakeSqueal1*ramp*0.5 + if typ>=5 and loop_h > 0.1 and speed > 1.5 then + if not self.HighLoop then + self.HighLoop = math.random()>0.5 and "brake_squeal2" or "brake_squeal1" + end + self:SetSoundState(self.HighLoop,loop_h*1.5,1) + elseif loop_h<0.02 and self.HighLoop then + self:SetSoundState(self.HighLoop,0,0) + self.HighLoop = false + end + self.StartLoopStrength = loop_h + self:SetSoundState("brake2_loop1",(typ==5 or typ==6) and math.Clamp(loop_h*0.5,0,0.5) or 0,1+0.06*(1.0-brakeRamp2)) + self:SetSoundState("brake2_loop2",typ>=6 and loop_h*0.3 or 0,1+0.06*(1.0-brakeRamp2)) + --self:SetSoundState("brake_loop2",brakeSqueal*brakeRamp2*0.2,1+0.06*(1.0-brakeRamp2)) + else self:SetSoundState("brake_loop1",0,0) self:SetSoundState("brake_loop2",0,0) self:SetSoundState("brake_loop3",0,0) @@ -277,46 +317,16 @@ function ENT:Think() self:SetSoundState("brake_loopb",0,0) self:SetSoundState("brake2_loop1",0,0) self:SetSoundState("brake2_loop2",0,0) - elseif brakeSqueal1 > 0 then - --local brakeRamp1 = math.min(1.0,math.max(0.0,(speed-10)/50.0))^1.5 - local brakeRamp2 = math.min(1.0,math.max(0.0,speed/3.0)) - local ramp = 0.3+math.Clamp((40-speed)/40,0,1)*0.7 - if self.SquealType <= 4 then - self:SetSoundState(self.SquealSound1,soundsmul*brakeSqueal1*ramp*self.SquealVolume,1+0.05*(1.0-brakeRamp2)) - --[[self:SetSoundState("brake_loop1",typ==1 and soundsmul*brakeSqueal1*ramp*0.2 or 0,1+0.05*(1.0-brakeRamp2)) - self:SetSoundState("brake_loop2",typ==2 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) - self:SetSoundState("brake_loop3",typ==3 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) - self:SetSoundState("brake_loop4",typ==4 and soundsmul*brakeSqueal1*ramp or 0,1+0.05*(1.0-brakeRamp2)) - self:SetSoundState("brake_loopb",typ<=4 and 0*soundsmul*brakeSqueal1*ramp*0.4 or 0,1+0.05*(1.0-brakeRamp2))]] - elseif self.SquealType <= 7 then - local loop_h = soundsmul*brakeSqueal1*ramp*0.5 - if loop_h > 0.1 and speed > 1.5 then - if not self.HighLoop then - self.HighLoop = math.random()>0.5 and "brake_squeal2" or "brake_squeal1" - end - self:SetSoundState(self.HighLoop,loop_h*1.5,1) - elseif loop_h<0.02 and self.HighLoop then - self:SetSoundState(self.HighLoop,0,0) - self.HighLoop = false - end - - self.StartLoopStrength = loop_h - if self.SquealType <= 6 then - self:SetSoundState("brake2_loop1",math.Clamp(loop_h*0.5,0,0.5),1+0.06*(1.0-brakeRamp2)) - end - if self.SquealType >= 6 then - self:SetSoundState("brake2_loop2",loop_h*0.3,1+0.06*(1.0-brakeRamp2)) - end - end end - self.CurrentBrakeSqueal = brakeSqueal1 + self:SetSoundState("brakea_loop1",0,0) + self:SetSoundState("brakea_loop2",0,0) end -- Generate procedural landscape thingy local a = self:GetPos().x local b = self:GetPos().y local c = self:GetPos().z - local f = math.sin(c/200 + a*c/3e7 + b*c/3e7) --math.sin(a/3000)*math.sin(b/3000) + local f = 1--math.sin(c/200 + a*c/3e7 + b*c/3e7) --math.sin(a/3000)*math.sin(b/3000) -- Calculate flange squeal self.PreviousAngles = self.PreviousAngles or self:GetAngles() local deltaAngleYaw = math.abs(self:GetAngles().yaw - self.PreviousAngles.yaw) @@ -324,14 +334,20 @@ function ENT:Think() if deltaAngleYaw >= 180 then deltaAngleYaw = deltaAngleYaw - 360 end - + --speed = 80 local speedAdd = math.max(1,math.min(2,1-(speed-60)/40)) local deltaAngle = deltaAngleYaw/math.max(0.1,self.DeltaTime)*speedAdd deltaAngle = math.max(math.min(1.0,f*10)*math.abs(deltaAngle),0) self.PreviousAngles = self:GetAngles() -- Smooth it out + self.SmoothAngleDelta = self.SmoothAngleDelta or 0 + local speedSmooth = 4--20-math.Clamp((speed-10)/40,0,1)*16 self.SmoothAngleDelta = math.min(7,self.SmoothAngleDelta + (deltaAngle - self.SmoothAngleDelta)*2*self.DeltaTime) + --[[ if (not (self.SmoothAngleDelta <= 0)) and (not (self.SmoothAngleDelta >= 0)) then + print(self.SmoothAngleDelta) + self.SmoothAngleDelta = 0 + end--]] -- Create sound local speed_mod = math.min(1.0,math.max(0.0,speed/5)) local flangea = math.Clamp((speed-18)/25,0,1) @@ -342,7 +358,7 @@ function ENT:Think() local t = RealTime() local modulation = 1.5*math.max(0,0.2+math.sin(t)*math.sin(t*3.12)*math.sin(t*0.24)*math.sin(t*4.0)) local pitch40 = math.max(0.9,1.0+(speed-40.0)/160.0) - --local pitch60 = math.max(0.9,1.0+(speed-60.0)/160.0) + local pitch60 = math.max(0.9,1.0+(speed-60.0)/160.0) -- Play it self:SetSoundState("flangea",(0.3+soundsmul*0.7)*(speed_mod)*math.Clamp(f2,0,1),pitch40) self:SetSoundState("flangeb",(0.3+soundsmul*0.7)*(speed_mod)*math.Clamp(f3*modulation,0,1),pitch40) @@ -353,6 +369,7 @@ end function ENT:Draw() self:DrawModel() + --render.DrawLine(self:GetPos(),self:LocalToWorld(Vector(100,0,0)), Color(255,0,0), false) end @@ -387,7 +404,7 @@ end function ENT:DrawGUI(tbl) if IsValid(c_gui) then c_gui:Close() end - c_gui = vgui.Create("DFrame") + local c_gui = vgui.Create("DFrame") c_gui:SetDeleteOnClose(true) c_gui:SetTitle(Metrostroi.GetPhrase("Common.Bogey.Title")) c_gui:SetSize(0, 0) @@ -395,7 +412,7 @@ function ENT:DrawGUI(tbl) c_gui:SetSizable(false) c_gui:MakePopup() local scrollPanel = vgui.Create( "DScrollPanel", c_gui ) - addButton(scrollPanel,"Common.Bogey.ContactState",tbl.relcontact and "Common.Bogey.CReleased" or "Common.Bogey.CPressed",tbl.relcontact and Color(150,50,0) or Color(0,150,0),tbl.relcontact and "Common.Bogey.CPress" or "Common.Bogey.CRelease",tbl.access,function() + addButton(scrollPanel,"Common.Bogey.ContactState",tbl.relcontact and "Common.Bogey.CReleased" or "Common.Bogey.CPressed",tbl.relcontact and Color(150,50,0) or Color(0,150,0),tbl.relcontact and "Common.Bogey.CPress" or "Common.Bogey.CRelease",tbl.access,function(button) net.Start("metrostroi-bogey-menu") net.WriteEntity(self) net.WriteUInt(0,8) @@ -403,7 +420,7 @@ function ENT:DrawGUI(tbl) c_gui:Close() end) if tbl.havepb then - addButton(scrollPanel,"Common.Bogey.ParkingBrakeState",tbl.pbdisabled and "Common.Bogey.PBDisabled" or "Common.Bogey.PBEnabled", Color(0,150,0),tbl.pbdisabled and "Common.Bogey.PBEnable" or "Common.Bogey.PBDisable",tbl.access,function() + addButton(scrollPanel,"Common.Bogey.ParkingBrakeState",tbl.pbdisabled and "Common.Bogey.PBDisabled" or "Common.Bogey.PBEnabled", Color(0,150,0),tbl.pbdisabled and "Common.Bogey.PBEnable" or "Common.Bogey.PBDisable",tbl.access,function(button) net.Start("metrostroi-bogey-menu") net.WriteEntity(self) net.WriteUInt(1,8) @@ -419,7 +436,7 @@ function ENT:DrawGUI(tbl) function scrollPanel:PerformLayout() spPefromLayout(self) if not self.First then self.First = true return end - local _,y = scrollPanel:ChildrenSize() + local x,y = scrollPanel:ChildrenSize() if self.Centered then return end self.Centered = true c_gui:SetSize(512,math.min(350,y)+35) diff --git a/lua/entities/gmod_train_bogey/init.lua b/lua/entities/gmod_train_bogey/init.lua index 4ae5c3e..d3a566d 100644 --- a/lua/entities/gmod_train_bogey/init.lua +++ b/lua/entities/gmod_train_bogey/init.lua @@ -14,6 +14,22 @@ COUPLE_MAX_DISTANCE = COUPLE_MAX_DISTANCE ^ 2 COUPLE_MAX_ANGLE = math.cos(math.rad(COUPLE_MAX_ANGLE)) -------------------------------------------------------------------------------- +--[[ function ENT:PreEntityCopy() + local BogeyDupe = {} + if IsValid(self.Wheels) then + BogeyDupe.Wheels = self.Wheels:EntIndex() + end + BogeyDupe.BogeyType = self.BogeyType + if WireAddon then + BogeyDupe.WireData = WireLib.BuildDupeInfo( self.Entity ) + end + BogeyDupe.NoPhysics = self.NoPhysics + + + duplicator.StoreEntityModifier(self, "BogeyDupe", BogeyDupe) +end +duplicator.RegisterEntityModifier( "BogeyDupe" , function() end) +--Model,WheelPos,WheelAng,WheelModel,PantLPos,PantRPos,BogeyOffset,{ConnectorPositions}--]] ENT.Types = { ["702"] = { "models/metrostroi_train/bogey/metro_bogey_702.mdl", @@ -59,6 +75,39 @@ ENT.Types = { Vector(4.3,-63,-3.3),Vector(4.3,63,-3.3), }, } +--[[ function ENT:PostEntityPaste(ply,ent,createdEntities) + local BogeyDupe = ent.EntityMods.BogeyDupe + if IsValid(self.Wheels) then + self.Wheels:SetParent() + self.Wheels:Remove() + end + self.Wheels = createdEntities[BogeyDupe.Wheels] + self.BogeyType = BogeyDupe.BogeyType + local typ = self.Types[self.BogeyType or "717"] + self:SetModel(typ and typ[1] or "models/metrostroi/metro/metro_bogey.mdl") + if IsValid(self.Wheels) then + if self.BogeyType == "tatra" then + self.Wheels:SetPos(self:LocalToWorld(Vector(0,0.0,-3))) + self.Wheels:SetAngles(self:GetAngles() + Angle(0,0,0)) + else + self.Wheels:SetPos(self:LocalToWorld(Vector(0,0.0,-10))) + self.Wheels:SetAngles(self:GetAngles() + Angle(0,90,0)) + end + self.Wheels.WheelType = self.BogeyType + self.Wheels.NoPhysics = BogeyDupe.NoPhysics + + if self.NoPhysics then + self.Wheels:SetParent(self) + else + self.Wheels:PhysicsInit(SOLID_VPHYSICS) + self.Wheels:SetMoveType(MOVETYPE_VPHYSICS) + self.Wheels:SetSolid(SOLID_VPHYSICS) + constraint.Weld(self,self.Wheels,0,0,0,1,0) + end + if CPPI then self.Wheels:CPPISetOwner(self:CPPIGetOwner()) end + self.Wheels:SetNW2Entity("TrainBogey",self) + end +end--]] ENT.SnakePos = Vector(-168.25,0,6.5) ENT.SnakeAng = Angle(0,90,0) @@ -109,6 +158,8 @@ function ENT:Initialize() self.PneumaticBrakeForce = 100000.0 self.DisableSound = 0 + self.Angle = 0 + self.Variables = {} -- Pressure in brake cylinder @@ -119,6 +170,7 @@ function ENT:Initialize() self.DropByPeople = 0 self.PlayTime = { 0, 0 } self.ContactStates = { false, false } + self.ContactDisables = {false,false} self.DisableContacts = false self.DisableContactsManual = false self.DisableParking = false @@ -133,25 +185,30 @@ end function ENT:InitializeWheels() -- Create missing wheels - if IsValid(self.Wheels) then SafeRemoveEntity(self.Wheels) end - local wheels = ents.Create("gmod_train_wheels") - local typ = self.Types[self.BogeyType or "717"] - wheels.Model = typ[4] - if typ and typ[3] then wheels:SetAngles(self:LocalToWorldAngles(typ[3])) end - if typ and typ[2] then wheels:SetPos(self:LocalToWorld(typ[2])) end + if not IsValid(self.Wheels) then + --print(1) + local wheels = ents.Create("gmod_train_wheels") + local typ = self.Types[self.BogeyType or "717"] + wheels.Model = typ[4] + if typ and typ[3] then wheels:SetAngles(self:LocalToWorldAngles(typ[3])) end + if typ and typ[2] then wheels:SetPos(self:LocalToWorld(typ[2])) end - wheels.WheelType = self.BogeyType - wheels.NoPhysics = self.NoPhysics - wheels:Spawn() + --wheels = ents.Create("gmod_subway_wheels") + --wheels:SetPos(self:LocalToWorld(Vector(0,0.0,-10))) + --wheels:SetAngles(self:GetAngles() + Angle(0,90,0)) + wheels.WheelType = self.BogeyType + wheels.NoPhysics = self.NoPhysics + wheels:Spawn() - if self.NoPhysics then - wheels:SetParent(self) - else - constraint.Weld(self,wheels,0,0,0,1,0) + if self.NoPhysics then + wheels:SetParent(self) + else + constraint.Weld(self,wheels,0,0,0,1,0) + end + if CPPI then wheels:CPPISetOwner(self:CPPIGetOwner() or self:GetNW2Entity("TrainEntity"):GetOwner()) end + wheels:SetNW2Entity("TrainBogey",self) + self.Wheels = wheels end - if CPPI then wheels:CPPISetOwner(self:CPPIGetOwner() or self:GetNW2Entity("TrainEntity"):GetOwner()) end - wheels:SetNW2Entity("TrainBogey",self) - self.Wheels = wheels end function ENT:OnRemove() @@ -179,7 +236,7 @@ function ENT:TriggerInput(iname, value) end end ---[[ Checks if there's an advballsocket between two entities +-- Checks if there's an advballsocket between two entities local function AreCoupled(ent1,ent2) if ent1.CoupledBogey or ent2.CoupledBogey then return false end local constrainttable = constraint.FindConstraints(ent1,"AdvBallsocket") @@ -193,7 +250,7 @@ local function AreCoupled(ent1,ent2) end return coupled -end]] +end -- Adv ballsockets ents by their CouplingPointOffset function ENT:Couple(ent) @@ -225,10 +282,11 @@ function ENT:Couple(ent) end end -local function AreInCoupleDistance(ent1,ent2) - return ent2:LocalToWorld(ent2.CouplingPointOffset):DistToSqr(ent1:LocalToWorld(ent1.CouplingPointOffset)) < COUPLE_MAX_DISTANCE +local function AreInCoupleDistance(ent,self) + return self:LocalToWorld(self.CouplingPointOffset):DistToSqr(ent:LocalToWorld(ent.CouplingPointOffset)) < COUPLE_MAX_DISTANCE end + local function AreFacingEachother(ent1,ent2) return ent1:GetForward():Dot(ent2:GetForward()) < -COUPLE_MAX_ANGLE end @@ -248,8 +306,8 @@ end local function CanCoupleTogether(ent1,ent2) if ent1.DontHaveCoupler or ent2.DontHaveCoupler then return false end if ent2:GetClass() ~= ent1:GetClass() then return false end - --if not (ent1.CanCouple and ent1:CanCouple()) then return false end - --if not (ent2.CanCouple and ent2:CanCouple()) then return false end + if not (ent1.CanCouple and ent1:CanCouple()) then return false end + if not (ent2.CanCouple and ent2:CanCouple()) then return false end if not AreInCoupleDistance(ent1,ent2) then return false end if not AreFacingEachother(ent1,ent2) then return false end return true @@ -381,9 +439,8 @@ function ENT:CheckContact(pos,dir,id,cpos) if not result.Hit then return end if result.HitWorld then return true end - local traceEnt = result.Entity - if not self.Connectors[id] and traceEnt:GetClass() == "gmod_track_udochka" then + if result.Entity:GetClass() == "gmod_track_udochka" then if not traceEnt.Timer and traceEnt.CoupledWith ~= self then --local vec = Vector(pos.y < 0 and 1 or 1.1,pos.y < 0 and -1 or 1.05, 1) traceEnt:SetPos(self:LocalToWorld(cpos)) @@ -394,110 +451,105 @@ function ENT:CheckContact(pos,dir,id,cpos) traceEnt.Coupled = self sound.Play("udochka_connect.wav",traceEnt:GetPos()) self.Connectors[id] = traceEnt - DropEntityIfHeld(traceEnt) - --[[timer.Simple(0,function() - if not IsValid(traceEnt) or not traceEnt:IsPlayerHolding() then return end - traceEnt:ForcePlayerDrop() - if traceEnt.LastPickup and traceEnt.LastPickup:IsPlayer() then - traceEnt.LastPickup:DropObject() + timer.Simple(0,function() + if IsValid(traceEnt) and traceEnt:IsPlayerHolding() then + traceEnt:ForcePlayerDrop() + if traceEnt.LastPickup and traceEnt.LastPickup:IsPlayer() then + traceEnt.LastPickup:DropObject() + end end - end)]] + end) end end return false - elseif traceEnt:GetClass() == "player" and self.Voltage > 40 then - local pPos = traceEnt:GetPos() + elseif traceEnt:GetClass() == "player" then + --self.T:WorldToLocal(Entity(3208):GetPos()) + if self.Voltage < 40 then return end + local pos = traceEnt:GetPos() self.VoltageDropByTouch = (self.VoltageDropByTouch or 0) + 1 - util.BlastDamage(traceEnt,traceEnt,pPos,64,3.0*self.Voltage) + util.BlastDamage(traceEnt,traceEnt,pos,64,3.0*self.Voltage) local effectdata = EffectData() - effectdata:SetOrigin(pPos + Vector(0,0,-16+math.random()*(40+0))) + effectdata:SetOrigin(pos + Vector(0,0,-16+math.random()*(40+0))) util.Effect("cball_explode",effectdata,true,true) - sound.Play("ambient/energy/zap"..math.random(1,3)..".wav",pPos,75,math.random(100,150),1.0) + sound.Play("ambient/energy/zap"..math.random(1,3)..".wav",pos,75,math.random(100,150),1.0) return end return result.Hit end -local C_Reqiure3rdRail = GetConVar("metrostroi_train_requirethirdrail") - function ENT:CheckVoltage(dT) -- Check contact states - if (CurTime() - self.CheckTimeout) <= 0.25 then return end - self.CheckTimeout = CurTime() - local supported = C_Reqiure3rdRail:GetInt() > 0 and Metrostroi.MapHasFullSupport() - local feeder = self.Feeder and Metrostroi.Voltages[self.Feeder] - local volt = feeder or Metrostroi.Voltage or 750 + if (CurTime() - self.CheckTimeout) > 0.25 then + self.CheckTimeout = CurTime() + self.VoltageDropByTouch = 0 + self.NextStates[1] = not self.DisableContacts and not self.DisableContactsManual and not self.ContactDisables[1] and self:CheckContact(self.PantLPos,Vector(0,-1,0),1,self.PantLCPos) + self.NextStates[2] = not self.DisableContacts and not self.DisableContactsManual and not self.ContactDisables[2] and self:CheckContact(self.PantRPos,Vector(0, 1,0),2,self.PantRCPos) + -- Detect changes in contact states + for i=1,2 do + local state = self.NextStates[i] + if state ~= self.ContactStates[i] then + self.ContactStates[i] = state - -- Non-metrostroi maps - if not supported then - self.Voltage = volt - self.NextStates[1] = true - self.NextStates[2] = true - return - end + if state then + self.VoltageDrop = -40*(0.5 + 0.5*math.random()) - self.VoltageDropByTouch = 0 - self.NextStates[1] = not self.DisableContacts and not self.DisableContactsManual - and self:CheckContact(self.PantLPos,Vector(0,-1,0),1,self.PantLCPos) - self.NextStates[2] = not self.DisableContacts and not self.DisableContactsManual - and self:CheckContact(self.PantRPos,Vector(0, 1,0),2,self.PantRCPos) + local dt = CurTime() - self.PlayTime[i] + self.PlayTime[i] = CurTime() - -- Detect changes in contact states - for i=1,2 do - local state = self.NextStates[i] - if state ~= self.ContactStates[i] then - self.ContactStates[i] = state - if not state then continue end + local volume = 0.53 + if dt < 1.0 then volume = 0.43 end + if i == 1 then sound.Play("subway_trains/bogey/tr_"..math.random(1,5)..".wav",self:LocalToWorld(self.PantLPos),65,math.random(90,120),volume) end + if i == 2 then sound.Play("subway_trains/bogey/tr_"..math.random(1,5)..".wav",self:LocalToWorld(self.PantRPos),65,math.random(90,120),volume) end - self.VoltageDrop = -40*(0.5 + 0.5*math.random()) + -- Sparking probability + local probability = math.Clamp(1-(self.MotorPower/2),0,1) + if state and (math.random() > probability) then + local effectdata = EffectData() + if i == 1 then effectdata:SetOrigin(self:LocalToWorld(self.PantLPos)) end + if i == 2 then effectdata:SetOrigin(self:LocalToWorld(self.PantRPos)) end + effectdata:SetNormal(Vector(0,0,-1)) + util.Effect("stunstickimpact", effectdata, true, true) - local dt = CurTime() - self.PlayTime[i] - self.PlayTime[i] = CurTime() - - local volume = 0.53 - if dt < 1.0 then volume = 0.43 end - if i == 1 then sound.Play("subway_trains/bogey/tr_"..math.random(1,5)..".wav",self:LocalToWorld(self.PantLPos),65,math.random(90,120),volume) end - if i == 2 then sound.Play("subway_trains/bogey/tr_"..math.random(1,5)..".wav",self:LocalToWorld(self.PantRPos),65,math.random(90,120),volume) end - - -- Sparking probability - local probability = math.Clamp(1-(self.MotorPower/2),0,1) - if math.random() > probability then - local effectdata = EffectData() - if i == 1 then effectdata:SetOrigin(self:LocalToWorld(self.PantLPos)) end - if i == 2 then effectdata:SetOrigin(self:LocalToWorld(self.PantRPos)) end - effectdata:SetNormal(Vector(0,0,-1)) - util.Effect("stunstickimpact", effectdata, true, true) - - local light = ents.Create("light_dynamic") - light:SetPos(effectdata:GetOrigin()) - light:SetKeyValue("_light","100 220 255") - light:SetKeyValue("style", 0) - light:SetKeyValue("distance", 256) - light:SetKeyValue("brightness", 5) - light:Spawn() - light:Fire("TurnOn","","0") - light.Time = CurTime() - timer.Simple(0.1,function() - SafeRemoveEntity(light) - end) - sound.Play("subway_trains/bogey/spark.mp3",effectdata:GetOrigin(),75,math.random(100,150),volume) - --self.Train:PlayOnce("zap",sound_source,0.7*volume,50+math.random(90,120)) + local light = ents.Create("light_dynamic") + light:SetPos(effectdata:GetOrigin()) + light:SetKeyValue("_light","100 220 255") + light:SetKeyValue("style", 0) + light:SetKeyValue("distance", 256) + light:SetKeyValue("brightness", 5) + light:Spawn() + light:Fire("TurnOn","","0") + light.Time = CurTime() + hook.Add("Think",light,function(self) + if CurTime()-self.Time > 0.1 then self:Remove() end + end) + sound.Play("subway_trains/bogey/spark.mp3",effectdata:GetOrigin(),75,math.random(100,150),volume) + --self.Train:PlayOnce("zap",sound_source,0.7*volume,50+math.random(90,120)) + end + end end end end + -- Voltage spikes self.VoltageDrop = math.max(-30,math.min(30,self.VoltageDrop + (0 - self.VoltageDrop)*10*dT)) + local feeder = self.Feeder and Metrostroi.Voltages[self.Feeder] + local volt = feeder or Metrostroi.Voltage or 750 + -- Non-metrostroi maps + if ((GetConVarNumber("metrostroi_train_requirethirdrail") <= 0)) then-- or + --(not Metrostroi.MapHasFullSupport()) then + self.Voltage = volt + self.VoltageDrop + return + end -- Detect voltage self.Voltage = 0 self.DropByPeople = 0 for i=1,2 do - if self.ContactStates[i] then - self.Voltage = volt + self.VoltageDrop - elseif IsValid(self.Connectors[i]) and self.Connectors[i].Coupled == self then + if self.ContactStates[i] then self.Voltage = volt + self.VoltageDrop + elseif IsValid(self.Connectors[i]) and self.Connectors[i].Coupled == (i > 2 and self.Train.RearBogey or self) then self.Voltage = self.Connectors[i].Power and Metrostroi.Voltage or 0 - end + else self.Connectors[i] = nil end end if self.VoltageDropByTouch > 0 then local Rperson = 0.613 @@ -508,12 +560,14 @@ end function ENT:Think() -- Re-initialize wheels - if not IsValid(self.Wheels) or self.Wheels:GetNW2Entity("TrainBogey") ~= self then + if (not self.Wheels) or + (not self.Wheels:IsValid()) or + (self.Wheels:GetNW2Entity("TrainBogey") ~= self) then self:InitializeWheels() - constraint.NoCollide(self.Wheels,self,0,0) if IsValid(self:GetNW2Entity("TrainEntity")) then constraint.NoCollide(self.Wheels,self:GetNW2Entity("TrainEntity"),0,0) + constraint.NoCollide(self.Wheels,self,0,0) end end @@ -521,12 +575,13 @@ function ENT:Think() self.PrevTime = self.PrevTime or CurTime() self.DeltaTime = (CurTime() - self.PrevTime) self.PrevTime = CurTime() + self.Angle = self.Wheels.Angle self:SetNW2Entity("TrainWheels",self.Wheels) self:CheckVoltage(self.DeltaTime) -- Skip physics related stuff - if self.NoPhysics or not self.Wheels:GetPhysicsObject():IsValid() then + if not IsValid(self.Wheels) or not self.Wheels:GetPhysicsObject():IsValid() or self.NoPhysics then self:SetMotorPower(self.MotorPower or 0) self:SetSpeed(self.Speed or 0) self:NextThink(CurTime()) @@ -554,19 +609,24 @@ function ENT:Think() -- Calculate motor power local motorPower = 0.0 if self.MotorPower > 0.0 then - motorPower = math.Clamp(self.MotorPower, -1, 1) + motorPower = self.MotorPower else - motorPower = math.Clamp(self.MotorPower*sign, -1, 1) + motorPower = self.MotorPower*sign end + motorPower = math.max(-1.0,motorPower) + motorPower = math.min(1.0,motorPower) -- Increace forces on slopes - local slopemul = 1 + local slopemul = 1--+math.Clamp(Train:GetAngles():Forward(),0,1)*0.2 + local slopemulb = 1 local pitch = self:GetAngles().pitch*sign if motorPower < 0 and pitch > 3 then - slopemul = slopemul + math.Clamp((math.abs(pitch)-3)/3,0,1) + slopemul = slopemul + math.Clamp((math.abs(pitch)-3)/3,0,1)--[[ *(math.Clamp((self.Speed-55)/5,0,1))--]] *1.5 else slopemul = slopemul + math.Clamp((pitch-3)/3,0,1)*1.5 end - + if -3 > pitch or pitch > 3 then + slopemulb = slopemulb + math.Clamp((math.abs(pitch)-3)/3,0,1)*0.7 + end -- Final brake cylinder pressure local pneumaticPow = self.PneumaticPow or 1 local pB = not self.DisableParking and self.ParkingBrakePressure or 0 @@ -579,14 +639,10 @@ function ENT:Think() -- Calculate forces local motorForce = self.MotorForce*motorPower*slopemul - local pneumaticFactor = math.Clamp(0.5*self.Speed,0,1)*(1+math.Clamp((2-self.Speed)/2,0,1)*0.5) + local pneumaticFactor = math.max(0,math.min(1,0.5*self.Speed))*(1+(math.max(0,math.min(1,(2-self.Speed)/2)))*0.5) local pneumaticForce = 0 if BrakeCP >= 0.05 then - local slopemulBr = 1 - if -3 > pitch or pitch > 3 then - slopemulBr = 1 + math.Clamp((math.abs(pitch)-3)/3,0,1)*0.7 - end - pneumaticForce = -sign*pneumaticFactor*self.PneumaticBrakeForce*BrakeCP*slopemulBr + pneumaticForce = -sign*pneumaticFactor*self.PneumaticBrakeForce*BrakeCP*slopemulb end -- Compensate forward friction @@ -618,12 +674,13 @@ function ENT:Think() -- Calculate brake squeal self.SquealSensitivity = 1 + local k = ((self.SquealSensitivity or 0.5) - 0.5)*2 local BCPress = math.abs(self.BrakeCylinderPressure) self.RattleRandom = self.RattleRandom or 0.5+math.random()*0.2 local PnF1 = math.Clamp((BCPress-0.6)/0.6,0,2) local PnF2 = math.Clamp((BCPress-self.RattleRandom)/0.6,0,2) + --local PnF3 = math.Clamp((BCPress-self.RattleRandom+0.15)/0.6,0,1) local brakeSqueal1 = (PnF1*PnF2)*pneumaticFactor - --local brakeSqueal2 = (PnF1*PnF3)*pneumaticFactor -- Send parameters to client if self.DisableSound < 1 then @@ -631,11 +688,20 @@ function ENT:Think() end if self.DisableSound < 2 then + local brakeRamp = math.min(1.0,math.max(0.0,self.Speed/2.0)) + if self.Speed > 2 then + --brakeRamp = 1 - math.min(1.0,math.max(0.0,(self.Speed-3)/10.0)) + end + -- if brakeRamp > 0.01 and brakeSqueal > 0 then if self:GetNWBool("Async") then - self:SetNW2Float("BrakeSqueal",(self.BrakeCylinderPressure-0.9)/1.7) + local bcP = self.BrakeCylinderPressure + self:SetNW2Float("BrakeSqueal",(bcP-0.9)/1.7)--3/(absSpeed+bcP^3)*(bcP^3)*0.5) else self:SetNW2Float("BrakeSqueal1",brakeSqueal1) + --self:SetNW2Float("BrakeSqueal2",brakeSqueal2) end + --self:SetBrakeSqueal(self.BrakeSqueal or brakeSqueal) +-- end end if self.DisableSound < 3 then self:SetSpeed(absSpeed) diff --git a/lua/entities/gmod_train_bogey/shared.lua b/lua/entities/gmod_train_bogey/shared.lua index 02d315e..f6e29a4 100644 --- a/lua/entities/gmod_train_bogey/shared.lua +++ b/lua/entities/gmod_train_bogey/shared.lua @@ -31,6 +31,9 @@ physenv.AddSurfaceData([[ "gamematerial" "X" } ]]) +function ENT:SetupDataTables() + self._NetData = {} +end function ENT:GetSpeed() return self:GetNW2Int("Speed")/5 end @@ -43,20 +46,17 @@ end if SERVER then function ENT:SetSpeed(val) - if self.OldSpeed == math.floor(val*5) then return end - self.OldSpeed = math.floor(val*5) - self:SetNW2Int("Speed",self.OldSpeed) + if self._NetData[1] == math.floor(val*5) then return end + self:SetNW2Int("Speed",math.floor(val*5)) end function ENT:SetMotorPower(val) - if self.OldMotorPower == math.floor(val*50) then return end - self.OldMotorPower = math.floor(val*50) - self:SetNW2Int("MotorPower",self.OldMotorPower) + if self._NetData[2] == math.floor(val*50) then return end + self:SetNW2Int("MotorPower",math.floor(val*50)) end function ENT:SetBrakeSqueal(val) - if self.OldBrakeSqueal == math.floor(val*10) then return end - self.OldBrakeSqueal = math.floor(val*10) - self:SetNW2Int("BrakeSqueal",self.OldBrakeSqueal) + if self._NetData[4] == math.floor(val*10) then return end + self:SetNW2Int("BrakeSqueal",math.floor(val*10)) end end \ No newline at end of file diff --git a/lua/entities/gmod_train_dlight.lua b/lua/entities/gmod_train_dlight.lua deleted file mode 100644 index d7677f7..0000000 --- a/lua/entities/gmod_train_dlight.lua +++ /dev/null @@ -1,110 +0,0 @@ ---[[------------------------------------------------------------------------- -Client light_dynamic entity ----------------------------------------------------------------------------]] -AddCSLuaFile() -ENT.Type = "anim" -ENT.PrintName = "Clientside dlight" - -ENT.Spawnable = false -ENT.AdminSpawnable = false - -if SERVER then return end -MetrostroiDLights = MetrostroiDLights or 0 - -function ENT:Initialize() - self.ID = 817200-MetrostroiDLights - MetrostroiDLights = MetrostroiDLights + 3 - - self.Strength = 1 - self.Color = Color(255,220,80) - self.Brightness = 1 - - self.AffectW = true - - self:SetSize(512) - - self:MakeDLight() -end - -function ENT:Think() - self:MakeDLight() - --[[ - if not self.Created then - self:MakeDLight() - return - end - self.DLight.Pos = self:GetPos() - --self.DLight.Brightness = 5 - self.DLight.Size = self.Size - self.DLight.Decay = self.Size * 50 - self.DLight.DieTime = CurTime() + 1]] -end - -function ENT:SetDColor(col) - --[[if self.Created then - self.DLight.r = col.r*self.Strength - self.DLight.g = col.g*self.Strength - self.DLight.b = col.b*self.Strength - end]] - self.Color = col -end - -function ENT:SetLightStrength(br) - --[[if self.Created then - self.DLight.r = self.Color.r*br - self.DLight.g = self.Color.g*br - self.DLight.b = self.Color.b*br - end]] - self.Strength = br -end - -function ENT:SetBrightness(br) - --if self.Created then self.DLight.Brightness = br end - self.Brightness = br -end -function ENT:SetSize(sz) - self.Size = sz -end -function ENT:SetStyle(style) - --[[if self.Created then - self.DLight.Style = style - end]] - self.Style = style -end - -function ENT:MakeDLight() - if DLightFreeze ~= RealTime() then self.Created = true end - DLightFreeze = RealTime() - - self.DLight = DynamicLight(self.ID, not self.AffectW) - self.DLight.Style = self.Style - self.DLight.r = self.Color.r*self.Strength - self.DLight.g = self.Color.g*self.Strength - self.DLight.b = self.Color.b*self.Strength - self.DLight.nomodel = self.nomodel - self.DLight.Brightness = self.Brightness - - self.DLight.Pos = self:GetPos() - --self.DLight.Brightness = 5 - self.DLight.Size = self.Size - self.DLight.Decay = self.Size * 50 - self.DLight.DieTime = CurTime() + 1 -end - -function ENT:AffectWorld(affect) - --[[self.AffectW = affect - self.Created = false - self:DLight()]] -end -function ENT:OnRemove() - if self.Created then - self.DLight.DieTime = 0 - end -end -function ENT:AffectModels(affect) - --[[if self.Created then - self.DLight.nomodel = not affect - end]] - self.nomodel = not affect -end -function ENT:Draw() end \ No newline at end of file diff --git a/lua/entities/gmod_train_door/cl_init.lua b/lua/entities/gmod_train_door/cl_init.lua deleted file mode 100644 index 339429d..0000000 --- a/lua/entities/gmod_train_door/cl_init.lua +++ /dev/null @@ -1,53 +0,0 @@ -include("shared.lua") -local frame = nil -function CreateFrame() - if !frame or !frame:IsValid() then - local self = net.ReadEntity() - local Map = game.GetMap() or "" - if Map:find("gm_metrostroi") and Map:find("lite") then - Map = "gm_metrostroi_lite" - elseif Map:find("gm_metrostroi") then - Map = "gm_metrostroi" - elseif Map:find("gm_mus_orange_line") and Map:find("long") then - Map = "gm_orange" - elseif Map:find("gm_mus_orange_line") then - Map = "gm_orange_lite" - end - frame = vgui.Create("DFrame") - frame:SetDeleteOnClose(true) - frame:SetTitle("Dispatch control") - --frame:SetSize(275, 34+24*17) - frame:SetDraggable(false) - frame:SetSizable(false) - frame:MakePopup() - - frame:SetSize(ScrW()-40,ScrH()-40) - frame:Center() - local StationChoose = vgui.Create( "DComboBox",frame ) - StationChoose:SetPos( 5, 30 ) - StationChoose:SetSize( 250, 20 ) - StationChoose:SetValue( "Choose station" ) - for k,v in pairs(Metrostroi.WorkingStations[Map][1]) do - if Metrostroi.AnnouncerData[v] then StationChoose:AddChoice(Metrostroi.AnnouncerData[v][1]) end - end - - local PlayerChoose = vgui.Create( "DComboBox",frame ) - PlayerChoose:SetPos( ScrW()-300,30 ) - PlayerChoose:SetSize( 250, 20 ) - PlayerChoose:SetValue( "Choose player" ) - for i = 1,20 do - PlayerChoose:AddChoice(i) - end - - local Main = vgui.Create( "DPanel",frame ) - Main:SetPos(0,60) - Main:SetSize(frame:GetWide(),frame:GetTall()-60) - Main.Paint = function(self,w,h) - surface.DrawRect(5, 0, w-10, h-5) - end - - end -end -function ENT:Initialize() -end -net.Receive("TrackController",CreateFrame) \ No newline at end of file diff --git a/lua/entities/gmod_train_door/init.lua b/lua/entities/gmod_train_door/init.lua deleted file mode 100644 index 9fe3b90..0000000 --- a/lua/entities/gmod_train_door/init.lua +++ /dev/null @@ -1,29 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") -util.AddNetworkString("TrackController") -local function ShowWindowOnCL(ply,ent) - net.Start("TrackController") - net.WriteEntity(ent) - net.Send(ply) -end -function ENT:Initialize() - self:SetModel("models/metrostroi/signals/clock_time.mdl") -end - -function ENT:Think() -end -function ENT:SpawnFunction( ply, tr, ClassName ) - - if ( !tr.Hit ) then return end - - local SpawnPos = tr.HitPos + tr.HitNormal * 16 - local ent = ents.Create( ClassName ) - ent:SetPos( SpawnPos ) - ent:Spawn() - ent:Activate() - - ShowWindowOnCL(ply,ent) - return ent - -end \ No newline at end of file diff --git a/lua/entities/gmod_train_door/shared.lua b/lua/entities/gmod_train_door/shared.lua deleted file mode 100644 index 58393da..0000000 --- a/lua/entities/gmod_train_door/shared.lua +++ /dev/null @@ -1,7 +0,0 @@ -ENT.Type = "anim" - -ENT.PrintName = "Train door" -ENT.Category = "Metrostroi (utility)" - -ENT.Spawnable = false -ENT.AdminSpawnable = false diff --git a/lua/entities/gmod_train_sound_provider/cl_init.lua b/lua/entities/gmod_train_sound_provider/cl_init.lua deleted file mode 100644 index 339429d..0000000 --- a/lua/entities/gmod_train_sound_provider/cl_init.lua +++ /dev/null @@ -1,53 +0,0 @@ -include("shared.lua") -local frame = nil -function CreateFrame() - if !frame or !frame:IsValid() then - local self = net.ReadEntity() - local Map = game.GetMap() or "" - if Map:find("gm_metrostroi") and Map:find("lite") then - Map = "gm_metrostroi_lite" - elseif Map:find("gm_metrostroi") then - Map = "gm_metrostroi" - elseif Map:find("gm_mus_orange_line") and Map:find("long") then - Map = "gm_orange" - elseif Map:find("gm_mus_orange_line") then - Map = "gm_orange_lite" - end - frame = vgui.Create("DFrame") - frame:SetDeleteOnClose(true) - frame:SetTitle("Dispatch control") - --frame:SetSize(275, 34+24*17) - frame:SetDraggable(false) - frame:SetSizable(false) - frame:MakePopup() - - frame:SetSize(ScrW()-40,ScrH()-40) - frame:Center() - local StationChoose = vgui.Create( "DComboBox",frame ) - StationChoose:SetPos( 5, 30 ) - StationChoose:SetSize( 250, 20 ) - StationChoose:SetValue( "Choose station" ) - for k,v in pairs(Metrostroi.WorkingStations[Map][1]) do - if Metrostroi.AnnouncerData[v] then StationChoose:AddChoice(Metrostroi.AnnouncerData[v][1]) end - end - - local PlayerChoose = vgui.Create( "DComboBox",frame ) - PlayerChoose:SetPos( ScrW()-300,30 ) - PlayerChoose:SetSize( 250, 20 ) - PlayerChoose:SetValue( "Choose player" ) - for i = 1,20 do - PlayerChoose:AddChoice(i) - end - - local Main = vgui.Create( "DPanel",frame ) - Main:SetPos(0,60) - Main:SetSize(frame:GetWide(),frame:GetTall()-60) - Main.Paint = function(self,w,h) - surface.DrawRect(5, 0, w-10, h-5) - end - - end -end -function ENT:Initialize() -end -net.Receive("TrackController",CreateFrame) \ No newline at end of file diff --git a/lua/entities/gmod_train_sound_provider/init.lua b/lua/entities/gmod_train_sound_provider/init.lua deleted file mode 100644 index 9fe3b90..0000000 --- a/lua/entities/gmod_train_sound_provider/init.lua +++ /dev/null @@ -1,29 +0,0 @@ -AddCSLuaFile("cl_init.lua") -AddCSLuaFile("shared.lua") -include("shared.lua") -util.AddNetworkString("TrackController") -local function ShowWindowOnCL(ply,ent) - net.Start("TrackController") - net.WriteEntity(ent) - net.Send(ply) -end -function ENT:Initialize() - self:SetModel("models/metrostroi/signals/clock_time.mdl") -end - -function ENT:Think() -end -function ENT:SpawnFunction( ply, tr, ClassName ) - - if ( !tr.Hit ) then return end - - local SpawnPos = tr.HitPos + tr.HitNormal * 16 - local ent = ents.Create( ClassName ) - ent:SetPos( SpawnPos ) - ent:Spawn() - ent:Activate() - - ShowWindowOnCL(ply,ent) - return ent - -end \ No newline at end of file diff --git a/lua/entities/gmod_train_sound_provider/shared.lua b/lua/entities/gmod_train_sound_provider/shared.lua deleted file mode 100644 index 6416af6..0000000 --- a/lua/entities/gmod_train_sound_provider/shared.lua +++ /dev/null @@ -1,7 +0,0 @@ -ENT.Type = "anim" - -ENT.PrintName = "Train sound provider" -ENT.Category = "Metrostroi (utility)" - -ENT.Spawnable = false -ENT.AdminSpawnable = false diff --git a/lua/entities/gmod_train_spawner/cl_init.lua b/lua/entities/gmod_train_spawner/cl_init.lua index 7467f87..3f15459 100644 --- a/lua/entities/gmod_train_spawner/cl_init.lua +++ b/lua/entities/gmod_train_spawner/cl_init.lua @@ -1,8 +1,6 @@ include("shared.lua") local MaxHorisontal = 14 local frame = nil -local pFrame = nil -local wFrame = nil local MaxWagons = 0 local MaxWagonsOnPlayer = 0 local Settings = { @@ -26,7 +24,6 @@ end local function LoadConCMD() Settings = util.JSONToTable(file.Read("metrostroi_train_spawner.txt","DATA")) or Settings - if not Settings[Settings.Train] then Settings[Settings.Train] = {} end --PrintTable(Settings) end local Pos = 0 @@ -80,21 +77,22 @@ local function CreateList(name,text,tbl,OnSelect,stbl) end end List.OnSelect = function(self,_, _, index) - for _,v in ipairs(VGUI) do v(nil,nil,true) end stbl[name] = index if OnSelect then OnSelect(List,VGUI) end end List.ID = table.insert(VGUI,function(val, disabled, reset) if reset then if List.Disable then List:SetDisabled(false) end - elseif val or disabled then + return + end + if val or disabled then if val ~= nil then List:ChooseOptionID(val) end List:SetDisabled(disabled) List.Disable = disabled - else - ListLabel:Remove() - List:Remove() + return end + ListLabel:Remove() + List:Remove() --local on = Types[Settings.Train]:find(name) and tbl --List:SetVisible(on) --ListLabel:SetVisible(on) @@ -177,7 +175,6 @@ local function CreateCheckBox(name,text,OnSelect,stbl) --CB:SetPos(130 + 300*math.floor(Pos/MaxHorisontal), 28+24*(Pos%MaxHorisontal)) CB:SetValue(stbl[name]) CB.OnChange = function(self) - for _,v in ipairs(VGUI) do v(nil,nil,true) end stbl[name] = CB:GetChecked() if OnSelect then OnSelect(CB,VGUI) end end @@ -205,7 +202,7 @@ local function CreateCheckBox(name,text,OnSelect,stbl) --if Types[Settings.Train]:find(name) then Pos = Pos + 1 end end -local function UpdateTrainList(fromPresets) +local function UpdateTrainList() Pos = 2 for k,v in ipairs(VGUI) do if k > 2 then @@ -255,10 +252,6 @@ local function UpdateTrainList(fromPresets) frame:Center() if VGUI.Close then VGUI.Close() end if VGUI.spawn then VGUI.spawn() end - if VGUI.Presets then VGUI.Presets() end - if VGUI.Wagons then VGUI.Wagons() end - if VGUI.PFrame and fromPresets ~= true then VGUI.PFrame(true) end - if VGUI.WFrame then VGUI.WFrame() end end local function Draw() local Trains = {} @@ -292,339 +285,71 @@ local function Draw() UpdateTrainList() end - -local function savePresetData(trainArr,presetArr) - for k,v in pairs(trainArr) do - if k == "Presets" or k == "Specials" then continue end - presetArr[k] = v - end -end - -local function getPresetName(name, presets, ignoreOwn) - local maxrep = tonumber(name:match("(.+)[%s*]%((%d+)%)$")) or 0 - - for i,v in ipairs(presets) do - local name2,nameid = v.PresetName:match("(.+)[%s*]%((%d+)%)$") - if (not ignoreOwn or i ~= presets.Selected) and (v.PresetName == name or name2 == name) then - maxrep = math.max(1,tonumber(nameid) or 1) - end - end - return maxrep > 0 and Format("%s (%d)",name:match("(.+)[%s*]%(%d+%)$") or name,maxrep+1) or name -end - -local function createPresetsFrame() - if IsValid(pFrame) then return end - pFrame = vgui.Create("DFrame",frame) - pFrame:SetTitle(Metrostroi.GetPhrase("Spawner.PresetTitle")) - pFrame:SetDrawOnTop(false) - pFrame.btnMaxim:SetVisible(false) - pFrame.btnMinim:SetVisible(false) - --frame:SetSize(275, 34+24*17) - pFrame:SetDraggable(true) - pFrame:SetSizable(false) - pFrame:MakePopup() - pFrame:SetZPos(frame:GetZPos()+1) - pFrame:SetSize(262+10, 58+24*1) - --pFrame:Center() - pFrame.OnRemove = function() - if IsValid(WFrame) then - VGUI.WFrame() - end - end - - --[[local ListLabel = vgui.Create("DLabel", frame) - -- ListLabel:SetPos(5 + 300*math.floor(Pos/MaxHorisontal), 24+24*(Pos%MaxHorisontal)) - ListLabel:SetPos(5 + 270*math.floor(Pos/MaxHorisontal),24+24*(Pos%MaxHorisontal)) - ListLabel:SetSize(115,28) - ListLabel:SetText(text) - ListLabel:SetExpensiveShadow(1,Color(0,0,0,200))]] - - local Presets = vgui.Create("DComboBox", pFrame)-- - Presets:SetPos(5,28) - -- Presets:SetPos(130 + 300*math.floor(Pos/MaxHorisontal), 28+24*(Pos%MaxHorisontal)) - Presets:SetWide(272-8-72-5) - - - local PAdd = vgui.Create("DButton", pFrame) - PAdd:SetWide(24) - PAdd:SetPos(272-7-72, 28) - PAdd:SetTooltip(Metrostroi.GetPhrase("Spawner.Preset.NewTooltip")) - PAdd:SetImage("icon16/add.png") - local PUpdate = vgui.Create("DButton", pFrame) - PUpdate:SetWide(24) - PUpdate:SetPos(272-6-48, 28) - PUpdate:SetTooltip(Metrostroi.GetPhrase("Spawner.Preset.UpdateTooltip")) - PUpdate:SetText("") - PUpdate:SetImage("icon16/arrow_refresh.png") - local PRemove = vgui.Create("DButton", pFrame) - PRemove:SetWide(24) - PRemove:SetPos(272-5-24, 28) - PRemove:SetTooltip(Metrostroi.GetPhrase("Spawner.Preset.RemoveTooltip")) - PRemove:SetText("") - PRemove:SetImage("icon16/cross.png") - - local PNameLabel = vgui.Create("DLabel", pFrame) - PNameLabel:SetPos(5,24+24*1+4) - PNameLabel:SetSize(115,28) - PNameLabel:SetText(Metrostroi.GetPhrase("Spawner.Presets.Name")) - PNameLabel:SetWide(100) - PNameLabel:SetExpensiveShadow(1,Color(0,0,0,200)) - local PName = vgui.Create("DTextEntry", pFrame) - PName:SetPos(132,24+24*1+4) - PName:SetSize(135,20) - PName:SetText("") - PName:SetPlaceholderText(Metrostroi.GetPhrase("Spawner.Presets.NamePlaceholder")) - - Presets.OnSelect = function(pnl,i, text) - if i == 1 then - PName:SetText("My preset name") - else - local presets = Settings[Settings.Train] and Settings[Settings.Train].Presets - - if presets and pnl.selected ~= -1 then - if not presets.Selected or presets.Selected == 0 then - if not presets[0] then presets[0] = {} end - savePresetData(Settings[Settings.Train],presets[0]) - end - presets.Selected = i-2 - for k,v in pairs(presets[presets.Selected] or {}) do - if k == "PresetName" then continue end - Settings[Settings.Train][k] = v - end - UpdateTrainList(true) - end - if i == 2 then - PName:SetText("") - else - PName:SetText(text) - end - end - end - - VGUI["PFrame"] = function(firstDraw) - if not IsValid(pFrame) then return end - local presets = Settings[Settings.Train] and Settings[Settings.Train].Presets - - Presets:Clear() - Presets:AddChoice(Metrostroi.GetPhrase("Spawner.Preset.New"),-2,nil,"icon16/add.png") - Presets:AddChoice(Metrostroi.GetPhrase("Spawner.Preset.Unsaved"),-1,nil,"icon16/disk.png") - Presets:SetText(Metrostroi.GetPhrase("Spawner.Preset.NotSelected")) - PName:SetText("") - - if firstDraw then Presets.selected = -1 end - if presets then - --presets.Selected = false - for i,v in ipairs(presets) do - Presets:AddChoice(v.PresetName or Format("N/A (%d)",i),i,not firstDraw and presets.Selected == i,nil and "icon16/add.png") - end - end - if Presets:GetSelectedID() == -1 then - Presets:ChooseOptionID(2) - if presets then presets.Selected = false end - end - - if not pFrame.Moved then - local posX,posY = frame:GetPos() - pFrame:SetPos(posX+5,posY+30) - pFrame.Moved = true - end - end - - PName.MainPaint = PName.Paint - PName.Paint = function(pnl, w, h) - pnl.MainPaint(pnl,w,h) - if pnl.Error then - surface.SetDrawColor(255,100,0,150) - surface.DrawRect(1,1,w-2,h-2) - end - end - PName.CheckEmpty = function(pnl) - pnl.Error = pnl:GetText():Trim() == "" - if pnl.Error == "" then - pnl:SetPlaceholderText(Metrostroi.GetPhrase("Spawner.Presets.NameError")) - else - pnl:SetPlaceholderText(Metrostroi.GetPhrase("Spawner.Presets.NamePlaceholder")) - end - pnl:SetUpdateOnType(pnl.Error) - return pnl.Error - end - PName.OnValueChange = PName.CheckEmpty - PAdd.DoClick = function() - if PName:CheckEmpty() or not Settings[Settings.Train] then return end - if not Settings[Settings.Train].Presets then Settings[Settings.Train].Presets = {} end - local presets = Settings[Settings.Train].Presets - - presets.Selected = #presets+1 - local settings = { - PresetName = getPresetName(PName:GetValue(),presets) - } - savePresetData(Settings[Settings.Train],settings) - table.insert(presets,settings) - - VGUI.PFrame() - end - PUpdate.DoClick = function() - local presets = Settings[Settings.Train] and Settings[Settings.Train].Presets - if not presets or #presets == 0 or not presets.Selected or presets.Selected > #presets then return end - - local settings = { - PresetName = getPresetName(PName:GetValue(),presets,true) - } - savePresetData(Settings[Settings.Train],settings) - presets[presets.Selected] = settings - - VGUI.PFrame() - end - PRemove.DoClick = function() - local presets = Settings[Settings.Train] and Settings[Settings.Train].Presets - if not presets or #presets == 0 or not presets.Selected or presets.Selected > #presets then return end - table.remove(presets,presets.Selected) - presets.Selected = false - - VGUI.PFrame(true) - end - pFrame.OrigThink = pFrame.Think - pFrame.Think = function(...) - pFrame.OrigThink(...) - if not pFrame:IsActive() and frame:IsActive() then pFrame:MakePopup() end - end - - VGUI.PFrame(true) -end -local function createWagonsFrame() - if IsValid(wFrame) then return end - wFrame = vgui.Create("DFrame",frame) - wFrame:SetTitle(Metrostroi.GetPhrase("Spawner.WagonsTitle")) - wFrame:SetDrawOnTop(true) - wFrame:SetZPos(frame:GetZPos()) - wFrame.btnMaxim:SetVisible(false) - wFrame.btnMinim:SetVisible(false) - --frame:SetSize(275, 34+24*17) - wFrame:SetDraggable(true) - wFrame:SetSizable(false) - wFrame:MakePopup() - wFrame:SetZPos(frame:GetZPos()+1) - wFrame:SetSize(262 + 262*math.floor((1-1)/MaxHorisontal)+10, 58+24*math.min(MaxHorisontal,1)) - --wFrame:Center() - VGUI["WFrame"] = function() - if not IsValid(wFrame) then return end - local posX,posY = frame:GetPos() - wFrame:SetPos(posX+7,posY+32) - end - wFrame.OnRemove = function() - if IsValid(PFrame) then - VGUI.PFrame() - end - end - VGUI.WFrame() -end local function createFrame() MaxWagons = GetGlobalInt("metrostroi_maxtrains")*GetGlobalInt("metrostroi_maxwagons") MaxWagonsOnPlayer = GetGlobalInt("metrostroi_maxtrains_onplayer")*GetGlobalInt("metrostroi_maxwagons") --if GetConVarString("gmod_toolmode") == "train_spawner" then RunConsoleCommand("gmod_toolmode", "weld") end - if IsValid(frame) then return end - Pos = 0 - VGUI = {} - frame = vgui.Create("DFrame") - frame:SetDeleteOnClose(true) - frame:SetTitle(Metrostroi.GetPhrase("Spawner.Title")) - frame.btnMaxim:SetVisible(false) - frame.btnMinim:SetVisible(false) - --frame:SetSize(275, 34+24*17) - frame:SetDraggable(false) - frame:SetSizable(false) - frame:MakePopup() - frame.OnRemove = function(panel) - if IsValid(pFrame) then pFrame:Remove() end - if IsValid(wFrame) then wFrame:Remove() end - UpdateConCMD() - end + if !frame or !frame:IsValid() then + Pos = 0 + VGUI = {} + frame = vgui.Create("DFrame") + frame:SetDeleteOnClose(true) + frame:SetTitle(Metrostroi.GetPhrase("Spawner.Title")) + --frame:SetSize(275, 34+24*17) + frame:SetDraggable(false) + frame:SetSizable(false) + frame:MakePopup() + frame.OnRemove = function(panel) + UpdateConCMD() + end - --frame:SetSize(262 + 262*math.floor((Pos-1)/MaxHorisontal)+10, 58+24*math.min(MaxHorisontal,Pos)) - --frame:Center() - local Close = vgui.Create("DButton", frame) - Close:SetWide(80) - Close:SetPos(5, frame:GetTall() - Close:GetTall() - 5) - Close:SetText(Metrostroi.GetPhrase("Spawner.Close")) + LoadConCMD() + Draw() - Close.DoClick = function() - frame:Close() - end - VGUI["Close"] = function() - if IsValid(Close) and IsValid(frame) then Close:SetPos(5, frame:GetTall() - Close:GetTall() - 5) end - end + frame:SetSize(262 + 262*math.floor((Pos-1)/MaxHorisontal)+10, 58+24*math.min(MaxHorisontal,Pos)) + frame:Center() + local Close = vgui.Create("DButton", frame) + Close:SetWide(80) + Close:SetPos(5, frame:GetTall() - Close:GetTall() - 5) + Close:SetText(Metrostroi.GetPhrase("Spawner.Close")) - local spawn = vgui.Create("DButton", frame) - spawn:SetWide(80) - spawn:SetPos(frame:GetWide() - Close:GetWide() - 5, frame:GetTall() - Close:GetTall() - 5) - spawn:SetText(Metrostroi.GetPhrase("Spawner.Spawn")) - VGUI["spawn"] = function() - if IsValid(spawn) and IsValid(frame) then spawn:SetPos(frame:GetWide() - Close:GetWide() - 5, frame:GetTall() - Close:GetTall() - 5) end - end - - spawn.DoClick = function() - --[[ - local Tool = GetConVarString("gmod_toolmode") - if Tool == "train_spawner" then Tool = "weld" end - RunConsoleCommand("train_spawner_oldT", Tool) - RunConsoleCommand("train_spawner_oldW", LocalPlayer():GetActiveWeapon():GetClass()) - RunConsoleCommand("gmod_tool", "train_spawner") - ]] - local tbl = {} - tbl = table.Copy(Settings[Settings.Train]) - tbl.Train = Settings.Train - tbl.AutoCouple = Settings.AutoCouple - tbl.WagNum = Settings.WagNum or 1 - net.Start("train_spawner_open") - net.WriteTable(tbl) - net.SendToServer() - local tool = LocalPlayer():GetTool("train_spawner") - tool.Settings = tbl - local ENT = scripted_ents.Get(tool.Settings.Train) - if ENT and ENT.Spawner then tool.Train = ENT end - frame:Close() - end - - local Presets = vgui.Create("DButton", frame) - Presets:SetWide(24) - --Presets:SetPos(5, spawn:GetPos() + 5) - Presets:SetText("") - Presets:SetImage("icon16/book.png") - - Presets.DoClick = function() - if IsValid(pFrame) then pFrame:Remove() else - createPresetsFrame() - pFrame.OnRemove = function() if IsValid(Presets) then Presets:SetImage("icon16/book.png") end end + Close.DoClick = function() + frame:Close() end - Presets:SetImage(IsValid(pFrame) and "icon16/book_edit.png" or "icon16/book.png") - end - VGUI["Presets"] = function() - if not IsValid(Presets) or not IsValid(frame) then return end - local posX,posY,width = Close:GetBounds() - Presets:SetPos(posX + width + 5, posY) - end - - local Wagons = vgui.Create("DButton", frame) - Wagons:SetWide(24) - --Wagons:SetPos(5, spawn:GetPos() + 5) - Wagons:SetText("") - Wagons:SetImage("icon16/table.png") - - Wagons.DoClick = function() - if IsValid(wFrame) then wFrame:Remove() else - createWagonsFrame() - wFrame.OnRemove = function() Wagons:SetImage("icon16/table.png") end + VGUI["Close"] = function() + if IsValid(Close) and IsValid(frame) then Close:SetPos(5, frame:GetTall() - Close:GetTall() - 5) end + end + local spawn = vgui.Create("DButton", frame) + spawn:SetWide(80) + spawn:SetPos(frame:GetWide() - Close:GetWide() - 5, frame:GetTall() - Close:GetTall() - 5) + spawn:SetText(Metrostroi.GetPhrase("Spawner.Spawn")) + VGUI["spawn"] = function() + if IsValid(spawn) and IsValid(frame) then spawn:SetPos(frame:GetWide() - Close:GetWide() - 5, frame:GetTall() - Close:GetTall() - 5) end end - Wagons:SetImage(IsValid(wFrame) and "icon16/table_edit.png" or "icon16/table.png") - end - VGUI["Wagons"] = function() - if not IsValid(Wagons) or not IsValid(frame) then return end - local posX,posY,width = Presets:GetBounds() - Wagons:SetPos(posX + width + 5, posY) - end - LoadConCMD() - Draw() + spawn.DoClick = function() + --[[ + local Tool = GetConVarString("gmod_toolmode") + if Tool == "train_spawner" then Tool = "weld" end + RunConsoleCommand("train_spawner_oldT", Tool) + RunConsoleCommand("train_spawner_oldW", LocalPlayer():GetActiveWeapon():GetClass()) + RunConsoleCommand("gmod_tool", "train_spawner") + ]] + local tbl = {} + tbl = table.Copy(Settings[Settings.Train]) + tbl.Train = Settings.Train + tbl.AutoCouple = Settings.AutoCouple + tbl.WagNum = Settings.WagNum or 1 + net.Start("train_spawner_open") + net.WriteTable(tbl) + net.SendToServer() + local tool = LocalPlayer():GetTool("train_spawner") + tool.Settings = tbl + local ENT = scripted_ents.Get(tool.Settings.Train) + if ENT and ENT.Spawner then tool.Train = ENT end + frame:Close() + end + end end net.Receive("MetrostroiTrainSpawner",createFrame) diff --git a/lua/entities/gmod_train_sprite.lua b/lua/entities/gmod_train_sprite.lua deleted file mode 100644 index d92b579..0000000 --- a/lua/entities/gmod_train_sprite.lua +++ /dev/null @@ -1,136 +0,0 @@ ---[[------------------------------------------------------------------------- -Client sprite entity for metrostroi trains, trying to copy -env_sprite render behavior with oun functions ----------------------------------------------------------------------------]] -AddCSLuaFile() -ENT.Type = "anim" -ENT.PrintName = "Clientside sprite" - -ENT.Spawnable = false -ENT.AdminSpawnable = false - -if SERVER then return end -MetrostroiSprites = MetrostroiSprites or {} -MetrostroiSprites2D = MetrostroiSprites2D or {} - -local function colAlpha(col,a) - return Color(col.r*a,col.g*a,col.b*a) -end - -hook.Add("PostDrawTranslucentRenderables","MetrostroiClientSprite",function(_,isSkybox) - --print(ENT.Sprites) - if isSkybox then return end - --cam.Start3D() - - --render.SetLightingMode(2) - - for i=1, #MetrostroiSprites do - local ent = MetrostroiSprites[i] - if not ent.Visible or ent.Brightness <= 0 then continue end - - - local pos = ent:GetPos() - local visibility = util.PixelVisible(pos, 5, ent.vHandle)--math.max(0,util.PixelVisible(pos, 5, vHandle)-0.25)/0.75 - if visibility > 0 then - render.SetMaterial(ent.Material) - render.DrawSprite(pos,128*ent.Scale,128*ent.Scale,colAlpha(ent:GetColor(),visibility*ent.Brightness)) - end - end - - for i=1, #MetrostroiSprites2D do - local ent = MetrostroiSprites2D[i] - if not ent.Visible or ent.Brightness <= 0 then continue end - - - local pos = ent:GetPos() - local visibility = util.PixelVisible(pos, 5, ent.vHandle)--math.max(0,util.PixelVisible(pos, 5, vHandle)-0.25)/0.75 - if visibility > 0 then - render.SetMaterial(ent.Material) - cam.IgnoreZ(true) - render.DrawSprite(pos,128*ent.Scale,128*ent.Scale,colAlpha(ent:GetColor(),visibility*ent.Brightness)) - cam.IgnoreZ(false) - --render.DrawQuadEasy( ent:GetPos(),-EyeVector(), 128*ent.Scale, 128*ent.Scale, ent:GetColor()) - end - end - - --render.SetLightingMode(0) - --[[for i=1, #MetrostroiSprites2D do - local ent = MetrostroiSprites2D[i] - if not ent.Visible or ent.Brightness <= 0 then continue end - - ent._visibility = util.PixelVisible(ent:GetPos(), 5, ent.vHandle)--math.max(0,util.PixelVisible(pos, 5, vHandle)-0.25)/0.75 - end]] - --cam.End3D() -end) - -hook.Remove("PreDrawViewModel","MetrostroiClientSprite",function() -end) - -function ENT:Initialize() - self:SetSize(self.Scale or 1) - self:SetTexture(self.Texture or "sprites/glow1.vmt") - self:SetColor(self.Color or Color(255,255,255)) - self:SetBrightness(1) - self:SetVisible(true) - - self.vHandle = util.GetPixelVisibleHandle() - table.insert(MetrostroiSprites2D,self) -end - -function ENT:OnRemove() - if self.Is3D then - for i,v in ipairs(MetrostroiSprites) do - if self == v then table.remove(MetrostroiSprites,i) end - end - else - for i,v in ipairs(MetrostroiSprites2D) do - if self == v then table.remove(MetrostroiSprites2D,i) end - end - end -end - -function ENT:SetSize(scale) - self.Scale = math.max(scale,0) -end - -__TEST = (__TEST or 0) + 1 -function ENT:SetTexture(texture,isSprite) - self.Texture = texture - self.Material = Metrostroi.MakeSpriteTexture(texture,isSprite) - --[[if isSprite then - self.Material = CreateMaterial(texture..":sprite0000"..__TEST,"Sprite",{ - ["$basetexture"] = texture, - ["$spriteorientation"] = "vp_parallel", - ["$spriteorigin"] = "[ 0.50 0.50 ]", - ["$illumfactor"] = 7, - ["$spriterendermode"] = 3, - }) - else - self.Material =CreateMaterial(texture..":spriteug0000"..__TEST,"UnlitGeneric",{ - ["$basetexture"] = texture, - ["$translucent"]= 1, - ["$additive"] = 1, - ["$vertexcolor"] = 1, - --["$vertexalpha"] = 1, - }) - end]] -end - -function ENT:SetSColor(col) - self.Color = colAlpha(col,col.a/255) -end -function ENT:SetBrightness(brightness) - self.Brightness = brightness -end -function ENT:SetVisible(vis) - self.Visible = vis -end -function ENT:Set3D(is3D) - self:OnRemove() - if is3D then - table.insert(MetrostroiSprites,self) - else - table.insert(MetrostroiSprites2D,self) - end - self.Is3D = is3D -end \ No newline at end of file diff --git a/lua/entities/gmod_train_wheels/cl_init.lua b/lua/entities/gmod_train_wheels/cl_init.lua index 6fc6c8e..959a738 100644 --- a/lua/entities/gmod_train_wheels/cl_init.lua +++ b/lua/entities/gmod_train_wheels/cl_init.lua @@ -15,5 +15,5 @@ function ENT:Think() -- Rotate wheel self.Angle = ((self.Angle or math.random()) + ang_vel*dT) % 1.0 self:SetPoseParameter("position",1.0-self.Angle) - --self:InvalidateBoneCache() + self:InvalidateBoneCache() end diff --git a/lua/metrostroi/_obsolete/_turbostroi_v2_old b/lua/metrostroi/_obsolete/_turbostroi_v2_old deleted file mode 100644 index bb3cefe..0000000 --- a/lua/metrostroi/_obsolete/_turbostroi_v2_old +++ /dev/null @@ -1,489 +0,0 @@ --------------------------------------------------------------------------------- --- Simulation acceleration DLL support --------------------------------------------------------------------------------- -if Turbostroi and not Turbostroi.SetMTAffinityMask then return end -local turbostroiTrains = {} -if not TURBOSTROI then - local FPS = 33 - local messageTimeout = 0 - local messageCounter = 0 - local dataCache = {{},{}} - hook.Add("EntityRemoved","Turbostroi",function(ent) - if dataCache[ent] then - dataCache[ent] = nil - end - if turbostroiTrains[ent] then - turbostroiTrains[ent] = nil - end - end) - for k,ent in pairs(ents.GetAll()) do - if ent.Base == "gmod_subway_base" and not ent.NoTrain and not ent.DontAccelerateSimulation then - turbostroiTrains[ent] = true - end - end - hook.Add("OnEntityCreated","Turbostroi",function(ent) - timer.Simple(0,function() - if IsValid(ent) and ent.Base == "gmod_subway_base" and not ent.NoTrain and not ent.DontAccelerateSimulation then - turbostroiTrains[ent] = true - end - end) - end) - local inputCache = {} - local id,system,name,index,value - local _DEBUGPRINT - local function updateTrains(trains) - --local recvMessage = Turbostroi.RecvMessage - -- Get data packets from simulation - for train in pairs(trains) do - if not dataCache[train] then - if not Turbostroi.SendMessage(train,5,"","",0,0) then return end - dataCache[train] = {wiresW = {}} - - for sys_name,system in pairs(train.Systems) do - if system.OutputsList and system.DontAccelerateSimulation then - for _,name in pairs(system.OutputsList) do - local value = system[name] or 0 - if type(value) == "boolean" then value = value and 1 or 0 end - if type(value) == "number" then - if not dataCache[train][sys_name] then dataCache[train][sys_name] = {} end - dataCache[train][sys_name][name] = math.Round(value) - end - end - end - end - end - for i,message in pairs(Turbostroi.RecvMessages(train)) do --NEWTURBOSTROI - id,system,name,index,value = unpack(message,0) --NEWTURBOSTROI - --while true do --OLDTURBOSTROI - --id,system,name,index,value = Turbostroi.RecvMessage(train) - if id == 1 then - if train.Systems[system] then - train.Systems[system][name] = value - if train.TriggerTurbostroiInput then train:TriggerTurbostroiInput(system,name,value) end - end - end - if id == 2 then - if index == 0 and name ~= "bass" then index = nil end - if value == 0 and name ~= "bass" then value = nil end - if name == "" then name = nil end - --net.WriteString(name) - train:PlayOnce(system,name,index,value) - end - if id == 3 then - if name == "on" then - --print("[!]Wire "..index.." starts update! Value "..value) - dataCache[train]["wiresW"][index] = value - --train:WriteTrainWire(index,value) - if not train.TrainWireWritersID[index] then train.TrainWireWritersID[index] = true end - train.TrainWireTurbostroi[index] = value - if train.TriggerTurbostroiInput then train:TriggerTurbostroiInput("TrainWire",index,value) end - else - --print("[!]Wire "..index.." stop update!") - dataCache[train]["wiresW"][index] = nil - end - end - if id == 4 then - if train.Systems[system] then - train.Systems[system]:TriggerInput(name,value) - end - end - if id == 5 then - for twid,value in pairs(dataCache[train]["wiresW"]) do - --train:WriteTrainWire(twid,value) - end - end - if id == 6 then - if IsValid(Player(index)) then - if value==0 then - Player(index):PrintMessage( HUD_PRINTCONSOLE, "--START" ) - print("--START") - end - Player(index):PrintMessage( HUD_PRINTCONSOLE, system ) - print(system) - end - end - --print(id,name) - - --if not id then - --break--OLDTURBOSTROI - --end - messageCounter = messageCounter + 1 - end - end - -- Send train wire values - -- Output all system values - for train in pairs(trains) do - if train.ReadTrainWire then - for i in pairs(train.TrainWires) do - if not dataCache[train]["wires"] then dataCache[train]["wires"] = {} end - if dataCache[train]["wires"][i] ~= train:ReadTrainWire(i) then - if Turbostroi.SendMessage(train,3,"","",i,train:ReadTrainWire(i)) then - dataCache[train]["wires"][i] = train:ReadTrainWire(i) - end - end - end - for sys_name,system in pairs(train.Systems) do - if system.OutputsList and system.DontAccelerateSimulation then - for _,name in pairs(system.OutputsList) do - local value = system[name] or 0 - if type(value) == "boolean" then - value = value and 1 or 0 - end - if type(value) == "number" then - value = math.Round(value) - if not dataCache[train][sys_name] then dataCache[train][sys_name] = {} end - if dataCache[train][sys_name][name] ~= value then - if Turbostroi.SendMessage(train,1,sys_name,name,0,value) then - dataCache[train][sys_name][name] = value - end - end - end - end - end - end - end - end - end - if Turbostroi then - concommand.Add("metrostroi_turbostroi_run",function(ply,_,_,cmd) - if not IsValid(ply) then return end - local train = ply:GetTrain() - if IsValid(train) then - print(cmd:sub(1,2),cmd:sub(3,4)) - Turbostroi.SendMessage(train,6,cmd:sub(1,255),cmd:sub(256,511),ply:UserID(),0) - end - end) - function Turbostroi.TriggerInput(train,system,name,value) - local v = value or 0 - if type(value) == "boolean" then v = value and 1 or 0 end - Turbostroi.SendMessage(train,4,system,name,0,v) - --end - end - Turbostroi.SetMTAffinityMask(8) -- CPU5 CPU4 on 6 core --NEWTURBOSTROI - Turbostroi.SetSTAffinityMask(7) -- 0 - disabled --NEWTURBOSTROI - Turbostroi.SetSimulationFPS(FPS) - hook.Add("Think", "Turbostroi_Think", function() - if not Turbostroi then return end - - -- Proceed with the think loop - --Turbostroi.SetTargetTime(CurTime()) //depricated! now using engine - --Turbostroi.Think() //depricated! now using engine - - -- Update all types of trains - --for k,v in ipairs(turbostroiTrains) do - updateTrains(turbostroiTrains) - --end - -- HACK - GLOBAL_SKIP_TRAIN_SYSTEMS = nil - - -- Print stats - if ((CurTime() - messageTimeout) > 1.0) then - messageTimeout = CurTime() - --RunConsoleCommand("say",Format("Metrostroi: %d messages per second (%d per tick)",messageCounter,messageCounter / FPS)) - messageCounter = 0 - end - end) - end - return -end - - - - --------------------------------------------------------------------------------- --- Turbostroi scripts --------------------------------------------------------------------------------- --- NEW API -local ffi = require("ffi") -local C = ffi.load("gmsv_turbostroi_win32") -ffi.cdef[[ -bool ThreadSendMessage(void *p, int message, const char* system_name, const char* name, double index, double value); -]] - -Metrostroi = {} -local dataCache = {wires = {},wiresW = {},wiresL = {}} -Metrostroi.BaseSystems = {} -- Systems that can be loaded -Metrostroi.Systems = {} -- Constructors for systems - -LoadSystems = {} -- Systems that must be loaded/initialized -GlobalTrain = {} -- Train emulator -GlobalTrain.Systems = {} -- Train systems -GlobalTrain.TrainWires = {} -GlobalTrain.WriteTrainWires = {} - -TimeMinus = 0 -_Time = 0 -function CurTime() - --return CurrentTime-TimeMinus - return _Time -end ---function CurTime() return os.clock() end - -function Metrostroi.DefineSystem(name) - TRAIN_SYSTEM = {} - Metrostroi.BaseSystems[name] = TRAIN_SYSTEM - - -- Create constructor - Metrostroi.Systems[name] = function(train,...) - local tbl = { _base = name } - local TRAIN_SYSTEM = Metrostroi.BaseSystems[tbl._base] - if not TRAIN_SYSTEM then print("No system: "..tbl._base) return end - for k,v in pairs(TRAIN_SYSTEM) do - if type(v) == "function" then - tbl[k] = function(...) - if not Metrostroi.BaseSystems[tbl._base][k] then - print("ERROR",k,tbl._base) - end - return Metrostroi.BaseSystems[tbl._base][k](...) - end - else - tbl[k] = v - end - end - - tbl.Initialize = tbl.Initialize or function() end - tbl.Think = tbl.Think or function() end - tbl.Inputs = tbl.Inputs or function() return {} end - tbl.Outputs = tbl.Outputs or function() return {} end - tbl.TriggerInput = tbl.TriggerInput or function() end - tbl.TriggerOutput = tbl.TriggerOutput or function() end - - tbl.Train = train - tbl:Initialize(...) - tbl.OutputsList = tbl:Outputs() - tbl.InputsList = tbl:Inputs() - tbl.IsInput = {} - for k,v in pairs(tbl.InputsList) do tbl.IsInput[v] = true end - return tbl - end -end - -function GlobalTrain.LoadSystem(self,a,b,...) - local name - local sys_name - if b then - name = b - sys_name = a - else - name = a - sys_name = a - end - - if not Metrostroi.Systems[name] then error("No system defined: "..name) end - if self.Systems[sys_name] then error("System already defined: "..sys_name) end - - self[sys_name] = Metrostroi.Systems[name](self,...) - self[sys_name].Name = sys_name - self[sys_name].BaseName = name - self.Systems[sys_name] = self[sys_name] - - -- Don't simulate on here - local no_acceleration = Metrostroi.BaseSystems[name].DontAccelerateSimulation - if no_acceleration then - self.Systems[sys_name].Think = function() end - self.Systems[sys_name].TriggerInput = function(train,name,value) - local v = value or 0 - if type(value) == "boolean" then v = value and 1 or 0 end - C.ThreadSendMessage(_userdata, 4,sys_name,name,0,v) - end -- replace with new api - - --Precache values - elseif self[sys_name].OutputsList then - dataCache[sys_name] = {} - for _,name in pairs(self[sys_name].OutputsList) do - dataCache[sys_name][name] = 0--self[sys_name][name] or 0 - end - end -end - -function GlobalTrain.PlayOnce(self,soundid,location,range,pitch) - C.ThreadSendMessage(_userdata, 2,soundid or "",location or "",range or 0,pitch or 0) -- replace with new api -end - -function GlobalTrain.ReadTrainWire(self,n) - return self.TrainWires[n] or 0 -end - -function GlobalTrain.WriteTrainWire(self,n,v) - self.WriteTrainWires[n] = v -end - - -GlobalTrain.DeltaTime = 0.33 - --------------------------------------------------------------------------------- --- Main train code (turbostroi side) --------------------------------------------------------------------------------- -print("[!] Train initialized!") -function Think(skipped) - -- This is just blatant copy paste from init.lua of base train entity - local self = GlobalTrain - - --[[ if skipped then - self.BeSkip = self.BeSkip or CurTime() - return - else - self.PrevTime = self.PrevTime or CurTime() - if self.BeSkip then - --print(1,(CurTime()-self.BeSkip)-0.03) - TimeMinus = TimeMinus + math.max(0,(CurTime()-self.BeSkip)-0.03) - --print(2,TimeMinus) - self.BeSkip = false - end - end--]] - - -- Is initialized? - if not self.Initialized then - Initialize() - return - end - - self.DeltaTime = (CurrentTime - self.PrevTime)--self.DeltaTime+math.min(0.02,((CurrentTime - self.PrevTime)-self.DeltaTime)*0.1) - self.PrevTime = CurrentTime - if skipped or self.DeltaTime<=0 then return end - _Time = _Time+self.DeltaTime - - -- Perform data exchange - DataExchange() - - -- Simulate according to schedule - for i,s in ipairs(self.Schedule) do - for k,v in ipairs(s) do - v:Think(self.DeltaTime / (v.SubIterations or 1),i) - end - end -end - -function Initialize() - if not CurrentTime then return end - print("[!] Loading systems") - local time = os.clock() - for k,v in pairs(LoadSystems) do - GlobalTrain:LoadSystem(k,v) - end - print(string.format("[!] -Took %.2fs",os.clock()-time)) - GlobalTrain.PrevTime = CurrentTime - local iterationsCount = 1 - if (not GlobalTrain.Schedule) or (iterationsCount ~= GlobalTrain.Schedule.IterationsCount) then - GlobalTrain.Schedule = { IterationsCount = iterationsCount } - local SystemIterations = {} - - -- Find max number of iterations - local maxIterations = 0 - for k,v in pairs(GlobalTrain.Systems) do - SystemIterations[k] = (v.SubIterations or 1) - maxIterations = math.max(maxIterations,(v.SubIterations or 1)) - end - - -- Create a schedule of simulation - for iteration=1,maxIterations do - GlobalTrain.Schedule[iteration] = {} - -- Populate schedule - for k,v in pairs(GlobalTrain.Systems) do - if ((iteration)%(maxIterations/(v.SubIterations or 1))) == 0 then - table.insert(GlobalTrain.Schedule[iteration],v) - end - - end - end - end - GlobalTrain.Initialized = true -end - -local id,system,name,index,value -function DataExchange() - -- Get data packets - for i,message in pairs(RecvMessages()) do - id,system,name,index,value = unpack(message,0) --NEWTURBOSTROI - --while true do - --id,system,name,index,value = RecvMessage() --OLDTURBOSTROI - if id == 1 then - if GlobalTrain.Systems[system] then - GlobalTrain.Systems[system][name] = value - end - end - if id == 3 then - dataCache["wiresW"][index] = value - end - if id == 4 then - if GlobalTrain.Systems[system] then - GlobalTrain.Systems[system]:TriggerInput(name,value) - end - end - if id == 5 then - dataCache["wiresL"] = {} - end - if id == 6 then - local scr = [[ - local _retdata="" - local print = function(...) - for k,v in ipairs({...}) do _retdata = _retdata..tostring(v).."\t" end - _retdata = _retdata.."\n" - end - ]] - scr = scr..system..name.."\n" - scr = scr.."return _retdata" - local data,err = loadstring(scr) - if data then - local ret = tostring(data()) or "N\\A" - for i=0,math.ceil(#ret/63) do - C.ThreadSendMessage(_userdata, 6, ret:sub(i*63,(i+1)*63-1), "",index,i) - end - else - print(err) - C.ThreadSendMessage(_userdata, 6, tostring(err), "",index,0) - end - --Turbostroi.SendMessage(train,6,cmd:sub(1,255),cmd:sub(256,511),ply:UserID(),0) - end - if not id then break end - end - for twid,value in pairs(dataCache["wiresW"]) do - GlobalTrain.TrainWires[twid] = value - end - - -- Output all variable values - for sys_name,system in pairs(GlobalTrain.Systems) do - if system.OutputsList and (not system.DontAccelerateSimulation) then - for _,name in pairs(system.OutputsList) do - local value = (system[name] or 0) - --if type(value) == "boolean" then value = value and 1 or 0 end - if not dataCache[sys_name] then print(sys_name) end - if dataCache[sys_name][name] ~= value then - --print(sys_name,name,value) - --if SendMessage(1,sys_name,name,0,tonumber(value) or 0) then -- OLD API - if C.ThreadSendMessage(_userdata, 1, sys_name , name, 0, tonumber(value) or 0) then -- NEW API - dataCache[sys_name][name] = value - end - end - end - end - end - - -- Output train wire writes - for twID,value in pairs(GlobalTrain.WriteTrainWires) do - --local value = tonumber(value) or 0 - if dataCache["wires"][twID] ~= value then - dataCache["wires"][twID] = value - dataCache["wiresL"][twID] = false - end - if not dataCache["wiresL"][twID] or dataCache["wiresL"][twID]~=GlobalTrain.PrevTime then - --SendMessage(3,"","on",tonumber(twID) or 0,dataCache["wires"][twID]) -- OLD API - C.ThreadSendMessage(_userdata, 3, "", "on", tonumber(twID) or 0, dataCache["wires"][twID]) -- NEW API - --print("[!]Wire "..twID.." starts update! Value "..dataCache["wires"][twID]) - end - GlobalTrain.WriteTrainWires[twID] = nil - dataCache["wiresL"][twID] = CurTime() - end - for twID,time in pairs(dataCache["wiresL"]) do - if time~=CurTime() then - C.ThreadSendMessage(_userdata,3, "", "off", tonumber(twID) or 0, 0) - --print("[!]Wire "..twID.." stops update!") - dataCache["wiresL"][twID] = nil - end - end - --SendMessage(5,"","",0,0) -- OLD API - --C.ThreadSendMessage(_userdata, 5,"","",0,0) -- NEW API - --print(string.format("%s %s",count,#msgCache)) - --count = 0 - -end diff --git a/lua/metrostroi/cl_cpanel.lua b/lua/metrostroi/cl_cpanel.lua index 4380e55..24da004 100644 --- a/lua/metrostroi/cl_cpanel.lua +++ b/lua/metrostroi/cl_cpanel.lua @@ -2,12 +2,8 @@ local function AddBox(panel,cmd,str) panel:AddControl("CheckBox",{Label=str, Command=cmd}) end ---Helper function for common use -local function AddTextBox(panel,cmd,str) - panel:AddControl("TextBox",{Label=str, Command=cmd}) -end -local function AddSlider(panel,cmd,str,min,max,fl) - panel:AddControl("Slider",{Label=str, Command=cmd,min=min,max=max,type=fl and "float"}) +local function AddSlider(panel,cmd,str,min,max) + panel:AddControl("Slider",{Label=str, Command=cmd,min=min,max=max}) end -- Build admin panel local function AdminPanel(panel) @@ -42,30 +38,14 @@ local function ClientPanel(panel) AddBox(panel,"metrostroi_disablehud",Metrostroi.GetPhrase("Panel.DisableHUD")) AddBox(panel,"metrostroi_disablecamaccel",Metrostroi.GetPhrase("Panel.DisableCamAccel")) AddBox(panel,"metrostroi_disablehovertext",Metrostroi.GetPhrase("Panel.DisableHoverText")) - AddBox(panel,"metrostroi_disablehovertextpos",Metrostroi.GetPhrase("Panel.DisableHoverTextP")) AddBox(panel,"metrostroi_screenshotmode",Metrostroi.GetPhrase("Panel.ScreenshotMode")) AddBox(panel,"metrostroi_shadows1",Metrostroi.GetPhrase("Panel.ShadowsHeadlight")) AddBox(panel,"metrostroi_shadows3",Metrostroi.GetPhrase("Panel.RedLights")) AddBox(panel,"metrostroi_shadows2",Metrostroi.GetPhrase("Panel.ShadowsOther")) - AddBox(panel,"metrostroi_shadows4",Metrostroi.GetPhrase("Panel.PanelLights")) - AddBox(panel,"metrostroi_sprites",Metrostroi.GetPhrase("Panel.PanelSprites")) - local DRouteNumber = panel:TextEntry(Metrostroi.GetPhrase("Panel.RouteNumber"),"metrostroi_route_number") AddBox(panel,"metrostroi_minimizedshow",Metrostroi.GetPhrase("Panel.MinimizedShow")) AddSlider(panel,"metrostroi_cabfov",Metrostroi.GetPhrase("Panel.FOV"),65,100) - AddSlider(panel,"metrostroi_cabz",Metrostroi.GetPhrase("Panel.Z"),-10,10,true) AddSlider(panel,"metrostroi_renderdistance",Metrostroi.GetPhrase("Panel.RenderDistance"),960,3072) panel:Button(Metrostroi.GetPhrase("Panel.ReloadClient"),"metrostroi_reload_client",true) - - function DRouteNumber:OnChange() - local oldval = self:GetValue() - local NewValue = "" - for i = 1,math.min(3,#oldval) do - NewValue = NewValue..((oldval[i] or ""):upper():match("[%d]+") or "") - end - local oldpos = self:GetCaretPos() - self:SetText(NewValue) - self:SetCaretPos(math.min(#NewValue,oldpos,3)) - end end local function ClientAdvanced(panel) panel:ClearControls() diff --git a/lua/metrostroi/cl_language.lua b/lua/metrostroi/cl_language.lua index f79a34f..40523d1 100644 --- a/lua/metrostroi/cl_language.lua +++ b/lua/metrostroi/cl_language.lua @@ -28,19 +28,15 @@ end if not file.Exists("metrostroi_data","DATA") then file.CreateDir("metrostroi_data") end if not file.Exists("metrostroi_data/languages","DATA") then file.CreateDir("metrostroi_data/languages") end local function debugmsg(...) - if GetConVarNumber("metrostroi_drawdebug") == 0 then return end - MsgC(...) - MsgC("\n") + if GetConVarNumber("metrostroi_drawdebug") > 0 then + MsgC(...) + MsgC("\n") + end end local function errmsg(...) - if GetConVarNumber("metrostroi_drawdebug") == 0 then return end MsgC(...) ErrorNoHalt("\n") end -local function errnhmsg(...) - if GetConVarNumber("metrostroi_drawdebug") == 0 then return end - ErrorNoHalt(...) -end function Metrostroi.LoadLanguage(lang,force) if not Metrostroi.Languages[lang] then return end local ENTl = list.GetForEdit("SpawnableEntities") @@ -76,11 +72,11 @@ function Metrostroi.LoadLanguage(lang,force) debugmsg(Color(255,0,255),"Add language ",lang," phrase:\t",Color(0,255,0),id,"=",phrase,Color(255,0,255)," for class ",Color(0,255,0),class) elseif tbl[2] == "Buttons" then if not ENT.ButtonMap[tbl[3]] then - errnhmsg("Check translation for "..id.."! Can't find panel named "..tbl[3].."\n") + ErrorNoHalt("Check translation for "..id.."! Can't find panel named "..tbl[3].."\n") continue end if not ENT.ButtonMap[tbl[3]].buttons then - errnhmsg("Check translation for "..id.."! Can't find buttons in panel named "..tbl[3].."\n") + ErrorNoHalt("Check translation for "..id.."! Can't find buttons in panel named "..tbl[3].."\n") end local button for k,v in pairs(ENT.ButtonMap[tbl[3]].buttons) do @@ -91,7 +87,7 @@ function Metrostroi.LoadLanguage(lang,force) end end if not button then - errnhmsg("Check translation for "..id.."! Can't find button named "..tbl[4].." in panel "..tbl[3].."\n") + ErrorNoHalt("Check translation for "..id.."! Can't find button named "..tbl[4].." in panel "..tbl[3].."\n") end elseif tbl[2] == "Spawner" then if not ENT.Spawner then @@ -155,11 +151,12 @@ local function parseLangFile(filename,txt) local ignoring = false for line in txt:gmatch("[^\n\r]+") do i = i + 1 - if ignoring and line:find("%][^\\]?#") then ignoring = false continue end + if line:find("%][^\\]?#") then ignoring = false continue end if ignoring then continue end if line:find("[^\\]?#%[") then ignoring = true end local lang,founded = removeSpaces(line):gsub("^%[([%w]+)%]$","%1") if founded > 0 then + print("Selected lang",lang) currlang = lang Metrostroi.Languages[lang] = Metrostroi.Languages[lang] or {} continue @@ -168,14 +165,14 @@ local function parseLangFile(filename,txt) local k,v = line:match("([^=]+)=([^=]+)") if k and v then if not currlang then - errnhmsg("Metrostroi: Language not selected\n") + ErrorNoHalt("Metrostroi: Language not selected\n") break end Metrostroi.Languages[currlang][removeSpaces(k)] = removeSpaces(v):gsub("\\n","\n"):gsub("\\t","\t") continue end if #line > 0 and line[1] ~="#" then - errnhmsg(Format("Metrostroi: Language parse error in line %d: %s [%s]\n",i,line,filename)) + ErrorNoHalt(Format("Metrostroi: Language parse error in line %d: %s [%s]\n",i,line,filename)) break end end @@ -188,7 +185,7 @@ local function exportLangJSON(filename,txt) local ignoring = false for line in txt:gmatch("[^\n\r]+") do i = i + 1 - if ignoring and line:find("%][^\\]?#") then ignoring = false continue end + if line:find("%][^\\]?#") then ignoring = false continue end if ignoring then continue end if line:find("[^\\]?#%[") then ignoring = true end local lang,founded = removeSpaces(line):gsub("^%[([%w]+)%]$","%1") @@ -202,7 +199,7 @@ local function exportLangJSON(filename,txt) local k,v = line:match("([^=]+)=([^=]+)") if k and v then if not currlang then - errnhmsg("Metrostroi: Language not selected\n") + ErrorNoHalt("Metrostroi: Language not selected\n") break end local str,addstr = langs[currlang],Format('\n\t"%s": "%s"',removeSpaces(k),removeSpaces(string.JavascriptSafe(v):gsub("\\\\([tn])","\\%1"))) @@ -214,7 +211,7 @@ local function exportLangJSON(filename,txt) continue end if #line > 0 and line[1] ~="#" then - errnhmsg(Format("Metrostroi: Language parse error in line %d: %s [%s]\n",i,line,filename)) + ErrorNoHalt(Format("Metrostroi: Language parse error in line %d: %s [%s]\n",i,line,filename)) break end end @@ -247,7 +244,7 @@ local function reloadLang() end end--]] - --Load builtin lua languages/*_base.lua + --Load builtin lua languages for k, filename in pairs(file.Find("metrostroi_data/languages/*_base.lua","LUA")) do local lang = include("metrostroi_data/languages/"..filename) if not lang then continue end diff --git a/lua/metrostroi/cl_util.lua b/lua/metrostroi/cl_util.lua index 3ddf491..47a3e16 100644 --- a/lua/metrostroi/cl_util.lua +++ b/lua/metrostroi/cl_util.lua @@ -2,102 +2,102 @@ -- Clientside utility functions -------------------------------------------------------------------------------- local bitmap_font_1 = { - [10] = { - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0}, - ["."] = { - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 0,0,1,0}, - [1] = { - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1}, - [2] = { - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 1,1,1,1, - 1,0,0,0, - 1,0,0,0, - 1,1,1,1}, - [3] = { - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 1,1,1,1}, - [4] = { - 1,0,0,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1}, - [5] = { - 1,1,1,1, - 1,0,0,0, - 1,0,0,0, - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 1,1,1,1}, - [6] = { - 1,1,1,1, - 1,0,0,0, - 1,0,0,0, - 1,1,1,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1}, - [7] = { - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1}, - [8] = { - 1,1,1,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1}, - [9] = { - 1,1,1,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1}, - [0] = { - 1,1,1,1, - 1,0,0,1, - 1,0,0,1, - 1,0,0,1, - 1,0,0,1, - 1,0,0,1, - 1,1,1,1}, + [10] = { + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0}, + ["."] = { + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0,0,1,0}, + [1] = { + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1}, + [2] = { + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 1,1,1,1, + 1,0,0,0, + 1,0,0,0, + 1,1,1,1}, + [3] = { + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 1,1,1,1}, + [4] = { + 1,0,0,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1}, + [5] = { + 1,1,1,1, + 1,0,0,0, + 1,0,0,0, + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 1,1,1,1}, + [6] = { + 1,1,1,1, + 1,0,0,0, + 1,0,0,0, + 1,1,1,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1}, + [7] = { + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1}, + [8] = { + 1,1,1,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1}, + [9] = { + 1,1,1,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1, + 0,0,0,1, + 0,0,0,1, + 0,0,0,1}, + [0] = { + 1,1,1,1, + 1,0,0,1, + 1,0,0,1, + 1,0,0,1, + 1,0,0,1, + 1,0,0,1, + 1,1,1,1}, } @@ -105,24 +105,24 @@ local bitmap_font_1 = { -------------------------------------------------------------------------------- -- Draw bitmap digit function Metrostroi.DrawClockDigit(cx,cy,scale,digit) - local bitmap = bitmap_font_1[digit] - if not bitmap then return end + local bitmap = bitmap_font_1[digit] + if not bitmap then return end - local w=12*scale - local p=8*scale - for i=1,4*7 do - local x = (i-1)%4 - local y = math.floor((i-1)/4) - if bitmap[i] == 1 then - for z=1,6,1 do - surface.SetDrawColor(Color(255,60,0,math.max(0,30-1*z*z))) - surface.DrawRect(cx+x*w-z*scale, cy+y*w-z*scale, p+2*z*scale, p+2*z*scale) - end + local w=12*scale + local p=8*scale + for i=1,4*7 do + local x = (i-1)%4 + local y = math.floor((i-1)/4) + if bitmap[i] == 1 then + for z=1,6,1 do + surface.SetDrawColor(Color(255,60,0,math.max(0,30-1*z*z))) + surface.DrawRect(cx+x*w-z*scale, cy+y*w-z*scale, p+2*z*scale, p+2*z*scale) + end - surface.SetDrawColor(Color(255,240,0,255)) - surface.DrawRect(cx+x*w, cy+y*w, p, p) - end - end + surface.SetDrawColor(Color(255,240,0,255)) + surface.DrawRect(cx+x*w, cy+y*w, p, p) + end + end end @@ -130,492 +130,629 @@ end function Metrostroi.PositionFromPanel(panel,button_id_or_vec,z,x,y,train) - local self = train or ENT - local panel = self.ButtonMap[panel] - if not panel then return Vector(0,0,0) end - if not panel.buttons then return Vector(0,0,0) end + local self = train or ENT + local panel = self.ButtonMap[panel] + if not panel then return Vector(0,0,0) end + if not panel.buttons then return Vector(0,0,0) end - -- Find button or read position - local vec - if type(button_id_or_vec) == "string" then - local button - for k,v in pairs(panel.buttons) do - if v.ID == button_id_or_vec then - button = v - break - end - end - vec = Vector(button.x + (button.radius and 0 or (button.w or 0)/2)+(x or 0),button.y + (button.radius and 0 or (button.h or 0)/2)+(y or 0),z or 0) - else - vec = button_id_or_vec - end + -- Find button or read position + local vec + if type(button_id_or_vec) == "string" then + local button + for k,v in pairs(panel.buttons) do + if v.ID == button_id_or_vec then + button = v + break + end + end + vec = Vector(button.x + (button.radius and 0 or (button.w or 0)/2)+(x or 0),button.y + (button.radius and 0 or (button.h or 0)/2)+(y or 0),z or 0) + else + vec = button_id_or_vec + end - -- Convert to global coords - vec.y = -vec.y - vec:Rotate(panel.ang) - return panel.pos + vec * panel.scale + -- Convert to global coords + vec.y = -vec.y + vec:Rotate(panel.ang) + return panel.pos + vec * panel.scale end function Metrostroi.AngleFromPanel(panel,ang,train) - local self = train or ENT - local panel = self.ButtonMap[panel] - if not panel then return Vector(0,0,0) end - local true_ang = panel.ang + Angle(0,0,0) - if type(ang) == "Angle" then - true_ang:RotateAroundAxis(panel.ang:Forward(),ang.pitch) - true_ang:RotateAroundAxis(panel.ang:Right(),ang.yaw) - true_ang:RotateAroundAxis(panel.ang:Up(),ang.roll) - else - true_ang:RotateAroundAxis(panel.ang:Up(),ang or -90) - end - return true_ang + local self = train or ENT + local panel = self.ButtonMap[panel] + if not panel then return Vector(0,0,0) end + local true_ang = panel.ang + Angle(0,0,0) + if type(ang) == "Angle" then + true_ang:RotateAroundAxis(panel.ang:Forward(),ang.pitch) + true_ang:RotateAroundAxis(panel.ang:Right(),ang.yaw) + true_ang:RotateAroundAxis(panel.ang:Up(),ang.roll) + else + true_ang:RotateAroundAxis(panel.ang:Up(),ang or -90) + end + return true_ang end -Metrostroi.PrecacheModels = Metrostroi.PrecacheModels or {} function Metrostroi.GenerateClientProps() - local self = ENT - if not self.AutoAnimNames then self.AutoAnimNames = {} end - local ret = "self.table = {\n" - --local reti = 0 - for id, panel in pairs(self.ButtonMap) do - if not panel.buttons then continue end - if not panel.props then panel.props = {} end - for name, buttons in pairs(panel.buttons) do - --if reti > 8 then reti=0; ret=ret.."\n" end + local self = ENT + local ret = "self.table = {\n" + --local reti = 0 + for id, panel in pairs(self.ButtonMap) do + if not panel.buttons then continue end + if not panel.props then panel.props = {} end + for name, buttons in pairs(panel.buttons) do + --if reti > 8 then reti=0; ret=ret.."\n" end + if buttons.model then + local config = buttons.model + local name = config.name or buttons.ID - if buttons.tooltipFunc then - local func = buttons.tooltipFunc - buttons.tooltipState = function(ent) - local str = func(ent) - if not str then return "" end - return "\n["..str:gsub("\n","]\n[").."]" - end - elseif buttons.varTooltip then - local states = buttons.states or {"Train.Buttons.Off","Train.Buttons.On"} - local count = (#states-1) - buttons.tooltipState = function(ent) - return Format("\n[%s]",Metrostroi.GetPhrase(states[math.floor(buttons.varTooltip(ent)*count+0.5)+1]):gsub("\n","]\n[")) - end - elseif buttons.var then - local var = buttons.var - local st1,st2 = "Train.Buttons.Off","Train.Buttons.On" - if buttons.states then - st1 = buttons.states[1] - st2 = buttons.states[2] - end - buttons.tooltipState = function(ent) - return Format("\n[%s]",Metrostroi.GetPhrase(ent:GetPackedBool(var) and st2 or st1):gsub("\n","]\n[")) - end - end - if buttons.model then - local config = buttons.model - local name = config.name or buttons.ID - - if config.tooltipFunc then - local func = config.tooltipFunc - buttons.tooltipState = function(ent) - local str = func(ent) - if not str then return "" end - return "\n["..str:gsub("\n","]\n[").."]" - end - elseif config.varTooltip then - local states = config.states or {"Train.Buttons.Off","Train.Buttons.On"} - local count = (#states-1) - local func = config.getfunc - if config.varTooltip == true and func then - buttons.tooltipState = function(ent) - return Format("\n[%s]",Metrostroi.GetPhrase(states[math.floor(config.func(ent)*count+0.5)+1]):gsub("\n","]\n[")) - end - elseif config.varTooltip ~= true then - buttons.tooltipState = function(ent) - return Format("\n[%s]",Metrostroi.GetPhrase(states[math.floor(config.varTooltip(ent)*count+0.5)+1]):gsub("\n","]\n[")) - end - end - elseif (config.var and (not config.noTooltip and not buttons.ID:find("Set") or config.noTooltip==false)) then - local var = config.var - local st1,st2 = "Train.Buttons.Off","Train.Buttons.On" - if config.states then - st1 = config.states[1] - st2 = config.states[2] - end - buttons.tooltipState = function(ent) - return Format("\n[%s]",Metrostroi.GetPhrase(ent:GetPackedBool(var) and st2 or st1)) - end - end - if config.model then - table.insert(panel.props,name) - self.ClientProps[name] = { - model = config.model or "models/metrostroi/81-717/button07.mdl", - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2),(config.x or 0),(config.y or 0)), - ang = Metrostroi.AngleFromPanel(id,config.ang), - color = config.color, - colora = config.colora, - skin = config.skin or 0, - config = config, - cabin = config.cabin, - hide = panel.hide or config.hide, - hideseat = panel.hideseat or config.hideseat, - bscale = config.bscale, - scale = config.scale, - } - --[[if config.varTooltip then - local states = config.states or {"Train.Buttons.On","Train.Buttons.Off"} - local count = (#states-1) - buttons.tooltipState = function(ent) - local text = "\n[" - for i,t in ipairs(states) do - if i == #states then - text = text..Metrostroi.GetPhrase(t) - else - text = text..Metrostroi.GetPhrase(t).."|" - end - end - text = text.."]" - return text,states[math.floor(config.varTooltip(ent)+0.5)*count+1] - end - elseif (config.var and not config.noTooltip) then - local var = config.var - local st1,st2 = "Train.Buttons.On","Train.Buttons.Off" - if config.states then - st1 = config.states[1] - st2 = config.states[2] - end - buttons.tooltipState = function(ent) - return Format("\n[%s|%s]",Metrostroi.GetPhrase(st1),Metrostroi.GetPhrase(st2)),ent:GetPackedBool(var) and st1 or st2 - end - end]] - if config.var then - local var = config.var - local vmin, vmax = config.vmin or 0,config.vmax or 1 - local min,max = config.min or 0,config.max or 1 - local speed,damping,stickyness = config.speed or 16,config.damping or false,config.stickyness or nil - local func = config.getfunc - local i - if func then - if config.disable then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) - ent:HideButton(config.disable,ent:GetPackedBool(var)) - end) - elseif config.disableinv then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) - ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) - end) - elseif config.disableoff and config.disableon then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) - ent:HideButton(config.disableoff,ent:GetPackedBool(var)) - ent:HideButton(config.disableon,not ent:GetPackedBool(var)) - end) - elseif config.disablevar then - i = table.insert(self.AutoAnims, function(ent) - ent:HideButton(name,ent:GetPackedBool(config.disablevar)) - ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) - end) - else - i = table.insert(self.AutoAnims, function(ent) ent:Animate(name,func(ent,vmin,vmax),min,max,speed,damping,stickyness) end) - end - else - if config.disable then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) - ent:HideButton(config.disable,ent:GetPackedBool(var)) - end) - elseif config.disableinv then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) - ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) - end) - elseif config.disableoff and config.disableon then - i = table.insert(self.AutoAnims, function(ent) - ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) - ent:HideButton(config.disableoff,ent:GetPackedBool(var)) - ent:HideButton(config.disableon,not ent:GetPackedBool(var)) - end) - elseif config.disablevar then - i = table.insert(self.AutoAnims, function(ent) - ent:HideButton(name,ent:GetPackedBool(config.disablevar)) - ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) - end) - else - i = table.insert(self.AutoAnims, function(ent) ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) end) - end - end - self.AutoAnimNames[i] = name - end - end - if config.sound or config.sndvol and config.var then - local id = config.sound or config.var - local sndid = config.sndid or buttons.ID - local vol,pitch,min,max = config.sndvol, config.sndpitch,config.sndmin,config.sndmax - local func,snd = config.getfunc, config.snd - local vmin, vmax = config.vmin or 0,config.vmax or 1 - local var = config.var - local ang = config.sndang - --if func then - --self.ClientSounds[id] = {sndid,function(ent,var) return snd(func(ent,vmin,vmax),var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)} - --else - if not self.ClientSounds[id] then self.ClientSounds[id] = {} end - table.insert(self.ClientSounds[id],{sndid,function(ent,var) return snd(var > 0,var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)}) - --end - end - if config.plomb then - local pconfig = config.plomb - local pname = name.."_pl" - if pconfig.model then - table.insert(panel.props,pname) - self.ClientProps[pname] = { - model = pconfig.model, - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(pconfig.z or 0.2),(config.x or 0)+(pconfig.x or 0),(config.y or 0)+(pconfig.y or 0)), - ang = Metrostroi.AngleFromPanel(id,pconfig.ang or config.ang), - color = pconfig.color or pconfig.color, - skin = pconfig.skin or config.skin or 0, - config = pconfig, - cabin = pconfig.cabin, - hide = panel.hide or config.hide, - hideseat = panel.hideseat or config.hideseat, - bscale = pconfig.bscale or config.bscale, - scale = pconfig.scale or config.scale, - } - end - if pconfig.var then - local var = pconfig.var - if pconfig.model then - local i = table.insert(self.AutoAnims, function(ent) - ent:SetCSBodygroup(pname,1,ent:GetPackedBool(var) and 0 or 1) - end) - self.AutoAnimNames[i] = pname - end - local id,tooltip = buttons.ID,buttons.tooltip - local pid,ptooltip = pconfig.ID,pconfig.tooltip - buttons.plombed = function(ent) - if ent:GetPackedBool(var) then - return Format("%s\n%s",buttons.tooltip,Metrostroi.GetPhrase("Train.Buttons.Sealed") or "Plombed"),pid,Color(255,150,150),true - else - return buttons.tooltip,id,false - end - end - end - end - if config.lamp then - local lconfig = config.lamp - local lname = name.."_lamp" - table.insert(panel.props,lname) - self.ClientProps[lname] = { - model = lconfig.model or "models/metrostroi/81-717/button07.mdl", - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), - ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), - color = lconfig.color or config.color, - skin = lconfig.skin or config.skin or 0, - config = lconfig, - cabin = lconfig.cabin, - igrorepanel = true, - hide = panel.hide or config.hide, - hideseat = panel.hideseat or config.hideseat, - bscale = lconfig.bscale or config.bscale, - scale = lconfig.scale or config.scale, - } - if lconfig.anim then - local i = table.insert(self.AutoAnims, function(ent) - ent:AnimateFrom(lname,name) - end) - self.AutoAnimNames[i] = lname - end - - if lconfig.lcolor then - self.Lights[lname] = { "headlight", - Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2)+(lconfig.lz or 0.2),(config.x or 0)+(lconfig.x or 0)+(lconfig.lx or 0),(config.y or 0)+(lconfig.y or 0)+(lconfig.ly or 0)), - Metrostroi.AngleFromPanel(id,lconfig.lang or lconfig.ang or config.ang)+Angle(90,0,0), - lconfig.lcolor,farz = lconfig.lfarz or 8,nearz = lconfig.lnearz or 1,shadows = lconfig.lshadows or 1,brightness = lconfig.lbright or 1,fov = lconfig.lfov,texture=lconfig.ltex or "effects/flashlight/soft",panellight=true, - hidden = lname, - } - --[[self.ClientProps[lname.."TEST"] = { - model = "models/metrostroi_train/81-703/cabin_cran_334.mdl", - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2)+(lconfig.lz or 0.2),(config.x or 0)+(lconfig.x or 0)+(lconfig.lx or 0),(config.y or 0)+(lconfig.y or 0)+(lconfig.ly or 0)), - ang = Metrostroi.AngleFromPanel(id,lconfig.lang or lconfig.ang or config.ang)+Angle(-180,180,0), - scale=0.1, - }]] - --[[table.insert(self.AutoAnims, function(ent) - ent:AnimateFrom(lname,name) - end)]] - end - if lconfig.var then - --ret=ret.."\""..lconfig.var.."\"," - --reti = reti + 1 - local var,animvar = lconfig.var,lname.."_anim" - local min,max = lconfig.min or 0,lconfig.max or 1 - local speed = lconfig.speed or 10 - local func = lconfig.getfunc - local light = lconfig.lcolor - if func then - table.insert(self.AutoAnims, function(ent) - local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) - ent:ShowHideSmooth(lname,val) - if light then ent:SetLightPower(lname,val>0,val) end - end) - else - local i = table.insert(self.AutoAnims, function(ent) - --print(lname,ent.SmoothHide[lname]) - local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) - ent:ShowHideSmooth(lname,val) - if light then ent:SetLightPower(lname,val>0,val) end - end) - end - end - end - if config.lamps then - for k,lconfig in ipairs(config.lamps) do - local lname = name.."_lamp"..k - table.insert(panel.props,lname) - self.ClientProps[lname] = { - model = lconfig.model or "models/metrostroi/81-717/button07.mdl", - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), - ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), - color = lconfig.color or config.color, - skin = lconfig.skin or config.skin or 0, - config = lconfig, - cabin = lconfig.cabin, - igrorepanel = true, - hide = panel.hide or config.hide, - hideseat = panel.hideseat or config.hideseat, - bscale = lconfig.bscale or config.bscale, - scale = lconfig.scale or config.scale, - } - if lconfig.var then - --ret=ret.."\""..lconfig.var.."\"," - --reti = reti + 1 - local var,animvar = lconfig.var,lname.."_anim" - local min,max = lconfig.min or 0,lconfig.max or 1 - local speed = lconfig.speed or 10 - local func = lconfig.getfunc - if func then - table.insert(self.AutoAnims, function(ent) - local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) - ent:ShowHideSmooth(lname,val) - end) - else - table.insert(self.AutoAnims, function(ent) - --print(lname,ent.SmoothHide[lname]) - local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) - ent:ShowHideSmooth(lname,val) - end) - end - end - end - end - if config.sprite then - local sconfig = config.sprite - - local hideName = sconfig.hidden or config.lamp and name.."_lamp" or name - self.Lights[sconfig.lamp or name] = { sconfig.glow and "glow" or "light", - Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.5)+(sconfig.z or 0.2),(config.x or 0)+(sconfig.x or 0),(config.y or 0)+(sconfig.y or 0)), - Metrostroi.AngleFromPanel(id, sconfig.ang or config.ang)+Angle(90,0,0), - sconfig.color or sconfig.color, - brightness = sconfig.bright,texture=sconfig.texture or "sprites/light_glow02",scale=sconfig.scale or 0.02,vscale=sconfig.vscale, - size = sconfig.size, - hidden = hideName, - aa = sconfig.aa,panel = sconfig.panel ~= false, - } - local i - if sconfig.getfunc then - local func = sconfig.getfunc - i = table.insert(self.AutoAnims, function(ent) - local val = func(ent) - ent:SetLightPower(name,not ent.Hidden[hideName] and val>0,val) - end) - elseif sconfig.var then - --ret=ret.."\""..lconfig.var.."\"," - --reti = reti + 1 - local var,animvar = sconfig.var,name.."_sanim" - local speed = sconfig.speed or 10 - i = table.insert(self.AutoAnims, function(ent) - local val = ent:Animate(animvar,ent:GetPackedBool(var) and 1 or 0,0,1,speed,false) - ent:SetLightPower(name,val>0,val) - end) - elseif sconfig.lamp then - local lightName = sconfig.lamp - i = table.insert(self.AutoAnims, function(ent) - local val = ent.Anims[lightName] and ent.Anims[lightName].value or 0 - ent:SetLightPower(lightName,val>0,val) - end) - elseif config.lamp and config.lamp.var then - local lname = name.."_lamp" - local lightName = lname.."_anim" - i = table.insert(self.AutoAnims, function(ent) - local val = ent.Anims[lightName] and ent.Anims[lightName].value or 0 - ent:SetLightPower(name,val>0,val) - end) - end - if not i then - ErrorNoHalt("Bad sprite "..name.."/"..hideName..", no controlable function...\n") - else - self.AutoAnimNames[i] = hideName - end - end - if config.labels then - for k,aconfig in ipairs(config.labels) do - local aname = name.."_label"..k - table.insert(panel.props,aname) - self.ClientProps[aname] = { - model = aconfig.model or "models/metrostroi/81-717/button07.mdl", - pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(aconfig.z or 0.2),(config.x or 0)+(aconfig.x or 0),(config.y or 0)+(aconfig.y or 0)), - ang = Metrostroi.AngleFromPanel(id,aconfig.ang or config.ang), - color = aconfig.color or config.color, - colora = aconfig.colora or config.colora, - skin = aconfig.skin or config.skin or 0, - config = aconfig, - cabin = aconfig.cabin, - igrorepanel = true, - hide = panel.hide or config.hide, - hideseat = panel.hideseat or config.hideseat, - bscale = aconfig.bscale or config.bscale, - scale = aconfig.scale or config.scale, - } - end - end - buttons.model = nil - end - end - end - for k,v in pairs(self.ClientProps) do - if not v.model then continue end - Metrostroi.PrecacheModels[v.model] = true - end - for k,v in pairs(self.Lights or {}) do - if not v.hidden then continue end - local cP = self.ClientProps[v.hidden] - if not cP then ErrorNoHalt("No clientProp "..v.hidden.." in entity "..self.Folder.."\n") continue end - if not cP.lamps then cP.lamps = {} end - table.insert(cP.lamps,k) - end - --ret = ret.."\n}" - --SetClipboardText(ret) + if config.model then + table.insert(panel.props,name) + self.ClientProps[name] = { + model = config.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2),(config.x or 0),(config.y or 0)), + ang = Metrostroi.AngleFromPanel(id,config.ang), + color = config.color, + colora = config.colora, + skin = config.skin or 0, + config = config, + cabin = config.cabin, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = config.bscale, + scale = config.scale, + } + if config.var then + --ret=ret.."\""..config.var.."\"," + --reti = reti + 1 + if config.ratio then + else + local var = config.var + local vmin, vmax = config.vmin or 0,config.vmax or 1 + local min,max = config.min or 0,config.max or 1 + local speed,damping,stickyness = config.speed or 16,config.damping or false,config.stickyness or nil + local func = config.getfunc + if func then + if config.disable then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disable,ent:GetPackedBool(var)) + end) + elseif config.disableinv then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) + end) + elseif config.disableoff and config.disableon then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disableoff,ent:GetPackedBool(var)) + ent:HideButton(config.disableon,not ent:GetPackedBool(var)) + end) + elseif config.disablevar then + table.insert(self.AutoAnims, function(ent) + ent:HideButton(name,ent:GetPackedBool(config.disablevar)) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + end) + else + table.insert(self.AutoAnims, function(ent) ent:Animate(name,func(ent,vmin,vmax),min,max,speed,damping,stickyness) end) + end + else + if config.disable then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disable,ent:GetPackedBool(var)) + end) + elseif config.disableinv then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) + end) + elseif config.disableoff and config.disableon then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disableoff,ent:GetPackedBool(var)) + ent:HideButton(config.disableon,not ent:GetPackedBool(var)) + end) + elseif config.disablevar then + table.insert(self.AutoAnims, function(ent) + ent:HideButton(name,ent:GetPackedBool(config.disablevar)) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + end) + else + table.insert(self.AutoAnims, function(ent) ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) end) + end + end + end + end + end + if config.sound or config.sndvol and config.var then + local id = config.sound or config.var + local sndid = config.sndid or buttons.ID + local vol,pitch,min,max = config.sndvol, config.sndpitch,config.sndmin,config.sndmax + local func,snd = config.getfunc, config.snd + local vmin, vmax = config.vmin or 0,config.vmax or 1 + local var = config.var + local ang = config.sndang + --if func then + --self.ClientSounds[id] = {sndid,function(ent,var) return snd(func(ent,vmin,vmax),var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)} + --else + if not self.ClientSounds[id] then self.ClientSounds[id] = {} end + table.insert(self.ClientSounds[id],{sndid,function(ent,var) return snd(var > 0,var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)}) + --end + end + if config.plomb then + local pconfig = config.plomb + local pname = name.."_pl" + if pconfig.model then + table.insert(panel.props,pname) + self.ClientProps[pname] = { + model = pconfig.model, + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(pconfig.z or 0.2),(config.x or 0)+(pconfig.x or 0),(config.y or 0)+(pconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,pconfig.ang or config.ang), + color = pconfig.color or pconfig.color, + skin = pconfig.skin or config.skin or 0, + config = pconfig, + cabin = pconfig.cabin, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = pconfig.bscale or config.bscale, + scale = pconfig.scale or config.scale, + } + end + if pconfig.var then + local var = pconfig.var + if pconfig.model then + table.insert(self.AutoAnims, function(ent) + ent:SetCSBodygroup(pname,1,ent:GetPackedBool(var) and 0 or 1) + end) + end + local id,tooltip = buttons.ID,buttons.tooltip + local pid,ptooltip = pconfig.ID,pconfig.tooltip + buttons.plombed = function(ent) + if ent:GetPackedBool(var) then + return Format("%s\n%s",buttons.tooltip,Metrostroi.GetPhrase("Train.Buttons.Sealed") or "Plombed"),pid,Color(255,150,150),true + else + return buttons.tooltip,id,false + end + end + end + --[[ + if pconfig.var then + --ret=ret.."\""..pconfig.var.."\"," + --reti = reti + 1 + local var,animvar = pconfig.var,lname.."_anim" + local min,max = pconfig.min or 0,pconfig.max or 1 + local speed = pconfig.speed or 10 + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end]] + end + if config.lamp then + local lconfig = config.lamp + local lname = name.."_lamp" + table.insert(panel.props,lname) + self.ClientProps[lname] = { + model = lconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), + color = lconfig.color or config.color, + skin = lconfig.skin or config.skin or 0, + config = lconfig, + cabin = lconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = lconfig.bscale or config.bscale, + scale = lconfig.scale or config.scale, + } + if lconfig.anim then + table.insert(self.AutoAnims, function(ent) + ent:AnimateFrom(lname,name) + end) + end + if lconfig.var then + --ret=ret.."\""..lconfig.var.."\"," + --reti = reti + 1 + local var,animvar = lconfig.var,lname.."_anim" + local min,max = lconfig.min or 0,lconfig.max or 1 + local speed = lconfig.speed or 10 + local func = lconfig.getfunc + if func then + table.insert(self.AutoAnims, function(ent) + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + else + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + end + end + if config.lamps then + for k,lconfig in ipairs(config.lamps) do + local lname = name.."_lamp"..k + table.insert(panel.props,lname) + self.ClientProps[lname] = { + model = lconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), + color = lconfig.color or config.color, + skin = lconfig.skin or config.skin or 0, + config = lconfig, + cabin = lconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = lconfig.bscale or config.bscale, + scale = lconfig.scale or config.scale, + } + if lconfig.anim then + table.insert(self.AutoAnims, function(ent) + ent:AnimateFrom(lname,name) + end) + end + if lconfig.var then + --ret=ret.."\""..lconfig.var.."\"," + --reti = reti + 1 + local var,animvar = lconfig.var,lname.."_anim" + local min,max = lconfig.min or 0,lconfig.max or 1 + local speed = lconfig.speed or 10 + local func = lconfig.getfunc + if func then + table.insert(self.AutoAnims, function(ent) + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + else + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + end + end + end + if config.labels then + for k,aconfig in ipairs(config.labels) do + local aname = name.."_label"..k + table.insert(panel.props,aname) + self.ClientProps[aname] = { + model = aconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(aconfig.z or 0.2),(config.x or 0)+(aconfig.x or 0),(config.y or 0)+(aconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,aconfig.ang or config.ang), + color = aconfig.color or config.color, + colora = aconfig.colora or config.colora, + skin = aconfig.skin or config.skin or 0, + config = aconfig, + cabin = aconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = aconfig.bscale or config.bscale, + scale = aconfig.scale or config.scale, + } + end + end + buttons.model = nil + end + end + end +end + + +function Metrostroi.GenerateClientProps() + local self = ENT + local ret = "self.table = {\n" + --local reti = 0 + for id, panel in pairs(self.ButtonMap) do + if not panel.buttons then continue end + if not panel.props then panel.props = {} end + for name, buttons in pairs(panel.buttons) do + --if reti > 8 then reti=0; ret=ret.."\n" end + if buttons.model then + local config = buttons.model + local name = config.name or buttons.ID + + if config.model then + table.insert(panel.props,name) + self.ClientProps[name] = { + model = config.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2),(config.x or 0),(config.y or 0)), + ang = Metrostroi.AngleFromPanel(id,config.ang), + color = config.color, + colora = config.colora, + skin = config.skin or 0, + config = config, + cabin = config.cabin, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = config.bscale, + scale = config.scale, + } + if config.var then + --ret=ret.."\""..config.var.."\"," + --reti = reti + 1 + if config.ratio then + else + local var = config.var + local vmin, vmax = config.vmin or 0,config.vmax or 1 + local min,max = config.min or 0,config.max or 1 + local speed,damping,stickyness = config.speed or 16,config.damping or false,config.stickyness or nil + local func = config.getfunc + if func then + if config.disable then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disable,ent:GetPackedBool(var)) + end) + elseif config.disableinv then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) + end) + elseif config.disableoff and config.disableon then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + ent:HideButton(config.disableoff,ent:GetPackedBool(var)) + ent:HideButton(config.disableon,not ent:GetPackedBool(var)) + end) + elseif config.disablevar then + table.insert(self.AutoAnims, function(ent) + ent:HideButton(name,ent:GetPackedBool(config.disablevar)) + ent:Animate(name,func(ent,vmin,vmax,var),min,max,speed,damping,stickyness) + end) + else + table.insert(self.AutoAnims, function(ent) ent:Animate(name,func(ent,vmin,vmax),min,max,speed,damping,stickyness) end) + end + else + if config.disable then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disable,ent:GetPackedBool(var)) + end) + elseif config.disableinv then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disableinv,not ent:GetPackedBool(var)) + end) + elseif config.disableoff and config.disableon then + table.insert(self.AutoAnims, function(ent) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + ent:HideButton(config.disableoff,ent:GetPackedBool(var)) + ent:HideButton(config.disableon,not ent:GetPackedBool(var)) + end) + elseif config.disablevar then + table.insert(self.AutoAnims, function(ent) + ent:HideButton(name,ent:GetPackedBool(config.disablevar)) + ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) + end) + else + table.insert(self.AutoAnims, function(ent) ent:Animate(name,ent:GetPackedBool(var) and vmax or vmin,min,max,speed,damping,stickyness) end) + end + end + end + end + end + if config.sound or config.sndvol and config.var then + local id = config.sound or config.var + local sndid = config.sndid or buttons.ID + local vol,pitch,min,max = config.sndvol, config.sndpitch,config.sndmin,config.sndmax + local func,snd = config.getfunc, config.snd + local vmin, vmax = config.vmin or 0,config.vmax or 1 + local var = config.var + local ang = config.sndang + --if func then + --self.ClientSounds[id] = {sndid,function(ent,var) return snd(func(ent,vmin,vmax),var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)} + --else + if not self.ClientSounds[id] then self.ClientSounds[id] = {} end + table.insert(self.ClientSounds[id],{sndid,function(ent,var) return snd(var > 0,var) end,vol or 1,pitch or 1,min or 100,max or 1000,ang or Angle(0,0,0)}) + --end + end + if config.plomb then + local pconfig = config.plomb + local pname = name.."_pl" + if pconfig.model then + table.insert(panel.props,pname) + self.ClientProps[pname] = { + model = pconfig.model, + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(pconfig.z or 0.2),(config.x or 0)+(pconfig.x or 0),(config.y or 0)+(pconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,pconfig.ang or config.ang), + color = pconfig.color or pconfig.color, + skin = pconfig.skin or config.skin or 0, + config = pconfig, + cabin = pconfig.cabin, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = pconfig.bscale or config.bscale, + scale = pconfig.scale or config.scale, + } + end + if pconfig.var then + local var = pconfig.var + if pconfig.model then + table.insert(self.AutoAnims, function(ent) + ent:SetCSBodygroup(pname,1,ent:GetPackedBool(var) and 0 or 1) + end) + end + local id,tooltip = buttons.ID,buttons.tooltip + local pid,ptooltip = pconfig.ID,pconfig.tooltip + buttons.plombed = function(ent) + if ent:GetPackedBool(var) then + return Format("%s\n%s",buttons.tooltip,Metrostroi.GetPhrase("Train.Buttons.Sealed") or "Plombed"),pid,Color(255,150,150),true + else + return buttons.tooltip,id,false + end + end + end + --[[ + if pconfig.var then + --ret=ret.."\""..pconfig.var.."\"," + --reti = reti + 1 + local var,animvar = pconfig.var,lname.."_anim" + local min,max = pconfig.min or 0,pconfig.max or 1 + local speed = pconfig.speed or 10 + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end]] + end + if config.lamp then + local lconfig = config.lamp + local lname = name.."_lamp" + table.insert(panel.props,lname) + self.ClientProps[lname] = { + model = lconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), + color = lconfig.color or config.color, + skin = lconfig.skin or config.skin or 0, + config = lconfig, + cabin = lconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = lconfig.bscale or config.bscale, + scale = lconfig.scale or config.scale, + } + if lconfig.anim then + table.insert(self.AutoAnims, function(ent) + ent:AnimateFrom(lname,name) + end) + end + if lconfig.var then + --ret=ret.."\""..lconfig.var.."\"," + --reti = reti + 1 + local var,animvar = lconfig.var,lname.."_anim" + local min,max = lconfig.min or 0,lconfig.max or 1 + local speed = lconfig.speed or 10 + local func = lconfig.getfunc + local hide = lconfig.hidden + if func then + if hide then + table.insert(self.AutoAnims, function(ent) + if ent.Hidden[hide] then return end + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + else + table.insert(self.AutoAnims, function(ent) + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + else + if hide then + table.insert(self.AutoAnims, function(ent) + if ent.Hidden[hide] then return end + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + else + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + end + end + end + if config.lamps then + for k,lconfig in ipairs(config.lamps) do + local lname = name.."_lamp"..k + table.insert(panel.props,lname) + self.ClientProps[lname] = { + model = lconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(lconfig.z or 0.2),(config.x or 0)+(lconfig.x or 0),(config.y or 0)+(lconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,lconfig.ang or config.ang), + color = lconfig.color or config.color, + skin = lconfig.skin or config.skin or 0, + config = lconfig, + cabin = lconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = lconfig.bscale or config.bscale, + scale = lconfig.scale or config.scale, + } + if lconfig.anim then + table.insert(self.AutoAnims, function(ent) + ent:AnimateFrom(lname,name) + end) + end + if lconfig.var then + --ret=ret.."\""..lconfig.var.."\"," + --reti = reti + 1 + local var,animvar = lconfig.var,lname.."_anim" + local min,max = lconfig.min or 0,lconfig.max or 1 + local speed = lconfig.speed or 10 + local func = lconfig.getfunc + if func then + if lconfig.hidden then + table.insert(self.AutoAnims, function(ent) + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + else + table.insert(self.AutoAnims, function(ent) + local val = ent:Animate(animvar,func(ent,min,max,var),0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + else + table.insert(self.AutoAnims, function(ent) + --print(lname,ent.SmoothHide[lname]) + local val = ent:Animate(animvar,ent:GetPackedBool(var) and max or min,0,1,speed,false) + ent:ShowHideSmooth(lname,val) + end) + end + end + end + end + if config.labels then + for k,aconfig in ipairs(config.labels) do + local aname = name.."_label"..k + table.insert(panel.props,aname) + self.ClientProps[aname] = { + model = aconfig.model or "models/metrostroi/81-717/button07.mdl", + pos = Metrostroi.PositionFromPanel(id,config.pos or buttons.ID,(config.z or 0.2)+(aconfig.z or 0.2),(config.x or 0)+(aconfig.x or 0),(config.y or 0)+(aconfig.y or 0)), + ang = Metrostroi.AngleFromPanel(id,aconfig.ang or config.ang), + color = aconfig.color or config.color, + colora = aconfig.colora or config.colora, + skin = aconfig.skin or config.skin or 0, + config = aconfig, + cabin = aconfig.cabin, + igrorepanel = true, + hide = panel.hide or config.hide, + hideseat = panel.hideseat or config.hideseat, + bscale = aconfig.bscale or config.bscale, + scale = aconfig.scale or config.scale, + } + end + end + buttons.model = nil + end + end + end + --ret = ret.."\n}" + --SetClipboardText(ret) end ---[[ -timer.Simple(1,function() - for k,ent in pairs(Metrostroi.PrecacheModels) do - if ent==true or not IsValid(ent) then - local model = ClientsideModel(k) - model:SetPos(LocalPlayer():GetPos()) - Metrostroi.PrecacheModels[k] = model - end - end - timer.Simple(2,function() - for k,ent in pairs(Metrostroi.PrecacheModels) do - if IsValid(ent) then - SafeRemoveEntity(ent) - end - end - end) -end)]] function Metrostroi.InsertHide(panel,prop_name) - local self = ENT - if self.ButtonMap[panel] then - if not self.ButtonMap[panel].props then self.ButtonMap[panel].props = {} end - table.insert(self.ButtonMap[panel].props,prop_name) - end + local self = ENT + if self.ButtonMap[panel] then + if not self.ButtonMap[panel].props then self.ButtonMap[panel].props = {} end + table.insert(self.ButtonMap[panel].props,prop_name) + end end @@ -632,87 +769,89 @@ local D1true = 0 local D2true = 0 local prevTime hook.Add("PostDrawOpaqueRenderables", "metrostroi-draw-stopmarker",function() - prevTime = prevTime or RealTime() - local dT = math.max(0.001,RealTime() - prevTime) - prevTime = RealTime() + prevTime = prevTime or RealTime() + local dT = math.max(0.001,RealTime() - prevTime) + prevTime = RealTime() - -- Skip if disabled - if GetConVarNumber("metrostroi_stop_helper") ~= 1 then return end + -- Skip if disabled + if GetConVarNumber("metrostroi_stop_helper") ~= 1 then return end - -- Get train - local train = LocalPlayer().InMetrostroiTrain - if not IsValid(train) then return end + -- Get seat and train + local seat = LocalPlayer():GetVehicle() + if not seat then return end + local train = seat:GetNW2Entity("TrainEntity") + if not IsValid(train) then return end - -- Calculate acceleration - local V = train:GetNW2Float("V",train:GetVelocity():Length()*0.01905)*0.277778 - local newA = (V - prevV)/dT - prevV = V + -- Calculate acceleration + local V = train:GetNW2Float("V",train:GetVelocity():Length()*0.01905)*0.277778 + local newA = (V - prevV)/dT + prevV = V - -- Calculate marker position - A = train:GetNW2Float("A",A + (newA - A)*1.0*dT) - local T1 = math.abs(V/(A+1e-8)) - local T2 = math.abs(V/(1.2+1e-8)) - local D1 = T1*V + (T1^2)*A/2 - local D2 = T2*V + (T2^2)*A/2 + -- Calculate marker position + A = train:GetNW2Float("A",A + (newA - A)*1.0*dT) + local T1 = math.abs(V/(A+1e-8)) + local T2 = math.abs(V/(1.2+1e-8)) + local D1 = T1*V + (T1^2)*A/2 + local D2 = T2*V + (T2^2)*A/2 - -- Smooth out D - D1 = math.min(200,math.max(0,D1))*0.65 - D2 = math.min(200,math.max(0,D2))*0.70 - D1true = D1true + (D1 - D1true)*12.0*dT - D2true = D2true + (D2 - D2true)*12.0*dT - local offset1 = D1true/0.01905 - local offset2 = D2true/0.01905 + -- Smooth out D + D1 = math.min(200,math.max(0,D1))*0.65 + D2 = math.min(200,math.max(0,D2))*0.70 + D1true = D1true + (D1 - D1true)*12.0*dT + D2true = D2true + (D2 - D2true)*12.0*dT + local offset1 = D1true/0.01905 + local offset2 = D2true/0.01905 - -- Draw marker - if A > -0.1 then return end --- if D1 > 195 then return end - if D2 > 195 then return end - local base_pos1 = train:LocalToWorld(Vector(500+offset1,80,10)) - cam.Start3D2D(base_pos1,train:LocalToWorldAngles(Angle(0,-90,90)),1.0) - surface.SetDrawColor(255,255,255) - surface.DrawRect(-1,-1,8*20+2,4+2) - for i=0,19 do - surface.SetDrawColor(240,200,40) - surface.DrawRect(8*i+0,0,4,4) - surface.SetDrawColor(0,0,0) - surface.DrawRect(8*i+4,0,4,4) - end - surface.SetDrawColor(255,255,255) - surface.DrawRect(-1,-96,2,192) - surface.DrawRect(8*20,-96,2,192) + -- Draw marker + if A > -0.1 then return end +-- if D1 > 195 then return end + if D2 > 195 then return end + local base_pos1 = train:LocalToWorld(Vector(500+offset1,80,10)) + cam.Start3D2D(base_pos1,train:LocalToWorldAngles(Angle(0,-90,90)),1.0) + surface.SetDrawColor(255,255,255) + surface.DrawRect(-1,-1,8*20+2,4+2) + for i=0,19 do + surface.SetDrawColor(240,200,40) + surface.DrawRect(8*i+0,0,4,4) + surface.SetDrawColor(0,0,0) + surface.DrawRect(8*i+4,0,4,4) + end + surface.SetDrawColor(255,255,255) + surface.DrawRect(-1,-96,2,192) + surface.DrawRect(8*20,-96,2,192) --- surface.SetTextColor(255,255,255) --- surface.SetFont("Trebuchet24") --- surface.SetTextPos(64-128,-30) --- surface.DrawText(Format("%.1f m %.1f m/s %.1f m/s2",D,V,A)) --- surface.SetTextPos(64,-30) --- surface.DrawText(Format("%.1f m %.0f sec",D,T)) - cam.End3D2D() +-- surface.SetTextColor(255,255,255) +-- surface.SetFont("Trebuchet24") +-- surface.SetTextPos(64-128,-30) +-- surface.DrawText(Format("%.1f m %.1f m/s %.1f m/s2",D,V,A)) +-- surface.SetTextPos(64,-30) +-- surface.DrawText(Format("%.1f m %.0f sec",D,T)) + cam.End3D2D() - local base_pos2 = train:LocalToWorld(Vector(500+offset2,80,10)) - cam.Start3D2D(base_pos2,train:LocalToWorldAngles(Angle(0,-90,90)),1.0) - surface.SetDrawColor(240,40,40) - surface.DrawRect(-1,-1,8*20+2,4+2) - for i=0,19 do - surface.SetDrawColor(0,0,0) - surface.DrawRect(8*i+0,0,4,4) - surface.SetDrawColor(240,40,40) - surface.DrawRect(8*i+4,0,4,4) - end + local base_pos2 = train:LocalToWorld(Vector(500+offset2,80,10)) + cam.Start3D2D(base_pos2,train:LocalToWorldAngles(Angle(0,-90,90)),1.0) + surface.SetDrawColor(240,40,40) + surface.DrawRect(-1,-1,8*20+2,4+2) + for i=0,19 do + surface.SetDrawColor(0,0,0) + surface.DrawRect(8*i+0,0,4,4) + surface.SetDrawColor(240,40,40) + surface.DrawRect(8*i+4,0,4,4) + end - surface.SetDrawColor(240,40,40) - surface.DrawRect(-1,-1+110,8*20+2,16+2) - for i=0,19 do - surface.SetDrawColor(0,0,0) - surface.DrawRect(8*i+0,110,4,16) - surface.SetDrawColor(240,40,40) - surface.DrawRect(8*i+4,110,4,16) - end + surface.SetDrawColor(240,40,40) + surface.DrawRect(-1,-1+110,8*20+2,16+2) + for i=0,19 do + surface.SetDrawColor(0,0,0) + surface.DrawRect(8*i+0,110,4,16) + surface.SetDrawColor(240,40,40) + surface.DrawRect(8*i+4,110,4,16) + end - surface.SetDrawColor(240,40,40) - surface.DrawRect(-6,-96,6,192) - surface.DrawRect(8*20,-96,4,192) - cam.End3D2D() + surface.SetDrawColor(240,40,40) + surface.DrawRect(-6,-96,6,192) + surface.DrawRect(8*20,-96,4,192) + cam.End3D2D() end) @@ -722,21 +861,39 @@ end) -- Fix for gm_metrostroi 3D sky -------------------------------------------------------------------------------- local player_state = {} -if string.sub(game.GetMap(),1,13) == "gm_metrostroi" then - timer.Create("Metrostroi_3DSkyFix",1.0,0,function() - local player = LocalPlayer() - if not IsValid(player) then return end +timer.Create("Metrostroi_3DSkyFix",1.0,0,function() + local player = LocalPlayer() + if not IsValid(player) then return end + if string.sub(game.GetMap(),1,13) ~= "gm_metrostroi" then return end - RunConsoleCommand("r_3dsky", (player:GetPos().z < -1024) and "0" or "1") - end) + RunConsoleCommand("r_3dsky", (player:GetPos().z < -1024) and "0" or "1") +end) +function Metrostroi.GetTimedT(notsync) + local T0 = GetGlobalFloat("MetrostroiT0",os.time())+GetGlobalFloat("MetrostroiTY") + local T1 = GetGlobalFloat("MetrostroiT1",CurTime()) + local dT + if notsync then + dT = (os.time()-T0) - (CurTime()-T1) + else + dT = (os.time()-T0 + (CurTime() % 1.0)) - (CurTime()-T1) + end + return dT end +function Metrostroi.GetSyncTime(notsync) + return os.time()-Metrostroi.GetTimedT(notsync) +end +timer.Simple(0,function() + net.Start("MetrostroiUpdateTimeSync") + net.SendToServer() +end) timer.Simple(0,function() - net.Start("metrostroi_cam_update") net.SendToServer() + net.Start("metrostroi_cam_update") net.SendToServer() end) + net.Receive("metrostroi_cam_update",function() - local ent = Entity(net.ReadUInt(16)) - Metrostroi.RTCamera = ent + local ent = Entity(net.ReadUInt(16)) + Metrostroi.RTCamera = ent end) local CamRT = surface.GetTextureID( "pp/rt" ) @@ -744,137 +901,137 @@ local CamWork = GetConVar("metrostroi_drawcams") Metrostroi.CamTimers = Metrostroi.CamTimers or {} Metrostroi.CamQueue = Metrostroi.CamQueue or {} function Metrostroi.RenderCamOnRT(train,cpos,name,time,RT,post,pos,ang,x,y,scale,xmin,ymin) - if not CamWork then CamWork = GetConVar("metrostroi_drawcams") return end - if not CamWork:GetBool() then return end - name = train:EntIndex()..name - --print(name,Metrostroi.CamQueue[name]) - if (not Metrostroi.CamTimers[name] or RealTime()-Metrostroi.CamTimers[name] > time) and not Metrostroi.CamQueue[name] then - Metrostroi.CamQueue[name] = table.insert(Metrostroi.CamQueue,{train,cpos,name,time,RT,post,pos,ang,x,y,scale,xmin,ymin}) - end + if not CamWork then CamWork = GetConVar("metrostroi_drawcams") return end + if not CamWork:GetBool() then return end + name = train:EntIndex()..name + --print(name,Metrostroi.CamQueue[name]) + if (not Metrostroi.CamTimers[name] or RealTime()-Metrostroi.CamTimers[name] > time) and not Metrostroi.CamQueue[name] then + Metrostroi.CamQueue[name] = table.insert(Metrostroi.CamQueue,{train,cpos,name,time,RT,post,pos,ang,x,y,scale,xmin,ymin}) + end end function Metrostroi.SetCamPosAng(pos,ang) - if IsValid(Metrostroi.RTCamera) then - Metrostroi.RTCamera:SetPos(pos) - Metrostroi.RTCamera:SetAngles(ang) - end + if IsValid(Metrostroi.RTCamera) then + Metrostroi.RTCamera:SetPos(pos) + Metrostroi.RTCamera:SetAngles(ang) + end end hook.Add("Think","metrostroi_camera_move",function() - if IsValid(Metrostroi.RTCamera) then - Metrostroi.RTCamera:SetPos(Vector(0,0,-2^16)) - Metrostroi.RTCamera:SetAngles(Angle(90,0,0)) - end - if Metrostroi.RenderCam and Metrostroi.RenderedCam ~= RealTime() then - local camera = Metrostroi.RenderCam - Metrostroi.RenderCam = nil - if IsValid(camera[1]) then - local distance = camera[1]:LocalToWorld(camera[2]):Distance(LocalPlayer():GetPos()) - if distance > 256 then return end - local x,y = camera[9],camera[10] - local scale = camera[11] or 1 - local xmin,ymin = camera[12] or 0,camera[13] or 0 - render.PushRenderTarget(camera[5],0,0,x, y) - render.Clear(0, 0, 0, 0) - cam.Start2D() - surface.SetTexture( CamRT ) - surface.SetDrawColor( 255, 255, 255, 255 ) - surface.DrawTexturedRectRotated((x/2-xmin)*scale,(y/2-ymin)*scale,x*scale,y*scale,0) - cam.End2D() - render.PopRenderTarget() - else - end - end - if #Metrostroi.CamQueue > 0 and not Metrostroi.RenderCam then - local cam = table.remove(Metrostroi.CamQueue,1) - Metrostroi.CamQueue[cam[3]] = nil - local name,time,post,pos,ang = cam[3],cam[4],cam[6],cam[7],cam[8] - if IsValid(post) then - debugoverlay.Sphere(post:LocalToWorld(pos),1,time,Color( 150, 105, 200 ),true) - debugoverlay.Text(post:LocalToWorld(pos),name,time,Color( 150, 105, 200 ),true) - debugoverlay.Line(post:LocalToWorld(pos),post:LocalToWorld(pos)+post:LocalToWorldAngles(ang):Forward()*25,time,Color( 150, 105, 200 ),true) - Metrostroi.RenderCam = cam - Metrostroi.SetCamPosAng(post:LocalToWorld(cam[7]),post:LocalToWorldAngles(cam[8])) - Metrostroi.CamTimers[cam[3]] = RealTime() - end - end + if IsValid(Metrostroi.RTCamera) then + Metrostroi.RTCamera:SetPos(Vector(0,0,-2^16)) + Metrostroi.RTCamera:SetAngles(Angle(90,0,0)) + end + if Metrostroi.RenderCam and Metrostroi.RenderedCam ~= RealTime() then + local camera = Metrostroi.RenderCam + Metrostroi.RenderCam = nil + if IsValid(camera[1]) then + local distance = camera[1]:LocalToWorld(camera[2]):Distance(LocalPlayer():GetPos()) + if distance > 256 then return end + local x,y = camera[9],camera[10] + local scale = camera[11] or 1 + local xmin,ymin = camera[12] or 0,camera[13] or 0 + render.PushRenderTarget(camera[5],0,0,x, y) + render.Clear(0, 0, 0, 0) + cam.Start2D() + surface.SetTexture( CamRT ) + surface.SetDrawColor( 255, 255, 255, 255 ) + surface.DrawTexturedRectRotated((x/2-xmin)*scale,(y/2-ymin)*scale,x*scale,y*scale,0) + cam.End2D() + render.PopRenderTarget() + else + end + end + if #Metrostroi.CamQueue > 0 and not Metrostroi.RenderCam then + local cam = table.remove(Metrostroi.CamQueue,1) + Metrostroi.CamQueue[cam[3]] = nil + local name,time,post,pos,ang = cam[3],cam[4],cam[6],cam[7],cam[8] + if IsValid(post) then + debugoverlay.Sphere(post:LocalToWorld(pos),1,time,Color( 150, 105, 200 ),true) + debugoverlay.Text(post:LocalToWorld(pos),name,time,Color( 150, 105, 200 ),true) + debugoverlay.Line(post:LocalToWorld(pos),post:LocalToWorld(pos)+post:LocalToWorldAngles(ang):Forward()*25,time,Color( 150, 105, 200 ),true) + Metrostroi.RenderCam = cam + Metrostroi.SetCamPosAng(post:LocalToWorld(cam[7]),post:LocalToWorldAngles(cam[8])) + Metrostroi.CamTimers[cam[3]] = RealTime() + end + end end) local function rect_ol(x,y,w,h,c) - Metrostroi.DrawLine(x-1,y,x+w,y,c) - Metrostroi.DrawLine(x+w,y,x+w,y+h,c) - Metrostroi.DrawLine(x,y+h,x+w,y+h,c) - Metrostroi.DrawLine(x,y,x,y+h,c) + Metrostroi.DrawLine(x-1,y,x+w,y,c) + Metrostroi.DrawLine(x+w,y,x+w,y+h,c) + Metrostroi.DrawLine(x,y+h,x+w,y+h,c) + Metrostroi.DrawLine(x,y,x,y+h,c) end function Metrostroi.DrawLine(x1,y1,x2,y2,col,sz) - surface.SetDrawColor(col) - if x1 == x2 then - -- vertical line - local wid = (sz or 1) / 2 - surface.DrawRect(x1-wid, y1, wid*2, y2-y1) - elseif y1 == y2 then - -- horizontal line - local wid = (sz or 1) / 2 - surface.DrawRect(x1, y1-wid, x2-x1, wid*2) - else - -- other lines - local x3 = (x1 + x2) / 2 - local y3 = (y1 + y2) / 2 - local wx = math.sqrt((x2-x1) ^ 2 + (y2-y1) ^ 2) - local angle = math.deg(math.atan2(y1-y2, x2-x1)) - draw.NoTexture() - surface.DrawTexturedRectRotated(x3, y3, wx, (sz or 1), angle) - end + surface.SetDrawColor(col) + if x1 == x2 then + -- vertical line + local wid = (sz or 1) / 2 + surface.DrawRect(x1-wid, y1, wid*2, y2-y1) + elseif y1 == y2 then + -- horizontal line + local wid = (sz or 1) / 2 + surface.DrawRect(x1, y1-wid, x2-x1, wid*2) + else + -- other lines + local x3 = (x1 + x2) / 2 + local y3 = (y1 + y2) / 2 + local wx = math.sqrt((x2-x1) ^ 2 + (y2-y1) ^ 2) + local angle = math.deg(math.atan2(y1-y2, x2-x1)) + draw.NoTexture() + surface.DrawTexturedRectRotated(x3, y3, wx, (sz or 1), angle) + end end function Metrostroi.DrawRectOutline(x,y,w,h,col,sz) - local wid = sz or 1 - if wid < 0 then - for i=0, wid+1, -1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col) - end - elseif wid > 0 then - for i=0, wid-1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col) - end - end + local wid = sz or 1 + if wid < 0 then + for i=0, wid+1, -1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col) + end + elseif wid > 0 then + for i=0, wid-1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col) + end + end end function Metrostroi.DrawRectOL(x,y,w,h,col,sz,col1) - local wid = sz or 1 - if wid < 0 then - for i=0, wid+1, -1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col) - end - elseif wid > 0 then - for i=0, wid-1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col) - end - end - surface.SetDrawColor(col1) - surface.DrawRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*1.5)) + local wid = sz or 1 + if wid < 0 then + for i=0, wid+1, -1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col) + end + elseif wid > 0 then + for i=0, wid-1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col) + end + end + surface.SetDrawColor(col1) + surface.DrawRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*1.5)) end function Metrostroi.DrawTextRect(x,y,w,h,col,mat) - surface.SetDrawColor(col) - surface.SetMaterial(mat) - surface.DrawTexturedRect(x,y,w,h) + surface.SetDrawColor(col) + surface.SetMaterial(mat) + surface.DrawTexturedRect(x,y,w,h) end function Metrostroi.DrawTextRectOL(x,y,w,h,col,mat,sz,col1) - local wid = sz or 1 - if wid < 0 then - for i=0, wid+1, -1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col1) - end - elseif wid > 0 then - for i=0, wid-1 do - rect_ol(x+i, y+i, w-2*i, h-2*i, col1) - end - end - surface.SetDrawColor(col) - surface.DrawRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*1.5)) - surface.SetDrawColor(Color(col.r - 40,col.g - 40,col.b - 40)) - surface.SetMaterial(mat) - surface.DrawTexturedRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*2)) + local wid = sz or 1 + if wid < 0 then + for i=0, wid+1, -1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col1) + end + elseif wid > 0 then + for i=0, wid-1 do + rect_ol(x+i, y+i, w-2*i, h-2*i, col1) + end + end + surface.SetDrawColor(col) + surface.DrawRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*1.5)) + surface.SetDrawColor(Color(col.r - 40,col.g - 40,col.b - 40)) + surface.SetMaterial(mat) + surface.DrawTexturedRect(x+math.max(0,sz-1),y+math.max(0,sz-1),w-math.max(0,(sz-0.5)*2),h-math.max(0,(sz-0.5)*2)) end @@ -886,125 +1043,38 @@ local function recurePrecache(sound) end end local function util_PrecacheSound(dir) - local files,dirs = file.Find(dir.."/*","GAME") - for _, fdir in pairs(dirs) do - util_PrecacheSound(dir.."/"..fdir) - end + local files,dirs = file.Find(dir.."/*","GAME") + for _, fdir in pairs(dirs) do + util_PrecacheSound(dir.."/"..fdir) + end - for _,v in pairs(files) do - util.PrecacheSound(dir.."/"..v) - end + for _,v in pairs(files) do + util.PrecacheSound(dir.."/"..v) + end end --util_PrecacheSound("sound/subway_trains") matproxy.Add{ - name = "TrainBodyColor", - init = function( self, mat, values ) - -- Store the name of the variable we want to set - if values then self._MATresultVarC = values.resultvar end - end, - bind = function( self, mat, ent ) - if ( self._MATresultVarC and ent.GetBodyColor ) then - mat:SetVector( self._MATresultVarC, ent:GetBodyColor() ) - end - end + name = "TrainBodyColor", + init = function( self, mat, values ) + -- Store the name of the variable we want to set + if values then self._MATresultVarC = values.resultvar end + end, + bind = function( self, mat, ent ) + if ( self._MATresultVarC and ent.GetBodyColor ) then + mat:SetVector( self._MATresultVarC, ent:GetBodyColor() ) + end + end } matproxy.Add{ - name = "TrainBodyDecal", - init = function( self, mat, values ) - -- Store the name of the variable we want to set - if values then self._MATresultVarD = values.resultvar end - end, - bind = function( self, mat, ent ) - if ( self._MATresultVarD and ent.GetDirtLevel ) then - mat:SetFloat( self._MATresultVarD, ent:GetDirtLevel() ) - end - end + name = "TrainBodyDecal", + init = function( self, mat, values ) + -- Store the name of the variable we want to set + if values then self._MATresultVarD = values.resultvar end + end, + bind = function( self, mat, ent ) + if ( self._MATresultVarD and ent.GetDirtLevel ) then + mat:SetFloat( self._MATresultVarD, ent:GetDirtLevel() ) + end + end } - -Metrostroi.RenderTargetNames = { - "ASNP","IGLA","PUAV","PAM","Vityaz","Tickers","Sarmat","Cam1","Cam2","Cam3","Cam4", -} -function Metrostroi.AddCaptureRTName(name) - if not table.HasValue(Metrostroi.RenderTargetNames,name) then - table.insert(Metrostroi.RenderTargetNames,name) - end -end - -concommand.Add("metrostroi_capture_rt",function(_,_,args) - local RTs = #args > 0 and args or Metrostroi.RenderTargetNames - - local train = LocalPlayer().InMetrostroiTrain - if not IsValid(train) then return end - - local oldRt = render.GetRenderTarget() -- we'll save the old screen and draw on a new one! - file.CreateDir("rt_captures") - for i,v in ipairs(RTs) do - local RT = train[v] - if RT and type(RT) == "ITexture" then - - render.SetRenderTarget( train[v] ) - - local data = render.Capture( { format = "png", quality = 100, x = 0, y = 0, h = RT:Height(), w = RT:Width() } ) - - local pictureFile = file.Open("rt_captures/"..train:EntIndex().." "..v.." "..os.date("!%d%m%y_%H%M%S",os.time())..".png", "wb", "DATA" ) - pictureFile:Write( data ) - pictureFile:Close() - end - end - - render.SetRenderTarget( oldRt ) -end) - --------------------------------------------------------------------------------- --- Player meta table magic --- Author: HunterNL --------------------------------------------------------------------------------- -local Player = FindMetaTable("Player") - -function Player:GetTrain() - local seat = self:GetVehicle() - if IsValid(seat) then - return seat:GetNW2Entity("TrainEntity"),seat - end -end -hook.Add("Think","MetrostroiGetTrain",function() - local ply = LocalPlayer() - local train = ply:GetTrain() - if IsValid(train) then - ply.InMetrostroiTrain = train - else - ply.InMetrostroiTrain = false - end -end) - RunConsoleCommand("r_rootlod",0) -- Train models only visible with High model quality - -local matSprite = { - ["$basetexture"] = "", - ["$spriteorientation"] = "vp_parallel", - ["$spriteorigin"] = "[ 0.50 0.50 ]", - ["$illumfactor"] = 7, - ["$spriterendermode"] = 3, -} -local matUnlit = { - ["$basetexture"] = "", - ["$translucent"]= 1, - ["$additive"] = 1, - ["$vertexcolor"] = 1, - --["$vertexalpha"] = 1, -} -Metrostroi.SpriteCache1 = Metrostroi.SpriteCache1 or {} -Metrostroi.SpriteCache2 = Metrostroi.SpriteCache2 or {} -function Metrostroi.MakeSpriteTexture(path,isSprite) - if isSprite then - if Metrostroi.SpriteCache1[path] then return Metrostroi.SpriteCache1[path] end - matSprite["$basetexture"] = path - Metrostroi.SpriteCache1[path] = CreateMaterial(path..":sprite","Sprite",matSprite) - return Metrostroi.SpriteCache1[path] - else - if Metrostroi.SpriteCache1[path] then return Metrostroi.SpriteCache1[path] end - matUnlit["$basetexture"] = path - Metrostroi.SpriteCache2[path] = CreateMaterial(path..":spriteug","UnlitGeneric",matUnlit) - return Metrostroi.SpriteCache2[path] - end -end \ No newline at end of file diff --git a/lua/metrostroi/convars.lua b/lua/metrostroi/convars.lua index d2ccc08..4563623 100644 --- a/lua/metrostroi/convars.lua +++ b/lua/metrostroi/convars.lua @@ -7,6 +7,7 @@ end 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_passengers_scale",50,FCVAR_ARCHIVE) CreateConVar("metrostroi_arsmode",1,FCVAR_ARCHIVE) CreateConVar("metrostroi_arsmode_nogreen",0,FCVAR_ARCHIVE) CreateConVar("metrostroi_write_telemetry",0,FCVAR_ARCHIVE) @@ -81,7 +82,7 @@ concommand.Add("metrostroi_expel_passengers",function() net.Start("metrostroi_expel_passengers") net.SendToServer() end,nil,"Expel passengers from train") -CreateClientConVar("metrostroi_language","",true,true) +CreateClientConVar("metrostroi_language","",true) CreateClientConVar("metrostroi_language_softreload",0,true) CreateClientConVar("metrostroi_stop_helper",0,true) @@ -90,10 +91,8 @@ CreateClientConVar("metrostroi_drawdebug",0,true) CreateClientConVar("metrostroi_drawsignaldebug",0,true) CreateClientConVar("metrostroi_drawcams",1,true) CreateClientConVar("metrostroi_cabfov",75,true) -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) @@ -101,12 +100,9 @@ CreateClientConVar("metrostroi_renderdistance",1024,true) CreateClientConVar("metrostroi_screenshotmode",0,true) CreateClientConVar("metrostroi_softdrawmultipier",100,true) -CreateClientConVar("metrostroi_route_number",61,true,true) CreateClientConVar("metrostroi_shadows1",1,true) CreateClientConVar("metrostroi_shadows2",1,true) CreateClientConVar("metrostroi_shadows3",0,true) -CreateClientConVar("metrostroi_shadows4",0,true) -CreateClientConVar("metrostroi_sprites",1,true) CreateClientConVar("metrostroi_minimizedshow",0,true) local function reload() --Metrostroi.ReloadClientside = true @@ -114,3 +110,6 @@ end cvars.AddChangeCallback("metrostroi_shadows1",reload,"reload_shadows") cvars.AddChangeCallback("metrostroi_shadows2",reload,"reload_shadows") CreateClientConVar("metrostroi_tooltip_delay",0,true) + +CreateClientConVar("metrostroi_addons_check_skip_error",0,true) +CreateClientConVar("metrostroi_addons_check_ignore",0,true) diff --git a/lua/metrostroi/maps/b50.lua b/lua/metrostroi/maps/b50.lua index eb02abb..0879a60 100644 --- a/lua/metrostroi/maps/b50.lua +++ b/lua/metrostroi/maps/b50.lua @@ -446,30 +446,27 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ Name = "Индустриал.-Синеозёрн.", Loop = false, spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, BlockDoors = true, { 108, "Автозаводская", arrlast = {nil, {"arr_avtozavodskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "avtozavodskaya_m"}, - dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}} }, { 109, "Индустриальная", arr = {{"station_m","industrialnaya_m"}, "arr_industrialnaya_f"}, dep = {{"doors_closing_m", "moskovskaya_m"}, {"doors_closing_f", "next_avtozavodskaya_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 110, "Московская", arr = {{"station_m","moskovskaya_m",0.1,"politeness_m"}, "arr_moskovskaya_f"}, dep = {{"doors_closing_m", "oktyabrskaya_m",0.1,"objects_m"}, {"doors_closing_f", "next_industrialnaya_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"}, right_doors=true, }, { @@ -480,7 +477,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"station_m","oktyabrskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_oktyabrskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "oktyabrskaya_m"}, not_last = {3, "train_goes_to_m", "oktyabrskaya_m"}, not_last_f = {3, "to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112, @@ -490,14 +487,14 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"station_m","ploschad_myra_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_ploschad_myra_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "ploschad_myra_m"}, not_last = {3, "train_goes_to_m", "ploschad_myra_m"}, not_last_f = {3, "to_ploschad_myra_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113, "Новоармейская", arr = {{"station_m","novoarmeyskaya_m",0.1,"skip_vokzalnaya_m"}, {"arr_novoarmeyskaya_f",0.1,"exit_f"}}, dep = {{"doors_closing_m", "komsomolskaya_next_m",0.1,"handrails_m"}, {"doors_closing_f", "next_ploschad_myra_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 115, @@ -507,7 +504,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_komsomolskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","komsomolskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "komsomolskaya_m"}, not_last = {3, "train_goes_to_m", "komsomolskaya_m"}, not_last_f = {3, "to_komsomolskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, have_inrerchange = true, right_doors=true, }, @@ -516,21 +513,21 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ "Электросила", arr = {"arr_elektrosila_f", {"station_m","elektrosila_m"}}, dep = {{"doors_closing_f", "next_tetralnaya_ploschad_f"}, {"doors_closing_m", "komsomolskaya_next_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 117, "Театр. площадь", arr = {{"arr_tetralnaya_ploschad_f",0.1,"handrails_f"}, {"station_m","teatralnaya_ploschad_m"}}, dep = {{"doors_closing_f", "next_park_pobedy_f",0.1,"exit_f"}, {"doors_closing_m", "elektrosila_m",0.1,"exit_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 118, "Парк победы", arr = {"arr_park_pobedy_f", {"station_m","park_pobedy_m",0.1,"politeness_m"}}, dep = {{"doors_closing_f", "next_sineozernaya_f"}, {"doors_closing_m", "teatralnaya_ploschad_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, right_doors=true, }, { @@ -538,7 +535,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ "Синеозёрная", arr = {"arr_sineozernaya_f", {"station_m","sineozernaya_m"}}, dep = {{"doors_closing_f", "next_minskaya_f",0.1,"things_f"}, {"doors_closing_m", "park_pobedy_m",0.1,"objects_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 121, @@ -548,14 +545,14 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_minskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","minskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "minskaya_m"}, not_last = {3, "train_goes_to_m", "minskaya_m"}, not_last_f = {3, "to_minskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 122, "Царские ворота", arr = {{"arr_tsarskiye_vorota_f", 3, "to_mejdustroyskaya_f"}, {"station_m","tsarskiye_vorota_m"}}, dep = {{"doors_closing_f", "next_mejdustroyskaya_f"}, {"doors_closing_m", "minskaya_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 123, @@ -563,7 +560,6 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arr = {"arr_mejdustroyskaya_f"}, arrlast = {{"arr_mejdustroyskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, nil, "mejdustroyskaya_m"}, dep = {nil, {"doors_closing_m", "tsarskiye_vorota_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, right_doors=true, } }, @@ -578,22 +574,21 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ 108, "Автозаводская", arrlast = {nil, {"arr_avtozavodskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "avtozavodskaya_m"}, - dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}} }, { 109, "Индустриальная", arr = {{"station_m","industrialnaya_m"}, "arr_industrialnaya_f"}, dep = {{"doors_closing_m", "moskovskaya_m"}, {"doors_closing_f", "next_avtozavodskaya_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 110, "Московская", arr = {{"station_m","moskovskaya_m",0.1,"politeness_m"}, "arr_moskovskaya_f"}, dep = {{"doors_closing_m", "oktyabrskaya_m",0.1,"objects_m"}, {"doors_closing_f", "next_industrialnaya_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"}, right_doors=true, }, { @@ -604,7 +599,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"station_m","oktyabrskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_oktyabrskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "oktyabrskaya_m"}, not_last = {3, "train_goes_to_m", "oktyabrskaya_m"}, not_last_f = {3, "to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112, @@ -614,14 +609,14 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"station_m","ploschad_myra_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_ploschad_myra_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "ploschad_myra_m"}, not_last = {3, "train_goes_to_m", "ploschad_myra_m"}, not_last_f = {3, "to_ploschad_myra_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113, "Новоармейская", arr = {{"station_m","novoarmeyskaya_m",0.1,"skip_vokzalnaya_m"}, {"arr_novoarmeyskaya_f",0.1,"exit_f"}}, dep = {{"doors_closing_m", "komsomolskaya_next_m",0.1,"handrails_m"}, {"doors_closing_f", "next_ploschad_myra_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 115, @@ -631,7 +626,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_komsomolskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","komsomolskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "komsomolskaya_m"}, not_last = {3, "train_goes_to_m", "komsomolskaya_m"}, not_last_f = {3, "to_komsomolskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, have_inrerchange = true, right_doors=true, }, @@ -640,21 +635,21 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ "Электросила", arr = {"arr_elektrosila_f", {"station_m","elektrosila_m"}}, dep = {{"doors_closing_f", "next_tetralnaya_ploschad_f"}, {"doors_closing_m", "komsomolskaya_next_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 117, "Театр. площадь", arr = {{"arr_tetralnaya_ploschad_f",0.1,"handrails_f"}, {"station_m","teatralnaya_ploschad_m"}}, dep = {{"doors_closing_f", "next_park_pobedy_f",0.1,"exit_f"}, {"doors_closing_m", "elektrosila_m",0.1,"exit_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 118, "Парк победы", arr = {"arr_park_pobedy_f", {"station_m","park_pobedy_m",0.1,"politeness_m"}}, dep = {{"doors_closing_f", "next_sineozernaya_f"}, {"doors_closing_m", "teatralnaya_ploschad_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, right_doors=true, }, { @@ -662,7 +657,7 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ "Синеозёрная", arr = {"arr_sineozernaya_f", {"station_m","sineozernaya_m"}}, dep = {{"doors_closing_f", "next_minskaya_f",0.1,"things_f"}, {"doors_closing_m", "park_pobedy_m",0.1,"objects_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 121, @@ -672,29 +667,28 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_minskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","minskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "minskaya_m"}, not_last = {3, "train_goes_to_m", "minskaya_m"}, not_last_f = {3, "to_minskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 122, "Царские ворота", arr = {{"arr_tsarskiye_vorota_f", 3, "to_avtostanciya_yujnaya_f"}, {"station_m","tsarskiye_vorota_m"}}, dep = {{"doors_closing_f", "next_muzey_skulptur_f"}, {"doors_closing_m", "minskaya_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 321, "Музей скульптур", arr = {"arr_muzey_skulptur_f", {"station_m","muzey_skulptur_m"}}, dep = {{"doors_closing_f", "next_avtostanciya_yujnaya_f"}, {"doors_closing_m", "tsarskiye_vorota_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 322, "Автостанция южная", arr = {"arr_avtostanciya_yujnaya_f"}, arrlast = {{"arr_avtostanciya_yujnaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, nil, "avtostanciya_yujnaya_m"}, - dep = {nil, {"doors_closing_m", "muzey_skulptur_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + dep = {nil, {"doors_closing_m", "muzey_skulptur_m",0.1,"politeness_m"}} }, }, }) @@ -816,29 +810,26 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ Loop = false, BlockDoors = true, spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, { 108, "Автозаводская","Avtozavodskaya", arrlast = {nil, {"arr_avtozavodskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "avtozavodskaya_m"}, - dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}} }, { 109, "Индустриальная","Industrialnaya", arr = {{"station_m","industrialnaya_m"}, "arr_industrialnaya_f"}, dep = {{"doors_closing_m", "moskovskaya_m"}, {"doors_closing_f", "next_avtozavodskaya_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 110, "Московская","Moskovskaya", arr = {{"station_m","moskovskaya_m",0.1,"politeness_m"}, "arr_moskovskaya_f"}, dep = {{"doors_closing_m", "oktyabrskaya_m",0.1,"objects_m"}, {"doors_closing_f", "next_industrialnaya_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"}, right_doors=true, }, { @@ -849,7 +840,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"station_m","oktyabrskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_oktyabrskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "oktyabrskaya_m"}, not_last = {3, "train_goes_to_m", "oktyabrskaya_m"}, not_last_f = {3, "to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112, @@ -859,14 +850,14 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"station_m","ploschad_myra_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_ploschad_myra_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "ploschad_myra_m"}, not_last = {3, "train_goes_to_m", "ploschad_myra_m"}, not_last_f = {3, "to_ploschad_myra_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113, "Новоармейская","Novoarmeyskaya", arr = {{"station_m","novoarmeyskaya_m",0.1,"skip_vokzalnaya_m"}, {"arr_novoarmeyskaya_f",0.1,"exit_f"}}, dep = {{"doors_closing_m", "komsomolskaya_next_m",0.1,"handrails_m"}, {"doors_closing_f", "next_ploschad_myra_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 115, @@ -876,7 +867,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"arr_komsomolskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","komsomolskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "komsomolskaya_m"}, not_last = {3, "train_goes_to_m", "komsomolskaya_m"}, not_last_f = {3, "to_komsomolskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, have_inrerchange = true, right_doors=true, }, @@ -885,21 +876,21 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ "Электросила","Elektrosila", arr = {"arr_elektrosila_f", {"station_m","elektrosila_m"}}, dep = {{"doors_closing_f", "next_tetralnaya_ploschad_f"}, {"doors_closing_m", "komsomolskaya_next_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 117, "Театр. площадь","Teatr. ploschad", arr = {{"arr_tetralnaya_ploschad_f",0.1,"handrails_f"}, {"station_m","teatralnaya_ploschad_m"}}, dep = {{"doors_closing_f", "next_park_pobedy_f",0.1,"exit_f"}, {"doors_closing_m", "elektrosila_m",0.1,"exit_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 118, "Парк победы","Park pobedy", arr = {"arr_park_pobedy_f", {"station_m","park_pobedy_m",0.1,"politeness_m"}}, dep = {{"doors_closing_f", "next_sineozernaya_f"}, {"doors_closing_m", "teatralnaya_ploschad_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, right_doors=true, }, { @@ -907,7 +898,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ "Синеозёрная","Sineozernaya", arr = {"arr_sineozernaya_f", {"station_m","sineozernaya_m"}}, dep = {{"doors_closing_f", "next_minskaya_f",0.1,"things_f"}, {"doors_closing_m", "park_pobedy_m",0.1,"objects_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 121, @@ -917,14 +908,14 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"arr_minskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","minskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "minskaya_m"}, not_last = {3, "train_goes_to_m", "minskaya_m"}, not_last_f = {3, "to_minskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 122, "Царские ворота","Tsarskiye vorota", arr = {{"arr_tsarskiye_vorota_f", 3, "to_mejdustroyskaya_f"}, {"station_m","tsarskiye_vorota_m"}}, dep = {{"doors_closing_f", "next_mejdustroyskaya_f"}, {"doors_closing_m", "minskaya_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 123, @@ -932,7 +923,6 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arr = {"arr_mejdustroyskaya_f"}, arrlast = {{"arr_mejdustroyskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, nil, "mejdustroyskaya_m"}, dep = {nil, {"doors_closing_m", "tsarskiye_vorota_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, right_doors=true, } }, @@ -947,22 +937,21 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ 108, "Автозаводская","Avtozavodskaya", arrlast = {nil, {"arr_avtozavodskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "avtozavodskaya_m"}, - dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + dep = {{"doors_closing_m", "industrialnaya_m",0.1,"politeness_m"}} }, { 109, "Индустриальная","Industrialnaya", arr = {{"station_m","industrialnaya_m"}, "arr_industrialnaya_f"}, dep = {{"doors_closing_m", "moskovskaya_m"}, {"doors_closing_f", "next_avtozavodskaya_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 110, "Московская","Moskovskaya", arr = {{"station_m","moskovskaya_m",0.1,"politeness_m"}, "arr_moskovskaya_f"}, dep = {{"doors_closing_m", "oktyabrskaya_m",0.1,"objects_m"}, {"doors_closing_f", "next_industrialnaya_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"}, right_doors=true, }, { @@ -973,7 +962,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"station_m","oktyabrskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_oktyabrskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "oktyabrskaya_m"}, not_last = {3, "train_goes_to_m", "oktyabrskaya_m"}, not_last_f = {3, "to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112, @@ -983,14 +972,14 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"station_m","ploschad_myra_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, {"arr_ploschad_myra_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, "ploschad_myra_m"}, not_last = {3, "train_goes_to_m", "ploschad_myra_m"}, not_last_f = {3, "to_ploschad_myra_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113, "Новоармейская","Novoarmeyskaya", arr = {{"station_m","novoarmeyskaya_m",0.1,"skip_vokzalnaya_m"}, {"arr_novoarmeyskaya_f",0.1,"exit_f"}}, dep = {{"doors_closing_m", "komsomolskaya_next_m",0.1,"handrails_m"}, {"doors_closing_f", "next_ploschad_myra_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 115, @@ -1000,7 +989,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"arr_komsomolskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","komsomolskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "komsomolskaya_m"}, not_last = {3, "train_goes_to_m", "komsomolskaya_m"}, not_last_f = {3, "to_komsomolskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, have_inrerchange = true, right_doors=true, }, @@ -1009,21 +998,21 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ "Электросила","Elektrosila", arr = {"arr_elektrosila_f", {"station_m","elektrosila_m"}}, dep = {{"doors_closing_f", "next_tetralnaya_ploschad_f"}, {"doors_closing_m", "komsomolskaya_next_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 117, "Театр. площадь","Teatr. ploschad", arr = {{"arr_tetralnaya_ploschad_f",0.1,"handrails_f"}, {"station_m","teatralnaya_ploschad_m"}}, dep = {{"doors_closing_f", "next_park_pobedy_f",0.1,"exit_f"}, {"doors_closing_m", "elektrosila_m",0.1,"exit_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 118, "Парк победы","Park pobedy", arr = {"arr_park_pobedy_f", {"station_m","park_pobedy_m",0.1,"politeness_m"}}, dep = {{"doors_closing_f", "next_sineozernaya_f"}, {"doors_closing_m", "teatralnaya_ploschad_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, right_doors=true, }, { @@ -1031,7 +1020,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ "Синеозёрная","Sineozernaya", arr = {"arr_sineozernaya_f", {"station_m","sineozernaya_m"}}, dep = {{"doors_closing_f", "next_minskaya_f",0.1,"things_f"}, {"doors_closing_m", "park_pobedy_m",0.1,"objects_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 121, @@ -1041,29 +1030,28 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ arrlast = {{"arr_minskaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, {"station_m","minskaya_m", 0.5, "last_m",2,"things_m",2,"deadlock_m"}, "minskaya_m"}, not_last = {3, "train_goes_to_m", "minskaya_m"}, not_last_f = {3, "to_minskaya_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 122, "Царские ворота","Tsarskiye vorota", arr = {{"arr_tsarskiye_vorota_f", 3, "to_avtostanciya_yujnaya_f"}, {"station_m","tsarskiye_vorota_m"}}, dep = {{"doors_closing_f", "next_muzey_skulptur_f"}, {"doors_closing_m", "minskaya_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 321, "Музей скульптур","Muzey skulptur", arr = {"arr_muzey_skulptur_f", {"station_m","muzey_skulptur_m"}}, dep = {{"doors_closing_f", "next_avtostanciya_yujnaya_f"}, {"doors_closing_m", "tsarskiye_vorota_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, }, { 322, "Автостанция южная","Avtostanciya yujnaya", arr = {"arr_avtostanciya_yujnaya_f"}, arrlast = {{"arr_avtostanciya_yujnaya_f", 0.5, "last_f",2,"things_f",2,"deadlock_f"}, nil, "avtostanciya_yujnaya_m"}, - dep = {nil, {"doors_closing_m", "muzey_skulptur_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + dep = {nil, {"doors_closing_m", "muzey_skulptur_m",0.1,"politeness_m"}} }, }, }) diff --git a/lua/metrostroi/maps/crossline.lua b/lua/metrostroi/maps/crossline.lua index a174261..7a77e35 100644 --- a/lua/metrostroi/maps/crossline.lua +++ b/lua/metrostroi/maps/crossline.lua @@ -49,8 +49,6 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ click1 = {"subway_announcers/asnp/boiko_new/click1.mp3",0.5}, click2 = {"subway_announcers/asnp/boiko_new/click2.mp3",0.3}, click3 = {"subway_announcers/asnp/boiko_new/click3.mp3",0.3}, - click_start = {"subway_announcers/asnp/boiko_new/click1.mp3",0.5}, - click_end = {"subway_announcers/asnp/boiko_new/click3.mp3",0.3}, announcer_ready = {"subway_announcers/asnp/boiko_new/announcer_ready.mp3",3.295479}, @@ -158,47 +156,44 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ LED = {5,4,4,4,5,4,2,2}, --FIXME Name = "Линия 1", spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, Loop = false, BlockDoors = true, { 110,"Международная", arrlast = {nil,{"arr_mejdunarodnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"mejdunarodnaya_m"}, dep = {{"doors_closing_m","park_kultury_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, }, { 111,"Парк Культуры", arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, dep = {{"doors_closing_m","politehnicheskaya_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112,"Политехнич.", arr = {{"station_m","politehnicheskaya_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113,"Пр. Суворова", arr = {{"station_m","prospekt_suvorova_m",0.2,"objects_m"},{"station_m","prospekt_suvorova_m",0.2,"things_m"}}, dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_m","politehnicheskaya_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 114,"Нахимовская", arr = {"arr_nahimovskaya_f",{"station_m","nahimovskaya_m"}}, dep = {{"doors_closing_f","next_oktyabrskaya_f",0.2,"politeness_f"},{"doors_closing_m","prospekt_suvorova_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 115,"Октябрьская", arr = {"arr_oktyabrskaya_f",{"station_m","oktyabrskaya_arr_m",0.2,"exit_m"}}, dep = {{"doors_closing_f","next_rechnaya_f","spec_rechnaya_doors_f"},{"doors_closing_m","nahimovskaya_m"}}, arrlast = {{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"oktyabrskaya_next_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, not_last_f = {3,"to_oktyabrskaya_f"}, }, @@ -208,7 +203,6 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_rechnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","rechnaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"rechnaya_m"}, dep = {{"doors_closing_f","next_proletarskaya_f"},{"doors_closing_m","oktyabrskaya_next_m",0.2}}, not_last = {3,"train_goes_to_m","rechnaya_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, not_last_f = {3,"to_rechnaya_f"}, right_doors = true, }, @@ -216,7 +210,6 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ 117,"Пролетарская", --arr = {"arr_rechnaya",{"arr_rechnaya"}}, arrlast = {{"arr_proletarskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},nil,"proletarskaya_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, dep = {nil,{"doors_closing_m","rechnaya_m",0.2,"politeness_m"}}, }, }, @@ -319,9 +312,7 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ Name = "Линия 1", NameEn = "Line 1", spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, Loop = false, BlockDoors = true, { @@ -333,32 +324,32 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ 111,"Парк Культуры","Park Kultury", arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, dep = {{"doors_closing_m","politehnicheskaya_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 112,"Политехнич.","Politehnich.", arr = {{"station_m","politehnicheskaya_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 113,"Пр. Суворова","Pr. Suvorova", arr = {{"station_m","prospekt_suvorova_m",0.2,"objects_m"},{"station_m","prospekt_suvorova_m",0.2,"things_m"}}, dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_m","politehnicheskaya_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 114,"Нахимовская","Nahimovskaya", arr = {"arr_nahimovskaya_f",{"station_m","nahimovskaya_m"}}, dep = {{"doors_closing_f","next_oktyabrskaya_f",0.2,"politeness_f"},{"doors_closing_m","prospekt_suvorova_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 115,"Октябрьская","Oktabrskaya", arr = {"arr_oktyabrskaya_f",{"station_m","oktyabrskaya_arr_m",0.2,"exit_m"}}, dep = {{"doors_closing_f","next_rechnaya_f","spec_rechnaya_doors_f"},{"doors_closing_m","nahimovskaya_m"}}, arrlast = {{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"oktyabrskaya_next_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, not_last_f = {3,"to_oktyabrskaya_f"}, }, diff --git a/lua/metrostroi/maps/crossline_m12.lua b/lua/metrostroi/maps/crossline_m12.lua index a72a58e..a8f87c9 100644 --- a/lua/metrostroi/maps/crossline_m12.lua +++ b/lua/metrostroi/maps/crossline_m12.lua @@ -154,47 +154,44 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ LED = {5,4,4,4,5,4,4}, Name = "Линия 1", spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, Loop = false, BlockDoors = true, { 909,"Международная", arrlast = {nil,{"arr_mejdunarodnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"mejdunarodnaya_m"}, dep = {{"doors_closing_m","park_kultury_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, }, { 910,"Парк Культуры", arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, dep = {{"doors_closing_m","politehnicheskaya_next_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 911,"Политехнич.", arr = {{"station_m","politehnicheskaya_arr_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 912,"Пр. Суворова", arr = {{"station_m","prospekt_suvorova_m",0.2,"objects_m"},{"station_m","prospekt_suvorova_m",0.2,"things_m"}}, dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_m","politehnicheskaya_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 913,"Нахимовская", arr = {"arr_nahimovskaya_f",{"station_m","nahimovskaya_m"}}, dep = {{"doors_closing_f","next_oktyabrskaya_f",0.2,"politeness_f"},{"doors_closing_m","prospekt_suvorova_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 914,"Октябрьская", arr = {"arr_oktyabrskaya_f",{"station_m","oktyabrskaya_arr_m",0.2,"exit_m"}}, dep = {{"doors_closing_f","next_rechnaya_f","spec_rechnaya_doors_f"},{"doors_closing_m","nahimovskaya_m"}}, arrlast = {{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"oktyabrskaya_next_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, not_last_f = {3,"to_oktyabrskaya_f"}, }, @@ -203,7 +200,6 @@ Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ arrlast = {{"arr_rechnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","rechnaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"rechnaya_m"}, dep = {nil,{"doors_closing_m","oktyabrskaya_next_m",0.2}}, not_last_f = {3,"to_rechnaya"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, right_doors = true, }, }, @@ -306,47 +302,44 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ Name = "Линия 1", NameEn = "Line 1", spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, Loop = false, BlockDoors = true, { 909,"Международная","Mezhdunarod.", arrlast = {nil,{"arr_mejdunarodnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"mejdunarodnaya_m"}, dep = {{"doors_closing_m","park_kultury_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, }, { 910,"Парк Культуры","Park Kultury", arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, dep = {{"doors_closing_m","politehnicheskaya_next_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 911,"Политехнич.","Politehnich.", arr = {{"station_m","politehnicheskaya_arr_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 912,"Пр. Суворова","Pr. Suvorova", arr = {{"station_m","prospekt_suvorova_m",0.2,"objects_m"},{"station_m","prospekt_suvorova_m",0.2,"things_m"}}, dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_m","politehnicheskaya_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + not_last_c = {nil,"not_last_f"} }, { 913,"Нахимовская","Nahimovskaya", arr = {"arr_nahimovskaya_f",{"station_m","nahimovskaya_m"}}, dep = {{"doors_closing_f","next_oktyabrskaya_f",0.2,"politeness_f"},{"doors_closing_m","prospekt_suvorova_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"} }, { 914,"Октябрьская","Oktabrskaya", arr = {"arr_oktyabrskaya_f",{"station_m","oktyabrskaya_arr_m",0.2,"exit_m"}}, dep = {{"doors_closing_f","next_rechnaya_f","spec_rechnaya_doors_f"},{"doors_closing_m","nahimovskaya_m"}}, arrlast = {{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"oktyabrskaya_next_m"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, + not_last_c = {"not_last_f"}, not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, not_last_f = {3,"to_oktyabrskaya_f"}, }, @@ -354,7 +347,6 @@ Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ 915,"Речная","Rechnaya", arrlast = {{"arr_rechnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station","rechnaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"rechnaya_m"}, dep = {nil,{"doors_closing_m","oktyabrskaya_next_m",0.2}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, not_last_f = {3,"to_rechnaya"}, right_doors = true, }, diff --git a/lua/metrostroi/maps/crossline_r.lua b/lua/metrostroi/maps/crossline_r.lua deleted file mode 100644 index 28c3ff7..0000000 --- a/lua/metrostroi/maps/crossline_r.lua +++ /dev/null @@ -1,964 +0,0 @@ -local Map = game.GetMap() or "" - -if Map:find("gm_metro_crossline_r") then - Metrostroi.PlatformMap = "gm_metro_crossline" - Metrostroi.CurrentMap = "gm_metro_crossline" -else - return -end -Metrostroi.Skins["717_schemes"]["p"] = { - adv = "metrostroi_skins/81-717_schemes/int_orange_spb_adv", - clean = "metrostroi_skins/81-717_schemes/int_orange_spb_clean", -} -Metrostroi.Skins["717_schemes"]["m"] = { - adv = "metrostroi_skins/81-717_schemes/int_orange_msk_adv", - clean = "metrostroi_skins/81-717_schemes/int_orange_msk_noadv", -} -Metrostroi.AddPassSchemeTex("720","Crossline",{ - "metrostroi_skins/81-720_schemes/crossline", - "metrostroi_skins/81-720_schemes/crossliner", -}) -Metrostroi.AddPassSchemeTex("722","Crossline",{ - "metrostroi_skins/81-722_schemes/crossline", - "metrostroi_skins/81-722_schemes/crossliner", -}) -Metrostroi.AddLastStationTex("710",110,"metrostroi_skins/81-710_names/route_me") -Metrostroi.AddLastStationTex("710",115,"metrostroi_skins/81-710_names/route_oktober") -Metrostroi.AddLastStationTex("710",116,"metrostroi_skins/81-710_names/route_rechnaya") -Metrostroi.AddLastStationTex("720",110,"metrostroi_skins/81-720_names/label_mezhdunarodnaya") -Metrostroi.AddLastStationTex("720",115,"metrostroi_skins/81-720_names/label_okt") -Metrostroi.AddLastStationTex("720",116,"metrostroi_skins/81-720_names/label_rech") - -Metrostroi.TickerAdverts = { - "МЕТРОПОЛИТЕН ИМЕНИ ГАРРИ НЬЮМАНА ПРИГЛАШАЕТ НА РАБОТУ РЕАЛЬНЕ МАФЕНЕСТОВ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ТЕЛЕФОН ДЛЯ СПРАВОК 8 (800) 555-35-35", - "УВАЖАЕМЫЕ ПАССАЖИРЫ, ПРИ ВЫХОДЕ ИЗ ПОЕЗДА, НЕ ЗАБЫВАЙТЕ СВОИ ВЕЩИ", - "ЭЛЕКТРОДЕПО КРОССЛАЙНА ПРИГЛАШАЕТ НА РАБОТУ МОДЕЛЕРОВ ДЛЯ ПОСТРОЙКИ ЭЛЕКТРОДЕПО", - "СТАНЦИЯ РЕЧНАЯ ПРИГЛАШАЕТ НА РАБОТУ МАШИНИСТОВ И ПОМОЩНИКОВ МАШИНИСТА ЭСКАЛАТОРА. ОПЛАТА 5 КУСОЧКОВ НОМЕРНОГО.", - "ЭЛЕКТРОДЕПО КРОССЛАЙА ПРИГЛАШААААААААААААААААААААААААААААААААААААААААААААААВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВССССССССССССССССССССССССССССССССССССССССССССССССС", - ".", - "ЪЪъъЪЪЪъЪЪЪЪъъъЪЪЪЪЪъъЪЪъъЪЪЪъъЪЪъЪЪъЪъъЪЪЪЪъъъЪЪъъЪЪЪЪЪъъЪЪъъЪъЪЪЪЪЪъЪЪЪЪъъЪЪЪЪЪъъъЪЪъ", -} - -Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ - asnp = true, - click1 = {"subway_announcers/asnp/boiko_new/click1.mp3",0.367833}, - click2 = {"subway_announcers/asnp/boiko_new/click2.mp3",0.209688}, - click3 = {"subway_announcers/asnp/boiko_new/click3.mp3",0.203479}, - - - announcer_ready = {"subway_announcers/asnp/boiko_new/announcer_ready.mp3",3.295479}, - doors_closing_m = {"subway_announcers/asnp/boiko_new/doors_closing.mp3",3.782542}, - deadlock_m = {"subway_announcers/asnp/boiko_new/spec_attention_deadlock.mp3",9.352500}, - exit_m = {"subway_announcers/asnp/boiko_new/spec_attention_exit.mp3",5.363563}, - handrails_m = {"subway_announcers/asnp/boiko_new/spec_attention_handrails.mp3",4.221854}, - last_m = {"subway_announcers/asnp/boiko_new/spec_attention_last.mp3",4.425625}, - objects_m = {"subway_announcers/asnp/boiko_new/spec_attention_objects.mp3",4.674771}, - politeness_m = {"subway_announcers/asnp/boiko_new/spec_attention_politeness.mp3",9.057104}, - things_m = {"subway_announcers/asnp/boiko_new/spec_attention_things.mp3",4.559146}, - train_depeat_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_depeat.mp3",4.633417}, - train_stop_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_stop.mp3",6.501979}, - station_m = {"subway_announcers/asnp/boiko_new/station.mp3",0.943438}, - train_goes_to_m = {"subway_announcers/asnp/boiko_new/train_goes_to.mp3",2.077708}, - - kirovskaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/kirovskaya.mp3",0.883667}, - mejdunarodnaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/mejdunarodnaya.mp3",1.206667}, - molodejnaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/molodejnaya.mp3",1.112917}, - nahimovskaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/nahimovskaya.mp3",1.097292}, - oktyabrskaya_arr_m = {"subway_announcers/asnp/boiko_new/crossline/1/oktyabrskaya_arr.mp3",5.656979}, - oktyabrskaya_next_m = {"subway_announcers/asnp/boiko_new/crossline/1/oktyabrskaya_next.mp3",1.124083}, - olimpiyskaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/olimpiyskaya.mp3",1.081750}, - park_kultury_m = {"subway_announcers/asnp/boiko_new/crossline/1/park_kultury.mp3",1.142833}, - politehnicheskaya_arr_m = {"subway_announcers/asnp/boiko_new/crossline/1/politehnicheskaya_next.mp3",2.674708}, - --politehnicheskaya_arr_m = {"subway_announcers/asnp/boiko_new/crossline/1/politehnicheskaya_arr.mp3",4.657938}, - politehnicheskaya_next_m = {"subway_announcers/asnp/boiko_new/crossline/1/politehnicheskaya_next.mp3",2.674708}, - proletarskaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/proletarskaya.mp3",1.060521}, - prospekt_suvorova_m = {"subway_announcers/asnp/boiko_new/crossline/1/prospekr_suvorova.mp3",1.244667}, - rechnaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/rechnaya.mp3",2.090708}, - spec_attention_politehnicheskaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/spec_attention_politehnicheskaya.mp3",10.516479}, - spec_attention_rechnaya_m = {"subway_announcers/asnp/boiko_new/crossline/1/spec_attention_rechnaya.mp3",8.791000}, - kalininskaya_m = {"subway_announcers/asnp/boiko_new/crossline/2/kalininskaya.mp3",0.996938}, - pionerskaya_m = {"subway_announcers/asnp/boiko_new/crossline/2/pionerskaya.mp3",0.916688}, - politehnicheskaya2_arr_m = {"subway_announcers/asnp/boiko_new/crossline/2/politehnicheskaya_arr.mp3",3.165667}, - politehnicheskaya2_next_m = {"subway_announcers/asnp/boiko_new/crossline/2/politehnicheskaya_next.mp3",1.224833}, - timerazevskaya_m = {"subway_announcers/asnp/boiko_new/crossline/2/timerazevskaya.mp3",1.060000}, - vokzalnaya_arr_m = {"subway_announcers/asnp/boiko_new/crossline/2/vokzalnaya_arr.mp3",4.609771}, - vokzalnaya_next_m = {"subway_announcers/asnp/boiko_new/crossline/2/vokzalnaya_next.mp3",2.498896}, - - - doors_closing_f = {"subway_announcers/asnp/pyaseckaya/doors_closing.mp3",2.340813}, - deadlock_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_deadlock.mp3",10.501979}, - exit_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_exit.mp3",5.111104}, - handrails_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_handrails.mp3",4.675083}, - last_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_last.mp3",4.878542}, - objects_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_objects.mp3",5.323146}, - politeness_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_politeness.mp3",10.685375}, - things_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_things.mp3",5.144021}, - train_depeat_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_depeat.mp3",4.481875}, - train_stop_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_stop.mp3",6.395313}, - - - arr_kirovskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_kirovskaya.mp3",1.987917}, - arr_mejdunarodnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_mejdunarodnaya.mp3",2.185542}, - arr_molodejnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_molodejnaya.mp3",2.093146}, - arr_nahimovskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_nahimovskaya.mp3",2.171021}, - arr_oktyabrskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_oktyabrskaya.mp3",6.757750}, - arr_olimpiyskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_olimpiyskaya.mp3",2.338708}, - arr_park_kultury_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_park_kultury.mp3",2.171104}, - arr_politehnicheskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_politehnicheskaya_old.mp3",6.295417}, - arr_proletarskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_proletarskaya.mp3",2.334667}, - arr_prospekt_suvorova_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_prospekt_suvorova.mp3",2.538375}, - arr_rechnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/arr_rechnaya.mp3",3.408208}, - mejdunarodnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/mejdunarodnaya.mp3",1.275063}, - molodejnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/molodejnaya.mp3",1.196188}, - next_kirovskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_kirovskaya.mp3",2.771500}, - next_mejdunarodnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_mejdunarodnaya.mp3",2.947417}, - next_molodejnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_molodejnaya.mp3",2.818333}, - next_nahimovskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_nahimovskaya.mp3",2.930021}, - next_oktyabrskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_oktyabrskaya.mp3",2.702000}, - next_olimpiyskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_olimpiyskaya.mp3",2.996396}, - next_park_kultury_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_park_kultury.mp3",2.954438}, - next_politehnicheskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_politehnicheskaya.mp3",4.652875}, - next_proletarskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_proletarskaya.mp3",2.964667}, - next_prospekt_suvorova_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_prospekt_suvorova.mp3",3.674854}, - next_rechnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/next_rechnaya.mp3",4.248000}, - oktyabrskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/oktyabrskaya.mp3",1.186063}, - olimpiyskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/olimpiyskaya.mp3",1.208104}, - politehnicheskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/politehnicheskaya.mp3",1.506854}, - spec_attemton_politehnicheskaya3_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/spec_attemton_politehnicheskaya3.mp3",12.349063}, - spec_rechnaya_doors_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/spec_rechnaya_doors.mp3",10.953646}, - to_molodejnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/to_molodejnaya.mp3",3.460771}, - to_oktyabrskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/to_oktyabrskaya.mp3",3.355125}, - to_olimpiyskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/to_olimpiyskaya.mp3",3.424896}, - to_politehnicheskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/1/to_politehnicheskaya.mp3",3.638792}, - arr_kalininskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/arr_kalininskaya.mp3",2.369042}, - arr_pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/arr_pionerskaya.mp3",2.146000}, - arr_politehnicheskaya2_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/arr_politehnicheskaya.mp3",6.419542}, - arr_timerazevskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/arr_timerazevskaya.mp3",2.398271}, - arr_vokzalnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/arr_vokzalnaya.mp3",5.819833}, - next_kalininskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/next_kalininskaya.mp3",2.845229}, - next_pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/next_pionerskaya.mp3",2.837875}, - next_politehnicheskaya2_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/next_politehnicheskaya.mp3",3.293792}, - next_timerazevskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/next_timerazevskaya.mp3",3.049167}, - next_vokzalnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/next_vokzalnaya.mp3",4.291833}, - politehnicheskaya2_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/politehnicheskaya.mp3",1.361250}, - timerazevskaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/timerazevskaya.mp3",1.352604}, - to_vokzalnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/to_vokzalnaya.mp3",3.471125}, - vokzalnaya_f = {"subway_announcers/asnp/pyaseckaya/crossline/2/vokzalnaya.mp3",1.175854}, -},{ - { --МАРШРУТ - LED = {5,4,4,4,5,4,4}, - Name = "Линия 1", - spec_last = {"last_m",0.5,"things_m"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - Loop = false, - BlockDoors = true, - { - 110,"Международная", - arrlast = {nil,{"arr_mejdunarodnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"mejdunarodnaya_m"}, - dep = {{"doors_closing_m","park_kultury_m"}}, - }, - { - 111,"Парк Культуры", - arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, - dep = {{"doors_closing_m","politehnicheskaya_next_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 112,"Политехнич.", - arr = {{"station_m","politehnicheskaya_arr_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, - dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"}, - have_inrerchange = true, - right_doors=true, - }, - { - 113,"Пр. Суворова", - arr = {{"station_m","prospekt_suvorova_m"},{"arr_prospekt_suvorova_f"}}, - dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_f","next_politehnicheskaya_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 114,"Нахимовская", - arr = {{"station_m","nahimovskaya_m"},{"arr_nahimovskaya_f"}}, - dep = {{"doors_closing_m","oktyabrskaya_next_m"},{"doors_closing_f","next_prospekt_suvorova_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 115,"Октябрьская", - arr = {{"station_m","oktyabrskaya_arr_m"},{"arr_oktyabrskaya_f"}}, - dep = {{"doors_closing_m","rechnaya_m","spec_attention_rechnaya_m"},{"doors_closing_f","next_nahimovskaya_f"}}, - arrlast = {{"station_m","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"oktyabrskaya_next_m"}, - not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, - not_last_f = {3,"to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"} - }, - { - 116,"Речная", - arr = {{"arr_rechnaya_f"},{"station_m","rechnaya_m"}}, - --arrlast = {{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"oktyabrskaya_next_m"}, - --not_last = {3,"train_goes_to_m","rechnaya_m"}, - --not_last_f = {3,""}, - dep = {{"doors_closing_f","next_proletarskaya_f"},{"doors_closing_m","oktyabrskaya_next_m"}}, - not_last_c = {"not_last_f"}, - right_doors = true, - }, - { - 117,"Пролетарская", - arr = {{"arr_proletarskaya_f"},{"station_m","proletarskaya_m"}}, - dep = {{"doors_closing_f","next_olimpiyskaya_f"},{"doors_closing_m","rechnaya_m"}}, - not_last_c = {"not_last_f"}, - }, - { - 118,"Олимпийская", - arr = {{"arr_olimpiyskaya_f"},{"station_m","olimpiyskaya_m"}}, - dep = {{"doors_closing_f","next_kirovskaya_f"},{"doors_closing_m","proletarskaya_m"}}, - arrlast = {{"arr_olimpiyskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station_m","olimpiyskaya_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"olimpiyskaya_m"}, - not_last_c = {"not_last_f"}, - not_last = {3,"train_goes_to_m","olimpiyskaya_m"}, - not_last_f = {3,"to_olimpiyskaya_f"}, - }, - { - 118,"Кировская", - arr = {{"arr_kirovskaya_f",3,"to_molodejnaya_f"},{"station_m","kirovskaya_m"}}, - dep = {{"doors_closing_f","next_molodejnaya_f"},{"doors_closing_m","olimpiyskaya_m"}}, - not_last_c = {"not_last_f"}, - }, - { - 120,"Молодёжная", - arrlast = {{"arr_molodejnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},nil,"molodejnaya_m"}, - dep = {nil,{"doors_closing_m","kirovskaya_m"}}, - not_last_c = {"not_last_f"}, - }, - }, -}) - -Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ - riu = true, - - click1 = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click2 = {"subway_announcers/riu/boiko_new/click2.mp3",0.3}, - click3 = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - click_start = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click_end = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - - - announcer_ready = {"subway_announcers/riu/boiko_new/announcer_ready.mp3",3.785}, - doors_closing_m = {"subway_announcers/riu/boiko_new/doors_closing.mp3",5}, - deadlock_m = {"subway_announcers/riu/boiko_new/spec_attention_deadlock.mp3",9.608}, - exit_m = {"subway_announcers/riu/boiko_new/spec_attention_exit.mp3",5.985}, - handrails_m = {"subway_announcers/riu/boiko_new/spec_attention_handrails.mp3",4.929}, - last_m = {"subway_announcers/riu/boiko_new/spec_attention_last.mp3",4.556}, - objects_m = {"subway_announcers/riu/boiko_new/spec_attention_objects.mp3",5.278}, - politeness_m = {"subway_announcers/riu/boiko_new/spec_attention_politeness.mp3",10.335}, - things_m = {"subway_announcers/riu/boiko_new/spec_attention_things.mp3",5.101}, - train_depeat_m = {"subway_announcers/riu/boiko_new/spec_attention_train_depeat.mp3",5.209}, - train_stop_m = {"subway_announcers/riu/boiko_new/spec_attention_train_stop.mp3",7.370}, - station_m = {"subway_announcers/riu/boiko_new/station.mp3",1.2}, - train_goes_to_m = {"subway_announcers/riu/boiko_new/train_goes_to.mp3",2.540}, - - kirovskaya_m = {"subway_announcers/riu/boiko_new/crossline/1/kirovskaya.mp3",0.883667}, - mejdunarodnaya_m = {"subway_announcers/riu/boiko_new/crossline/1/mejdunarodnaya.mp3",1.206667}, - molodejnaya_m = {"subway_announcers/riu/boiko_new/crossline/1/molodejnaya.mp3",1.112917}, - nahimovskaya_m = {"subway_announcers/riu/boiko_new/crossline/1/nahimovskaya.mp3",1.097292}, - oktyabrskaya_arr_m = {"subway_announcers/riu/boiko_new/crossline/1/oktyabrskaya_arr.mp3",5.656979}, - oktyabrskaya_next_m = {"subway_announcers/riu/boiko_new/crossline/1/oktyabrskaya_next.mp3",1.124083}, - olimpiyskaya_m = {"subway_announcers/riu/boiko_new/crossline/1/olimpiyskaya.mp3",1.081750}, - park_kultury_m = {"subway_announcers/riu/boiko_new/crossline/1/park_kultury.mp3",1.142833}, - --politehnicheskaya_arr_m = {"subway_announcers/riu/boiko_new/crossline/1/politehnicheskaya_arr.mp3",4.657938}, - politehnicheskaya_arr_m = {"subway_announcers/riu/boiko_new/crossline/1/politehnicheskaya_next.mp3",2.674708}, - politehnicheskaya_next_m = {"subway_announcers/riu/boiko_new/crossline/1/politehnicheskaya_next.mp3",2.674708}, - proletarskaya_m = {"subway_announcers/riu/boiko_new/crossline/1/proletarskaya.mp3",1.060521}, - prospekt_suvorova_m = {"subway_announcers/riu/boiko_new/crossline/1/prospekr_suvorova.mp3",1.244667}, - rechnaya_m = {"subway_announcers/riu/boiko_new/crossline/1/rechnaya.mp3",2.090708}, - spec_attention_politehnicheskaya_m = {"subway_announcers/riu/boiko_new/crossline/1/spec_attention_politehnicheskaya.mp3",10.516479}, - spec_attention_rechnaya_m = {"subway_announcers/riu/boiko_new/crossline/1/spec_attention_rechnaya.mp3",8.791000}, - kalininskaya_m = {"subway_announcers/riu/boiko_new/crossline/2/kalininskaya.mp3",0.996938}, - pionerskaya_m = {"subway_announcers/riu/boiko_new/crossline/2/pionerskaya.mp3",0.916688}, - politehnicheskaya2_arr_m = {"subway_announcers/riu/boiko_new/crossline/2/politehnicheskaya_arr.mp3",3.165667}, - politehnicheskaya2_next_m = {"subway_announcers/riu/boiko_new/crossline/2/politehnicheskaya_next.mp3",1.224833}, - timerazevskaya_m = {"subway_announcers/riu/boiko_new/crossline/2/timerazevskaya.mp3",1.060000}, - vokzalnaya_arr_m = {"subway_announcers/riu/boiko_new/crossline/2/vokzalnaya_arr.mp3",4.609771}, - vokzalnaya_next_m = {"subway_announcers/riu/boiko_new/crossline/2/vokzalnaya_next.mp3",2.498896}, - - - doors_closing_f = {"subway_announcers/riu/pyaseckaya/doors_closing.mp3",2.994}, - deadlock_f = {"subway_announcers/riu/pyaseckaya/spec_attention_deadlock.mp3",10.133}, - exit_f = {"subway_announcers/riu/pyaseckaya/spec_attention_exit.mp3",5.466}, - handrails_f = {"subway_announcers/riu/pyaseckaya/spec_attention_handrails.mp3",4.744}, - last_f = {"subway_announcers/riu/pyaseckaya/spec_attention_last.mp3",4.506}, - objects_f = {"subway_announcers/riu/pyaseckaya/spec_attention_objects.mp3",5.219}, - politeness_f = {"subway_announcers/riu/pyaseckaya/spec_attention_politeness.mp3",10.221}, - things_f = {"subway_announcers/riu/pyaseckaya/spec_attention_things.mp3",5.154}, - train_depeat_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_depeat.mp3",4.829}, - train_stop_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_stop.mp3",7.240}, - - - arr_kirovskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_kirovskaya.mp3",1.987917}, - arr_mejdunarodnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_mejdunarodnaya.mp3",2.185542}, - arr_molodejnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_molodejnaya.mp3",2.093146}, - arr_nahimovskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_nahimovskaya.mp3",2.171021}, - arr_oktyabrskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_oktyabrskaya.mp3",6.757750}, - arr_olimpiyskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_olimpiyskaya.mp3",2.338708}, - arr_park_kultury_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_park_kultury.mp3",2.171104}, - arr_politehnicheskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_politehnicheskaya_old.mp3",6.295417}, - arr_proletarskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_proletarskaya.mp3",2.334667}, - arr_prospekt_suvorova_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_prospekt_suvorova.mp3",2.538375}, - arr_rechnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/arr_rechnaya.mp3",3.408208}, - mejdunarodnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/mejdunarodnaya.mp3",1.275063}, - molodejnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/molodejnaya.mp3",1.196188}, - next_kirovskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_kirovskaya.mp3",2.771500}, - next_mejdunarodnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_mejdunarodnaya.mp3",2.947417}, - next_molodejnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_molodejnaya.mp3",2.818333}, - next_nahimovskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_nahimovskaya.mp3",2.930021}, - next_oktyabrskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_oktyabrskaya.mp3",2.702000}, - next_olimpiyskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_olimpiyskaya.mp3",2.996396}, - next_park_kultury_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_park_kultury.mp3",2.954438}, - next_politehnicheskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_politehnicheskaya.mp3",4.652875}, - next_proletarskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_proletarskaya.mp3",2.964667}, - next_prospekt_suvorova_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_prospekt_suvorova.mp3",3.674854}, - next_rechnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/next_rechnaya.mp3",4.248000}, - oktyabrskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/oktyabrskaya.mp3",1.186063}, - olimpiyskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/olimpiyskaya.mp3",1.208104}, - politehnicheskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/politehnicheskaya.mp3",1.506854}, - spec_attemton_politehnicheskaya3_f = {"subway_announcers/riu/pyaseckaya/crossline/1/spec_attemton_politehnicheskaya3.mp3",12.349063}, - spec_rechnaya_doors_f = {"subway_announcers/riu/pyaseckaya/crossline/1/spec_rechnaya_doors.mp3",10.953646}, - to_molodejnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/to_molodejnaya.mp3",3.460771}, - to_oktyabrskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/to_oktyabrskaya.mp3",3.355125}, - to_olimpiyskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/to_olimpiyskaya.mp3",3.424896}, - to_politehnicheskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/1/to_politehnicheskaya.mp3",3.638792}, - arr_kalininskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/arr_kalininskaya.mp3",2.369042}, - arr_pionerskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/arr_pionerskaya.mp3",2.146000}, - arr_politehnicheskaya2_f = {"subway_announcers/riu/pyaseckaya/crossline/2/arr_politehnicheskaya.mp3",6.419542}, - arr_timerazevskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/arr_timerazevskaya.mp3",2.398271}, - arr_vokzalnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/arr_vokzalnaya.mp3",5.819833}, - next_kalininskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/next_kalininskaya.mp3",2.845229}, - next_pionerskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/next_pionerskaya.mp3",2.837875}, - next_politehnicheskaya2_f = {"subway_announcers/riu/pyaseckaya/crossline/2/next_politehnicheskaya.mp3",3.293792}, - next_timerazevskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/next_timerazevskaya.mp3",3.049167}, - next_vokzalnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/next_vokzalnaya.mp3",4.291833}, - politehnicheskaya2_f = {"subway_announcers/riu/pyaseckaya/crossline/2/politehnicheskaya.mp3",1.361250}, - timerazevskaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/timerazevskaya.mp3",1.352604}, - to_vokzalnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/to_vokzalnaya.mp3",3.471125}, - vokzalnaya_f = {"subway_announcers/riu/pyaseckaya/crossline/2/vokzalnaya.mp3",1.175854}, -},{ - { --МАРШРУТ - LED = {5,4,4,4,5,4,4}, - Name = "Линия 1", - spec_last = {"last_m",0.5,"things_m"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - Loop = false, - BlockDoors = true, - { - 110,"Международная", - arrlast = {nil,{"arr_mejdunarodnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"mejdunarodnaya_m"}, - dep = {{"doors_closing_m","park_kultury_m"}}, - }, - { - 111,"Парк Культуры", - arr = {{"station_m","park_kultury_m"},"arr_park_kultury_f"}, - dep = {{"doors_closing_m","politehnicheskaya_next_m",0.2,"politeness_m"},{"doors_closing_f","next_mejdunarodnaya_f",0.2,"politeness_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 112,"Политехнич.", - arr = {{"station_m","politehnicheskaya_arr_m",0.2,"things_m"},{"arr_politehnicheskaya_f",0.2,"objects_f"}}, - dep = {{"doors_closing_m","prospekt_suvorova_m"},{"doors_closing_f","next_park_kultury_f"}}, - not_last_c = {nil,"not_last_f"}, - have_inrerchange = true, - right_doors=true, - }, - { - 113,"Пр. Суворова", - arr = {{"station_m","prospekt_suvorova_m"},{"arr_prospekt_suvorova_f"}}, - dep = {{"doors_closing_m","nahimovskaya_m"},{"doors_closing_f","next_politehnicheskaya_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 114,"Нахимовская", - arr = {{"station_m","nahimovskaya_m"},{"arr_nahimovskaya_f"}}, - dep = {{"doors_closing_m","oktyabrskaya_next_m"},{"doors_closing_f","next_prospekt_suvorova_f"}}, - not_last_c = {nil,"not_last_f"} - }, - { - 115,"Октябрьская", - arr = {{"station_m","oktyabrskaya_arr_m"},{"arr_oktyabrskaya_f"}}, - dep = {{"doors_closing_m","rechnaya_m","spec_attention_rechnaya_m"},{"doors_closing_f","next_nahimovskaya_f"}}, - arrlast = {{"station_m","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"oktyabrskaya_next_m"}, - not_last = {3,"train_goes_to_m","oktyabrskaya_next_m"}, - not_last_f = {3,"to_oktyabrskaya_f"}, - not_last_c = {nil,"not_last_f"} - }, - { - 116,"Речная", - arr = {{"arr_rechnaya_f"},{"station_m","rechnaya_m"}}, - --arrlast = {{"station","oktyabrskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_oktyabrskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"oktyabrskaya_next_m"}, - --not_last = {3,"train_goes_to_m","rechnaya_m"}, - --not_last_f = {3,""}, - dep = {{"doors_closing_f","next_proletarskaya_f"},{"doors_closing_m","oktyabrskaya_next_m"}}, - not_last_c = {"not_last_f"}, - right_doors = true, - }, - { - 117,"Пролетарская", - arr = {{"arr_proletarskaya_f"},{"station_m","proletarskaya_m"}}, - dep = {{"doors_closing_f","next_olimpiyskaya_f"},{"doors_closing_m","rechnaya_m"}}, - not_last_c = {"not_last_f"}, - }, - { - 118,"Олимпийская", - arr = {{"arr_olimpiyskaya_f"},{"station_m","olimpiyskaya_m"}}, - dep = {{"doors_closing_f","next_kirovskaya_f"},{"doors_closing_m","proletarskaya_m"}}, - arrlast = {{"arr_olimpiyskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},{"station_m","olimpiyskaya_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},"olimpiyskaya_m"}, - not_last_c = {"not_last_f"}, - not_last = {3,"train_goes_to_m","olimpiyskaya_m"}, - not_last_f = {3,"to_olimpiyskaya_f"}, - }, - { - 118,"Кировская", - arr = {{"arr_kirovskaya_f",3,"to_molodejnaya_f"},{"station_m","kirovskaya_m"}}, - dep = {{"doors_closing_f","next_molodejnaya_f"},{"doors_closing_m","olimpiyskaya_m"}}, - not_last_c = {"not_last_f"}, - }, - { - 120,"Молодёжная", - arrlast = {{"arr_molodejnaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},nil,"molodejnaya_m"}, - dep = {nil,{"doors_closing_m","kirovskaya_m"}}, - not_last_c = {"not_last_f"}, - }, - }, -}) - -Metrostroi.SetRRIAnnouncer({ - click_end = {"subway_announcers/rri/boiko/spec/click_end.mp3",0.1}, - click_start = {"subway_announcers/rri/boiko/spec/click_start.mp3",0.1}, - last = {"subway_announcers/rri/boiko/spec/last.mp3",22.264354}, - exit = {"subway_announcers/rri/boiko/spec/spec_attention_exit.mp3",5.446236}, - handrails = {"subway_announcers/rri/boiko/spec/spec_attention_handrails.mp3",4.594558}, - objects = {"subway_announcers/rri/boiko/spec/spec_attention_objects.mp3",5.143175}, - things = {"subway_announcers/rri/boiko/spec/spec_attention_things.mp3",05.093}, - politeness = {"subway_announcers/rri/boiko/spec/spec_attention_politeness.mp3",11.457075}, - train_depeat = {"subway_announcers/rri/boiko/spec/spec_attention_train_depeat.mp3",4.842222}, - train_stop = {"subway_announcers/rri/boiko/spec/spec_attention_train_stop.mp3",6.963424}, - - arr_kirovskaya = {"subway_announcers/rri/boiko/crossline/1/arr_kirovskaya.mp3",2.121701}, - arr_mejdunarodnaya = {"subway_announcers/rri/boiko/crossline/1/arr_mejdunarodnaya.mp3",2.160771}, - arr_molodejnaya = {"subway_announcers/rri/boiko/crossline/1/arr_molodejnaya.mp3",2.291270}, - arr_nahimovskaya = {"subway_announcers/rri/boiko/crossline/1/arr_nahimovskaya.mp3",2.197279}, - arr_oktyabrskaya = {"subway_announcers/rri/boiko/crossline/1/arr_oktyabrskaya.mp3",6.664853}, - arr_olimpiyskaya = {"subway_announcers/rri/boiko/crossline/1/arr_olimpiyskaya.mp3",1.951587}, - arr_park_kultury = {"subway_announcers/rri/boiko/crossline/1/arr_park_kultury.mp3",2.079796}, - arr_politehnicheskaya = {"subway_announcers/rri/boiko/crossline/1/arr_politehnicheskaya.mp3",5.529909}, - arr_proletarskaya = {"subway_announcers/rri/boiko/crossline/1/arr_proletarskaya.mp3",2.057959}, - arr_prospekt_suvorova = {"subway_announcers/rri/boiko/crossline/1/arr_prospekt_suvorova.mp3",3.038118}, - arr_rechnaya = {"subway_announcers/rri/boiko/crossline/1/arr_rechnaya.mp3",3.004853}, - next_kirovskaya = {"subway_announcers/rri/boiko/crossline/1/next_kirovskaya.mp3",5.574558}, - next_mejdunarodnaya = {"subway_announcers/rri/boiko/crossline/1/next_mejdunarodnaya.mp3",5.155261}, - next_molodejnaya = {"subway_announcers/rri/boiko/crossline/1/next_molodejnaya.mp3",5.864898}, - next_nahimovskaya = {"subway_announcers/rri/boiko/crossline/1/next_nahimovskaya.mp3",5.102834}, - next_oktyabrskaya = {"subway_announcers/rri/boiko/crossline/1/next_oktyabrskaya.mp3",5.102834}, - next_olimpiyskaya = {"subway_announcers/rri/boiko/crossline/1/next_olimpiyskaya.mp3",5.038776}, - next_park_kultury = {"subway_announcers/rri/boiko/crossline/1/next_park_kultury.mp3",5.226780}, - next_politehnicheskaya = {"subway_announcers/rri/boiko/crossline/1/next_politehnicheskaya.mp3",5.088367}, - next_proletarskaya = {"subway_announcers/rri/boiko/crossline/1/next_proletarskaya.mp3",5.155193}, - next_prospekt_suvorova = {"subway_announcers/rri/boiko/crossline/1/next_prospekt_suvorova.mp3",6.172585}, - next_rechnaya = {"subway_announcers/rri/boiko/crossline/1/next_rechnaya.mp3",6.388458}, - spec_politehnicheskaya = {"subway_announcers/rri/boiko/crossline/1/spec_politehnicheskaya.mp3",11.393311}, - spec_rechnaya_doors = {"subway_announcers/rri/boiko/crossline/1/spec_rechnaya_doors.mp3",9.786349}, - to_molodejnaya = {"subway_announcers/rri/boiko/crossline/1/to_molodejnaya.mp3",4.925374}, - to_oktyabrskaya = {"subway_announcers/rri/boiko/crossline/1/to_oktyabrskaya.mp3",4.578889}, - to_olimpiyskaya = {"subway_announcers/rri/boiko/crossline/1/to_olimpiyskaya.mp3",4.639796}, - to_politehnicheskaya = {"subway_announcers/rri/boiko/crossline/1/to_politehnicheskaya.mp3",4.665238}, - arr_kalininskaya = {"subway_announcers/rri/boiko/crossline/2/arr_kalininskaya.mp3",2.158163}, - arr_pionerskaya = {"subway_announcers/rri/boiko/crossline/2/arr_pionerskaya.mp3",2.090045}, - arr_politehnicheskaya2 = {"subway_announcers/rri/boiko/crossline/2/arr_politehnicheskaya.mp3",5.491179}, - arr_timeryazevskaya = {"subway_announcers/rri/boiko/crossline/2/arr_timeryazevskaya.mp3",2.062154}, - arr_vokzalnaya = {"subway_announcers/rri/boiko/crossline/2/arr_vokzalnaya.mp3",6.513039}, - next_kalininskaya = {"subway_announcers/rri/boiko/crossline/2/next_kalininskaya.mp3",5.364104}, - next_pionerskaya = {"subway_announcers/rri/boiko/crossline/2/next_pionerskaya.mp3",5.116485}, - next_politehnicheskaya2 = {"subway_announcers/rri/boiko/crossline/2/next_politehnicheskaya.mp3",7.010385}, - next_timeryazevskaya = {"subway_announcers/rri/boiko/crossline/2/next_timeryazevskaya.mp3",5.356667}, - next_vokzalnaya = {"subway_announcers/rri/boiko/crossline/2/next_vokzalnaya.mp3",5.007256}, - to_vokzalnaya = {"subway_announcers/rri/boiko/crossline/2/to_vokzalnaya.mp3",4.658980}, -},{ - { - Name = "Line 1", - spec_last = {"last"}, - spec_wait = {{"train_stop"},{"train_depeat"}}, - { - 110,"Mezhdunarod.", - arrlast = {nil,{"arr_mejdunarodnaya",0.5,"last"}}, - dep = {"next_park_kultury"}, - }, - { - 111,"Park Kultury", - arr = {"arr_park_kultury","arr_park_kultury"}, - dep = {{"next_politehnicheskaya",0.2,"politeness"},{"next_mejdunarodnaya",0.2,"politeness"}}, - }, - { - 112,"Politehnich.", - arr = {{"arr_politehnicheskaya",0.2,"things"},{"arr_politehnicheskaya",0.2,"objects"}}, - dep = {"next_prospekt_suvorova","next_park_kultury"}, - }, - { - 113,"Pr. Suvorova", - arr = {{"arr_prospekt_suvorova",0.2,"objects"},{"arr_prospekt_suvorova",0.2,"things"}}, - dep = {"next_nahimovskaya","next_politehnicheskaya"}, - }, - { - 114,"Nahimovskaya", - arr = {"arr_nahimovskaya","arr_nahimovskaya"}, - dep = {{"next_oktyabrskaya",0.2,"politeness"},"next_prospekt_suvorova"}, - }, - { - 115,"Oktabrskaya", - arr = {"arr_oktyabrskaya","arr_oktyabrskaya"}, - dep = {{"next_rechnaya",0.5,"spec_rechnaya_doors"},"next_nahimovskaya"}, - arrlast = {{"arr_oktyabrskaya",0.5,"last"},{"arr_oktyabrskaya",0.5,"last"}}, - not_last = {3,"to_oktyabrskaya"} - }, - { - 116,"Rechnaya", - arr = {"arr_rechnaya","arr_rechnaya"}, - dep = {"next_proletarskaya","next_oktyabrskaya"}, - --arrlast = {{"arr_rechnaya",0.5,"last"},{"arr_rechnaya",0.5,"last"}}, - --not_last = {3,"" - }, - { - 117,"Proletarskaya", - arr = {"arr_proletarskaya","arr_proletarskaya"}, - dep = {"next_olimpiyskaya",{"next_rechnaya",0.5,"spec_rechnaya_doors"}}, - }, - { - 118,"Olimpyiskaya", - arr = {"arr_olimpiyskaya","arr_olimpiyskaya"}, - dep = {"next_kirovskaya","next_proletarskaya"}, - arrlast = {{"arr_olimpiyskaya",0.5,"last"},{"arr_olimpiyskaya",0.5,"last"}}, - not_last = {3,"to_olimpiyskaya"} - }, - { - 119,"Kirovskaya", - arr = {{"arr_kirovskaya",3,"to_molodejnaya"},{"arr_kirovskaya",0.2,"exit"}}, - dep = {"next_molodejnaya","next_olimpiyskaya"}, - }, - { - 120,"Molodejnaya", - --arr = {"arr_rechnaya",{"arr_rechnaya"}}, - arrlast = {{"arr_molodejnaya",0.5,"last"},nil}, - dep = {nil,{"next_kirovskaya",0.2,"politeness"}}, - }, - }, -}) -Metrostroi.SetUPOAnnouncer({ - name = "UPO RHINO", - tone = {"subway_announcers/upo/rhino/crossline/tone.mp3", 1.2}, - click1 = {"subway_announcers/upo/click1.mp3", 0.3}, - click2 = {"subway_announcers/upo/click2.mp3", 0.1}, - --proletarskaya = {"subway_announcers/upo/rhino/crossline/proletarskaya.mp3",0.809100}, - --next_proletarskaya = {"subway_announcers/upo/rhino/crossline/next_proletarskaya.mp3",1.853100}, - - --olimpiyskaya = {"subway_announcers/upo/rhino/crossline/olimpiyskaya.mp3",0.835200}, - --next_olimpiyskaya = {"subway_announcers/upo/rhino/crossline/next_olimpiyskaya.mp3",1.800900}, - --last_olimpiyskaya = {"subway_announcers/upo/rhino/crossline/last_olimpiyskaya.mp3",9.735300}, - - --kirovskaya = {"subway_announcers/upo/rhino/crossline/kirovskaya.mp3",0.678600}, - --next_kirovskaya = {"subway_announcers/upo/rhino/crossline/next_kirovskaya.mp3",1.644300}, - - --molodejnaya = {"subway_announcers/upo/rhino/crossline/molodejnaya.mp3",0.704700}, - --next_molodejnaya = {"subway_announcers/upo/rhino/crossline/next_molodejnaya.mp3",1.696500}, - --last_molodejnaya = {"subway_announcers/upo/rhino/crossline/last_molodejnaya.mp3",10.100700}, - - mejdunarodnaya = {"subway_announcers/upo/rhino/crossline/mejdunarodnaya.mp3",1.017900}, - next_mejdunarodnaya = {"subway_announcers/upo/rhino/crossline/next_mejdunarodnaya.mp3",1.800900}, - last_mejdunarodnaya = {"subway_announcers/upo/rhino/crossline/last_mejdunarodnaya.mp3",9.709200}, - - park_kultury = {"subway_announcers/upo/rhino/crossline/park_kultury.mp3",0.887400}, - next_park_kultury = {"subway_announcers/upo/rhino/crossline/next_park_kultury.mp3",1.827000}, - - politehnicheskaya = {"subway_announcers/upo/rhino/crossline/politehnicheskaya.mp3",0.965700}, - next_politehnicheskaya = {"subway_announcers/upo/rhino/crossline/next_politehnicheskaya.mp3",2.035800}, - - prospekt_suvorova = {"subway_announcers/upo/rhino/crossline/prospekt_suvorova.mp3",1.044000}, - next_prospekt_suvorova = {"subway_announcers/upo/rhino/crossline/next_prospekt_suvorova.mp3",2.009700}, - - nahimovskaya = {"subway_announcers/upo/rhino/crossline/nahimovskaya.mp3",0.861300}, - next_nahimovskaya = {"subway_announcers/upo/rhino/crossline/next_nahimovskaya.mp3",1.853100}, - - oktyabrskaya = {"subway_announcers/upo/rhino/crossline/oktyabrskaya.mp3",0.835200}, - next_oktyabrskaya = {"subway_announcers/upo/rhino/crossline/next_oktyabrskaya.mp3",1.879200}, - - rechnaya = {"subway_announcers/upo/rhino/crossline/rechnaya.mp3",0.678600}, - next_rechnaya = {"subway_announcers/upo/rhino/crossline/next_rechnaya.mp3",10.727100}, - next_rechnaya1 = {"subway_announcers/upo/rhino/crossline/next_rechnaya1.mp3",1.722600}, - last_rechnaya = {"subway_announcers/upo/rhino/crossline/last_rechnaya.mp3",10.727100}, - - spec_attention_handrails = {"subway_announcers/upo/rhino/crossline/spec_attention_handrails.mp3",3.967200}, - spec_attention_politeness = {"subway_announcers/upo/rhino/crossline/spec_attention_politeness.mp3",5.533200}, - - odz = {"subway_announcers/upo/rhino/crossline/odz.mp3",2.02}, -},{ - { - 110,"Международная", - arrlast = {nil,"last_mejdunarodnaya"}, - dep = {"odz"}, - noises = {2,3},noiserandom = 0.08, - }, - { - 111,"Парк Культуры", - arr = {{"park_kultury",0.5,"next_politehnicheskaya"},{"park_kultury",0.5,"next_mejdunarodnaya","spec_attention_politeness"}}, - dep = {"odz","odz"}, - noises = {1,2},noiserandom = 0.12, - }, - { - 112,"Политехническая", - arr = {{"politehnicheskaya",0.5,"next_prospekt_suvorova","spec_attention_politeness"},{"politehnicheskaya",0.5,"next_park_kultury","spec_attention_handrails"}}, - dep = {"odz","odz"}, - noises = {3},noiserandom = 0.05, - }, - { - 113,"Пр. Суворова", - arr = {{"prospekt_suvorova",0.5,"next_nahimovskaya","spec_attention_handrails"},{"prospekt_suvorova",0.5,"next_politehnicheskaya"}}, - dep = {"odz","odz"}, - }, - { - 114,"Нахимовская", - arr = {{"nahimovskaya",0.5,"next_oktyabrskaya","spec_attention_politeness"},{"nahimovskaya",0.5,"next_prospekt_suvorova","spec_attention_politeness"}}, - dep = {"odz","odz"}, - noises = {1,2,3},noiserandom = 0.02, - }, - { - 115,"Октябрьская", - arr = {{"oktyabrskaya",0.5,"next_rechnaya"},{"oktyabrskaya",3,"next_nahimovskaya"}}, - dep = {"odz","odz"}, - noises = {1,2},noiserandom = 0.2, - }, - { - 116,"Речная", - arrlast = {"last_rechnaya"}, - dep = {nil,"odz"}, - noises = {1,3},noiserandom = 0.08, - }, -}) ---[[Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO",{ - tone = {"subway_announcers/sarmat_upo/tone.mp3",1}, - --proletarskaya = {"subway_announcers/sarmat_upo/rhino/crossline/proletarskaya.mp3",0.809100}, - --next_proletarskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_proletarskaya.mp3",1.853100}, - - --olimpiyskaya = {"subway_announcers/sarmat_upo/rhino/crossline/olimpiyskaya.mp3",0.835200}, - --next_olimpiyskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_olimpiyskaya.mp3",1.800900}, - --last_olimpiyskaya = {"subway_announcers/sarmat_upo/rhino/crossline/last_olimpiyskaya.mp3",9.735300}, - - --kirovskaya = {"subway_announcers/sarmat_upo/rhino/crossline/kirovskaya.mp3",0.678600}, - --next_kirovskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_kirovskaya.mp3",1.644300}, - - --molodejnaya = {"subway_announcers/sarmat_upo/rhino/crossline/molodejnaya.mp3",0.704700}, - --next_molodejnaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_molodejnaya.mp3",1.696500}, - --last_molodejnaya = {"subway_announcers/sarmat_upo/rhino/crossline/last_molodejnaya.mp3",10.100700}, - - mejdunarodnaya = {"subway_announcers/sarmat_upo/rhino/crossline/mejdunarodnaya.mp3",1.017900}, - next_mejdunarodnaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_mejdunarodnaya.mp3",1.800900}, - last_mejdunarodnaya = {"subway_announcers/sarmat_upo/rhino/crossline/last_mejdunarodnaya.mp3",9.709200}, - - park_kultury = {"subway_announcers/sarmat_upo/rhino/crossline/park_kultury.mp3",0.887400}, - next_park_kultury = {"subway_announcers/sarmat_upo/rhino/crossline/next_park_kultury.mp3",1.827000}, - - politehnicheskaya = {"subway_announcers/sarmat_upo/rhino/crossline/politehnicheskaya.mp3",0.965700}, - next_politehnicheskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_politehnicheskaya.mp3",2.035800}, - - prospekt_suvorova = {"subway_announcers/sarmat_upo/rhino/crossline/prospekt_suvorova.mp3",1.044000}, - next_prospekt_suvorova = {"subway_announcers/sarmat_upo/rhino/crossline/next_prospekt_suvorova.mp3",2.009700}, - - nahimovskaya = {"subway_announcers/sarmat_upo/rhino/crossline/nahimovskaya.mp3",0.861300}, - next_nahimovskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_nahimovskaya.mp3",1.853100}, - - oktyabrskaya = {"subway_announcers/sarmat_upo/rhino/crossline/oktyabrskaya.mp3",0.835200}, - next_oktyabrskaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_oktyabrskaya.mp3",1.879200}, - - rechnaya = {"subway_announcers/sarmat_upo/rhino/crossline/rechnaya.mp3",0.678600}, - next_rechnaya = {"subway_announcers/sarmat_upo/rhino/crossline/next_rechnaya.mp3",10.727100}, - next_rechnaya1 = {"subway_announcers/sarmat_upo/rhino/crossline/next_rechnaya1.mp3",1.722600}, - last_rechnaya = {"subway_announcers/sarmat_upo/rhino/crossline/last_rechnaya.mp3",10.727100}, - - spec_attention_handrails = {"subway_announcers/sarmat_upo/rhino/crossline/spec_attention_handrails.mp3",3.967200}, - spec_attention_politeness = {"subway_announcers/sarmat_upo/rhino/crossline/spec_attention_politeness.mp3",5.533200}, - - odz1 = {"subway_announcers/sarmat_upo/rhino/crossline/odz1.mp3",2.088000+0.3}, - odz2 = {"subway_announcers/sarmat_upo/rhino/crossline/odz2.mp3",2.192400+0.3}, -},{ - { --МАРШРУТ - LED = {3,4,5,5,5,5,5}, - { - 909,"Международная", - arr = {nil,"last_mejdunarodnaya"}, - arrlast = {nil,"last_mejdunarodnaya"}, - dep = {"next_park_kultury"}, - odz = "odz1", - dist = 30, - }, - { - 910,"Парк Культуры", - arr = {{"park_kultury",3,"next_politehnicheskaya"},{"park_kultury",3,"next_mejdunarodnaya","spec_attention_politeness"}}, - dep = {"next_politehnicheskaya","next_mejdunarodnaya"}, - odz = "odz2", - dist = 30, - }, - { - 911,"Политехническая", - arr = {{"politehnicheskaya",3,"next_prospekt_suvorova","spec_attention_politeness"},{"politehnicheskaya",3,"next_park_kultury","spec_attention_handrails"}}, - dep = {"next_prospekt_suvorova","next_park_kultury"}, - odz = "odz1", - dist = 30, - }, - { - 912,"Пр. Суворова", - arr = {{"prospekt_suvorova",3,"next_nahimovskaya","spec_attention_handrails"},{"prospekt_suvorova",3,"next_politehnicheskaya"}}, - dep = {"next_nahimovskaya","next_politehnicheskaya"}, - odz = "odz2", - dist = 30, - }, - { - 913,"Нахимовская", - arr = {{"nahimovskaya",3,"next_oktyabrskaya","spec_attention_politeness"},{"nahimovskaya",3,"next_prospekt_suvorova","spec_attention_politeness"}}, - dep = {"next_oktyabrskaya","next_prospekt_suvorova"}, - odz = "odz1", - dist = 30, - }, - { - 914,"Октябрьская", - arr = {{"oktyabrskaya",3,"next_rechnaya"},{"oktyabrskaya",3,"next_nahimovskaya"}}, - dep = {"next_rechnaya1","next_nahimovskaya"}, - odz = "odz2", - dist = 30, - }, - { - 915,"Речная", - arr = {"last_rechnaya"}, - arrlast = {"last_rechnaya"}, - dep = {nil,"next_oktyabrskaya"}, - odz = "odz1", - dist = 30, - }, - }, -})--]] -Metrostroi.AddSarmatUPOAnnouncer("UPO Artur",{ - tone = {"subway_announcers/sarmat_upo/tone.mp3",1}, - rechnaya = {"subway_announcers/sarmat_upo/crossline_artur/rechnaya.mp3",0.939271}, - last_rechnaya = {"subway_announcers/sarmat_upo/crossline_artur/last_rechnaya.mp3",12.962604}, - next_rechnaya = {"subway_announcers/sarmat_upo/crossline_artur/next_rechnaya1.mp3",12.384375}, - next_rechnaya2 = {"subway_announcers/sarmat_upo/crossline_artur/next_rechnaya2.mp3",1.720896}, - - oktyabrskaya = {"subway_announcers/sarmat_upo/crossline_artur/oktyabrskaya.mp3",1.144646}, - next_oktyabrskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_oktyabrskaya.mp3",2.240396}, - - nahimovskaya = {"subway_announcers/sarmat_upo/crossline_artur/nahimovskaya.mp3",1.179146}, - next_nahimovskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_nahimovskaya.mp3",2.466563}, - - prospekt_suvorova = {"subway_announcers/sarmat_upo/crossline_artur/prospekt_suvorova.mp3",1.566375}, - next_prospekt_suvorova = {"subway_announcers/sarmat_upo/crossline_artur/next_prospekt_suvorova.mp3",2.486813}, - - politehnicheskaya = {"subway_announcers/sarmat_upo/crossline_artur/politehnicheskaya.mp3",1.178271}, - next_politehnicheskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_politehnicheskaya.mp3",2.400917}, - - park_kultury = {"subway_announcers/sarmat_upo/crossline_artur/park_kultury.mp3",1.285271}, - next_park_kultury = {"subway_announcers/sarmat_upo/crossline_artur/next_park_kultury.mp3",2.242479}, - - mejdunarodnaya = {"subway_announcers/sarmat_upo/crossline_artur/mejdunarodnaya.mp3",1.123333}, - next_mejdunarodnaya = {"subway_announcers/sarmat_upo/crossline_artur/next_mejdunarodnaya.mp3",2.360938}, - last_mejdunarodnaya = {"subway_announcers/sarmat_upo/crossline_artur/last_mejdunarodnaya.mp3",11.327729}, - --molodejnaya = {"subway_announcers/sarmat_upo/crossline_artur/molodejnaya.mp3",1.064354}, - --next_molodejnaya = {"subway_announcers/sarmat_upo/crossline_artur/next_molodejnaya.mp3",1.996167}, - --last_molodejnaya = {"subway_announcers/sarmat_upo/crossline_artur/last_molodejnaya.mp3",11.295438}, - --kirovskaya = {"subway_announcers/sarmat_upo/crossline_artur/kirovskaya.mp3",0.900000}, - --next_kirovskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_kirovskaya.mp3",2.142271}, - --olimpiyskaya = {"subway_announcers/sarmat_upo/crossline_artur/olimpiyskaya.mp3",1.095958}, - --next_olimpiyskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_olimpiyskaya.mp3",2.446542}, - --last_olimpiyskaya = {"subway_announcers/sarmat_upo/crossline_artur/last_olimpiyskaya.mp3",11.552521}, - --proletarskaya = {"subway_announcers/sarmat_upo/crossline_artur/proletarskaya.mp3",1.111333}, - --next_proletarskaya = {"subway_announcers/sarmat_upo/crossline_artur/next_proletarskaya.mp3",2.072313}, - odz1 = {"subway_announcers/sarmat_upo/crossline_artur/odz.mp3",2.612750}, - odz2 = {"subway_announcers/sarmat_upo/crossline_artur/odz2.mp3",2.392542}, - spec_attention_handrails = {"subway_announcers/sarmat_upo/crossline_artur/spec_attention_handrails.mp3",3.972021}, - spec_attention_politeness = {"subway_announcers/sarmat_upo/crossline_artur/spec_attention_politeness.mp3",5.614417}, -},{ - { --МАРШРУТ - LED = {3,4,5,5,5,5,5}, - { - 110,"Международная","Mezhdunarodnaya", - arr = {nil,"last_mejdunarodnaya"}, - arrlast = {nil,"last_mejdunarodnaya"}, - dep = {"next_park_kultury"}, - odz = "odz1", - messagedep = "Проверка обычная\n%rПроверка красная\n%gУважаемые пассажиры,\nво избежании травм\nдержитесь за поручни!", - }, - { - 111,"Парк Культуры","Park kultury", - arr = {{"park_kultury",3,"next_politehnicheskaya"},{"park_kultury",3,"next_mejdunarodnaya","spec_attention_politeness"}}, - dep = {"next_politehnicheskaya","next_mejdunarodnaya"}, - odz = "odz1", - }, - { - 112,"Политехническая","Politehnicheskaya", - arr = {{"politehnicheskaya",3,"next_prospekt_suvorova","spec_attention_politeness"},{"politehnicheskaya",3,"next_park_kultury","spec_attention_handrails"}}, - dep = {"next_prospekt_suvorova","next_park_kultury"}, - odz = "odz2", - right_doors=true, - }, - { - 113,"Пр. Суворова","Pr. Suvorova", - arr = {{"prospekt_suvorova",3,"next_nahimovskaya","spec_attention_handrails"},{"prospekt_suvorova",3,"next_politehnicheskaya"}}, - dep = {"next_nahimovskaya","next_politehnicheskaya"}, - odz = "odz1", - }, - { - 114,"Нахимовская","Nahimovskaya", - arr = {{"nahimovskaya",3,"next_oktyabrskaya","spec_attention_politeness"},{"nahimovskaya",3,"next_prospekt_suvorova","spec_attention_politeness"}}, - dep = {"next_oktyabrskaya","next_prospekt_suvorova"}, - odz = "odz2", - messagedep="%rЧто то интересное...", - }, - { - 115,"Октябрьская","Oktyabrskaya", - arr = {{"oktyabrskaya",3,"next_rechnaya"},{"oktyabrskaya",3,"next_nahimovskaya"}}, - dep = {"next_rechnaya2","next_nahimovskaya"}, - odz = "odz1", - messagearr="%gУважаемые пассажиры!\nВо изжежании травм,\nдержитесь за поручни.", - messagedep="На станции речная\nведётся установка\nи наладка\nстанционных дверей.\n%rБудьте внимательны!\nНекоторые двери\nмогут быть закрыты.", - }, - { - 116,"Речная","Rechnaya", - arr = {"last_rechnaya"}, - arrlast = {"last_rechnaya"}, - dep = {nil,"next_oktyabrskaya"}, - odz = "odz2", - right_doors=true, - }, - }, -}) - -Metrostroi.StationConfigurations = { - [110] = - { - names = {"международная","Mezhdunarodnaya"}, - positions = { - {Vector(2593, -622, 1815),Angle(0,0,0)}, - } - }, - [111] = - { - names = {"парк культуры","Park Kultury"}, - positions = { - {Vector(1969, 14608, 2200),Angle(0,0,0)}, - } - }, - [112] = - { - names = {"политехническая","Politehnicheskaya"}, - positions = { - {Vector(13975, 2474, 3000),Angle(0,0,0)}, - } - }, - [113] = - { - names = {"проспект суворова","Prospekt Suvorova"}, - positions = { - {Vector(2238, 6440, 1830),Angle(0,0,0)}, - } - }, - [114] = - { - names = {"нахимовская","Nahimovskaya"}, - positions = { - {Vector(9856, 374, 907),Angle(0,0,0)}, - } - }, - [115] = - { - names = {"октябрьская","Oktyabrskaya"}, - positions = { - {Vector(-161, -6652, -340),Angle(0,0,0)}, - } - }, - [116] = - { - names = {"речная","Rechnaya"}, - positions = { - {Vector(2877, -12828, 318),Angle(0,0,0)}, - } - }, - [117] = - { - names = {"пролетарская","Proletarskaya"}, - positions = { - {Vector(5190, -15872, -928),Angle(0,0,0)}, - } - }, - [118] = - { - names = {"олимпийская","Olimpyiskaya"}, - positions = { - {Vector(0, 0, -0),Angle(0,0,0)}, - } - }, - - [119] = - { - names = {"кировская","Kirovskaya"}, - positions = { - {Vector(0, 0, 0),Angle(0,0,0)}, - } - }, - - [120] = - { - names = {"молодежная","Molodezjnaya"}, - positions = { - {Vector(0, 0, 0),Angle(0,0,0)}, - } - }, --------------------------------------------------------------- - --[[[201] = - { - names = {"политехническая","Politehnicheskaya"}, - positions = { - {Vector(13975, 2474, 3000),Angle(0,0,0)}, - } - },]] - - [202] = - { - names = {"пионерская","Pionerskaya"}, - positions = { - {Vector(-13676, -3965, 3684),Angle(0,0,0)}, - } - }, - - [203] = - { - names = {"вокзальная","Vokzalnaya"}, - positions = { - {Vector(2826, -11557, 4830),Angle(0,0,0)}, - } - }, - - [204] = - { - names = {"калининская","kalininskaya"}, - positions = { - {Vector(0, 0, 0),Angle(0,0,0)}, - } - }, - - [205] = - { - names = {"тимирязевская","temiryazevskaya"}, - positions = { - {Vector(0, 0, 0),Angle(0,0,0)}, - } - }, - - depot = { - names = {"депо"}, - positions = { - {Vector(3900, 2595, 250),Angle(0,0,0)}, - } - } -} \ No newline at end of file diff --git a/lua/metrostroi/maps/loopline.lua b/lua/metrostroi/maps/loopline.lua index 5c4e507..5bd38a7 100644 --- a/lua/metrostroi/maps/loopline.lua +++ b/lua/metrostroi/maps/loopline.lua @@ -24,17 +24,6 @@ Metrostroi.AddLastStationTex("720",654,"models/metrostroi_schemes/destination_ta Metrostroi.AddLastStationTex("720",655,"models/metrostroi_schemes/destination_table_white/label_glorious_country") Metrostroi.AddLastStationTex("720",656,"models/metrostroi_schemes/destination_table_white/label_pioneer") -Metrostroi.AddPassSchemeTex("717_new","1 Line",{ - "models/metrostroi_schemes/mus_loopline", -}) -Metrostroi.AddPassSchemeTex("720","Crossline",{ - "metrostroi_skins/81-720_schemes/loopliner", - "metrostroi_skins/81-720_schemes/loopline", -}) -Metrostroi.AddPassSchemeTex("722","Crossline",{ - "metrostroi_skins/81-722_schemes/loopliner", - "metrostroi_skins/81-722_schemes/loopline", -}) Metrostroi.TickerAdverts = { "МЕТРОПОЛИТЕН ИМЕНИ ГАРРИ НЬЮМАНА ПРИГЛАШАЕТ НА РАБОТУ РЕАЛЬНЕ МАФЕНЕСТОВ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ТЕЛЕФОН ДЛЯ СПРАВОК 8 (800) 555-35-35", "ЭЛЕКТРОДЕПО 'РАБА' ПРИГЛАШАЕТ НА РАБОТУ МОЙЩИКОВ", @@ -72,7 +61,7 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO",{ },{ { LED = {5,6,5,6,5,5}, - Name = "Line 1", + Name = "Линия 1", Loop = true, { 651,"Первоапрельская","First april", @@ -101,7 +90,7 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO",{ odz = "odz2", }, { - 655,"Славная стр.","Glorious c.", + 655,"Славная стр.","Glorious country", arr = {{"slavnaya_strana",3,"next_pionerskaya","spec_line5"},{"slavnaya_strana",3,"next_morskaya"}}, dep = {"next_pionerskaya","next_morskaya"}, arrlast = {"last_slavnaya_strana","last_slavnaya_strana"}, @@ -185,339 +174,185 @@ Metrostroi.SetUPOAnnouncer({ }) -Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ - asnp = true, - click1 = {"subway_announcers/asnp/boiko_new/click1.mp3",0.5}, - click2 = {"subway_announcers/asnp/boiko_new/click2.mp3",0.3}, - click3 = {"subway_announcers/asnp/boiko_new/click3.mp3",0.3}, - - announcer_ready = {"subway_announcers/asnp/boiko_new/announcer_ready.mp3",3.295479}, - doors_closing_m = {"subway_announcers/asnp/boiko_new/doors_closing.mp3",3.782542}, - deadlock_m = {"subway_announcers/asnp/boiko_new/spec_attention_deadlock.mp3",9.352500}, - exit_m = {"subway_announcers/asnp/boiko_new/spec_attention_exit.mp3",5.363563}, - handrails_m = {"subway_announcers/asnp/boiko_new/spec_attention_handrails.mp3",4.221854}, - last_m = {"subway_announcers/asnp/boiko_new/spec_attention_last.mp3",4.425625}, - objects_m = {"subway_announcers/asnp/boiko_new/spec_attention_objects.mp3",4.674771}, - politeness_m = {"subway_announcers/asnp/boiko_new/spec_attention_politeness.mp3",9.057104}, - things_m = {"subway_announcers/asnp/boiko_new/spec_attention_things.mp3",4.559146}, - train_depeat_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_depeat.mp3",4.633417}, - train_stop_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_stop.mp3",6.501979}, - station_m = {"subway_announcers/asnp/boiko_new/station.mp3",0.943438}, - train_goes_to_m = {"subway_announcers/asnp/boiko_new/train_goes_to.mp3",2.077708}, - - metrostroiteley_arr_m = {"subway_announcers/asnp/boiko_new/loopline/metrostroiteley_arr.mp3",3.264208}, - metrostroiteley_next_m = {"subway_announcers/asnp/boiko_new/loopline/metrostroiteley_next.mp3",1.291229}, - morskaya_m = {"subway_announcers/asnp/boiko_new/loopline/morskaya.mp3",1.085170}, - park_arr_m = {"subway_announcers/asnp/boiko_new/loopline/park_arr.mp3",2.638146}, - park_next_m = {"subway_announcers/asnp/boiko_new/loopline/park_next.mp3",0.624333}, - pervoaprelskaya_m = {"subway_announcers/asnp/boiko_new/loopline/pervoaprelskaya.mp3",1.186750}, - pionerskaya_arr_m = {"subway_announcers/asnp/boiko_new/loopline/pionerskaya_arr.mp3",2.980854}, - pionerskaya_next_m = {"subway_announcers/asnp/boiko_new/loopline/pionerskaya_next.mp3",1.035500}, - skip_park_m = {"subway_announcers/asnp/boiko_new/loopline/skip_park.mp3",5.091938}, - slavnaya_strana_arr_m = {"subway_announcers/asnp/boiko_new/loopline/slavnaya_strana_arr.mp3",3.270875}, - slavnaya_strana_next_m = {"subway_announcers/asnp/boiko_new/loopline/slavnaya_strana_next.mp3",1.365604}, - - doors_closing_f = {"subway_announcers/asnp/pyaseckaya/doors_closing.mp3",2.340813}, - deadlock_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_deadlock.mp3",10.501979}, - exit_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_exit.mp3",5.111104}, - handrails_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_handrails.mp3",4.675083}, - last_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_last.mp3",4.878542}, - objects_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_objects.mp3",5.323146}, - politeness_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_politeness.mp3",10.685375}, - things_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_things.mp3",5.144021}, - train_depeat_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_depeat.mp3",4.481875}, - train_stop_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_stop.mp3",6.395313}, - - arr_metrostroiteley_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_metrostroiteley.mp3",4.936458}, - arr_morskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_morskaya.mp3",1.874917}, - arr_park_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_park.mp3",3.602146}, - arr_pervoaprelskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_pervoaprelskaya.mp3",2.208521}, - arr_pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_pionerskaya.mp3",4.471729}, - arr_slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/loopline/arr_slavnaya_strana.mp3",4.996729}, - morskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/morskaya.mp3",0.992667}, - next_metrostroiteley_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_metrostroiteley.mp3",3.245333}, - next_morskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_morskaya.mp3",2.688708}, - next_park_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_park.mp3",2.285958}, - next_pervoaprelskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_pervoaprelskaya.mp3",2.868479}, - next_pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_pionerskaya.mp3",3.003958}, - next_slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/loopline/next_slavnaya_strana.mp3",3.037104}, - pervoaprelskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/pervoaprelskaya.mp3",1.389958}, - pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/pionerskaya.mp3",1.220271}, - skip_park_f = {"subway_announcers/asnp/pyaseckaya/loopline/skip_park.mp3",5.944917}, - slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/loopline/slavnaya_strana.mp3",1.532729}, - to_morskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/to_morskaya.mp3",3.279521}, - to_pervoaprelskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/to_pervoaprelskaya.mp3",3.481292}, - to_pionerskaya_f = {"subway_announcers/asnp/pyaseckaya/loopline/to_pionerskaya.mp3",3.558833}, - to_slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/loopline/to_slavnaya_strana.mp3",3.839063}, +Metrostroi.AddANSPAnnouncer("ASNP MakichOS", { + click1 = {"subway_announcers/asnp/click.mp3", 0.3}, + click2 = {"subway_announcers/asnp/click2.mp3", 0.1}, + last = {"subway_announcers/asnp/makich/last.mp3", 20.358000}, + odz = {"subway_announcers/asnp/makich/odz.mp3", 2.427300}, + spec_attention_exit = {"subway_announcers/asnp/makich/spec_attention_exit.mp3", 5.220000}, + spec_attention_last = {"subway_announcers/asnp/makich/spec_attention_last.mp3", 5.063400}, + spec_attention_objects = {"subway_announcers/asnp/makich/spec_attention_objects.mp3", 4.176000}, + spec_attention_politeness = {"subway_announcers/asnp/makich/spec_attention_politeness.mp3", 8.952300}, + spec_attention_things = {"subway_announcers/asnp/makich/spec_attention_things.mp3", 4.698000}, + spec_attention_train_depeat = {"subway_announcers/asnp/makich/spec_attention_train_depeat.mp3", 4.332600}, + spec_attention_train_stop = {"subway_announcers/asnp/makich/spec_attention_train_stop.mp3", 5.246100}, + train_goes_to = {"subway_announcers/asnp/makich/train_goes_to.mp3", 2.322900}, + arr_metrostroiteley = {"subway_announcers/asnp/makich/loopline/arr_metrostroiteley.mp3", 3.993300}, + arr_morskaya = {"subway_announcers/asnp/makich/loopline/arr_morskaya.mp3", 1.696500}, + arr_park = {"subway_announcers/asnp/makich/loopline/arr_park.mp3", 3.680100}, + arr_pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/arr_pervoaprelskaya.mp3", 2.035800}, + arr_pionerskaya = {"subway_announcers/asnp/makich/loopline/arr_pionerskaya.mp3", 3.810600}, + arr_slavnaya_strana = {"subway_announcers/asnp/makich/loopline/arr_slavnaya_strana.mp3", 4.410900}, + morskaya = {"subway_announcers/asnp/makich/loopline/morskaya.mp3", 0.887400}, + next_metrostroiteley = {"subway_announcers/asnp/makich/loopline/next_metrostroiteley.mp3", 2.871000}, + next_morskaya = {"subway_announcers/asnp/makich/loopline/next_morskaya.mp3", 2.192400}, + next_park = {"subway_announcers/asnp/makich/loopline/next_park.mp3", 2.061900}, + next_pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/next_pervoaprelskaya.mp3", 2.662200}, + next_pionerskaya = {"subway_announcers/asnp/makich/loopline/next_pionerskaya.mp3", 2.505600}, + next_slavnaya_strana = {"subway_announcers/asnp/makich/loopline/next_slavnaya_strana.mp3", 2.818800}, + pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/pervoaprelskaya.mp3", 1.226700}, + pionerskaya = {"subway_announcers/asnp/makich/loopline/pionerskaya.mp3", 0.991800}, + slavnaya_strana = {"subway_announcers/asnp/makich/loopline/slavnaya_strana.mp3", 1.305000}, },{ { LED = {5,5,5,5,5,5}, - Name = "Line 1", + Name = "Линия 1", Loop = true, - BlockDoors = true, - spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, + spec_last = {"spec_attention_last",0.5,"spec_attention_things"}, + spec_wait = {{"spec_attention_train_stop"},{"spec_attention_train_depeat"}}, { - 651,"Первоапрельская","First april", - arr = {{"station_m","pervoaprelskaya_m","skip_park_m"},"arr_pervoaprelskaya_f"}, - dep = {{"doors_closing_m","metrostroiteley_next_m"},{"doors_closing_f","next_pionerskaya_f"}}, - arrlast = {nil,{"arr_pervoaprelskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"pervoaprelskaya_m"}, - not_last = {3,"train_goes_to_m","pervoaprelskaya_m"}, - not_last_f = {3,"to_pervoaprelskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 651,"Первоапрельская", + arr = {"arr_pervoaprelskaya","arr_pervoaprelskaya"}, + dep = {{"odz","next_park"},{"odz","next_pionerskaya"}}, + arrlast = {nil,{"arr_pervoaprelskaya",0.5,"last"},"pervoaprelskaya"}, + not_last = {3,"train_goes_to","pervoaprelskaya"}, }, - --[[{ + { 652,"Парк", - arr = {{"station_m","park_arr_m",0.1,"things_m"},{"arr_park_f",0.1,"objects_f"}}, - dep = {{"doors_closing_m","metrostroiteley_next_m"},{"doors_closing_f","next_pervoaprelskaya_f"}}, - have_inrerchange = true, - },]] - { - 653,"Метростроителей","Metrostroiteley", - arr = {{"station_m","metrostroiteley_arr_m",0.1,"objects_m"},{"arr_metrostroiteley_f","skip_park_f",0.1,"things_f"}}, - dep = {{"doors_closing_m","morskaya_m"},{"doors_closing_f","next_pervoaprelskaya_f"}}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + arr = {{"arr_park",0.1,"spec_attention_things"},{"arr_park",0.1,"spec_attention_objects"}}, + dep = {{"odz","next_metrostroiteley"},{"odz","next_pervoaprelskaya"}}, have_inrerchange = true, }, { - 654,"Морская","Marine", - arr = {{"station_m","morskaya_m"},"arr_morskaya_f"}, - dep = {{"doors_closing_m","slavnaya_strana_next_m"},{"doors_closing_f","next_metrostroiteley_f",0.1,"politeness_f"}}, - arrlast = {{"station_m","morskaya_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},nil,"morskaya_m"}, - not_last = {3,"train_goes_to_m","morskaya_m"}, - not_last_f = {3,"to_morskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 655,"Славная стр.","Glorious c.", - arr = {{"station_m","slavnaya_strana_arr_m"},{"arr_slavnaya_strana_f",0.1,"exit_f"}}, - dep = {{"doors_closing_m","pionerskaya_next_m"},{"doors_closing_f","next_morskaya_f"}}, - arrlast = {nil,{"arr_slavnaya_strana_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"slavnaya_strana_next_m"}, - not_last = {3,"train_goes_to_m","slavnaya_strana_next_m"}, - not_last_f = {3,"to_slavnaya_strana_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 653,"Метростроителей", + arr = {{"arr_metrostroiteley",0.1,"spec_attention_objects"},{"arr_metrostroiteley",0.1,"spec_attention_things"}}, + dep = {{"odz","next_morskaya"},{"odz","next_park"}}, have_inrerchange = true, }, { - 656,"Пионерская","Pionerskaya", - arr = {{"station_m","pionerskaya_arr_m",0.1,"exit_m"},"arr_pionerskaya_f"}, - dep = {{"doors_closing_m","pervoaprelskaya_m"},{"doors_closing_f","next_slavnaya_strana_f"}}, - arrlast = {{"station_m","pionerskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_pionerskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"pionerskaya_next_m"}, - not_last = {3,"train_goes_to_m","pionerskaya_next_m"}, - not_last_f = {3,"to_pionerskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 654,"Морская", + arr = {"arr_morskaya","arr_morskaya"}, + dep = {{"odz","next_slavnaya_strana"},{"odz","next_metrostroiteley",0.1,"spec_attention_politeness"}}, + arrlast = {{"arr_morskaya",0.5,"last"},nil,"morskaya"}, + not_last = {3,"train_goes_to","morskaya"}, + }, + { + 655,"Славная стр.", + arr = {"arr_slavnaya_strana",{"arr_slavnaya_strana",0.1,"spec_attention_exit"}}, + dep = {{"odz","next_pionerskaya"},{"odz","next_morskaya"}}, + arrlast = {nil,{"arr_slavnaya_strana",0.5,"last"},"slavnaya_strana"}, + not_last = {3,"train_goes_to","slavnaya_strana"}, + have_inrerchange = true, + }, + { + 656,"Пионерская", + arr = {{"arr_pionerskaya",0.1,"spec_attention_exit"},"arr_pionerskaya"}, + dep = {{"odz","next_pervoaprelskaya"},{"odz","next_slavnaya_strana"}}, + arrlast = {{"arr_pionerskaya",0.5,"last"},{"arr_pionerskaya",0.5,"last"},"pionerskaya"}, + not_last = {3,"train_goes_to","pionerskaya"}, have_inrerchange = true, }, }, }) +Metrostroi.AddANSPAnnouncer("ASNP MakichOS + Concord En", { + click1 = {"subway_announcers/asnp/click.mp3", 0.3}, + click2 = {"subway_announcers/asnp/click2.mp3", 0.1}, + last = {"subway_announcers/asnp/makich/last.mp3", 20.358000}, + odz = {"subway_announcers/asnp/makich/odz.mp3", 2.427300}, + spec_attention_exit = {"subway_announcers/asnp/makich/spec_attention_exit.mp3", 5.220000}, + spec_attention_last = {"subway_announcers/asnp/makich/spec_attention_last.mp3", 5.063400}, + spec_attention_objects = {"subway_announcers/asnp/makich/spec_attention_objects.mp3", 4.176000}, + spec_attention_politeness = {"subway_announcers/asnp/makich/spec_attention_politeness.mp3", 8.952300}, + spec_attention_things = {"subway_announcers/asnp/makich/spec_attention_things.mp3", 4.698000}, + spec_attention_train_depeat = {"subway_announcers/asnp/makich/spec_attention_train_depeat.mp3", 4.332600}, + spec_attention_train_stop = {"subway_announcers/asnp/makich/spec_attention_train_stop.mp3", 5.246100}, + train_goes_to = {"subway_announcers/asnp/makich/train_goes_to.mp3", 2.322900}, + arr_metrostroiteley = {"subway_announcers/asnp/makich/loopline/arr_metrostroiteley.mp3", 3.993300}, + arr_morskaya = {"subway_announcers/asnp/makich/loopline/arr_morskaya.mp3", 1.696500}, + arr_park = {"subway_announcers/asnp/makich/loopline/arr_park.mp3", 3.680100}, + arr_pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/arr_pervoaprelskaya.mp3", 2.035800}, + arr_pionerskaya = {"subway_announcers/asnp/makich/loopline/arr_pionerskaya.mp3", 3.810600}, + arr_slavnaya_strana = {"subway_announcers/asnp/makich/loopline/arr_slavnaya_strana.mp3", 4.410900}, + morskaya = {"subway_announcers/asnp/makich/loopline/morskaya.mp3", 0.887400}, + next_metrostroiteley = {"subway_announcers/asnp/makich/loopline/next_metrostroiteley.mp3", 2.871000}, + next_morskaya = {"subway_announcers/asnp/makich/loopline/next_morskaya.mp3", 2.192400}, + next_park = {"subway_announcers/asnp/makich/loopline/next_park.mp3", 2.061900}, + next_pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/next_pervoaprelskaya.mp3", 2.662200}, + next_pionerskaya = {"subway_announcers/asnp/makich/loopline/next_pionerskaya.mp3", 2.505600}, + next_slavnaya_strana = {"subway_announcers/asnp/makich/loopline/next_slavnaya_strana.mp3", 2.818800}, + pervoaprelskaya = {"subway_announcers/asnp/makich/loopline/pervoaprelskaya.mp3", 1.226700}, + pionerskaya = {"subway_announcers/asnp/makich/loopline/pionerskaya.mp3", 0.991800}, + slavnaya_strana = {"subway_announcers/asnp/makich/loopline/slavnaya_strana.mp3", 1.305000}, -Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ - riu = true, - - click1 = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click2 = {"subway_announcers/riu/boiko_new/click2.mp3",0.3}, - click3 = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - click_start = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click_end = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - - announcer_ready = {"subway_announcers/riu/boiko_new/announcer_ready.mp3",3.785}, - doors_closing_m = {"subway_announcers/riu/boiko_new/doors_closing.mp3",5}, - deadlock_m = {"subway_announcers/riu/boiko_new/spec_attention_deadlock.mp3",9.608}, - exit_m = {"subway_announcers/riu/boiko_new/spec_attention_exit.mp3",5.985}, - handrails_m = {"subway_announcers/riu/boiko_new/spec_attention_handrails.mp3",4.929}, - last_m = {"subway_announcers/riu/boiko_new/spec_attention_last.mp3",4.556}, - objects_m = {"subway_announcers/riu/boiko_new/spec_attention_objects.mp3",5.278}, - politeness_m = {"subway_announcers/riu/boiko_new/spec_attention_politeness.mp3",10.335}, - things_m = {"subway_announcers/riu/boiko_new/spec_attention_things.mp3",5.101}, - train_depeat_m = {"subway_announcers/riu/boiko_new/spec_attention_train_depeat.mp3",5.209}, - train_stop_m = {"subway_announcers/riu/boiko_new/spec_attention_train_stop.mp3",7.370}, - station_m = {"subway_announcers/riu/boiko_new/station.mp3",1.2}, - train_goes_to_m = {"subway_announcers/riu/boiko_new/train_goes_to.mp3",2.540}, - - metrostroiteley_arr_m = {"subway_announcers/riu/boiko_new/loopline/metrostroiteley_arr.mp3",3.434036}, - metrostroiteley_next_m = {"subway_announcers/riu/boiko_new/loopline/metrostroiteley_next.mp3",1.434036}, - morskaya_m = {"subway_announcers/riu/boiko_new/loopline/morskaya.mp3",0.983447}, - park_arr_m = {"subway_announcers/riu/boiko_new/loopline/park_arr.mp3",3.144943}, - park_next_m = {"subway_announcers/riu/boiko_new/loopline/park_next.mp3",0.794512}, - pervoaprelskaya_m = {"subway_announcers/riu/boiko_new/loopline/pervoaprelskaya.mp3",1.457211}, - pionerskaya_arr_m = {"subway_announcers/riu/boiko_new/loopline/pionerskaya_arr.mp3",3.234785}, - pionerskaya_next_m = {"subway_announcers/riu/boiko_new/loopline/pionerskaya_next.mp3",1.112290}, - skip_park_m = {"subway_announcers/riu/boiko_new/loopline/skip_park.mp3",5.925646}, - slavnaya_strana_arr_m = {"subway_announcers/riu/boiko_new/loopline/slavnaya_strana_arr.mp3",3.821610}, - slavnaya_strana_next_m = {"subway_announcers/riu/boiko_new/loopline/slavnaya_strana_next.mp3",1.592494}, - - doors_closing_f = {"subway_announcers/riu/pyaseckaya/doors_closing.mp3",2.994}, - deadlock_f = {"subway_announcers/riu/pyaseckaya/spec_attention_deadlock.mp3",10.133}, - exit_f = {"subway_announcers/riu/pyaseckaya/spec_attention_exit.mp3",5.466}, - handrails_f = {"subway_announcers/riu/pyaseckaya/spec_attention_handrails.mp3",4.744}, - last_f = {"subway_announcers/riu/pyaseckaya/spec_attention_last.mp3",4.506}, - objects_f = {"subway_announcers/riu/pyaseckaya/spec_attention_objects.mp3",5.219}, - politeness_f = {"subway_announcers/riu/pyaseckaya/spec_attention_politeness.mp3",10.221}, - things_f = {"subway_announcers/riu/pyaseckaya/spec_attention_things.mp3",5.154}, - train_depeat_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_depeat.mp3",4.829}, - train_stop_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_stop.mp3",7.240}, - - arr_metrostroiteley_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_metrostroiteley.mp3",5.278526}, - arr_morskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_morskaya.mp3",1.893469}, - arr_park_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_park.mp3",3.770590}, - arr_pervoaprelskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_pervoaprelskaya.mp3",2.302834}, - arr_pionerskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_pionerskaya.mp3",4.670862}, - arr_slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/loopline/arr_slavnaya_strana.mp3",5.182018}, - morskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/morskaya.mp3",0.973741}, - next_metrostroiteley_f = {"subway_announcers/riu/pyaseckaya/loopline/next_metrostroiteley.mp3",3.265329}, - next_morskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/next_morskaya.mp3",2.726259}, - next_park_f = {"subway_announcers/riu/pyaseckaya/loopline/next_park.mp3",2.282200}, - next_pervoaprelskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/next_pervoaprelskaya.mp3",3.040998}, - next_pionerskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/next_pionerskaya.mp3",3.051043}, - next_slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/loopline/next_slavnaya_strana.mp3",3.010068}, - pervoaprelskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/pervoaprelskaya.mp3",1.402902}, - pionerskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/pionerskaya.mp3",1.130952}, - skip_park_f = {"subway_announcers/riu/pyaseckaya/loopline/skip_park.mp3",5.990408}, - slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/loopline/slavnaya_strana.mp3",1.504286}, - to_morskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/to_morskaya.mp3",3.354150}, - to_pervoaprelskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/to_pervoaprelskaya.mp3",3.599660}, - to_pionerskaya_f = {"subway_announcers/riu/pyaseckaya/loopline/to_pionerskaya.mp3",3.646735}, - to_slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/loopline/to_slavnaya_strana.mp3",3.939138}, + arr_metrostroiteley_en = {"subway_announcers/asnp/english/loopline/arr_metrostroiteley.mp3",4.179200}, + arr_morskaya_en = {"subway_announcers/asnp/english/loopline/arr_morskaya.mp3",1.725800}, + arr_morskaya_last_en = {"subway_announcers/asnp/english/loopline/arr_morskaya_last.mp3",3.839900}, + arr_park_en = {"subway_announcers/asnp/english/loopline/arr_park.mp3",3.709400}, + arr_park_last_en = {"subway_announcers/asnp/english/loopline/arr_park_last.mp3",5.797400}, + arr_pervoaprelskaya_en = {"subway_announcers/asnp/english/loopline/arr_pervoaprelskaya.mp3",2.039000}, + arr_pervoaprelskaya_last_en = {"subway_announcers/asnp/english/loopline/arr_pervoaprelskaya_last.mp3",4.127000}, + arr_pionerskaya_en = {"subway_announcers/asnp/english/loopline/arr_pionerskaya.mp3",3.839900}, + arr_pionerskaya_last_en = {"subway_announcers/asnp/english/loopline/arr_pionerskaya_last.mp3",5.927900}, + arr_slavnaya_strana_en = {"subway_announcers/asnp/english/loopline/arr_slavnaya_strana.mp3",4.466300}, + arr_slavnaya_strana_last_en = {"subway_announcers/asnp/english/loopline/arr_slavnaya_strana_last.mp3",6.554300}, + next_metrostroiteley_en = {"subway_announcers/asnp/english/loopline/next_metrostroiteley.mp3",2.926400}, + next_morskaya_en = {"subway_announcers/asnp/english/loopline/next_morskaya.mp3",2.482700}, + next_park_en = {"subway_announcers/asnp/english/loopline/next_park.mp3",2.169500}, + next_pervoaprelskaya_en = {"subway_announcers/asnp/english/loopline/next_pervoaprelskaya.mp3",2.769800}, + next_pionerskaya_en = {"subway_announcers/asnp/english/loopline/next_pionerskaya.mp3",2.587100}, + next_slavnaya_strana_en = {"subway_announcers/asnp/english/loopline/next_slavnaya_strana.mp3",2.926400}, },{ { LED = {5,5,5,5,5,5}, - Name = "Line 1", + Name = "Линия 1", Loop = true, - BlockDoors = true, - spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, + spec_last = {"spec_attention_last",0.5,"spec_attention_things"}, + spec_wait = {{"spec_attention_train_stop"},{"spec_attention_train_depeat"}}, { - 651,"Первоапрельская","First april", - arr = {{"station_m","pervoaprelskaya_m","skip_park_m"},"arr_pervoaprelskaya_f"}, - dep = {{"doors_closing_m","metrostroiteley_next_m"},{"doors_closing_f","next_pionerskaya_f"}}, - arrlast = {nil,{"arr_pervoaprelskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"pervoaprelskaya_m"}, - not_last = {3,"train_goes_to_m","pervoaprelskaya_m"}, - not_last_f = {3,"to_pervoaprelskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 651,"Первоапрельская", + arr = {{"arr_pervoaprelskaya","arr_pervoaprelskaya_en"},{"arr_pervoaprelskaya","arr_pervoaprelskaya_en"}}, + dep = {{"odz","next_park","next_park_en"},{"odz","next_pionerskaya","next_pionerskaya_en"}}, + arrlast = {nil,{"arr_pervoaprelskaya","arr_pervoaprelskaya_en",0.5,"last"},"pervoaprelskaya"}, + not_last = {3,"train_goes_to","pervoaprelskaya"}, }, - --[[{ + { 652,"Парк", - arr = {{"station_m","park_arr_m",0.1,"things_m"},{"arr_park_f",0.1,"objects_f"}}, - dep = {{"doors_closing_m","metrostroiteley_next_m"},{"doors_closing_f","next_pervoaprelskaya_f"}}, - have_inrerchange = true, - },]] - { - 653,"Метростроителей","Metrostroiteley", - arr = {{"station_m","metrostroiteley_arr_m",0.1,"objects_m"},{"arr_metrostroiteley_f","skip_park_f",0.1,"things_f"}}, - dep = {{"doors_closing_m","morskaya_m"},{"doors_closing_f","next_pervoaprelskaya_f"}}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + arr = {{"arr_park","arr_park_en",0.1,"spec_attention_things"},{"arr_park","arr_park_en",0.1,"spec_attention_objects"}}, + dep = {{"odz","next_metrostroiteley","next_metrostroiteley_en"},{"odz","next_pervoaprelskaya","next_pervoaprelskaya_en"}}, have_inrerchange = true, }, { - 654,"Морская","Marine", - arr = {{"station_m","morskaya_m"},"arr_morskaya_f"}, - dep = {{"doors_closing_m","slavnaya_strana_next_m"},{"doors_closing_f","next_metrostroiteley_f",0.1,"politeness_f"}}, - arrlast = {{"station_m","morskaya_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},nil,"morskaya_m"}, - not_last = {3,"train_goes_to_m","morskaya_m"}, - not_last_f = {3,"to_morskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 655,"Славная стр.","Glorious c.", - arr = {{"station_m","slavnaya_strana_arr_m"},{"arr_slavnaya_strana_f",0.1,"exit_f"}}, - dep = {{"doors_closing_m","pionerskaya_next_m"},{"doors_closing_f","next_morskaya_f"}}, - arrlast = {nil,{"arr_slavnaya_strana_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"slavnaya_strana_next_m"}, - not_last = {3,"train_goes_to_m","slavnaya_strana_next_m"}, - not_last_f = {3,"to_slavnaya_strana_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 653,"Метростроителей", + arr = {{"arr_metrostroiteley","arr_metrostroiteley_en",0.1,"spec_attention_objects"},{"arr_metrostroiteley","arr_metrostroiteley_en",0.1,"spec_attention_things"}}, + dep = {{"odz","next_morskaya","next_morskaya_en"},{"odz","next_park","next_park_en"}}, have_inrerchange = true, }, { - 656,"Пионерская","Pionerskaya", - arr = {{"station_m","pionerskaya_arr_m",0.1,"exit_m"},"arr_pionerskaya_f"}, - dep = {{"doors_closing_m","pervoaprelskaya_m"},{"doors_closing_f","next_slavnaya_strana_f"}}, - arrlast = {{"station_m","pionerskaya_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"},{"arr_pionerskaya_f",0.5,"last_f",2,"things_f",2,"deadlock_f"},"pionerskaya_next_m"}, - not_last = {3,"train_goes_to_m","pionerskaya_next_m"}, - not_last_f = {3,"to_pionerskaya_f"}, - not_last_c = {nil, "not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 654,"Морская", + arr = {{"arr_morskaya","arr_morskaya_en"},{"arr_morskaya","arr_morskaya_en"}}, + dep = {{"odz","next_slavnaya_strana","next_slavnaya_strana_en"},{"odz","next_metrostroiteley","next_metrostroiteley_en",0.1,"spec_attention_politeness"}}, + arrlast = {{"arr_morskaya","arr_morskaya_en",0.5,"last"},nil,"morskaya"}, + not_last = {3,"train_goes_to","morskaya"}, + }, + { + 655,"Славная стр.", + arr = {{"arr_slavnaya_strana","arr_slavnaya_strana_en"},{"arr_slavnaya_strana","arr_slavnaya_strana_en",0.1,"spec_attention_exit"}}, + dep = {{"odz","next_pionerskaya","next_pionerskaya_en"},{"odz","next_morskaya","next_morskaya_en"}}, + arrlast = {nil,{"arr_slavnaya_strana","arr_slavnaya_strana_en",0.5,"last"},"slavnaya_strana"}, + not_last = {3,"train_goes_to","slavnaya_strana"}, + have_inrerchange = true, + }, + { + 656,"Пионерская", + arr = {{"arr_pionerskaya","arr_pionerskaya_en",0.1,"spec_attention_exit"},{"arr_pionerskaya","arr_pionerskaya_en"}}, + dep = {{"odz","next_pervoaprelskaya","next_pervoaprelskaya_en"},{"odz","next_slavnaya_strana","next_slavnaya_strana_en"}}, + arrlast = {{"arr_pionerskaya","arr_pionerskaya_en",0.5,"last"},{"arr_pionerskaya","arr_pionerskaya_en",0.5,"last"},"pionerskaya"}, + not_last = {3,"train_goes_to","pionerskaya"}, have_inrerchange = true, }, }, }) -Metrostroi.SetRRIAnnouncer({ - click_end = {"subway_announcers/rri/boiko/spec/click_end.mp3",0.1}, - click_start = {"subway_announcers/rri/boiko/spec/click_start.mp3",0.1}, - last = {"subway_announcers/rri/boiko/spec/last.mp3",22.264354}, - exit = {"subway_announcers/rri/boiko/spec/spec_attention_exit.mp3",5.446236}, - handrails = {"subway_announcers/rri/boiko/spec/spec_attention_handrails.mp3",4.594558}, - objects = {"subway_announcers/rri/boiko/spec/spec_attention_objects.mp3",5.143175}, - things = {"subway_announcers/rri/boiko/spec/spec_attention_things.mp3",05.093}, - politeness = {"subway_announcers/rri/boiko/spec/spec_attention_politeness.mp3",11.457075}, - train_depeat = {"subway_announcers/rri/boiko/spec/spec_attention_train_depeat.mp3",4.842222}, - train_stop = {"subway_announcers/rri/boiko/spec/spec_attention_train_stop.mp3",6.963424}, - - arr_metrostroiteley = {"subway_announcers/rri/boiko/loopline/arr_metrostroiteley.mp3",4.055533}, - arr_morskaya = {"subway_announcers/rri/boiko/loopline/arr_morskaya.mp3",2.024943}, - arr_park = {"subway_announcers/rri/boiko/loopline/arr_park.mp3",3.762721}, - arr_pervoaprelskaya = {"subway_announcers/rri/boiko/loopline/arr_pervoaprelskaya.mp3",2.368798}, - arr_pionerskaya = {"subway_announcers/rri/boiko/loopline/arr_pionerskaya.mp3",4.074036}, - arr_slavnaya_strana = {"subway_announcers/rri/boiko/loopline/arr_slavnaya_strana.mp3",4.395465}, - next_metrostroiteley = {"subway_announcers/rri/boiko/loopline/next_metrostroiteley.mp3",4.841429}, - next_morskaya = {"subway_announcers/rri/boiko/loopline/next_morskaya.mp3",4.846440}, - next_park = {"subway_announcers/rri/boiko/loopline/next_park.mp3",5.244014}, - next_pervoaprelskaya = {"subway_announcers/rri/boiko/loopline/next_pervoaprelskaya.mp3",5.477551}, - next_pionerskaya = {"subway_announcers/rri/boiko/loopline/next_pionerskaya.mp3",5.424694}, - next_slavnaya_strana = {"subway_announcers/rri/boiko/loopline/next_slavnaya_strana.mp3",5.635828}, - skip_park = {"subway_announcers/rri/boiko/loopline/skip_park.mp3",5.650794}, - to_morskaya = {"subway_announcers/rri/boiko/loopline/to_morskaya.mp3",4.707687}, - to_pervoaprelskaya = {"subway_announcers/rri/boiko/loopline/to_pervoaprelskaya.mp3",5.230794}, - to_pionerskaya = {"subway_announcers/rri/boiko/loopline/to_pionerskaya.mp3",4.834286}, - to_slavnaya_strana = {"subway_announcers/rri/boiko/loopline/to_slavnaya_strana.mp3",5.505760}, -},{ - { - LED = {5,5,5,5,5,5}, - Loop = true, - Name = "Line 1", - spec_last = {"last"}, - spec_wait = {{"train_stop"},{"train_depeat"}}, - { - 651,"Первоапрельская","First april", - arr = {{"arr_pervoaprelskaya","skip_park"},"arr_pervoaprelskaya"}, - dep = {{"next_metrostroiteley"},{"next_pionerskaya"}}, - arrlast = {nil,{"arr_pervoaprelskaya",0.5,"last",2,"things",2,"deadlock"}}, - not_last = {3,"to_pervoaprelskaya"}, - }, - { - 653,"Метростроителей","Metrostroiteley", - arr = {{"arr_metrostroiteley",0.1,"objects"},{"arr_metrostroiteley","skip_park",0.1,"things"}}, - dep = {{"next_morskaya"},{"next_pervoaprelskaya"}}, - have_inrerchange = true, - }, - { - 654,"Морская","Marine", - arr = {{"arr_morskaya"},"arr_morskaya"}, - dep = {{"next_slavnaya_strana"},{"next_metrostroiteley",0.1,"politeness"}}, - arrlast = {{"morskaya",0.5,"last",2,"things",2,"deadlock"}}, - not_last = {3,"to_morskaya"}, - }, - { - 655,"Славная стр.","Glorious c.", - arr = {{"arr_slavnaya_strana"},{"arr_slavnaya_strana",0.1,"exit"}}, - dep = {{"next_pionerskaya"},{"next_morskaya"}}, - arrlast = {nil,{"arr_slavnaya_strana",0.5,"last",2,"things",2,"deadlock"}}, - not_last = {3,"to_slavnaya_strana"}, - have_inrerchange = true, - }, - { - 656,"Пионерская","Pionerskaya", - arr = {{"arr_pionerskaya",0.1,"exit"},"arr_pionerskaya"}, - dep = {{"next_pervoaprelskaya"},{"next_slavnaya_strana"}}, - arrlast = {{"arr_pionerskaya",0.5,"last",2,"things",2,"deadlock"},{"arr_pionerskaya",0.5,"last",2,"things",2,"deadlock"}}, - not_last = {3,"to_pionerskaya"}, - have_inrerchange = true, - }, - }, -}) Metrostroi.StationSound = { {"subway_stations/announces/orange/orange_1.mp3",51.965563}, {"subway_stations/announces/orange/orange_2.mp3",47.132875}, diff --git a/lua/metrostroi/maps/orange.lua b/lua/metrostroi/maps/orange.lua index 04acb9d..00e7ed8 100644 --- a/lua/metrostroi/maps/orange.lua +++ b/lua/metrostroi/maps/orange.lua @@ -26,17 +26,18 @@ Metrostroi.AddLastStationTex("720",404,"models/metrostroi_schemes/destination_ta Metrostroi.AddLastStationTex("720",408,"models/metrostroi_schemes/destination_table_white/label_park") Metrostroi.AddLastStationTex("720",411,"models/metrostroi_schemes/destination_table_white/label_wallance_breen") -Metrostroi.AddPassSchemeTex("717_new","1 Line",{ - "models/metrostroi_schemes/mus_neoorange", -}) -Metrostroi.AddPassSchemeTex("720","Crossline",{ - "metrostroi_skins/81-720_schemes/oranger", - "metrostroi_skins/81-720_schemes/orange", -}) -Metrostroi.AddPassSchemeTex("722","Crossline",{ - "metrostroi_skins/81-722_schemes/oranger", - "metrostroi_skins/81-722_schemes/orange", -}) +Metrostroi.Skins["722_schemes"] = { + { + name = "Line 1", + "metrostroi_skins/81-722_schemes/oranger", + "metrostroi_skins/81-722_schemes/orange" + }, + { + name = "Crossline", + "metrostroi_skins/81-722_schemes/crossline", + "metrostroi_skins/81-722_schemes/crossliner", + } +} Metrostroi.TickerAdverts = {"МЕТРОПОЛИТЕН ИМЕНИ ГАРРИ НЬЮМАНА ПРИГЛАШАЕТ НА РАБОТУ РЕАЛЬНЕ МАФЕНЕСТОВ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ТЕЛЕФОН ДЛЯ СПРАВОК 8 (800) 555-35-35", "ЭЛЕКТРОДЕПО 'РАБА' ПРИГЛАШАЕТ НА РАБОТУ МОЙЩИКОВ", "В СВЯЗИ С ВВЕЕДЕНИЕМ ЭЛЕКТРОПОЕЗДОВ НОВОГО ПОКОЛЕНИЯ В ЭКСПЛУАТАЦИЮ, ЭЛЕКТРОДЕПО 'РАБА' ПРИГЛАШАЕТ НА РАБОТУ СЛЕСАРЕЙ ПОДИВЖНОГО СОСТАВА", "УПЦ МЕТРОПОЛИТЕНА ИМЕНИ ГАРРИ НЬЮМАНА ПРОВОДИТ НАБОР НА ОБУЧЕНИЕ ПО ПРОФЕССИИ 'МАШИНИСТ ЭЛЕКТРОПОЕЗДА'. ВО ВРЕМЯ ОБУЧЕНИЯ ВЫПЛАЧИВАЕТСЯ СТИПЕНДИЯ В РАЗМЕРЕ 10У.Е.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ТЕЛЕФОН ДЛЯ СПРАВОК 8 (800) 555-35-35", "СТАНЦИЯ СЛАВУТИЧ ПРИГЛАШАЕТ НА РАБОТУ МАШИНИСТОВ И ПОМОЩНИКОВ МАШИНИСТА ЭСКАЛАТОРА. ОПЛАТА 5 КУСОЧКОВ НОМЕРНОГО.", "ЭЛЕКТРОДЕПО ТЧ1АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА"} Metrostroi.SetUPOAnnouncer({ @@ -220,31 +221,35 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO", { },{ { LED = {2, 2, 3, 3, 4, 3, 3, 3, 3, 3, 3}, - Name = "Line 1", + Name = "Линия 1", -- Loop = false, { - 462,"Икарус","Ikarus", + 462, + "Икарус","Ikarus", arrlast = {nil, "last_ikarus"}, dep = {"next_smrc", nil}, odz = "odz1", dist = 40, }, { - 461,"СМРК","SMRC", + 461, + "СМРК","SMRC", arr = {{"smrk", 3, "next_flora",0.4,"spec_attention_politeness"}, {"smrk", 3, "next_ikarus",0.4,"spec_attention_handrails"}}, dep = {"next_flora", "next_ikarus"}, odz = "odz1", dist = 40, }, { - 460,"Флора","Flora", + 460, + "Флора","Flora", arr = {{"flora", 3, "next_aeroport"}, {"flora", 3, "next_smrc",0.4,"spec_attention_politeness"}}, dep = {"next_aeroport", "next_smrc"}, odz = "odz2", dist = 40, }, { - 458,"Аэропорт","Airport", + 458, + "Аэропорт","Airport", arr = {{"aeroport", 3, "next_slavnaya_strana", "spec_line6"}, {"aeroport", 3, "next_flora",0.4,"spec_attention_handrails"}}, dep = {"next_slavnaya_strana", "next_flora"}, arrlast = {"last_aeroport", "last_aeroport"}, @@ -252,28 +257,32 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO", { dist = 40, }, { - 457,"Славная стр.","Glorius c.", + 457, + "Славная стр.","Gl. country", arr = {{"slavnaya_strana", 3, "next_litievaya", "spec_line5"}, {"slavnaya_strana", 3, "next_aeroport",0.4,"spec_attention_politeness"}}, dep = {"next_litievaya", "next_aeroport"}, odz = "odz1", dist = 40, }, { - 456,"Литиевая","Lithium", + 456, + "Литиевая","Lithium", arr = {{"litievaya", 3, "next_arsenal",0.4,"spec_attention_handrails"}, {"litievaya", 3, "next_slavnaya_strana", "spec_line6"}}, dep = {"next_arsenal", "next_slavnaya_strana"}, odz = "odz2", dist = 40, }, { - 455,"Арсенал","Arsenal", + 455, + "Арсенал","Arsenal", arr = {{"arsenal", 3, "next_park", "spec_line6"}, {"arsenal", 3, "next_litievaya", "spec_line5",0.4,"spec_attention_politeness"}}, dep = {"next_park1", "next_litievaya"}, odz = "odz1", dist = 40, }, { - 454,"Парк","Park", + 454, + "Парк","Park", arr = {{"park", 3, "next_gcfscape",0.4,"spec_attention_politeness"}, {"park", 3, "next_arsenal",0.4,"spec_attention_handrails"}}, dep = {"next_gcfscape1", "next_arsenal"}, arrlast = {{"last_park", "spec_line6"}, {"last_park", "spec_line6"}}, @@ -281,21 +290,24 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO", { dist = 40, }, { - 453,"GCFScape","GCFScape", + 453, + "GCFScape","GCFScape", arr = {{"gcfscape", 3, "next_vhe",0.4,"spec_attention_handrails"}, {"gcfscape", 3, "next_park", "spec_line6"}}, dep = {"next_vhe", "next_park1"}, odz = "odz2", dist = 40, }, { - 452,"VHE","VHE", + 452, + "VHE","VHE", arr = {{"vhe", 3, "next_imeni_uollesa_brina"}, {"vhe", 3, "next_gcfscape",0.4,"spec_attention_politeness"}}, dep = {"next_imeni_uollesa_brina", "next_gcfscape1"}, odz = "odz1", dist = 40, }, { - 451,"У. Брина","W. Breen", + 451, + "У. Брина","W. Breen", arrlast = {"last_imeni_uollesa_brina"}, dep = {nil, "next_vhe"}, odz = "odz1", @@ -304,464 +316,280 @@ Metrostroi.AddSarmatUPOAnnouncer("UPO RHINO", { } }) -Metrostroi.AddANSPAnnouncer("ASNP Boiko + Pyaseckaya",{ - asnp = true, - - click1 = {"subway_announcers/asnp/boiko_new/click1.mp3",0.5}, - click2 = {"subway_announcers/asnp/boiko_new/click2.mp3",0.3}, - click3 = {"subway_announcers/asnp/boiko_new/click3.mp3",0.3}, - click_start = {"subway_announcers/asnp/boiko_new/click1.mp3",0.5}, - click_end = {"subway_announcers/asnp/boiko_new/click3.mp3",0.3}, - - announcer_ready = {"subway_announcers/asnp/boiko_new/announcer_ready.mp3",3.295479}, - doors_closing_m = {"subway_announcers/asnp/boiko_new/doors_closing.mp3",3.782542}, - deadlock_m = {"subway_announcers/asnp/boiko_new/spec_attention_deadlock.mp3",9.352500}, - exit_m = {"subway_announcers/asnp/boiko_new/spec_attention_exit.mp3",5.363563}, - handrails_m = {"subway_announcers/asnp/boiko_new/spec_attention_handrails.mp3",4.221854}, - last_m = {"subway_announcers/asnp/boiko_new/spec_attention_last.mp3",4.425625}, - objects_m = {"subway_announcers/asnp/boiko_new/spec_attention_objects.mp3",4.674771}, - politeness_m = {"subway_announcers/asnp/boiko_new/spec_attention_politeness.mp3",9.057104}, - things_m = {"subway_announcers/asnp/boiko_new/spec_attention_things.mp3",4.559146}, - train_depeat_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_depeat.mp3",4.633417}, - train_stop_m = {"subway_announcers/asnp/boiko_new/spec_attention_train_stop.mp3",6.501979}, - station_m = {"subway_announcers/asnp/boiko_new/station.mp3",0.943438}, - train_goes_to_m = {"subway_announcers/asnp/boiko_new/train_goes_to.mp3",2.077708}, - - - aeroport_m = {"subway_announcers/asnp/boiko_new/neoorange/aeroport.mp3",0.936042}, - arsenal_m = {"subway_announcers/asnp/boiko_new/neoorange/arsenal.mp3",0.897958}, - flora_m = {"subway_announcers/asnp/boiko_new/neoorange/flora.mp3",0.713271}, - gcfscape_m = {"subway_announcers/asnp/boiko_new/neoorange/gcfscape.mp3",2.977167}, - ikarus_m = {"subway_announcers/asnp/boiko_new/neoorange/ikarus.mp3",0.767938}, - imeni_uollesa_brina_m = {"subway_announcers/asnp/boiko_new/neoorange/imeni_uollesa_brina.mp3",1.710667}, - litiyevaya_arr_m = {"subway_announcers/asnp/boiko_new/neoorange/litiyevaya_arr.mp3",3.008667}, - litiyevaya_next_m = {"subway_announcers/asnp/boiko_new/neoorange/litiyevaya_next.mp3",1.011000}, - park_m = {"subway_announcers/asnp/boiko_new/neoorange/park.mp3",0.600000}, - park_arr_m = {"subway_announcers/asnp/boiko_new/neoorange/park_arr.mp3",3.896833}, - park_next_m = {"subway_announcers/asnp/boiko_new/neoorange/park_next.mp3",2.024271}, - slavnaya_strana_arr_m = {"subway_announcers/asnp/boiko_new/neoorange/slavnaya_strana_next.mp3",3.397833}, - slavnaya_strana_next_m = {"subway_announcers/asnp/boiko_new/neoorange/slavnaya_strana_arr.mp3",1.482604}, - smrc_m = {"subway_announcers/asnp/boiko_new/neoorange/smrc.mp3",1.083688}, - spec_attention_aeroport_m = {"subway_announcers/asnp/boiko_new/neoorange/spec_attention_aeroport.mp3",11.032125}, - vhe_m = {"subway_announcers/asnp/boiko_new/neoorange/vhe.mp3",1.387604}, - - - doors_closing_f = {"subway_announcers/asnp/pyaseckaya/doors_closing.mp3",2.340813}, - deadlock_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_deadlock.mp3",10.501979}, - exit_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_exit.mp3",5.111104}, - handrails_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_handrails.mp3",4.675083}, - last_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_last.mp3",4.878542}, - objects_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_objects.mp3",5.323146}, - politeness_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_politeness.mp3",10.685375}, - things_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_things.mp3",5.144021}, - train_depeat_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_depeat.mp3",4.481875}, - train_stop_f = {"subway_announcers/asnp/pyaseckaya/spec_attention_train_stop.mp3",6.395313}, - - aeroport_f = {"subway_announcers/asnp/pyaseckaya/neoorange/aeroport.mp3",0.913667}, - arr_aeroport_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_aeroport.mp3",1.800000}, - arr_arsenal_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_arsenal.mp3",1.895021}, - arr_flora_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_flora.mp3",1.536813}, - arr_gcfscape_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_gcfscape.mp3",3.838000}, - arr_ikarus_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_ikarus.mp3",1.810500}, - arr_imeni_uollesa_brina_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_imeni_uollesa_brina.mp3",2.713104}, - arr_litiyevaya_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_litiyevaya.mp3",4.139396}, - arr_park_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_park.mp3",5.076708}, - arr_slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_slavnaya_strana.mp3",4.527333}, - arr_smrc_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_smrc.mp3",1.941479}, - arr_vhe_f = {"subway_announcers/asnp/pyaseckaya/neoorange/arr_vhe.mp3",2.162292}, - ikarus_f = {"subway_announcers/asnp/pyaseckaya/neoorange/ikarus.mp3",1.029813}, - next_aeroport_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_aeroport.mp3",2.693333}, - next_arsenal_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_arsenal.mp3",2.515958}, - next_flora_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_flora.mp3",2.473229}, - next_gcfscape_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_gcfscape.mp3",4.695188}, - next_ikarus_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_ikarus.mp3",2.365021}, - next_imeni_uollesa_brina_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_imeni_uollesa_brina.mp3",3.516208}, - next_litiyevaya_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_litiyevaya.mp3",2.865813}, - next_park_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_park.mp3",3.773146}, - next_slavnaya_strana_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_slavnaya_strana.mp3",3.161896}, - next_smrc_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_smrc.mp3",2.622750}, - next_vhe_f = {"subway_announcers/asnp/pyaseckaya/neoorange/next_vhe.mp3",2.779979}, - park_f = {"subway_announcers/asnp/pyaseckaya/neoorange/park.mp3",0.625875}, - spec_attention_aeroport3_f = {"subway_announcers/asnp/pyaseckaya/neoorange/spec_attention_aeroport3.mp3",11.147292}, - to_aeroport_f = {"subway_announcers/asnp/pyaseckaya/neoorange/to_aeroport.mp3",3.230083}, - to_park_f = {"subway_announcers/asnp/pyaseckaya/neoorange/to_park.mp3",2.990750}, +Metrostroi.AddANSPAnnouncer("ASNP MakichOS", { + click1 = {"subway_announcers/asnp/click.mp3", 0.3}, + click2 = {"subway_announcers/asnp/click2.mp3", 0.1}, + announcer_ready = {"subway_announcers/asnp/makich/announcer_ready.mp3", 3.575700}, + last = {"subway_announcers/asnp/makich/last.mp3", 20.358000}, + odz = {"subway_announcers/asnp/makich/odz.mp3", 2.427300}, + spec_attention_exit = {"subway_announcers/asnp/makich/spec_attention_exit.mp3", 5.220000}, + spec_attention_last = {"subway_announcers/asnp/makich/spec_attention_last.mp3", 5.063400}, + spec_attention_objects = {"subway_announcers/asnp/makich/spec_attention_objects.mp3", 4.176000}, + spec_attention_politeness = {"subway_announcers/asnp/makich/spec_attention_politeness.mp3", 8.952300}, + spec_attention_things = {"subway_announcers/asnp/makich/spec_attention_things.mp3", 4.698000}, + spec_attention_train_depeat = {"subway_announcers/asnp/makich/spec_attention_train_depeat.mp3", 4.332600}, + spec_attention_train_stop = {"subway_announcers/asnp/makich/spec_attention_train_stop.mp3", 5.246100}, + spec_attention_handrails = {"subway_announcers/asnp/makich/spec_attention_handrails.mp3", 4.880700}, + train_goes_to = {"subway_announcers/asnp/makich/train_goes_to.mp3", 2.322900}, + aeroport = {"subway_announcers/asnp/makich/orange/aeroport.mp3", 0.965700}, + arr_aeroport = {"subway_announcers/asnp/makich/orange/arr_aeroport.mp3", 2.009700}, + arr_arsenal = {"subway_announcers/asnp/makich/orange/arr_arsenal.mp3", 1.670400}, + arr_flora = {"subway_announcers/asnp/makich/orange/arr_flora.mp3", 1.592100}, + arr_gcfscape = {"subway_announcers/asnp/makich/orange/arr_gcfcape.mp3", 3.680100}, + arr_ikarus = {"subway_announcers/asnp/makich/orange/arr_ikarus.mp3", 1.722600}, + arr_imeni_uollesa_brina = {"subway_announcers/asnp/makich/orange/arr_imeni_uollesa_brina.mp3", 2.401200}, + arr_litievaya = {"subway_announcers/asnp/makich/orange/arr_litievaya.mp3", 3.784500}, + arr_park = {"subway_announcers/asnp/makich/orange/arr_park.mp3", 5.141700}, + arr_slavnaya_strana = {"subway_announcers/asnp/makich/orange/arr_slavnaya_strana.mp3", 4.228200}, + arr_smrc = {"subway_announcers/asnp/makich/orange/arr_smrk.mp3", 1.748700}, + arr_vhe = {"subway_announcers/asnp/makich/orange/arr_vhe.mp3", 1.983600}, + next_aeroport = {"subway_announcers/asnp/makich/orange/next_aeroport.mp3", 2.688300}, + next_arsenal = {"subway_announcers/asnp/makich/orange/next_arsenal.mp3", 2.296800}, + next_flora = {"subway_announcers/asnp/makich/orange/next_flora.mp3", 1.983600}, + next_gcfscape = {"subway_announcers/asnp/makich/orange/next_gcfcape.mp3", 4.384800}, + next_ikarus = {"subway_announcers/asnp/makich/orange/next_ikarus.mp3", 2.218500}, + next_imeni_uollesa_brina = {"subway_announcers/asnp/makich/orange/next_imeni_uollesa_brina.mp3", 3.158100}, + next_litievaya = {"subway_announcers/asnp/makich/orange/next_litievaya.mp3", 2.244600}, + next_park = {"subway_announcers/asnp/makich/orange/next_park.mp3", 3.836700}, + next_slavnaya_strana = {"subway_announcers/asnp/makich/orange/next_slavnaya_strana.mp3", 2.636100}, + next_smrc = {"subway_announcers/asnp/makich/orange/next_smrk.mp3", 2.375100}, + next_vhe = {"subway_announcers/asnp/makich/orange/next_vhe.mp3", 2.427300}, + park = {"subway_announcers/asnp/makich/orange/park.mp3", 0.626400}, + ikarus = {"subway_announcers/asnp/makich/orange/ikarus.mp3", 0.991800}, + vhe = {"subway_announcers/asnp/makich/orange/vhe.mp3", 1.409400} },{ { LED = {2, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4}, - Name = "Line 1", - spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, + Name = "Линия 1", Loop = false, - BlockDoors = true, + spec_last = {"spec_attention_last",0.5,"spec_attention_things"}, + spec_wait = {{"spec_attention_train_stop"},{"spec_attention_train_depeat"}}, { - 462, "Икарус","Ikarus", - arrlast = {nil, {"arr_ikarus_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, "ikarus_m"}, - dep = {{"doors_closing_m","smrc_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, + 462, + "Икарус", + arrlast = {nil, {"arr_ikarus", 0.5, "last"}, "ikarus"}, + dep = {{"odz", "next_smrc", 0.1, "spec_attention_politeness"}} }, { - 461, "СМРК","SMRC", - arr = {{"station_m","smrc_m"}, "arr_smrc_f"}, - dep = {{"doors_closing_m","flora_m", 0.1,"handrails_m"}, {"doors_closing_f","next_ikarus_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 460, "Флора","Flora", - arr = {{"station_m","flora_m"}, "arr_flora_f"}, - dep = {{"doors_closing_m","aeroport_m", 0.1,"things_m"}, {"doors_closing_f","next_smrc_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 458, "Аэропорт","Airport", - arr = {{"station_m","aeroport_m",0.1,"objects_m"}, {"arr_aeroport_f",0.1,"things_f"}}, - dep = {{"doors_closing_m","slavnaya_strana_next_m"}, {"doors_closing_f","next_flora_f",0.1,"politeness_f"}}, - arrlast = {{"station_m","aeroport_m",0.5,"last_m",2,"things_m",2,"deadlock_m"}, {"arr_aeroport_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, "aeroport_m"}, - not_last = {3,"train_goes_to_m","aeroport_m"}, - not_last_f = {3,"to_aeroport_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - --not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 457, "Славная стр.","Glorius c.", - arr = {{"station_m","slavnaya_strana_arr_m"}, "arr_slavnaya_strana_f"}, - dep = {{"doors_closing_m","litiyevaya_next_m",0.1,"politeness_m"}, {"doors_closing_f","next_aeroport_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - have_inrerchange = true - }, - { - --male<->female - 456, "Литиевая","Lithium", - arr = {{"station_m","litiyevaya_arr_m"}, {"station_m","litiyevaya_arr_m"}}, - dep = {{"doors_closing_f","next_arsenal_f"}, {"doors_closing_f","next_slavnaya_strana_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - have_inrerchange = true - }, - { - 455, "Арсенал","Arsenal", - arr = {"arr_arsenal_f", {"station_m","arsenal_m"}}, - dep = {{"doors_closing_f","next_park_f",0.1,"handrails_f"}, {"doors_closing_m","litiyevaya_next_m",0.1,"handrails_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 454, "Парк","Park", - arr = {{"arr_park_f", 0.1,"things_f"}, {"station_m","park_arr_m",0.1,"things_m"}}, - dep = {{"doors_closing_f","next_gcfscape_f"}, {"doors_closing_m","arsenal_m",0.1,"objects_m"}}, - arrlast = {{"arr_park_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, {"station_m","park_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"}, "aeroport_m"}, - not_last = {3,"train_goes_to_m","park_m"}, - not_last_f = {3,"to_park_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - have_inrerchange = true, - right_doors = true, - }, - { - 453, "GCFScape", - arr = {"arr_gcfscape_f", {"station_m","gcfscape_m"}}, - dep = {{"doors_closing_f","next_vhe_f"}, {"doors_closing_m","park_next_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - right_doors = true, - }, - { - 452, "VHE", - arr = {"arr_vhe_f", {"station_m","vhe_m"}}, - dep = {{"doors_closing_f","next_imeni_uollesa_brina_f",0.1,"exit_f"}, {"doors_closing_m","gcfscape_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - have_inrerchange = true - }, - { - 451, "У. Брина","W. Breen", - arrlast = {{"arr_imeni_uollesa_brina_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, nil, "imeni_uollesa_brina_m"}, - dep = {nil, {"doors_closing_m","vhe_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - } - } -}) - - - -Metrostroi.AddANSPAnnouncer("RIU Boiko + Pyaseckaya",{ - riu = true, - - click1 = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click2 = {"subway_announcers/riu/boiko_new/click2.mp3",0.3}, - click3 = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - click_start = {"subway_announcers/riu/boiko_new/click1.mp3",0.5}, - click_end = {"subway_announcers/riu/boiko_new/click3.mp3",0.3}, - - - announcer_ready = {"subway_announcers/riu/boiko_new/announcer_ready.mp3",3.785}, - doors_closing_m = {"subway_announcers/riu/boiko_new/doors_closing.mp3",5}, - deadlock_m = {"subway_announcers/riu/boiko_new/spec_attention_deadlock.mp3",9.608}, - exit_m = {"subway_announcers/riu/boiko_new/spec_attention_exit.mp3",5.985}, - handrails_m = {"subway_announcers/riu/boiko_new/spec_attention_handrails.mp3",4.929}, - last_m = {"subway_announcers/riu/boiko_new/spec_attention_last.mp3",4.556}, - objects_m = {"subway_announcers/riu/boiko_new/spec_attention_objects.mp3",5.278}, - politeness_m = {"subway_announcers/riu/boiko_new/spec_attention_politeness.mp3",10.335}, - things_m = {"subway_announcers/riu/boiko_new/spec_attention_things.mp3",5.101}, - train_depeat_m = {"subway_announcers/riu/boiko_new/spec_attention_train_depeat.mp3",5.209}, - train_stop_m = {"subway_announcers/riu/boiko_new/spec_attention_train_stop.mp3",7.370}, - station_m = {"subway_announcers/riu/boiko_new/station.mp3",1.2}, - train_goes_to_m = {"subway_announcers/riu/boiko_new/train_goes_to.mp3",2.540}, - - aeroport_m = {"subway_announcers/riu/boiko_new/neoorange/aeroport.mp3",0.967891}, - arsenal_m = {"subway_announcers/riu/boiko_new/neoorange/arsenal.mp3",1.054218}, - flora_m = {"subway_announcers/riu/boiko_new/neoorange/flora.mp3",0.831474}, - gcfscape_m = {"subway_announcers/riu/boiko_new/neoorange/gcfscape.mp3",3.509569}, - ikarus_m = {"subway_announcers/riu/boiko_new/neoorange/ikarus.mp3",0.937528}, - imeni_uollesa_brina_m = {"subway_announcers/riu/boiko_new/neoorange/imeni_uollesa_brina.mp3",1.850499}, - litiyevaya_arr_m = {"subway_announcers/riu/boiko_new/neoorange/litiyevaya_arr.mp3",3.323265}, - litiyevaya_next_m = {"subway_announcers/riu/boiko_new/neoorange/litiyevaya_next.mp3",1.072630}, - park_m = {"subway_announcers/riu/boiko_new/neoorange/park.mp3",0.777211}, - park_arr_m = {"subway_announcers/riu/boiko_new/neoorange/park_arr.mp3",4.777211}, - park_next_m = {"subway_announcers/riu/boiko_new/neoorange/park_next.mp3",2.277211}, - slavnaya_strana_arr_m = {"subway_announcers/riu/boiko_new/neoorange/slavnaya_strana_arr.mp3",3.743923}, - slavnaya_strana_next_m = {"subway_announcers/riu/boiko_new/neoorange/slavnaya_strana_next.mp3",1.543129}, - smrc_m = {"subway_announcers/riu/boiko_new/neoorange/smrc.mp3",1.282971}, - spec_attention_aeroport_m = {"subway_announcers/riu/boiko_new/neoorange/spec_attention_aeroport.mp3",11.860317}, - vhe_m = {"subway_announcers/riu/boiko_new/neoorange/vhe.mp3",1.384308}, - - doors_closing_f = {"subway_announcers/riu/pyaseckaya/doors_closing.mp3",2.994}, - deadlock_f = {"subway_announcers/riu/pyaseckaya/spec_attention_deadlock.mp3",10.133}, - exit_f = {"subway_announcers/riu/pyaseckaya/spec_attention_exit.mp3",5.466}, - handrails_f = {"subway_announcers/riu/pyaseckaya/spec_attention_handrails.mp3",4.744}, - last_f = {"subway_announcers/riu/pyaseckaya/spec_attention_last.mp3",4.506}, - objects_f = {"subway_announcers/riu/pyaseckaya/spec_attention_objects.mp3",5.219}, - politeness_f = {"subway_announcers/riu/pyaseckaya/spec_attention_politeness.mp3",10.221}, - things_f = {"subway_announcers/riu/pyaseckaya/spec_attention_things.mp3",5.154}, - train_depeat_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_depeat.mp3",4.829}, - train_stop_f = {"subway_announcers/riu/pyaseckaya/spec_attention_train_stop.mp3",7.240}, - - - aeroport_f = {"subway_announcers/riu/pyaseckaya/neoorange/aeroport.mp3",0.919796}, - arr_aeroport_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_aeroport.mp3",1.757120}, - arr_arsenal_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_arsenal.mp3",1.782177}, - arr_flora_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_flora.mp3",1.500068}, - arr_gcfscape_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_gcfscape.mp3",3.953605}, - arr_ikarus_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_ikarus.mp3",1.826327}, - arr_imeni_uollesa_brina_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_imeni_uollesa_brina.mp3",2.669433}, - arr_litiyevaya_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_litiyevaya.mp3",4.173039}, - arr_park_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_park.mp3",5.374286}, - arr_slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_slavnaya_strana.mp3",4.443878}, - arr_smrc_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_smrc.mp3",1.938571}, - arr_vhe_f = {"subway_announcers/riu/pyaseckaya/neoorange/arr_vhe.mp3",2.146213}, - ikarus_f = {"subway_announcers/riu/pyaseckaya/neoorange/ikarus.mp3",0.887551}, - next_aeroport_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_aeroport.mp3",2.785510}, - next_arsenal_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_arsenal.mp3",2.537188}, - next_flora_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_flora.mp3",2.504785}, - next_gcfscape_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_gcfscape.mp3",4.949478}, - next_ikarus_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_ikarus.mp3",2.355102}, - next_imeni_uollesa_brina_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_imeni_uollesa_brina.mp3",3.467687}, - next_litiyevaya_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_litiyevaya.mp3",2.990249}, - next_park_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_park.mp3",3.788617}, - next_slavnaya_strana_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_slavnaya_strana.mp3",3.204467}, - next_smrc_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_smrc.mp3",2.746145}, - next_vhe_f = {"subway_announcers/riu/pyaseckaya/neoorange/next_vhe.mp3",2.763560}, - park_f = {"subway_announcers/riu/pyaseckaya/neoorange/park.mp3",0.596961}, - spec_attention_aeroport3_f = {"subway_announcers/riu/pyaseckaya/neoorange/spec_attention_aeroport3.mp3",11.945805}, - to_aeroport_f = {"subway_announcers/riu/pyaseckaya/neoorange/to_aeroport.mp3",3.273401}, - to_park_f = {"subway_announcers/riu/pyaseckaya/neoorange/to_park.mp3",3.055488}, -},{ - { - LED = {2, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4}, - Name = "Line 1", - spec_last = {"last_m",0.5,"things_m"}, - spec_last_f = {"last_f",0.5,"things_f"}, - spec_wait = {{"train_stop_m"},{"train_depeat_m"}}, - spec_wait_f = {{"train_stop_f"},{"train_depeat_f"}}, - Loop = false, - BlockDoors = true, - { - 462, "Икарус","Ikarus", - arrlast = {nil, {"arr_ikarus_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, "ikarus_m"}, - dep = {{"doors_closing_m","smrc_m",0.1,"politeness_m"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 461, "СМРК","SMRC", - arr = {{"station_m","smrc_m"}, "arr_smrc_f"}, - dep = {{"doors_closing_m","flora_m", 0.1,"handrails_m"}, {"doors_closing_f","next_ikarus_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 460, "Флора","Flora", - arr = {{"station_m","flora_m"}, "arr_flora_f"}, - dep = {{"doors_closing_m","aeroport_m", 0.1,"things_m"}, {"doors_closing_f","next_smrc_f",0.1,"handrails_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 458, "Аэропорт","Airport", - arr = {{"station_m","aeroport_m",0.1,"objects_m"}, {"arr_aeroport_f",0.1,"things_f"}}, - dep = {{"doors_closing_m","slavnaya_strana_next_m"}, {"doors_closing_f","next_flora_f",0.1,"politeness_f"}}, - arrlast = {{"station_m","aeroport_m",0.5,"last_m",2,"things_m",2,"deadlock_m"}, {"arr_aeroport_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, "aeroport_m"}, - not_last = {3,"train_goes_to_m","aeroport_m"}, - not_last_f = {3,"to_aeroport_f"}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - }, - { - 457, "Славная стр.","Glorius c.", - arr = {{"station_m","slavnaya_strana_arr_m"}, "arr_slavnaya_strana_f"}, - dep = {{"doors_closing_m","litiyevaya_next_m",0.1,"politeness_m"}, {"doors_closing_f","next_aeroport_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - have_inrerchange = true - }, - { - --male<->female - 456, "Литиевая","Lithium", - arr = {{"station_m","litiyevaya_arr_m"}, {"station_m","litiyevaya_arr_m"}}, - dep = {{"doors_closing_f","next_arsenal_f"}, {"doors_closing_f","next_slavnaya_strana_f",0.1,"objects_f"}}, - not_last_c = {nil,"not_last_f"},spec_last_c = {nil,"spec_last_f"}, spec_wait_c = {nil,"spec_wait_f"}, - have_inrerchange = true - }, - { - 455, "Арсенал","Arsenal", - arr = {"arr_arsenal_f", {"station_m","arsenal_m"}}, - dep = {{"doors_closing_f","next_park_f",0.1,"handrails_f"}, {"doors_closing_m","litiyevaya_next_m",0.1,"handrails_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - }, - { - 454, "Парк","Park", - arr = {{"arr_park_f", 0.1,"things_f"}, {"station_m","park_arr_m",0.1,"things_m"}}, - dep = {{"doors_closing_f","next_gcfscape_f"}, {"doors_closing_m","arsenal_m",0.1,"objects_m"}}, - arrlast = {{"arr_park_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, {"station_m","park_arr_m",0.5,"last_m",2,"things_m",2,"deadlock_m"}, "aeroport_m"}, - not_last = {3,"train_goes_to_m","park_m"}, - not_last_f = {3,"to_park_f"}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - right_doors = true, - have_inrerchange = true - }, - { - 453, "GCFScape", - arr = {"arr_gcfscape_f", {"station_m","gcfscape_m"}}, - dep = {{"doors_closing_f","next_vhe_f"}, {"doors_closing_m","park_next_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - right_doors = true, - }, - { - 452, "VHE", - arr = {"arr_vhe_f", {"station_m","vhe_m"}}, - dep = {{"doors_closing_f","next_imeni_uollesa_brina_f",0.1,"exit_f"}, {"doors_closing_m","gcfscape_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - have_inrerchange = true - }, - { - 451, "У. Брина","W. Breen", - arrlast = {{"arr_imeni_uollesa_brina_f",0.5,"last_f",2,"things_f",2,"deadlock_f"}, nil, "imeni_uollesa_brina_m"}, - dep = {nil, {"doors_closing_m","vhe_m",0.1,"politeness_m"}}, - not_last_c = {"not_last_f"},spec_last_c = {"spec_last_f"}, spec_wait_c = {"spec_wait_f"}, - } - } -}) - -Metrostroi.SetRRIAnnouncer({ - click_end = {"subway_announcers/rri/boiko/spec/click_end.mp3",0.1}, - click_start = {"subway_announcers/rri/boiko/spec/click_start.mp3",0.1}, - last = {"subway_announcers/rri/boiko/spec/last.mp3",22.264354}, - exit = {"subway_announcers/rri/boiko/spec/spec_attention_exit.mp3",5.446236}, - handrails = {"subway_announcers/rri/boiko/spec/spec_attention_handrails.mp3",4.594558}, - objects = {"subway_announcers/rri/boiko/spec/spec_attention_objects.mp3",5.143175}, - things = {"subway_announcers/rri/boiko/spec/spec_attention_things.mp3",05.093}, - politeness = {"subway_announcers/rri/boiko/spec/spec_attention_politeness.mp3",11.457075}, - train_depeat = {"subway_announcers/rri/boiko/spec/spec_attention_train_depeat.mp3",4.842222}, - train_stop = {"subway_announcers/rri/boiko/spec/spec_attention_train_stop.mp3",6.963424}, - - arr_aeroport = {"subway_announcers/rri/boiko/orange/arr_aeroport.mp3",1.884000}, - arr_arsenal = {"subway_announcers/rri/boiko/orange/arr_arsenal.mp3",1.939388}, - arr_flora = {"subway_announcers/rri/boiko/orange/arr_flora.mp3",1.813628}, - arr_gcfscape = {"subway_announcers/rri/boiko/orange/arr_gcfscape.mp3",3.924717}, - arr_ikarus = {"subway_announcers/rri/boiko/orange/arr_ikarus.mp3",2.137075}, - arr_imeni_uollesa_brina = {"subway_announcers/rri/boiko/orange/arr_imeni_uollesa_brina.mp3",2.906961}, - arr_litiyevaya = {"subway_announcers/rri/boiko/orange/arr_litiyevaya.mp3",3.487029}, - arr_park = {"subway_announcers/rri/boiko/orange/arr_park.mp3",4.575147}, - arr_slavnaya_strana = {"subway_announcers/rri/boiko/orange/arr_slavnaya_strana.mp3",2.483492}, - arr_smrc = {"subway_announcers/rri/boiko/orange/arr_smrc.mp3",2.227914}, - arr_vhe = {"subway_announcers/rri/boiko/orange/arr_vhe.mp3",2.472018}, - next_aeroport = {"subway_announcers/rri/boiko/orange/next_aeroport.mp3",4.956000}, - next_arsenal = {"subway_announcers/rri/boiko/orange/next_arsenal.mp3",5.055873}, - next_flora = {"subway_announcers/rri/boiko/orange/next_flora.mp3",5.021905}, - next_gcfscape = {"subway_announcers/rri/boiko/orange/next_gcfscape.mp3",7.011995}, - next_ikarus = {"subway_announcers/rri/boiko/orange/next_ikarus.mp3",5.147483}, - next_imeni_uollesa_brina = {"subway_announcers/rri/boiko/orange/next_imeni_uollesa_brina.mp3",5.538209}, - next_litiyevaya = {"subway_announcers/rri/boiko/orange/next_litiyevaya.mp3",4.949320}, - next_park = {"subway_announcers/rri/boiko/orange/next_park.mp3",6.216032}, - next_slavnaya_strana = {"subway_announcers/rri/boiko/orange/next_slavnaya_strana.mp3",5.626304}, - next_smrc = {"subway_announcers/rri/boiko/orange/next_smrc.mp3",5.320068}, - next_vhe = {"subway_announcers/rri/boiko/orange/next_vhe.mp3",5.457755}, - spec_aeroport = {"subway_announcers/rri/boiko/orange/spec_aeroport.mp3",11.101020}, - to_aeroport = {"subway_announcers/rri/boiko/orange/to_aeroport.mp3",4.759955}, - to_park = {"subway_announcers/rri/boiko/orange/to_park.mp3",2.882993}, - -},{ - { - Name = "Line 1", - spec_last = {"last"}, - spec_wait = {{"train_stop"},{"train_depeat"}}, - { - 462, "Икарус","Ikarus", - arrlast = {nil, {"arr_ikarus",0.5,"last"}}, - dep = {{"next_smrc",0.1,"politeness"}} - }, - { - 461, "СМРК","SMRC", + 461, + "СМРК", arr = {"arr_smrc", "arr_smrc"}, - dep = {{"next_flora", 0.1,"handrails"}, "next_ikarus"} + dep = {{"odz", "next_flora", 0.1, "spec_attention_handrails"}, {"odz", "next_ikarus"}} }, { - 460, "Флора","Flora", + 460, + "Флора", arr = {"arr_flora", "arr_flora"}, - dep = {{"next_aeroport", 0.1,"things"}, {"next_smrc",0.1,"handrails"}} + dep = {{"odz", "next_aeroport", 0.1, "spec_attention_things"}, {"odz", "next_smrc", 0.1, "spec_attention_handrails"}} }, { - 458, "Аэропорт","Airport", - arr = {{"arr_aeroport",0.1,"objects"}, {"arr_aeroport",0.1,"things"}}, - dep = {{"next_slavnaya_strana"}, {"next_flora",0.1,"politeness"}}, - arrlast = {{"arr_aeroport",0.5,"last"}, {"arr_aeroport",0.5,"last"}}, - not_last = {3,"to_aeroport"}, + 458, + "Аэропорт", + arr = {{"arr_aeroport", 0.1, "spec_attention_objects"}, {"arr_aeroport", 0.1, "spec_attention_things"}}, + dep = {{"odz", "next_slavnaya_strana"}, {"odz", "next_flora", 0.1, "spec_attention_politeness"}}, + arrlast = {{"arr_aeroport", 0.5, "last"}, {"arr_aeroport", 0.5, "last"}, "aeroport"}, + not_last = {3, "train_goes_to", "aeroport"} }, { - 457, "Славная стр.","Glorius c.", + 457, + "Славная стр.", arr = {"arr_slavnaya_strana", "arr_slavnaya_strana"}, - dep = {{"next_litiyevaya",0.1,"politeness"}, "next_aeroport"}, + dep = {{"odz", "next_litievaya", 0.1, "spec_attention_politeness"}, {"odz", "next_aeroport"}}, have_inrerchange = true }, { - --male<->female - 456, "Литиевая","Lithium", - arr = {"arr_litiyevaya", "arr_litiyevaya"}, - dep = {"next_arsenal", {"next_slavnaya_strana",0.1,"objects"}}, + 456, + "Литиевая", + arr = {"arr_litievaya", "arr_litievaya"}, + dep = {{"odz", "next_arsenal"}, {"odz", "next_slavnaya_strana", 0.1, "spec_attention_objects"}}, have_inrerchange = true }, { - 455, "Арсенал","Arsenal", + 455, + "Арсенал", arr = {"arr_arsenal", "arr_arsenal"}, - dep = {{"next_park",0.1,"handrails"}, {"next_litiyevaya",0.1,"handrails"}}, + dep = {{"odz", "next_park", 0.1, "spec_attention_handrails"}, {"odz", "next_litievaya", 0.1, "spec_attention_handrails"}} }, { - 454, "Парк","Park", - arr = {{"arr_park", 0.1,"things"}, {"arr_park",0.1,"things"}}, - dep = {{"next_gcfscape"}, {"next_arsenal",0.1,"objects"}}, - arrlast = {{"arr_park",0.5,"last"}, {"arr_park",0.5,"last"}}, - not_last = {3,"to_park"}, + 454, + "Парк", + arr = {{"arr_park", 0.1, "spec_attention_things"}, {"arr_park", 0.1, "spec_attention_things"}}, + dep = {{"odz", "next_gcfscape"}, {"odz", "next_arsenal", 0.1, "spec_attention_objects"}}, + arrlast = {{"arr_park", 0.5, "last"}, {"arr_park", 0.5, "last"}, "park"}, + not_last = {3, "train_goes_to", "park"}, have_inrerchange = true }, { - 453, "GCFScape", - arr = {"arr_gcfscape", {"arr_gcfscape"}}, - dep = {{"next_vhe"}, {"next_park",0.1,"politeness"}}, + 453, + "GCFScape", + arr = {"arr_gcfscape", "arr_gcfscape"}, + dep = {{"odz", "next_vhe"}, {"odz", "next_park", 0.1, "spec_attention_politeness"}} }, { - 452, "VHE", + 452, + "VHE", arr = {"arr_vhe", "arr_vhe"}, - dep = {{"next_imeni_uollesa_brina",0.1,"exit"}, "next_gcfscape"}, + dep = {{"odz", "next_imeni_uollesa_brina", 0.1, "spec_attention_exit"}, {"odz", "next_gcfscape"}}, have_inrerchange = true }, { - 451, "У. Брина","W. Breen", - arrlast = {{"arr_imeni_uollesa_brina",0.5,"last"}}, - dep = {nil, {"next_vhe",0.1,"politeness"}}, + 451, + "У. Брина", + arrlast = {{"arr_imeni_uollesa_brina", 0.5, "last"}, nil, "arr_imeni_uollesa_brina"}, + dep = {nil, {"odz", "next_vhe", 0.1, "spec_attention_politeness"}} } - }, + } }) +Metrostroi.AddANSPAnnouncer("ASNP MakichOS + Concord En", { + click1 = {"subway_announcers/asnp/click.mp3", 0.3}, + click2 = {"subway_announcers/asnp/click2.mp3", 0.1}, + announcer_ready = {"subway_announcers/asnp/makich/announcer_ready.mp3", 3.575700}, + last = {"subway_announcers/asnp/makich/last.mp3", 20.358000}, + odz = {"subway_announcers/asnp/makich/odz.mp3", 2.427300}, + spec_attention_exit = {"subway_announcers/asnp/makich/spec_attention_exit.mp3", 5.220000}, + spec_attention_last = {"subway_announcers/asnp/makich/spec_attention_last.mp3", 5.063400}, + spec_attention_objects = {"subway_announcers/asnp/makich/spec_attention_objects.mp3", 4.176000}, + spec_attention_politeness = {"subway_announcers/asnp/makich/spec_attention_politeness.mp3", 8.952300}, + spec_attention_things = {"subway_announcers/asnp/makich/spec_attention_things.mp3", 4.698000}, + spec_attention_train_depeat = {"subway_announcers/asnp/makich/spec_attention_train_depeat.mp3", 4.332600}, + spec_attention_train_stop = {"subway_announcers/asnp/makich/spec_attention_train_stop.mp3", 5.246100}, + spec_attention_handrails = {"subway_announcers/asnp/makich/spec_attention_handrails.mp3", 4.880700}, + train_goes_to = {"subway_announcers/asnp/makich/train_goes_to.mp3", 2.322900}, + aeroport = {"subway_announcers/asnp/makich/orange/aeroport.mp3", 0.965700}, + arr_aeroport = {"subway_announcers/asnp/makich/orange/arr_aeroport.mp3", 2.009700}, + arr_arsenal = {"subway_announcers/asnp/makich/orange/arr_arsenal.mp3", 1.670400}, + arr_flora = {"subway_announcers/asnp/makich/orange/arr_flora.mp3", 1.592100}, + arr_gcfscape = {"subway_announcers/asnp/makich/orange/arr_gcfcape.mp3", 3.680100}, + arr_ikarus = {"subway_announcers/asnp/makich/orange/arr_ikarus.mp3", 1.722600}, + arr_imeni_uollesa_brina = {"subway_announcers/asnp/makich/orange/arr_imeni_uollesa_brina.mp3", 2.401200}, + arr_litievaya = {"subway_announcers/asnp/makich/orange/arr_litievaya.mp3", 3.784500}, + arr_park = {"subway_announcers/asnp/makich/orange/arr_park.mp3", 5.141700}, + arr_slavnaya_strana = {"subway_announcers/asnp/makich/orange/arr_slavnaya_strana.mp3", 4.228200}, + arr_smrc = {"subway_announcers/asnp/makich/orange/arr_smrk.mp3", 1.748700}, + arr_vhe = {"subway_announcers/asnp/makich/orange/arr_vhe.mp3", 1.983600}, + next_aeroport = {"subway_announcers/asnp/makich/orange/next_aeroport.mp3", 2.688300}, + next_arsenal = {"subway_announcers/asnp/makich/orange/next_arsenal.mp3", 2.296800}, + next_flora = {"subway_announcers/asnp/makich/orange/next_flora.mp3", 1.983600}, + next_gcfscape = {"subway_announcers/asnp/makich/orange/next_gcfcape.mp3", 4.384800}, + next_ikarus = {"subway_announcers/asnp/makich/orange/next_ikarus.mp3", 2.218500}, + next_imeni_uollesa_brina = {"subway_announcers/asnp/makich/orange/next_imeni_uollesa_brina.mp3", 3.158100}, + next_litievaya = {"subway_announcers/asnp/makich/orange/next_litievaya.mp3", 2.244600}, + next_park = {"subway_announcers/asnp/makich/orange/next_park.mp3", 3.836700}, + next_slavnaya_strana = {"subway_announcers/asnp/makich/orange/next_slavnaya_strana.mp3", 2.636100}, + next_smrc = {"subway_announcers/asnp/makich/orange/next_smrk.mp3", 2.375100}, + next_vhe = {"subway_announcers/asnp/makich/orange/next_vhe.mp3", 2.427300}, + park = {"subway_announcers/asnp/makich/orange/park.mp3", 0.626400}, + ikarus = {"subway_announcers/asnp/makich/orange/ikarus.mp3", 0.991800}, + vhe = {"subway_announcers/asnp/makich/orange/vhe.mp3", 1.409400}, + arr_aeroport_en = {"subway_announcers/asnp/english/orange/arr_aeroport.mp3", 1.688}, + arr_aeroport_last_en = {"subway_announcers/asnp/english/orange/arr_aeroport_last.mp3", 3.781}, + arr_arsenal_en = {"subway_announcers/asnp/english/orange/arr_arsenal.mp3", 1.624}, + arr_flora_en = {"subway_announcers/asnp/english/orange/arr_flora.mp3", 1.538}, + arr_gcfscape_en = {"subway_announcers/asnp/english/orange/arr_gcfcape.mp3", 2.183}, + arr_ikarus_en = {"subway_announcers/asnp/english/orange/arr_ikarus.mp3", 3.806}, + arr_imeni_uollesa_brina_en = {"subway_announcers/asnp/english/orange/arr_imeni_uollesa_brina.mp3", 4.580}, + arr_litievaya_en = {"subway_announcers/asnp/english/orange/arr_litievaya.mp3", 3.585}, + arr_park_en = {"subway_announcers/asnp/english/orange/arr_park.mp3", 3.334}, + arr_park_last_en = {"subway_announcers/asnp/english/orange/arr_park_last.mp3", 5.427}, + arr_slavnaya_strana_en = {"subway_announcers/asnp/english/orange/arr_slavnaya_strana.mp3", 4.092}, + arr_smrc_en = {"subway_announcers/asnp/english/orange/arr_smrc.mp3", 1.934}, + arr_vhe_en = {"subway_announcers/asnp/english/orange/arr_vhe.mp3", 1.717}, + next_aeroport_en = {"subway_announcers/asnp/english/orange/next_aeroport.mp3", 2.427}, + next_arsenal_en = {"subway_announcers/asnp/english/orange/next_arsenal.mp3", 2.363}, + next_flora_en = {"subway_announcers/asnp/english/orange/next_flora.mp3", 2.277}, + next_gcfscape_en = {"subway_announcers/asnp/english/orange/next_gcfcape.mp3", 4.802}, + next_ikarus_en = {"subway_announcers/asnp/english/orange/next_ikarus.mp3", 2.451}, + next_imeni_uollesa_brina_en = {"subway_announcers/asnp/english/orange/next_imeni_uollesa_brina.mp3", 3.225}, + next_litievaya_en = {"subway_announcers/asnp/english/orange/next_litievaya.mp3", 2.335}, + next_park_en = {"subway_announcers/asnp/english/orange/next_park.mp3", 3.993}, + next_slavnaya_strana_en = {"subway_announcers/asnp/english/orange/next_slavnaya_strana.mp3", 2.871}, + next_smrc_en = {"subway_announcers/asnp/english/orange/next_smrc.mp3", 2.673}, + next_vhe_en = {"subway_announcers/asnp/english/orange/next_vhe.mp3", 2.456} +},{ + { + LED = {2, 1, 2, 3, 3, 3, 3, 3, 3, 3, 4}, + Name = "Линия 1", + Loop = false, + spec_last = {"spec_attention_last",0.5,"spec_attention_things"}, + spec_wait = {{"spec_attention_train_stop"},{"spec_attention_train_depeat"}}, + { + 462, + "Икарус", + arrlast = {nil, {"arr_ikarus", "arr_ikarus_en", 0.5, "last"}, "ikarus"}, + dep = {{"odz", "next_smrc", "next_smrc_en", 0.1, "spec_attention_politeness"}} + }, + { + 461, + "СМРК", + arr = {{"arr_smrc", "arr_smrc_en"}, {"arr_smrc", "arr_smrc_en"}}, + dep = {{"odz", "next_flora", "next_flora_en", 0.1, "spec_attention_handrails"}, {"odz", "next_ikarus", "next_ikarus_en"}} + }, + { + 460, + "Флора", + arr = {{"arr_flora", "arr_flora_en"}, {"arr_flora", "arr_flora_en"}}, + dep = {{"odz", "next_aeroport", "next_aeroport_en", 0.1, "spec_attention_politeness"}, {"odz", "next_smrc", "next_smrc_en", 0.1, "spec_attention_handrails"}} + }, + { + 458, + "Аэропорт", + arr = {{"arr_aeroport", "arr_aeroport_en", 0.1, "spec_attention_objects"}, {"arr_aeroport", "arr_aeroport_en", 0.1, "spec_attention_things"}}, + dep = {{"odz", "next_slavnaya_strana", "next_slavnaya_strana_en"}, {"odz", "next_flora", "next_flora_en", 0.1, "spec_attention_politeness"}}, + arrlast = {{"arr_aeroport", "arr_aeroport_last_en", 0.5, "last"}, {"arr_aeroport", "arr_aeroport_last_en", 0.5, "last"}, "aeroport"}, + not_last = {3, "train_goes_to", "aeroport"} + }, + { + 457, + "Славная стр.", + arr = {{"arr_slavnaya_strana", "arr_slavnaya_strana_en"}, {"arr_slavnaya_strana", "arr_slavnaya_strana_en"}}, + dep = {{"odz", "next_litievaya", "next_litievaya_en", 0.1, "spec_attention_politeness"}, {"odz", "next_aeroport", "next_aeroport_en"}}, + have_inrerchange = true + }, + { + 456, + "Литиевая", + arr = {{"arr_litievaya", "arr_litievaya_en"}, {"arr_litievaya", "arr_litievaya_en"}}, + dep = {{"odz", "next_arsenal", "next_arsenal_en"}, {"odz", "next_slavnaya_strana", "next_slavnaya_strana_en"}}, + have_inrerchange = true + }, + { + 455, + "Арсенал", + arr = {{"arr_arsenal", "arr_arsenal_en", 0.1, "spec_attention_objects"}, {"arr_arsenal", "arr_arsenal_en"}}, + dep = {{"odz", "next_park", "next_park_en"}, {"odz", "next_litievaya", "next_litievaya_en", 0.1, "spec_attention_handrails"}} + }, + { + 454, + "Парк", + arr = {{"arr_park", "arr_park_en", 0.1, "spec_attention_things"}, {"arr_park", "arr_park_en", 0.1, "spec_attention_things"}}, + dep = {{"odz", "next_gcfscape", "next_gcfscape_en"}, {"odz", "next_arsenal", "next_arsenal_en", 0.1, "spec_attention_politeness"}}, + arrlast = {{"arr_park", "arr_park_last_en", 0.5, "last"}, {"arr_park", "arr_park_last_en", 0.5, "last"}, "park"}, + not_last = {3, "train_goes_to", "park"}, + have_inrerchange = true + }, + { + 453, + "GCFScape", + arr = {{"arr_gcfscape", "arr_gcfscape_en"}, {"arr_gcfscape", "arr_gcfscape_en"}}, + dep = {{"odz", "next_vhe", "next_vhe_en"}, {"odz", "next_park", "next_park_en", 0.1, "spec_attention_handrails"}} + }, + { + 452, + "VHE", + arr = {{"arr_vhe", "arr_vhe_en"}, {"arr_vhe", "arr_vhe_en"}}, + dep = {{"odz", "next_imeni_uollesa_brina", "next_imeni_uollesa_brina_en", 0.1, "spec_attention_exit"}, {"odz", "next_gcfscape", "next_gcfscape_en"}}, + have_inrerchange = true + }, + { + 451, + "У. Брина", + arrlast = {{"arr_imeni_uollesa_brina", "arr_imeni_uollesa_brina_en", 0.5, "last"}, nil, "arr_imeni_uollesa_brina"}, + dep = {nil, {"odz", "next_vhe", "next_vhe_en", 0.1, "spec_attention_politeness"}} + } + } +}) + + Metrostroi.StationSound = { {"subway_stations/announces/orange/orange_1.mp3",51.965563}, diff --git a/lua/metrostroi/sh_arm.lua b/lua/metrostroi/sh_arm.lua deleted file mode 100644 index 5399c67..0000000 --- a/lua/metrostroi/sh_arm.lua +++ /dev/null @@ -1,125 +0,0 @@ -Metrostroi.ARMTable = {signal = {},switch = {},trigger = {}} - -if SERVER then - util.AddNetworkString "metrostroi-arm" - hook.Add("Think","metrostroi_arm_remove",function() - for i,v in ipairs(Metrostroi.ARMTable) do - if IsValid(v.Controller) and v.Controller.Station ~= i then - v.Controller = nil - v.net = {} - end - end - end) - net.Receive("metrostroi-arm",function(_,ply) - local station = net.ReadUInt(16) - --print("Player "..tostring(ply).." request full sync."..station) - net.Start("metrostroi-arm") - net.WriteBool(true) - net.WriteInt(station,16) - net.WriteTable(Metrostroi.ARMTable[station].net) - net.Send(ply) - end) - function Metrostroi.ARMGet(name,typ) - if not name or not Metrostroi.ARMTable[typ] then return end - if typ == "signal" then - local signal = Metrostroi.ARMTable[typ][name] - if not IsValid(signal) then - Metrostroi.ARMTable[typ][name] = Metrostroi.GetSignalByName(name) - return false - end - return signal - end - if typ == "switch" then - local switch = Metrostroi.ARMTable[typ][name] - if not IsValid(switch) then - Metrostroi.ARMTable[typ][name] = Metrostroi.GetSwitchByName(name) - return false - end - return switch - end - if typ == "trigger" then - local trigger = Metrostroi.ARMTable[typ][name] - if not IsValid(trigger) then - local triggers = ents.FindByName(name) - if #triggers == 1 then - trigger = triggers[1] - Metrostroi.ARMTable[typ][name] = trigger - trigger:Fire("AddOutput","OnEndTouchAll !self:ARMEndTouch::0:-1",0) - trigger:Fire("AddOutput","OnStartTouchAll !self:ARMStartTouch::0:-1",0) - trigger:Fire("AddOutput","OnTouching !self:ARMStartTouch::0:-1",0) - trigger:Fire("TouchTest") - end - return - else - return trigger - end - end - end - function Metrostroi.ARMSync(station,segmid,id,val) - local tbl = Metrostroi.ARMTable[station]and Metrostroi.ARMTable[station].net - if not tbl then return end - if not tbl[segmid] then tbl[segmid] = {} end - if val == false then val = nil end - if tbl[segmid][id] == val then return end - print("Syncing",station,segmid,id,val) - net.Start("metrostroi-arm") - net.WriteBool(false) - net.WriteUInt(station,16) - net.WriteUInt(segmid,16) - net.WriteString(id) - net.WriteType(val) - net.Broadcast() - tbl[segmid][id] = val - end -else - hook.Add("Think","arm_think",function() - for i,station in ipairs(Metrostroi.ARMTable) do - if (not station.LastSync or CurTime()-station.LastSync > 15) and (not Metrostroi.ARMTable.LastSyncRequest or CurTime()-Metrostroi.ARMTable.LastSyncRequest > 1) then - print(CurTime(),UnPredictedCurTime(),RealTime(),tostring(IsFirstTimePredicted())) - net.Start("metrostroi-arm") - net.WriteInt(i,16) - net.SendToServer() - print("Requesting full sync",i) - Metrostroi.ARMTable.LastSyncRequest = CurTime() - end - end - end) - - net.Receive("metrostroi-arm",function(_,ply) - if net.ReadBool() then - local station = net.ReadUInt(16) - print("We got sync.",station) - Metrostroi.ARMTable[station] = net.ReadTable() - Metrostroi.ARMTable[station].LastSync = CurTime() - else - local station = net.ReadUInt(16) - local segmid = net.ReadUInt(16) - local id = net.ReadString() - local val = net.ReadType() - print("Received",station,segmid,id,val) - if not Metrostroi.ARMTable[station] then Metrostroi.ARMTable[station] = {} end - if not Metrostroi.ARMTable[station][segmid] then Metrostroi.ARMTable[station][segmid] = {} end - Metrostroi.ARMTable[station][segmid][id] = val - end - end) - - - function Metrostroi.GetARMInfo(station,segmid,id) - local tbl = Metrostroi.ARMTable[station] - if not tbl then return end - if not tbl[segmid] then return end - return tbl[segmid][id] - end -end -if Metrostroi.ARMConfigGenerated then - for k,v in ipairs(Metrostroi.ARMConfigGenerated) do - Metrostroi.ARMTable[k] = { - occChecks = {}, - net = {}, - signal = {}, - switch = {}, - trigger = {}, - routes = {}, - } - end -end \ No newline at end of file diff --git a/lua/metrostroi/sh_rerail.lua b/lua/metrostroi/sh_rerail.lua index 0e8bf06..8ae3a3c 100644 --- a/lua/metrostroi/sh_rerail.lua +++ b/lua/metrostroi/sh_rerail.lua @@ -274,7 +274,7 @@ function Metrostroi.RerailTrain(train) train.FrontBogey.Wheels, train.RearBogey.Wheels, train.FrontCouple, - train.RearCouple + train.RearCouples } local solids = {} diff --git a/lua/metrostroi/sh_time.lua b/lua/metrostroi/sh_time.lua deleted file mode 100644 index f83059f..0000000 --- a/lua/metrostroi/sh_time.lua +++ /dev/null @@ -1,433 +0,0 @@ -if CLIENT then - local function getTime() - return os.time()+GetGlobalFloat("MetrostroiTimeOffset",0) - end - function Metrostroi.GetTimedT(notsync) - local T0 = GetGlobalFloat("MetrostroiT0",os.time())+GetGlobalFloat("MetrostroiTY") - local T1 = GetGlobalFloat("MetrostroiT1",CurTime()) - local dT - if notsync then - dT = (os.time()-T0) - (CurTime()-T1) - else - dT = (os.time()-T0 + (CurTime() % 1.0)) - (CurTime()-T1) - end - return dT - end - function Metrostroi.GetSyncTime(notsync) - return getTime()-Metrostroi.GetTimedT(notsync) - end - timer.Simple(0,function() - net.Start("MetrostroiUpdateTimeSync") - net.SendToServer() - end) - return -end - -local C_TimeOffset = CreateConVar("metrostroi_time_offset",0,FCVAR_ARCHIVE,"Server time offset in seconds") -local C_TimeOld = CreateConVar("metrostroi_time_old",0,FCVAR_ARCHIVE,"Enables old time system without codepoints") -local function getTime() - return os.time()+C_TimeOffset:GetFloat() -end - -local function UpdateTimeSync() - --if GetGlobalFloat("MetrostroiT0",0) == 0 then - local year = os.time{hour=3,day=1,month=1,year=1971} - SetGlobalFloat("MetrostroiTY",year*math.ceil((os.time())/year)) - SetGlobalFloat("MetrostroiT0",os.time()-GetGlobalFloat("MetrostroiTY")) - SetGlobalFloat("MetrostroiT1",CurTime()) - SetGlobalFloat("MetrostroiTimeOffset",C_TimeOffset:GetFloat()) - --[[else - print"GETSECOND" - SetGlobalFloat("MetrostroiT0",GetGlobalFloat("MetrostroiT0")) - SetGlobalFloat("MetrostroiT1",GetGlobalFloat("MetrostroiT1")) - end]] -end -timer.Create("metrostroi_time_update",60,0,UpdateTimeSync) -util.AddNetworkString("MetrostroiUpdateTimeSync") -net.Receive("MetrostroiUpdateTimeSync",UpdateTimeSync) -cvars.AddChangeCallback("metrostroi_time_offset",UpdateTimeSync,"MetrostroiUpdateTimeSync") -hook.Add("PlayerInitialSpawn","metrostroi_time_sync",UpdateTimeSync) -UpdateTimeSync() - - -local function tonumberVar(...) - local out = {} - for i,num in ipairs{...} do out[i] = tonumber(num) or num ~= "" and num end - return unpack(out) -end -local message =[[ -metrostroi_time_set commang usage: -Date or time in DD.MM.YYYY HH:MM:SS format -Time offset in +24 or -24 format -Seconds and 12-hours(AM/PM) are optional -Examples: -metrostroi_time_set 12:00 -metrostroi_time_set 01.01.2019 -metrostroi_time_set 27.03.2019 10:14:30 -metrostroi_time_set 26.10.1985 9:00AM -metrostroi_time_set +3 -metrostroi_time_set 0 to reset]] - -concommand.Add("metrostroi_time_set",function(ply,_,_,fargs) - if IsValid(ply) then return end - - local tMinArr = os.date("*t") - local tArr = os.date("!*t") - local GMTMin = os.time(tMinArr)-os.time(tArr) - local timeAdd = tonumber(string.match(fargs,"^+?-?[012]?%d$")) - - if timeAdd then - if -24 <= timeAdd and timeAdd <= 24 then - RunConsoleCommand("metrostroi_time_offset",timeAdd*3600) - RunConsoleCommand("metrostroi_time") - else - print(message) - end - else - local H,M,S,twH = tonumberVar(string.match(fargs,"(%d?%d):(%d%d):?(%d?%d?)%s?(P?A?M?)")) - if H and M then - if twH and twH ~= "AM" and twH ~= "PM" then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\n12-hours parameter must be AM or PM\n") return end - if H < 0 or (not twH and H > 24 or twH and H > 12) then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nHours must be in 0.."..(twH and 12 or 23).." range\n") return end - if M < 0 or M > 59 then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nMinutes must be in 0..59 range\n") return end - if S and (S < 0 or S > 59) then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nSeconds must be in 0..59 range\n") return end - local isPM = twH and twH == "PM" - if twH and H == 12 then H = 0 isPM = not isPM end - tArr.changed = true - tArr.hour = (isPM and H+12 or H) - tArr.min = M - tArr.sec = S or tArr.sec - end - local d,m,y = tonumberVar(string.match(fargs,"(%d%d)%.(%d%d?)%.(%d%d%d?%d?)")) - if d and m and y then - local maxDays = m == 2 and (y%4 == 0 and 29 or 28) or (m < 8 and m%2==1 or m >= 8 and m%2==0) and 31 or 30 - if y < 1970 or y > 2999 then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nYear must be in 1970..2999 range\n") return end - if d < 1 or d > maxDays then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nDay must be in 1.."..maxDays.." range\n") return end - if m < 1 or m > 12 then MsgC(Color(255,0,0),"Bad metrostroi_time_set commang usage.\nMonth must be in 1..12 range\n") return end - tArr.changed = true - tArr.day = d - tArr.month = m - tArr.year = y - end - if not tArr.changed then print(message) return end - RunConsoleCommand("metrostroi_time_offset",-os.time()+os.time(tArr)+GMTMin) - RunConsoleCommand("metrostroi_time") - end -end,nil,"Sets current server date and time. metrostroi_time to more info.") - -function Metrostroi.GetTimedT(notsync) - local T0 = GetGlobalFloat("MetrostroiT0",os.time())+GetGlobalFloat("MetrostroiTY") - local T1 = GetGlobalFloat("MetrostroiT1",CurTime()) - local dT - if notsync then - dT = (os.time()-T0) - (CurTime()-T1) - else - dT = (os.time()-T0 + (CurTime() % 1.0)) - (CurTime()-T1) - end - return dT -end -function Metrostroi.GetSyncTime(notsync) - return getTime()-Metrostroi.GetTimedT(notsync) -end - -local CV_PassScale = CreateConVar("metrostroi_passengers_scale",50,FCVAR_ARCHIVE,"Global passengers scale") -concommand.Add("metrostroi_time", function(ply, _, args) - local time = Metrostroi.GetSyncTime() - if IsValid(ply) then - ply:PrintMessage(HUD_PRINTCONSOLE, os.date("!Server date: %d.%m.%Y Server time: %H:%M:%S ",time)..Format("Current scale %.1f (%d%%)",Metrostroi.PassengersScale,Metrostroi.PassengersScale/CV_PassScale:GetFloat()*100)) - - --[=[local t = (time/60)%(60*24) - local printed = false - local train = ply:GetTrain() - if IsValid(train) and train.Schedule then - for k,v in ipairs(train.Schedule) do - local prefix = "" - if (not printed) and (t < v[3]) then - prefix = ">>>>" - printed = true - end - ply:PrintMessage(HUD_PRINTCONSOLE, - Format(prefix.."\t[%03d][%s] %02d:%02d:%02d",v[1], - Metrostroi.StationNames[v[1]] or "N/A", - math.floor(v[3]/60)%24, - math.floor(v[3])%60, - math.floor(v[3]*60)%60)) - - end - end]=] - else - print(os.date("!Server date: %d.%m.%Y Server time: %H:%M:%S ",time)..Format("Current scale %.1f (%d%%)",Metrostroi.PassengersScale,Metrostroi.PassengersScale/CV_PassScale:GetFloat()*100)) - end -end,nil,"Prints the current server time.") - -Metrostroi.CodePoints = Metrostroi.CodePoints or { - {23,1,0.2}, - {5.5,8.5,3}, - {10,13,1}, - {16,18,3}, - {20.5,22.5,0.5}, -} - -function Metrostroi.GetPassengersScale(time) - for i,tA in ipairs(Metrostroi.CodePoints) do - local pA,nA = (Metrostroi.CodePoints[i-1] or Metrostroi.CodePoints[#Metrostroi.CodePoints]),Metrostroi.CodePoints[i] - local pTime,nTime = pA[2],nA[2] - if pTime > nTime and (time < pTime and time > nTime) or pTime < nTime and (time < pTime or time > nTime) then continue end - local time1,time2 = tA[1],tA[2] - local pPoint, nPoint = pA[3],nA[3] - if not pPoint then pPoint = Metrostroi.CodePoints[#Metrostroi.CodePoints] end - if not nPoint then nPoint = Metrostroi.CodePoints[1] end - if time1 > time2 and time >= time1 then time2 = time1+24+(time2-time1) end - if time1 > time2 and time <= time2 then time1 = time2-24-(time2-time1) end - if pPoint > nPoint then - return math.Clamp(pPoint + (time-time1)/(time2-time1)*(nPoint-pPoint),nPoint,pPoint)*CV_PassScale:GetFloat() - else - return math.Clamp(pPoint + (time-time1)/(time2-time1)*(nPoint-pPoint),pPoint,nPoint)*CV_PassScale:GetFloat() - end - end - return CV_PassScale:GetFloat() -end - - -local function timeStr(time) - return Format("%02d:%02d",math.floor(time),math.floor(time*60)%60) -end -local function appendRight(str,sz) - return str..string.rep(" ",sz-#str) -end - -local function printArray(id) - if #Metrostroi.CodePoints == 0 then - print("No codepoints array. Current scale:"..Metrostroi.GetPassengersScale(0)) - return - end - - for i,point in pairs(Metrostroi.CodePoints) do - print(Format("[% 2d] %s-%s scale from %.2f to %.2f%s",i,timeStr(point[1]),timeStr(point[2]),(Metrostroi.CodePoints[i-1] or Metrostroi.CodePoints[#Metrostroi.CodePoints])[3],point[3],i == id and " <" or "")) - end - print("Time scale array:") - for x=0,4 do - for i=x*5,math.min(23.5,x*5+4) do Msg(appendRight(Format("%d",i),10)) end - Msg("\n") - for i=x*5,math.min(23.5,x*5+4.5),0.5 do Msg(appendRight(Format("%.2f",Metrostroi.GetPassengersScale(i)/CV_PassScale:GetFloat()),5)) end - Msg("\n") - end -end -concommand.Add("metrostroi_time_codepoints",function(ply,_,_,fargs) - if IsValid(ply) then return end - printArray() -end,nil,"Print current codepoints array") - -local function getTime(str,st) - local _,en,H,M,twH = tonumberVar(string.find(str,"(%d?%d):?(%d?%d?)%s?(P?A?M?)",st)) - if H then - if twH and twH ~= "AM" and twH ~= "PM" then MsgC(Color(255,0,0),"Bad metrostroi_time_codepoint_add commang usage.\n12-hours parameter must be AM or PM\n") return end - if H < 0 or (not twH and H > 24 or twH and H > 12) then MsgC(Color(255,0,0),"Bad metrostroi_time_codepoint_add commang usage.\nHours must be in 0.."..(twH and 12 or 23).." range\n") return end - if M and (M < 0 or M > 59) then MsgC(Color(255,0,0),"Bad metrostroi_time_codepoint_add commang usage.\nMinutes must be in 0..59 range\n") return end - local isPM = twH and twH == "PM" - if twH and H == 12 then H = 0 isPM = not isPM end - if isPM then H = H+12 end - - return M and H+M/60 or H,en - end -end - -local function checkTime(v1,v2,afterMid,id,arr) - for i,point in ipairs(arr or Metrostroi.CodePoints) do - if i == id then continue end - if not afterMid and point[1] == v1 and point[2] == v2 or afterMid and point[1] == v2 and point[2] == v1 - or point[1] < point[2] and ( - point[1] < v1 and v1 < point[2] or - point[1] < v2 and v2 < point[2] or - not afterMid and point[1] > v1 and point[2] < v2 or - afterMid and point[1] < v1 and point[2] > v2 - ) or point[1] > point[2] and (point[1] < v2 or point[2] > v1) then - print("Time overlap!") - print(Format("[% 2d] %s-%s our %s-%s",i,timeStr(point[1]),timeStr(point[2]),timeStr(v1),timeStr(v2))) - return false - end - end - return not id or (arr or Metrostroi.CodePoints)[id] -end - -concommand.Add("metrostroi_time_add",function(ply,_,_,fargs) - if IsValid(ply) then return end - - local v1, e1 = getTime(fargs) - local v2, e2 = getTime(fargs,e1) - local val = e2 and tonumber(string.sub(fargs,e2,-1)) - if not v1 or not v2 or not val then - print("metrostroi_time_add usage:\nEnter scale change start and end time and then target scale at end of this time\nExamples:\nmetrostroi_time_add 10:00 11:00 2\nmetrostroi_time_add 12 13 1") - return - end - - local afterMid = v1 > v2 - if afterMid then - local v = v1 - v1 = v2 - v2 = v - end - if not checkTime(v1,v2,afterMid) then return end - if afterMid then - table.insert(Metrostroi.CodePoints,{v2,v1,val}) - else - table.insert(Metrostroi.CodePoints,{v1,v2,val}) - end - table.sort(Metrostroi.CodePoints,function(a,b) return a[2] < b[2] end) - for i,v in ipairs(Metrostroi.CodePoints) do - if afterMid and v1 == v[2] and v2 == v[1] or not afterMid and v1 == v[1] and v2 == v[2] then - printArray(i) - print("Added at id "..i) - return - end - end -end,nil,"Adds a new codepoint. metrostroi_time_add to more info.") - -concommand.Add("metrostroi_time_edit",function(ply,_,_,fargs) - if IsValid(ply) then return end - local _,e1,id = tonumberVar(string.find(fargs,"([^%s]+)")) - local v1, e2 = getTime(fargs,e1 and e1+1) - local v2, e3 = getTime(fargs,e2) - local val = e3 and tonumber(string.sub(fargs,e3,-1)) - - if not id or not v1 or not v2 or not val then - print("metrostroi_time_edit usage:\nEnter scale change start and end time and then target scale at end of this time\nExamples:\nmetrostroi_time_edit 10:00 11:00 2\nmetrostroi_time_edit 12 13 1") - return - end - - if not Metrostroi.CodePoints[id] then - print("Codepoint at "..id.." id is not found!") - return - end - - local afterMid = v1 > v2 - if afterMid then - local v = v1 - v1 = v2 - v2 = v - end - local points = checkTime(v1,v2,afterMid,id) - if not points then return end - if afterMid then - points[1] = v2 - points[2] = v1 - points[3] = val - else - points[1] = v1 - points[2] = v2 - points[3] = val - end - table.sort(Metrostroi.CodePoints,function(a,b) return a[2] < b[2] end) - printArray(id) - print("Edited id "..id) -end,nil,"Edits an exist codepoint. metrostroi_time_edit to more info.") - -concommand.Add("metrostroi_time_remove",function(ply,_,_,fargs) - if IsValid(ply) then return end - local id = tonumber(fargs) - if not id then - print("metrostroi_time_remove usage:\nEnter codepoint id to remove it\nExamples:\nmetrostroi_time_remove 2") - return - end - if not Metrostroi.CodePoints[id] then - print("Codepoint at "..id.." id is not found!") - return - end - table.remove(Metrostroi.CodePoints,id) - table.sort(Metrostroi.CodePoints,function(a,b) return a[2] < b[2] end) - - printArray(id-1) - print("Removed id "..id) -end,nil,"Removes an exist codepoint. metrostroi_time_remove to more info.") - -concommand.Add("metrostroi_time_clear",function(ply,_,_,fargs) - if IsValid(ply) then return end - Metrostroi.CodePoints = {} - printArray() - print("Codepoints array cleared ") -end,nil,"Fully clears codepoint array.") - -concommand.Add("metrostroi_time_reset",function(ply,_,_,fargs) - if IsValid(ply) then return end - Metrostroi.CodePoints = { - {23,1,0.2}, - {5.5,8.5,3}, - {10,13,1}, - {16,18,3}, - {20.5,22.5,0.5}, - } - printArray() - print("Codepoints array cleared ") -end,nil,"Resets codepoint array to default.") - -function Metrostroi.LoadCodepoints() - local arrayData = file.Read("metrostroi_data/time_codepoints.txt") - local arr - if arrayData then - arr = {} - - for v1,v2,val in string.gmatch(arrayData,"([^%s]+)%s*([^%s]+)%s*([^\n\r]+)") do - v1,v2,val = tonumberVar(v1,v2,val) - if not v1 or not v2 or not val then - arr = false - break - end - table.insert(arr,{v1,v2,val}) - end - end - if arr then - --table.sort(arr,function(a,b) return a[2] < b[2] end) - local good = true - for i,point in ipairs(arr) do - if point[1] > point[2] and not checkTime(point[2],point[1],true,i,arr) or point[1] < point[2] and not checkTime(point[1],point[2],false,i,arr) then - good = false - break - end - end - if good then - Metrostroi.CodePoints = arr - print("Metrostroi: Loaded time codepoints") - return - end - end - Metrostroi.CodePoints = { - {23,1,0.2}, - {5.5,8.5,3}, - {10,13,1}, - {16,18,3}, - {20.5,22.5,0.5}, - } - print("Metrostroi: Loaded default time codepoints") -end -function Metrostroi.SaveCodepoints() - if not file.Exists("metrostroi_data","DATA") then - file.CreateDir("metrostroi_data") - end - - local arrayData = "" - for i,v in ipairs(Metrostroi.CodePoints) do - arrayData = arrayData..Format("%f %f %f\n",v[1],v[2],v[3]) - end - file.Write("metrostroi_data/time_codepoints.txt",arrayData) - print("Metrostroi: Saved time codepoints") -end -Metrostroi.LoadCodepoints() -concommand.Add("metrostroi_time_save", function(ply, _, args) - if IsValid(ply) then return end - Metrostroi.SaveCodepoints() -end,nil,"Save current codepoint array.") - -concommand.Add("metrostroi_time_load", function(ply, _, args) - if IsValid(ply) then return end - Metrostroi.LoadCodepoints() -end,nil,"Load current codepoint array.") - -local function getScale() - if C_TimeOld:GetBool() then - Metrostroi.PassengersScale = CV_PassScale:GetFloat() - else - Metrostroi.PassengersScale = Metrostroi.GetPassengersScale(Metrostroi.GetSyncTime()%86400/3600) - end -end -timer.Create("PassScaleChecker", 10, 0, getScale) -getScale() -cvars.AddChangeCallback("metrostroi_time_old",getScale,"PassScaleChecker") \ No newline at end of file diff --git a/lua/metrostroi/sh_util.lua b/lua/metrostroi/sh_util.lua index 43fb41a..9127e4b 100644 --- a/lua/metrostroi/sh_util.lua +++ b/lua/metrostroi/sh_util.lua @@ -26,120 +26,4 @@ if not math.InRange then local hpw,hph = pw/2,ph/2 return (px-hpw < x and x < px+hpw) and (py-hph < y and y < py+hph) end -end - -function Metrostroi.SortInSpawner(ent,id,name) - if not ent.Spawner then return end - local spawnerLine - for _,var in ipairs(ent.Spawner) do - if var[1] == id and type(var[4]) == "table" then - spawnerLine = var - if not spawnerLine.original then - spawnerLine.original = table.Copy(var[4]) - spawnerLine.custom = {} - end - break - end - end - if not spawnerLine then return end - - local retID = table.KeyFromValue(spawnerLine[4],name) - if not retID then - table.insert(spawnerLine.custom,name) - table.sort(spawnerLine.custom) - spawnerLine[4] = {} - table.Add(spawnerLine[4],spawnerLine.original) - table.Add(spawnerLine[4],spawnerLine.custom) - retID = table.KeyFromValue(spawnerLine[4],name) - end - return retID,#spawnerLine[4] -end - - - ---CHECK ME -Metrostroi.PatchedENTCache = Metrostroi.PatchedENTCache or {} -local MetrostroiENTCache = Metrostroi.PatchedENTCache - -local function updateMeta() - local meta = table.Copy(FindMetaTable("Entity")) - function meta:__index( key ) - --__index function patch, because builtin function have shit with :GetTable, - --which is slow, so i precache GetTable's result and use cached version of it - local val = meta[ key ] - if val ~= nil then return val end - if not MetrostroiENTCache[self] then return end --FIXME какова хуя сука, почему оно становится невалидным :AAAA: - val = MetrostroiENTCache[self][key] - if val ~= nil then return val end - if key == "Owner" then return meta.GetOwner(self) end - end - Metrostroi.PatchedMetatable = meta -end -hook.Add("OnGamemodeLoaded","MetrostroiOptimisationPatch",updateMeta) -updateMeta() - -timer.Create("MetrostroiCacheWatchdog", 1, 0, function() - for ent in pairs(MetrostroiENTCache) do - if not IsValid(ent) then - MetrostroiENTCache[ent] = nil - print("Cleared cache",ent) - end - end -end) - -function Metrostroi.OptimisationPatch(ent) - if true or ent then - --[[MetrostroiENTCache[ent] = ent:GetTable() - debug.setmetatable(ent,Metrostroi.PatchedMetatable) - print(tostring(ent).." patched...")]] - return - end - if not ENT then error("This function must be runned at the end of entity initialisation") end - if not ENT.Initialize then error("Can't get ENT.Initialize. Maybe you running function too early?") end - print(ENT.Folder.." added to patched entities...") - - - ENT.MetrostroiUnPatchedInitialize = ENT.Initialize - ENT.Initialize = function(self,...) - --[[local jitEnabled = jit.status() - print(jitEnabled and "JIT was enabled" or "JIT was disabled") - jit.on() - local x - local arr = self:GetTable() - for i=1,1000000 do - arr["i1"..i] = i*2 - arr["i2"..i] = i*2 - arr["i3"..i] = i*2 - end - local time = SysTime() - for i=1,1000000 do - x = self["i3"..i]--*self["i3"..i]/self["i3"..i]^self["i3"..i] - end - local elapsed1 = SysTime()-time - print("Before patch:"..elapsed1) - - local time = SysTime() - for i=1,1000000 do - x = arr["i2"..i]--*arr["i3"..i]/self["i3"..i]^self["i3"..i] - end - local elapsed3 = SysTime()-time - print("Direct access:"..elapsed3) - - __MetrostroiENTCache[self] = self:GetTable() - debug.setmetatable(self,Metrostroi.PatchedMetatable) - local time = SysTime() - for i=1,1000000 do - x = self["i1"..i]--*self["i3"..i]/self["i3"..i]^self["i3"..i] - end - local elapsed2 = SysTime()-time - print("After patch:"..elapsed2) - - print(Format("Patch is faster by %d%%\nPatch is faster than direct access by %d%%",elapsed1/elapsed2*100,elapsed3/elapsed2*100)) - print("BASE",getmetatable(self)) - jit.on()]] - MetrostroiENTCache[self] = self:GetTable() - debug.setmetatable(self,Metrostroi.PatchedMetatable) - - return self:MetrostroiUnPatchedInitialize(...) - end end \ No newline at end of file diff --git a/lua/metrostroi/skins/default.lua b/lua/metrostroi/skins/default.lua index d202540..8a20695 100644 --- a/lua/metrostroi/skins/default.lua +++ b/lua/metrostroi/skins/default.lua @@ -42,13 +42,13 @@ Metrostroi.AddSkin("train","Def_502Def",{ Metrostroi.AddSkin("pass","Def_502Def",{ name = "Default", typ = "81-502", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("cab","Def_502Def",{ name = "Default", typ = "81-502", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("train","Def_702",{ @@ -103,13 +103,13 @@ Metrostroi.AddSkin("train","Def_702Random",{ Metrostroi.AddSkin("pass","Def_702Def",{ name = "Default", typ = "81-702", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("cab","Def_702Def",{ name = "Default", typ = "81-702", - textures = {}, + texures = {}, def=true, }) @@ -216,13 +216,13 @@ Metrostroi.AddSkin("train","Def_703Random1",{ Metrostroi.AddSkin("pass","Def_703Def",{ name = "Default", typ = "81-703", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("cab","Def_703Def",{ name = "Default", typ = "81-703", - textures = {}, + texures = {}, def=true, }) @@ -612,7 +612,7 @@ Metrostroi.AddSkin("pass","Def_707Random",{ Metrostroi.AddSkin("cab","Def_707Def",{ name = "Default", typ = "81-707", - textures = {}, + texures = {}, def=true, }) @@ -752,104 +752,67 @@ Metrostroi.AddSkin("cab","Def_HammeriteY",{ def=true, }) + Metrostroi.AddSkin("train","Def_717SPBDef",{ name = "Default", typ = "81-717_spb", - textures = { - ["717_kvr"] = "models/metrostroi_train/81-717/717_kvr", + texures = { + }, def=true, }) -Metrostroi.AddSkin("train","Def_717SPBWDef",{ - name = "Default w. white doors", +Metrostroi.AddSkin("pass","Def_717SPBBlue",{ + name = "Blue interior", typ = "81-717_spb", textures = { - ["717_kvr"] = "models/metrostroi_train/81-717/skins/whitedoors", + color_blue = "models/metrostroi_train/81-717/color_blue", + interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, - def=true, }) - Metrostroi.AddSkin("pass","Def_717SPBWhite",{ name = "White interior", typ = "81-717_spb", textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_white", + color_blue = "models/metrostroi_train/81-717/color_white", interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, }) -Metrostroi.AddSkin("pass","Def_717SPBWhite2",{ - name = "White interior (KVR)", +Metrostroi.AddSkin("pass","Def_717SPBCyan",{ + name = "Cyan interior", typ = "81-717_spb", textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_white", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb3", + color_blue = "models/metrostroi_train/81-717/color_white_lvz", + interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, }) -Metrostroi.AddSkin("pass","Def_717SPBCyanF",{ - name = "Cyan interior full", +Metrostroi.AddSkin("pass","Def_717SPBWood3",{ + name = "Light-Wood interior", typ = "81-717_spb", textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_cian_full", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb"--[[..floor]],--ГЛЕб!!! флур=1 - дефолт, флур=2 -пиздаредко, запили рандом с вероятностью в не более 10% для флур2 + color_blue = "models/metrostroi_train/81-717/color_wood3", + interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, }) -for i=1,5 do - Metrostroi.AddSkin("pass","Def_717SPBCyanP"..i,{ - name = "Cyan interior partially"..i, - typ = "81-717_spb", - textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_cian_partly"..i, - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb"--[[..floor]],--ГЛЕб!!! флур=1 - дефолт, флур=2 -пиздаредко, запили рандом с вероятностью в не более 10% для флур2 - }, - }) -end -Metrostroi.AddSkin("pass","Def_717SPBGreenF",{ - name = "Green interior full", +Metrostroi.AddSkin("pass","Def_717SPBWood",{ + name = "Wood interior 1", typ = "81-717_spb", textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_green_full", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb", + color_blue = "models/metrostroi_train/81-717/color_wood", + interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, + random = true, }) -for i=1,6 do - Metrostroi.AddSkin("pass","Def_717SPBGreenP"..i,{ - name = "Green interior partially"..i, - typ = "81-717_spb", - textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_green_partly"..i, - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb", - }, - }) -end - -Metrostroi.AddSkin("pass","Def_717SPBWoodDark",{ - name = "Dark-Wood interior", +Metrostroi.AddSkin("pass","Def_717SPBWood2",{ + name = "Wood interior 2", typ = "81-717_spb", textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_wood_dark", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb", + color_blue = "models/metrostroi_train/81-717/color_wood2", + interior_mvm = "models/metrostroi_train/81-717/interior_spb", }, + random = true, }) -Metrostroi.AddSkin("pass","Def_717SPBWoodLight1",{ - name = "Light-Wood, dark ceiling", - typ = "81-717_spb", - textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_wood_light1", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb", - }, -}) -Metrostroi.AddSkin("pass","Def_717SPBWoodLight2",{ - name = "Light-Wood, white ceiling", - typ = "81-717_spb", - textures = { - color_blue = "models/metrostroi_train/81-717/skins/color_wood_light2", - interior_mvm = "models/metrostroi_train/81-717/skins/interior_spb", - }, -}) - - Metrostroi.AddSkin("cab","Def_YellowOY",{ name = "Yellow old + Yellow body", typ = "81-717_spb", @@ -969,7 +932,7 @@ Metrostroi.AddSkin("cab","Def_PAKSD2",{ Metrostroi.AddSkin("train","Def_718Def",{ name = "Default", typ = "81-718", - textures = {}, + texures = {}, rnd=true, }) Metrostroi.AddSkin("pass","Def_718Wood2",{ @@ -1025,30 +988,30 @@ Metrostroi.AddSkin("train","Def_720Def",{ Metrostroi.AddSkin("pass","Def_720Def",{ name = "Default", typ = "81-720", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("cab","Def_720Def",{ name = "Default", typ = "81-720", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("train","Def_722Def",{ name = "Default", typ = "81-722", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("pass","Def_722Def",{ name = "Default", typ = "81-722", - textures = {}, + texures = {}, def=true, }) Metrostroi.AddSkin("cab","Def_722Def",{ name = "Default", typ = "81-722", - textures = {}, + texures = {}, def=true, }) \ No newline at end of file diff --git a/lua/metrostroi/sv_centralisation.lua b/lua/metrostroi/sv_centralisation.lua deleted file mode 100644 index 9d6ba5f..0000000 --- a/lua/metrostroi/sv_centralisation.lua +++ /dev/null @@ -1,315 +0,0 @@ - -local function GetOccupation(tbl) - if not tbl then return end - for sID,signame in ipairs(tbl) do - if signame[1] == "@" then - local trigger = Metrostroi.ARMGet(signame:sub(2,-1), "trigger") - --if not trigger then print(signame) end - if not trigger or trigger.ARMTriggered then - return true - end - elseif signame ~= "" then - local signal = Metrostroi.ARMGet(signame, "signal") - if not signal or signal.OccupiedBy and signal.OccupiedBy ~= signal then - return true - end - end - end - return false -end - -function Metrostroi.CentralisationPrepareRoute(station,route) - if not Metrostroi.ARMTable[station].routes then Metrostroi.ARMTable[station].routes = {} end - local Routes = Metrostroi.ARMTable[station].routes - local stationT = Metrostroi.ARMConfigGenerated[station] - if not Routes[route] then - local segments = route.route - for i,segm in pairs(segments) do - if segm.inroute then - RunConsoleCommand("say",Format("Station %d. Error building route %s, because there is already another route",station,route)) - return false - end - if route.ignores and (not route.ignores or not route.ignores[i]) and segm.occupied then - RunConsoleCommand("say",Format("Station %d. Error building route %s. Route occupied!",station,route)) - return false - end - end - if route.checks then - for i,segm in pairs(route.checks) do - if segm.inroute then - RunConsoleCommand("say",Format("Station %d. Error building route %s, because there is already another route on protective segments",station,route)) - return false - end - if route.ignores and (not route.ignores or not route.ignores[i]) and segm.occupied then - RunConsoleCommand("say",Format("Station %d. Error building route %s. Protective segments occupied!",station,route)) - return false - end - end - end - - for _,segm in pairs(segments) do - segm.inroute = true - end - Routes[route] = table.insert(Routes,route) - RunConsoleCommand("say",Format("Station %d. Added route %s with ID:%d",station,route,Routes[route])) - return true - end -end -local function CentralistationCalculateFreeBS(segm,dir,sigconf,pSeg,rccount) - if pSeg then - local signal = dir and segm.signal2 or not dir and segm.signal1 - if signal then - local ent = signal.ent - if not ent then return 1 end - local conf = sigconf[ent.Name] - --return (ent.FreeBSARM or ent.FreeBS or 0)+(conf and conf.bs or 1),ent - return (ent.FreeBSARM or ent.FreeBS or 0)+rccount,ent - end - end - rccount = (rccount or 0) + 1 - if not segm or segm.occupied then - return rccount - end - local alt,main = false,true - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - main = switch and switch.MainTrack and not switch.AlternateTrack - alt = switch and not switch.MainTrack and switch.AlternateTrack - if not alt and not main then return 0 end - end - - if pSeg and segm.next_a and (segm.next_a == pSeg and not alt or segm.next_m == pSeg and not main) then return 0 end - local segmM,segmA = segm.next_m,segm.next_a - local segmP = segm.prev - - - local mainM = segmM and (dir and segmM.x > segm.x or not dir and segmM.x < segm.x) - local mainP = segmP and (dir and segmP.x > segm.x or not dir and segmP.x < segm.x) - if mainM then - local next - if alt and segmA then next = segmA end - if main and segmM then next = segmM end - return CentralistationCalculateFreeBS(next,dir,sigconf,segm,rccount) - end - if segmP and mainP then - return CentralistationCalculateFreeBS(segmP,dir,sigconf,segm,rccount) - end -end -local function CentralisationSolveSignalLogic(signal,signalE,signalDir,station,segm) - if not signalE then return end - if station.signals and station.signals[signal] then - local sigconf = station.signals[signal] - signalE.ControllerLogic = station - local target,codes = "","" - local alt = false - local occupied = segm.occupied - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - local main = switch and switch.MainTrack and not switch.AlternateTrack - alt = switch and not switch.MainTrack and switch.AlternateTrack - if not alt and not main then occupied = true end - end - if alt then - --occupied = occupied or segm.next_a and GetOccupation(segm.next_a) - else - --occupied = occupied or segm.next_m and GetOccupation(segm.next_m) - end - - local route = sigconf.route - local free,nextSignal = CentralistationCalculateFreeBS(segm,signalDir,station.signals) - --print(free,signalE,signalE.Name) - local dir = route and route.dir - if route and dir ~= signalDir then - print(signalE.Name,dir ,signalDir) - route = nil - occupied = true - end - if sigconf.Mode == 1 then - if occupied then - target = sigconf.R - codes = "2" - elseif route then - if nextSignal then - local colors = nextSignal.Colors or "" - local segments = route[2] - --print(route) - local start = false - local specialS = sigconf.routes and sigconf.routes[route[1].name] - if free < (sigconf.bs or 1) then - target = sigconf.RY or sigconf.R - elseif route.mode == 3 then - target = sigconf.W - elseif colors:find("[rR]+") and colors:find("[yY]+") then - target = sigconf.Y or sigconf.YG or sigconf.RY or sigconf.R - elseif colors:find("[rR]+") then - target = sigconf.Y or sigconf.RY or sigconf.R - elseif colors:find("[ygYG]+[ygYG]+") or colors:find("[gwGW]+") then - target = sigconf.G or sigconf.YG or sigconf.Y or sigconf.RY or sigconf.R - elseif colors:find("[yY]+") then - target = sigconf.YG or sigconf.G or sigconf.Y or sigconf.RY or sigconf.R - else - target = sigconf.R - end - elseif route.mode == 3 then - target = sigconf.W - else - target = sigconf.R - end - else - if free and free < 1 then - target = sigconf.R or sigconf.RY or "" - else - target = sigconf.RY or sigconf.R - end - codes = "0" - end - signalE.Red = target==sigconf.R or target==sigconf.RY - signalE.AutoEnabled = signalE.AutoEnabled - else - - end - local sig = "" - for i=1,#target do - local id = tonumber(target[i]) - if not id then continue end - if #sig < id then sig = sig..string.rep("0",id-#sig) end - sig = string.SetChar(sig,tonumber(target[i]),target[i+1]=="b" and "2" or "1") - end - signalE.Sig = sig - signalE.FreeBSARM = occupied and 0 or free - signalE.FreeBS = math.ceil(signalE.FreeBSARM or 0) - --print(occupied,free,signalE.FreeBS) - --print(signalE.Colors,target,signalE.Sig) - end -end -local function CentralisationSolveRoutesLogic(stationID,station) - local Routes = Metrostroi.ARMTable[stationID].routes - local HasPrepared = true - for k,route in ipairs(Routes) do - local segments = route.route - local directions = route.directions - if route.prepared then - --HasPrepared = true - local done,occupiedN,halfroute = true--,100 - for segmID,segm in ipairs(segments) do - if segm.occupied then - if not occupiedN or occupiedN < segmID then occupiedN = segmID end - end - if segm.route then done = false end - if not segm.route then halfroute = true end - end - if occupiedN then - for segmID,segm in ipairs(segments) do - if segmID > occupiedN then break end - if segm.route == route then - segm.route = false - segm.inroute = false - local signal = route[3] and segm.signal2 or not route[3] and segm.signal1 - local sig = Metrostroi.ARMGet(signal and signal.name, "signal") - end - end - end - if done or halfroute and not occupiedN then - for _,segm in ipairs(segments) do - segm.inroute = false - segm.route = false - end - for i,signame in pairs(route.signals) do - if not station.signals[signame] then continue end - station.signals[signame].route = nil - end - RunConsoleCommand("say",Format("Station %d. Route %s(%d) has destroyed",stationID,route,Routes[route])) - table.remove(Routes,Routes[route]) - Routes[route] = nil - for i,v in pairs(Routes) do Routes[v] = i end - route.prepared = false - end - else - local Prepared = true - --Check for occupation - for i,segm in ipairs(segments) do - if route.ignores and not route.ignores[i] and segm.occupied then Prepared = false break end - if segm.route then Prepared = false break end - end - --If there is no occupation - check and prepare switches - if Prepared then - for segmID,segm in ipairs(segments) do - if not segm.switch then continue end - local switch = Metrostroi.ARMGet(segm.switch, "switch") - if not switch then continue end - local dir = directions[segmID] - - local main = switch and switch.MainTrack and not switch.AlternateTrack - local alt = switch and not switch.MainTrack and switch.AlternateTrack - --print(route[3],switch,dir) - if dir and main or not dir and alt or (not main and not alt) then - switch:SwitchTo(dir and "alt" or "main") - Prepared = false - print("Move",segmID,segm.switch,switch,dir and "alt" or "main") - end - if not main and not alt then Prepared = false end - end - end - if Prepared then - for k,segm in ipairs(segments) do - segm.route = route - local signal = route[3] and segm.signal2 or not route[3] and segm.signal1 - local sig = Metrostroi.ARMGet(signal and signal.name, "signal") - end - for i,signame in pairs(route.signals) do - if not station.signals[signame] then continue end - station.signals[signame].route = route - end - route.prepared = true - RunConsoleCommand("say",Format("Station %d. Route %s(%d) has assembled",stationID,route,Routes[route])) - end - end - end - return HasPrepared -end - -function Metrostroi.Centralisation() - if not Metrostroi.ARMConfigGenerated then return end - for stationID,station in pairs(Metrostroi.ARMConfigGenerated) do - --Route logic - local HasPrepared = CentralisationSolveRoutesLogic(stationID,station) - - for name, signal in pairs(station.signals) do - if signal.sig then - local ent = Metrostroi.ARMGet(name, "signal") - signal.sig.ent = ent - CentralisationSolveSignalLogic(name,ent,signal.sig.dir,station,signal.segm) - end - end - for segmID, segm in ipairs(station) do - segm.occupied = segm._occup or GetOccupation(segm.occup) or GetOccupation(segm.occupAlt) - if true then - if segm.switch then - local switch = Metrostroi.ARMGet(segm.switch, "switch") - local main = switch and switch.MainTrack and not switch.AlternateTrack - local alt = switch and not switch.MainTrack and switch.AlternateTrack - if switch and not segm.route and not segm.inroute and not segm.occupied and (alt or not main and not alt) then - switch:SwitchTo("main") - print("Reset",segm.switch,switch,segmID,segm.route) - end - end - --[[ if segm.signal1 then - local ent = Metrostroi.ARMGet(segm.signal1.name, "signal") - segm.signal1.ent = ent - CentralisationSolveSignalLogic(segm.signal1.name,ent,false,station,segm) - end - if segm.signal2 then - local ent = Metrostroi.ARMGet(segm.signal2.name, "signal") - segm.signal2.ent = ent - CentralisationSolveSignalLogic(segm.signal2.name,ent,true,station,segm) - end--]] - --[[ if segm.route and not HasPrepared then - segm.route = false - segm.inroute = false - end--]] - end - end - end -end - -timer.Create("metrostroi_centralisation",0.1,0,Metrostroi.Centralisation) \ No newline at end of file diff --git a/lua/metrostroi/sv_railnetwork.lua b/lua/metrostroi/sv_railnetwork.lua index 44a9f5b..082e774 100644 --- a/lua/metrostroi/sv_railnetwork.lua +++ b/lua/metrostroi/sv_railnetwork.lua @@ -2,6 +2,13 @@ -- Rail network handling and ARS simulation -------------------------------------------------------------------------------- if not Metrostroi.Paths then + --List of spawned trains + Metrostroi.SpawnedTrains = {} + for k,ent in pairs(ents.GetAll()) do + if ent.Base == "gmod_subway_base" or ent:GetClass() == "gmod_subway_base" then + Metrostroi.SpawnedTrains[ent] = true + end + end -- Definition of paths used in runtime Metrostroi.Paths = {} -- Spatial lookup for nodes @@ -841,6 +848,19 @@ function Metrostroi.IsTrackOccupied(src_node,x,dir,t) return #Trains > 0,Trains[#Trains],Trains[1] end + +hook.Add("EntityRemoved","MetrostroiRailNetwork",function(ent) + if Metrostroi.SpawnedTrains[ent] then + Metrostroi.SpawnedTrains[ent] = nil + end +end) +hook.Add("OnEntityCreated","MetrostroiRailNetwork",function(ent) + timer.Simple(0,function() + if IsValid(ent) and (ent.Base == "gmod_subway_base" or ent:GetClass() == "gmod_subway_base") then + Metrostroi.SpawnedTrains[ent] = true + end + end) +end) -------------------------------------------------------------------------------- -- Update train positions -------------------------------------------------------------------------------- @@ -1121,10 +1141,9 @@ local function loadTracks(name) end local function loadSigns(name,keep) if keep then return end - print("Metrostroi: Loading signs, signals, switches...") local signs = getFile("metrostroi_data/signs_%s",name,"Signal") - if not signs then print("Metrostroi: Loading canceled, no file found") return end + if not signs then return end local signals_ents = ents.FindByClass("gmod_track_signal") for k,v in pairs(signals_ents) do SafeRemoveEntity(v) end @@ -1133,7 +1152,8 @@ local function loadSigns(name,keep) local signs_ents = ents.FindByClass("gmod_track_signs") for k,v in pairs(signs_ents) do SafeRemoveEntity(v) end - --Some compatibility checks + -- Create new entities (add a delay so the old entities clean up) + print("Metrostroi: Loading signs, signals, switches...") local version version = signs.Version if not version then @@ -1149,8 +1169,6 @@ local function loadSigns(name,keep) TwoToSix = true end end - - -- Create new entities (add a delay so the old entities clean up) for k,v in pairs(signs) do local ent = ents.Create(v.Class) if IsValid(ent) then @@ -1334,14 +1352,6 @@ function Metrostroi.Load(name,keep_signs) Metrostroi.UpdateARSSections() end) - -- Load schedules data - local sched_data = getFile("metrostroi_data/sched_%s",name,"schedules") - if sched_data then - Metrostroi.LoadSchedulesData(sched_data) - else - print("Metrostroi: Could not load schedules configuration!") - end - -- Initialize signs print("Metrostroi: Initializing signs...") Metrostroi.InitializeSigns() @@ -1577,6 +1587,11 @@ concommand.Add("metrostroi_cleanup_signals", function(ply, _, args) end) end) +concommand.Add("metrostroi_load_without_signs", function(ply, _, args) + if (ply:IsValid()) and (not ply:IsAdmin()) then return end + Metrostroi.Load(nil,true) +end) + concommand.Add("metrostroi_pos_info", function(ply, _, args) if (ply:IsValid()) and (not ply:IsAdmin()) then return end @@ -1630,6 +1645,14 @@ concommand.Add("metrostroi_track_alt", function(ply, _, args) end end end) +concommand.Add("metrostroi_updatesignals", function(ply, _, args) + if (not ply:IsValid()) then return end + Metrostroi.UpdateSignalEntities() +end) +concommand.Add("metrostroi_updateswitchs", function(ply, _, args) + if (not ply:IsValid()) then return end + Metrostroi.UpdateSwitchEntities() +end) concommand.Add("metrostroi_track_arstest", function(ply, _, args) if (ply:IsValid()) and (not ply:IsAdmin()) then return end diff --git a/lua/metrostroi/sv_signs.lua b/lua/metrostroi/sv_signs.lua index 4331ab5..f5a8361 100644 --- a/lua/metrostroi/sv_signs.lua +++ b/lua/metrostroi/sv_signs.lua @@ -29,8 +29,6 @@ end -------------------------------------------------------------------------------- function Metrostroi.AddStationSign(ent) if ent.SignOff then return end - if not Metrostroi.StationNamesConfiguration[ent.StationIndex] then return end - local platformStart = ent.PlatformStart local platformEnd = ent.PlatformEnd local platformDir = platformEnd-platformStart diff --git a/lua/metrostroi/sv_socket.lua b/lua/metrostroi/sv_socket.lua deleted file mode 100644 index f9b7afd..0000000 --- a/lua/metrostroi/sv_socket.lua +++ /dev/null @@ -1,77 +0,0 @@ -require("bromsock") - -if server then server:Close() end -server = BromSock() -server:SetOption(0xFFFF, 0x0008, 1) -server:SetOption(0x6, 0x0001 , 1) - -if (not server:Listen(1337)) then - print("[BS:S] Failed to listen!") -else - print("[BS:S] Server listening...") -end -server:SetCallbackConnect(function(sockObj, succ, ip, port ) - print(sockObj, succ, ip, port ) -end) -local opened = {} -concommand.Add("test_command_send",function(_,_,args) - local sock = opened[tonumber(args[1])] - if not sock then return end - local packet = BromPacket() - packet:WriteStringRaw(args[2]) - sock:Send(packet,true) -end) -concommand.Add("test_command_sendtest",function(_,_,args) - local sock = opened[tonumber(args[1])] - if not sock then return end - local packet = BromPacket() - packet:WriteByte(0x00) - packet:WriteUInt(1234) - packet:WriteStringNT("test") - sock:Send(packet,true) -end) -server:SetCallbackAccept(function(serversock, clientsock) - print("[BS:S] Accepted:", serversock, clientsock,clientsock:GetPort()) - opened[clientsock:GetPort()] = clientsock - clientsock:SetCallbackReceive(function(sock, packet) - print("[BS:S] Received:", sock, packet) - - local typ = packet:ReadByte() - print("[BS:S] Type:", typ) - if typ == 0x01 then - local trains = {} - for k,ent in pairs(ents.GetAll()) do - if ent.Base == "gmod_subway_base" and not ent.NoTrain then - table.insert(trains,ent) - end - end - - local packet = BromPacket() - packet:WriteByte(0x00) - packet:WriteUInt(#trains) - sock:Send(packet,true) - for k,v in ipairs(trains) do - print("Send train",v:GetClass()) - local packet = BromPacket() - packet:WriteByte(0x01) - packet:WriteUInt(#trains) - packet:WriteUInt(v:EntIndex()) - packet:WriteStringNT(v:GetClass()) - sock:Send(packet,true) - end - end - end) - - clientsock:SetCallbackDisconnect(function(sock) - print("[BS:S] Disconnected:", sock) - opened[clientsock:GetPort()] = nil - end) - - clientsock:SetTimeout(1000) - - clientsock:Receive() - - -- Who's next in line? - serversock:Accept() -end) -server:Accept() diff --git a/lua/metrostroi/sv_turbostroi.lua b/lua/metrostroi/sv_turbostroi.lua index 91a45f3..bd061ad 100644 --- a/lua/metrostroi/sv_turbostroi.lua +++ b/lua/metrostroi/sv_turbostroi.lua @@ -51,19 +51,15 @@ if not TURBOSTROI then end end end - local systems = train.Systems - local twWritersID = train.TrainWireWritersID - local twTurbostroi = train.TrainWireTurbostroi - local tti = train.TriggerTurbostroiInput while true do id,system,name,index,value = Turbostroi.RecvMessage(train) --print(id,system,name,index,value) --while true do --OLDTURBOSTROI --id,system,name,index,value = Turbostroi.RecvMessage(train) if id == 1 then - if systems[system] then - systems[system][name] = value - if tti then tti(train,system,name,value) end + if train.Systems[system] then + train.Systems[system][name] = value + if train.TriggerTurbostroiInput then train:TriggerTurbostroiInput(system,name,value) end end end if id == 2 then @@ -78,54 +74,54 @@ if not TURBOSTROI then --print("[!]Wire "..index.." starts update! Value "..value) dataCache[train]["wiresW"][index] = value --train:WriteTrainWire(index,value) - if not twWritersID[index] then twWritersID[index] = true end - twTurbostroi[index] = value - if tti then tti(train,"TrainWire",index,value) end + if not train.TrainWireWritersID[index] then train.TrainWireWritersID[index] = true end + train.TrainWireTurbostroi[index] = value + if train.TriggerTurbostroiInput then train:TriggerTurbostroiInput("TrainWire",index,value) end else --print("[!]Wire "..index.." stop update!") dataCache[train]["wiresW"][index] = nil end end if id == 4 then - if systems[system] then - systems[system]:TriggerInput(name,value) + if train.Systems[system] then + train.Systems[system]:TriggerInput(name,value) end end - --[[if id == 5 then + if id == 5 then for twid,value in pairs(dataCache[train]["wiresW"]) do --train:WriteTrainWire(twid,value) end - end]] + end if not id then break end messageCounter = messageCounter + 1 end - --[[ end -- Send train wire values -- Output all system values for train in pairs(trains) do - ]] - for i in pairs(train.TrainWires) do - if not dataCache[train]["wires"] then dataCache[train]["wires"] = {} end - if dataCache[train]["wires"][i] ~= train:ReadTrainWire(i) then - Turbostroi.SendMessage(train,3,"","",i,train:ReadTrainWire(i)) - dataCache[train]["wires"][i] = train:ReadTrainWire(i) + if train.ReadTrainWire then + for i in pairs(train.TrainWires) do + if not dataCache[train]["wires"] then dataCache[train]["wires"] = {} end + if dataCache[train]["wires"][i] ~= train:ReadTrainWire(i) then + Turbostroi.SendMessage(train,3,"","",i,train:ReadTrainWire(i)) + dataCache[train]["wires"][i] = train:ReadTrainWire(i) + end end - end - for sys_name,system in pairs(train.Systems) do - if system.OutputsList and system.DontAccelerateSimulation then - for _,name in pairs(system.OutputsList) do - local value = system[name] or 0 - if type(value) == "boolean" then - value = value and 1 or 0 - end - if type(value) == "number" then - value = math.Round(value) - if not dataCache[train][sys_name] then dataCache[train][sys_name] = {} end - if dataCache[train][sys_name][name] ~= value then - Turbostroi.SendMessage(train,1,sys_name,name,0,value) - dataCache[train][sys_name][name] = value + for sys_name,system in pairs(train.Systems) do + if system.OutputsList and system.DontAccelerateSimulation then + for _,name in pairs(system.OutputsList) do + local value = system[name] or 0 + if type(value) == "boolean" then + value = value and 1 or 0 + end + if type(value) == "number" then + value = math.Round(value) + if not dataCache[train][sys_name] then dataCache[train][sys_name] = {} end + if dataCache[train][sys_name][name] ~= value then + Turbostroi.SendMessage(train,1,sys_name,name,0,value) + dataCache[train][sys_name][name] = value + end end end end diff --git a/lua/metrostroi/sv_turbostroi_v2.lua b/lua/metrostroi/sv_turbostroi_v2.lua index f54debb..46128f0 100644 --- a/lua/metrostroi/sv_turbostroi_v2.lua +++ b/lua/metrostroi/sv_turbostroi_v2.lua @@ -4,7 +4,7 @@ if not TURBOSTROI and (not Turbostroi or not Turbostroi.SetMTAffinityMask) then return end local turbostroiTrains = {} if Turbostroi and not TURBOSTROI then - local FPS = 1/engine.TickInterval() + local FPS = 33 local messageTimeout = 0 local messageCounter = 0 local dataCache = {{},{}} @@ -136,7 +136,7 @@ if Turbostroi and not TURBOSTROI then value = value and 1 or 0 end if type(value) == "number" then - value = math.Round(value,1) + value = math.Round(value) if not dataCache[train][sys_name] then dataCache[train][sys_name] = {} end if dataCache[train][sys_name][name] ~= value then if SendMessage(train,1,sys_name,name,0,value) then @@ -152,7 +152,7 @@ if Turbostroi and not TURBOSTROI then end if Turbostroi then concommand.Add("metrostroi_turbostroi_run",function(ply,_,_,cmd) - if not IsValid(ply) or not ply:IsSuperAdmin() then return end + if not IsValid(ply) then return end local train = ply:GetTrain() if IsValid(train) then print(cmd:sub(1,2),cmd:sub(3,4)) @@ -178,17 +178,24 @@ if Turbostroi and not TURBOSTROI then Turbostroi.SetSimulationFPS(FPS) hook.Add("Think", "Turbostroi_Think", function() if not Turbostroi then return end - updateTrains(turbostroiTrains) - --[[ + + -- Proceed with the think loop + --Turbostroi.SetTargetTime(CurTime()) //depricated! now using engine + --Turbostroi.Think() //depricated! now using engine + + -- Update all types of trains + --for k,v in ipairs(turbostroiTrains) do + updateTrains(turbostroiTrains) + --end -- HACK GLOBAL_SKIP_TRAIN_SYSTEMS = nil -- Print stats if ((CurTime() - messageTimeout) > 1.0) then messageTimeout = CurTime() - RunConsoleCommand("say",Format("Metrostroi: %d messages per second (%d per tick)",messageCounter,messageCounter / FPS)) + --RunConsoleCommand("say",Format("Metrostroi: %d messages per second (%d per tick)",messageCounter,messageCounter / FPS)) messageCounter = 0 - end]] + end end) end return diff --git a/lua/metrostroi/sv_util.lua b/lua/metrostroi/sv_util.lua index dd277bd..1415224 100644 --- a/lua/metrostroi/sv_util.lua +++ b/lua/metrostroi/sv_util.lua @@ -87,16 +87,15 @@ local periodNumbers = {} local randomPeriodStart = 0 local randomPeriodNumber = math.random() function Metrostroi.PeriodRandomNumber(typ) - typ = typ or 0 - if not prediods[typ] or (CurTime() - prediods[typ]) > 60 then - periodNumbers[typ] = math.random() + if not prediods[typ or 0] or (CurTime() - prediods[typ or 0]) > 60 then + periodNumbers[typ or 0] = math.random() end -- Refresh the period - prediods[typ] = CurTime() + prediods[typ or 0] = CurTime() -- Return number - return periodNumbers[typ] + return periodNumbers[typ or 0] end @@ -180,12 +179,7 @@ function Player:GetTrain() end end -hook.Add("PlayerEnteredVehicle","MetrostroiPlayerTrain",function(ply,veh) - ply.InMetrostroiTrain = IsValid(veh:GetNW2Entity("TrainEntity")) and veh:GetNW2Entity("TrainEntity") -end) -hook.Add("PlayerLeaveVehicle","MetrostroiPlayerTrain",function(ply,veh) - ply.InMetrostroiTrain = false -end) + -------------------------------------------------------------------------------- @@ -245,6 +239,36 @@ concommand.Add("metrostroi_train_count", function(ply, _, args) end end) +concommand.Add("metrostroi_time", function(ply, _, args) + if IsValid(ply) then + ply:PrintMessage(HUD_PRINTCONSOLE, "Time on server is ".. + Format("%02d:%02d:%02d", + math.floor(os.time()/3600)%24, + math.floor(os.time()/60)%60, + math.floor(os.time())%60)) + + local t = (os.time()/60)%(60*24) + local printed = false + local train = ply:GetTrain() + if IsValid(train) and train.Schedule then + for k,v in ipairs(train.Schedule) do + local prefix = "" + if (not printed) and (t < v[3]) then + prefix = ">>>>" + printed = true + end + ply:PrintMessage(HUD_PRINTCONSOLE, + Format(prefix.."\t[%03d][%s] %02d:%02d:%02d",v[1], + Metrostroi.StationNames[v[1]] or "N/A", + math.floor(v[3]/60)%24, + math.floor(v[3])%60, + math.floor(v[3]*60)%60)) + + end + end + end +end) + @@ -455,8 +479,72 @@ concommand.Add("metrostroi_can", function(ply, _, args) ply:PrintMessage(HUD_PRINTCONSOLE,"Hacking CAN!") print(Format("Player %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) + --[[ + local trainList = {} + if not IsValid(ply) then + for _,class in pairs(Metrostroi.TrainClasses) do + local trains = ents.FindByClass(class) + for _,train in pairs(trains) do + table.insert(trainList,train) + end + end + else + local train = ply:GetTrain() + if IsValid(train) then + --train:UpdateWagonList() + for k,v in pairs(train.WagonList) do + trainList[k] = v + end + end + end + + 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 ") + else + print("Reset outside power in trains ") + end + else + if IsValid(ply) then + ply:PrintMessage(HUD_PRINTCONSOLE,"You must be inside a train!") + end + end]] end) +local function UpdateTimeSync() + --if GetGlobalFloat("MetrostroiT0",0) == 0 then + local year = os.time{hour=3,day=1,month=1,year=1971} + SetGlobalFloat("MetrostroiTY",year*math.ceil(os.time()/year)) + SetGlobalFloat("MetrostroiT0",os.time()-GetGlobalFloat("MetrostroiTY")) + SetGlobalFloat("MetrostroiT1",CurTime()) + --[[else + print"GETSECOND" + SetGlobalFloat("MetrostroiT0",GetGlobalFloat("MetrostroiT0")) + SetGlobalFloat("MetrostroiT1",GetGlobalFloat("MetrostroiT1")) + end]] +end +timer.Create("metrostroi_time_update",60,0,UpdateTimeSync) +util.AddNetworkString("MetrostroiUpdateTimeSync") +net.Receive("MetrostroiUpdateTimeSync",UpdateTimeSync) +hook.Add("PlayerInitialSpawn","metrostroi_time_sync",UpdateTimeSync) +UpdateTimeSync() + + +function Metrostroi.GetTimedT(notsync) + local T0 = GetGlobalFloat("MetrostroiT0",os.time())+GetGlobalFloat("MetrostroiTY") + local T1 = GetGlobalFloat("MetrostroiT1",CurTime()) + local dT + if notsync then + dT = (os.time()-T0) - (CurTime()-T1) + else + dT = (os.time()-T0 + (CurTime() % 1.0)) - (CurTime()-T1) + end + return dT +end +function Metrostroi.GetSyncTime(notsync) + return os.time()-Metrostroi.GetTimedT(notsync) +end -------------------------------------------------------------------------------- -- Electric consumption stats -------------------------------------------------------------------------------- @@ -503,7 +591,7 @@ hook.Add("Think", "Metrostroi_ElectricConsumptionThink", function() local rB = train.RearBogey if IsValid(fB) then if fB.Feeder then - Metrostroi.Currents[fB.Feeder] = Metrostroi.Currents[fB.Feeder] + fB.DropByPeople+current*0.4 + Metrostroi.Currents[fB.Feeder] = Metrostroi.Currents[fB.Feeder] + fB.DropByPeople+current feeder = true else Metrostroi.Current = Metrostroi.Current + fB.DropByPeople @@ -511,13 +599,13 @@ hook.Add("Think", "Metrostroi_ElectricConsumptionThink", function() end if IsValid(rB) then if rB.Feeder then - Metrostroi.Currents[rB.Feeder] = Metrostroi.Currents[rB.Feeder] + rB.DropByPeople+current*0.4 + Metrostroi.Currents[rB.Feeder] = Metrostroi.Currents[rB.Feeder] + rB.DropByPeople+current feeder = true else Metrostroi.Current = Metrostroi.Current + rB.DropByPeople end end - if not feeder then Metrostroi.Current = Metrostroi.Current + current*0.4 end + if not feeder then Metrostroi.Current = Metrostroi.Current + current end end end end @@ -669,49 +757,49 @@ function Metrostroi.MapHasFullSupport(typ) end concommand.Add("metrostroi_insert_signs", function(ply,_,args) - if IsValid(ply) then error("Metrostroi: This command can be run only from server console!") end - local MAP_NAME = game.GetMap() --"gm_mus_loopline_a3" - local MAP_VERSION = args and args[1] or "" + if IsValid(ply) and not ply:IsAdmin() then error("Metrostroi: This command can be run only from server console or by admin!") end + local MAP_NAME = game.GetMap() --"gm_mus_loopline_a3" + local MAP_VERSION = args and args[1] or "" - local commands = {Format("session_begin %s %s",MAP_NAME,MAP_VERSION)} + local commands = {Format("session_begin %s %s",MAP_NAME,MAP_VERSION)} - local function createSign(pos,ang,model) - table.insert(commands,Format("entity_create prop_static %s",pos)) - table.insert(commands,Format("entity_set_keyvalue prop_static %s \"angles\" \"%s\"",pos,ang))--table.insert(commands,Format("entity_rotate_incremental prop_static %s %s",pos,ang)) - table.insert(commands,Format("entity_set_keyvalue prop_static %s \"model\" \"%s\"",pos,model)) - end + local function createSign(pos,ang,model) + table.insert(commands,Format("entity_create prop_static %s",pos)) + table.insert(commands,Format("entity_set_keyvalue prop_static %s \"angles\" \"%s\"",pos,ang))--table.insert(commands,Format("entity_rotate_incremental prop_static %s %s",pos,ang)) + table.insert(commands,Format("entity_set_keyvalue prop_static %s \"model\" \"%s\"",pos,model)) + end - for k,v in pairs(ents.FindByClass("gmod_track_signs")) do - local data = v.SignModels[v.SignType-1] - local left = v.Left - local offset = Vector(0,v.YOffset,v.ZOffset) - local model = data.model - if left and not data.noleft then - if model:find("_r.mdl") then - model = model:Replace("_r.mdl","_l.mdl") - else - model = model:Replace("_l.mdl","_r.mdl") - end + for k,v in pairs(ents.FindByClass("gmod_track_signs")) do + local data = v.SignModels[v.SignType-1] + local left = v.Left + local offset = Vector(0,v.YOffset,v.ZOffset) + local model = data.model + if left and not data.noleft then + if model:find("_r.mdl") then + model = model:Replace("_r.mdl","_l.mdl") + else + model = model:Replace("_l.mdl","_r.mdl") end - local RAND = math.random(-10,10) - local pos = data.pos + offset - local ang = data.angles - if not data.noauto then pos = pos+Vector(0,0,RAND/5); ang = ang+Angle(0,0,RAND) end - if left then pos = pos*Vector(1,-1,1) end - if left and data.rotate then ang = ang-Angle(0,180,0) end - - createSign(v:LocalToWorld(pos),v:LocalToWorldAngles(ang),model) end + local RAND = math.random(-10,10) + local pos = data.pos + offset + local ang = data.angles + if not data.noauto then pos = pos+Vector(0,0,RAND/5); ang = ang+Angle(0,0,RAND) end + if left then pos = pos*Vector(1,-1,1) end + if left and data.rotate then ang = ang-Angle(0,180,0) end - table.insert(commands,"session_end") + createSign(v:LocalToWorld(pos),v:LocalToWorldAngles(ang),model) + end - for k,v in pairs(commands) do - local result = hammer.SendCommand(v) - if result ~= "ok" then + table.insert(commands,"session_end") + + for k,v in pairs(commands) do + local result = hammer.SendCommand(v) + if result ~= "ok" then hammer.SendCommand("session_end") error(Format("Error \"%s\" on command %s(%d)",result,v,k)) end - end + end end) SafeRemoveEntity(Metrostroi.RTCamera) function Metrostroi.GetCam() @@ -721,7 +809,7 @@ function Metrostroi.GetCam() Metrostroi.RTCamera:SetKeyValue( "fogEnable", 1 ) Metrostroi.RTCamera:SetKeyValue( "fogStart", 1 ) Metrostroi.RTCamera:SetKeyValue( "fogEnd", 4096 ) - Metrostroi.RTCamera:SetKeyValue( "fogColor", "0 0 0 127" ) + Metrostroi.RTCamera:SetKeyValue( "fogColor", "255 0 255 127" ) Metrostroi.RTCamera:SetPos(Vector(0,0,-2^16)) Metrostroi.RTCamera:SetNoDraw(true) Metrostroi.RTCamera:Activate() @@ -780,9 +868,9 @@ function Metrostroi.FindNextStation(src,stationsPath,stations) -- Accumulate travel time local iter = 0 local function scan(node,stations,path,trace,dist,branches) - while node do + while (node) and (node ~= dest) do local nextnode = path and node.next or not path and node.prev - assert(iter < 1000000, "OH SHI~") + assert(iter < 10000, "OH SHI~") iter = iter + 1 if nextnode then local heightDist = (nextnode.pos.z-node.pos.z)*0.01905 @@ -822,7 +910,7 @@ function Metrostroi.FindNextStation(src,stationsPath,stations) if #restbl~=0 then table.insert(restbl,{0,dist}) for k,v in pairs(restbl) do - --print(k,v[1],v[2],v[3]) + print(k,v[1],v[2],v[3]) table.insert(trace.slopes,v) end end @@ -835,9 +923,7 @@ function Metrostroi.FindNextStation(src,stationsPath,stations) --local stationT = Metrostroi.Stations[tonumber(id)] if markersForNode[node] then for i,marker in ipairs(markersForNode[node]) do - if marker.PAType == 1 then - print("MAKR",marker.TrackX,marker.TrackPosition.x,marker.PAStationID,targetStation,marker.PAStationPath,stationsPath) - if marker.PAStationID ~= targetStation or tonumber(marker.PAStationPath) ~= stationsPath then return end + if marker.PAType == 1 and marker.PAStationID == targetStation and tonumber(marker.PAStationPath) == stationsPath then table.remove(stations,1) --if marker.PAStationCorrection then print(targetStation) end local distance = dist+(marker.TrackPosition.x-node.x)-(marker.PAStationCorrection or 0) @@ -861,7 +947,7 @@ function Metrostroi.FindNextStation(src,stationsPath,stations) dist_last_end = marker.PADeadlockEnd and distance+marker.PADeadlockEnd, linkedSensor = lastSens, }) - --print("MAKR GOOD",marker.TrackX,marker.TrackPosition.x,targetStation) + print("MAKR",marker.TrackX,marker.TrackPosition.x,targetStation) break end end @@ -875,40 +961,34 @@ function Metrostroi.FindNextStation(src,stationsPath,stations) if sensorsForNode[node] then local sensor = sensorsForNode[node][1] local x = sensorsForNode[sensor].x - --print("SENS",node,dist,dist+(x-node.x)) + print("SENS",node,dist,dist+(x-node.x)) table.insert(trace.sensors,dist+(x-node.x)--[[ sensor.TrackPosition.x--]] ) end dist = dist+node.length - if node.branches then - for k,v in pairs(node.branches) do - if branches[v[2]] or v[2].path == src.path then continue end - branches[v[2]] = true - local result = scan(v[2],table.Copy(stations),true,table.Copy(trace),dist,branches) or scan(v[2],table.Copy(stations),false,table.Copy(trace),dist,branches) - if result and #result[3] == 0 then return result end - end - end - --[=[if node.branches and not branches[node.branches[1]] and node.branches[1][2].path ~= src.path then + + if node.branches and branches[node.branches[1]] and node.branches[1][2].path == src.path then branches[node.branches[1]] = true local result = scan(node,table.Copy(stations),true,table.Copy(trace),dist,branches) or scan(node,table.Copy(stations),false,table.Copy(trace),dist,branches) - if result and #stations == 0 then return result end + if result then return result end end - if node.branches and not node.branches[2] and branches[node.branches[2]] and node.branches[2][2].path ~= src.path then + if node.branches and node.branches[2] and branches[node.branches[2]] and node.branches[2][2].path == src.path then branches[node.branches[2]] = true local result = scan(node,table.Copy(stations),true,table.Copy(trace),dist,branches) or scan(node,table.Copy(stations),false,table.Copy(trace),dist,branches) - if result and #stations == 0 then return result end - end]=] - node = nextnode + if result then return result end + end + if path then + node = node.next + else + node = node.prev + end if not node then break end end - if #stations == 0 then print(debug.traceback()) end - return #stations == 0 and {trace,dist,stations} + return {trace,dist} end - return scan(src,stations,true,{signals={},stations={},sensors={},slopes={}},0,{}) or scan(src,stations,false,{signals={},stations={},sensors={},slopes={}},0,{}) + return scan(src,stations,true,{signals={},stations={},sensors={},slopes={}},0,{}) end concommand.Add("metrostroi_pam_genconfig", function(ply, _, args) - if not IsValid(ply) or not ply:IsAdmin() then return end - if args[1] == "clear" then ply:PrintMessage(HUD_PRINTCONSOLE,"Cleared!") Metrostroi.PAMConfTest = {} @@ -941,11 +1021,6 @@ concommand.Add("metrostroi_pam_genconfig", function(ply, _, args) for k,v in pairs(results) do --ply:PrintMessage(HUD_PRINTCONSOLE,Format("\t[%d] Path #%d, ID #%d: (%.2f x %.2f x %.2f) m Facing %s",k,v.path.id,v.node1.id,v.x,v.y,v.z,v.forward and "forward" or "v.node1")) local result = Metrostroi.FindNextStation(v.node1,path,args) - if not result then - ply:PrintMessage(HUD_PRINTCONSOLE,Format("Config not generated! Can't find all stations")) - return - end - PrintTable(result) if not Metrostroi.PAMConfTest then Metrostroi.PAMConfTest = {} end @@ -979,8 +1054,6 @@ function Metrostroi.PARebuildStations() end concommand.Add("metrostroi_pam_add_station", function(ply, _, args) - if not IsValid(ply) or not ply:IsAdmin() then return end - local line = tonumber(table.remove(args,1) or false) local path = tonumber(table.remove(args,1) or false) local station = tonumber(table.remove(args,1) or false) @@ -1026,4 +1099,4 @@ concommand.Add("metrostroi_pam_add_station", function(ply, _, args) table.sort(tbl, function(a,b) print(a,b,a[2],b[2]) return a[2] < b[2] end) Metrostroi.PARebuildStations() ply:PrintMessage(HUD_PRINTCONSOLE,"Setted!")--]] -end) +end) \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/_ys_electric_ b/lua/metrostroi/systems/_obsolete/_ys_electric_ deleted file mode 100644 index 0d0c535..0000000 --- a/lua/metrostroi/systems/_obsolete/_ys_electric_ +++ /dev/null @@ -1,616 +0,0 @@ --------------------------------------------------------------------------------- --- ������������� ���� --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Electric") -function TRAIN_SYSTEM:Initialize() - -- General power output - self.Main750V = 0.0 - self.Aux750V = 0.0 - self.Power750V = 0.0 - self.Aux80V = 0.0 - self.Lights80V = 0.0 - - -- Resistances - self.R1 = 1e9 - self.R2 = 1e9 - self.R3 = 1e9 - self.Rs1 = 1e9 - self.Rs2 = 1e9 - - self.Rstator13 = 1e9 - self.Rstator24 = 1e9 - self.Ranchor13 = 1e9 - self.Ranchor24 = 1e9 - - -- Load internal circuits - self.Train:LoadSystem("InternalCircuits","Gen_Int") - - -- Electric network info - self.Itotal = 0.0 - self.I13 = 0.0 - self.I24 = 0.0 - self.Ustator13 = 0.0 - self.Ustator24 = 0.0 - self.Ishunt13 = 0.0 - self.Istator13 = 0.0 - self.Ishunt24 = 0.0 - self.Istator24 = 0.0 - - self.Magnetization = 0 - - -- Calculate current through rheostats 1, 2 - self.IR1 = self.Itotal - self.IR2 = self.Itotal - self.IRT2 = self.Itotal - self.T1 = 25 - self.T2 = 25 - self.P1 = 0 - self.P2 = 0 - self.Overheat1 = 0 - self.Overheat2 = 0 - - -- Total energy used by train - self.ElectricEnergyUsed = 0 -- joules - self.ElectricEnergyDissipated = 0 -- joules - self.EnergyChange = 0 - - -- Signal resistor - self.RPSignalResistor = FailSim.AddParameter(self,"SignalResistor", { value = 1.0, precision = 0.20 }) - - --Train wire outside power - -- Need many iterations for engine simulation to converge - self.SubIterations = 16 - -- ������� ����������� - - self.Train:LoadSystem("GV","Relay","GV_10ZH",{bass=true}) - - -- Thyristor contrller - if self.ThyristorController then - self.Train:LoadSystem("ThyristorBU5_6","Relay") - self.ThyristorResistance = 1e9 - self.ThyristorState = 0.0 - self.ThyristorControllerWork = 0 - end - - self.Cosume = 0 -end - - -function TRAIN_SYSTEM:Inputs() - return { "Type" } -end - -function TRAIN_SYSTEM:Outputs() - return { --[[ "R1","R2","R3","Rs1","Rs2",--]] "Itotal","I13","I24","IRT2", - --[[ "Ustator13","Ustator24","Ishunt13","Istator13","Ishunt24","Istator24", - "Uanchor13","Uanchor24",--]] "U13","U24","Utotal", - "T1", "T2", "P1", "P2", - "Overheat1","Overheat2", - "Main750V", "Power750V", "Aux750V", "Aux80V", "Lights80V", - --[[ "ThyristorResistance", "ThyristorState", - "ElectricEnergyUsed", "ElectricEnergyDissipated", "EnergyChange", - "RPSignalResistor", --]] "Cosume","Type"} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "Type" then - self.Type = value - end -end - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:Think(dT,iter) - local Train = self.Train - ---------------------------------------------------------------------------- - -- Voltages from the third rail - ---------------------------------------------------------------------------- - -- ���������� � ������� ������������� ����� - self.Main750V = Train.TR.Main750V * Train.PNB_1250_1.Value - -- ���������� � �������������� ������������� ����� - self.Aux750V = Train.TR.Main750V * Train.PNB_1250_2.Value * Train.KVC.Value - -- ������� ���������� ������� ����� - self.Power750V = self.Main750V * Train.GV.Value - - - ---------------------------------------------------------------------------- - -- Information only - ---------------------------------------------------------------------------- - if Train.PowerSupply then - -- ������� ��������������� ����� 80V - self.Aux80V = Train.PowerSupply.XT3_1 - -- ������� ��������� 80V - self.Lights80V = Train.PowerSupply.XT3_4 - end - - - ---------------------------------------------------------------------------- - -- Solve circuits - ---------------------------------------------------------------------------- - if self.ThyristorController then - self:SolveThyristorController(Train,dT) - end - self:SolvePowerCircuits(Train,dT) - self:SolveInternalCircuits(Train,dT,iter==1) - - - ---------------------------------------------------------------------------- - -- Calculate current flow out of the battery - ---------------------------------------------------------------------------- - --local totalCurrent = 5*A30 + 63*A24 + 16*A44 + 5*A39 + 10*A80 - --local totalCurrent = 20 + 60*DIP -end - - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolveInternalCircuits(Train,dT) - if (self.TrainSolver == "81_717") or (self.TrainSolver == "81_714") then - local SDRK_Shunt = 1.0 - self.Triggers = { -- FIXME - ["KPP"] = function(V) Train.KPP:TriggerInput("Close",V) end, - - ["RPvozvrat"] = function(V) Train.RPvozvrat:TriggerInput("Open",V) end, - ["RRTuderzh"] = function(V) Train.RRTuderzh = V end, - ["RRTpod"] = function(V) Train.RRTpod = V end, - ["RUTpod"] = function(V) Train.RUTpod = V end, - - ["SDPP"] = function(V) Train.PositionSwitch:TriggerInput("MotorState",-1.0 + 2.0*math.max(0,V)) end, - ["SDRK_Shunt"] = function(V) SDRK_Shunt = V end, - ["SDRK_Coil"] = function(V) Train.RheostatController:TriggerInput("MotorCoilState",SDRK_Shunt*math.min(1,math.max(0,V))*(-1.0 + 2.0*Train.RR.Value)) end, - ["SDRK"] = function(V) Train.RheostatController:TriggerInput("MotorState",V) end, - - ["XR3.2"] = function(V) Train.PowerSupply:TriggerInput("XR3.2",V) end, - ["XR3.3"] = function(V) Train.PowerSupply:TriggerInput("XR3.3",V) end, - ["XR3.4"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.4",V) end, - ["XR3.6"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.6",V) end, - ["XR3.7"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.7",V) end, - ["XT3.1"] = function(V) Train.PowerSupply:TriggerInput("XT3.1",Train.Battery.Voltage*V) end, - - ["ReverserForward"] = function(V) Train.RKR:TriggerInput("Open",V) end, - ["ReverserBackward"] = function(V) Train.RKR:TriggerInput("Close",V) end, - } - if self.TrainSolver == "81_717" then - Train.InternalCircuits.Solve81_717(Train,self.Triggers) - else - Train.InternalCircuits.Solve81_714(Train,self.Triggers) - end - end - if (self.TrainSolver == "Ezh3") or (self.TrainSolver == "Ema508") then - local KSH1,KSH2 = 0,0 - local SDRK_Shunt = 1.0 - self.Triggers = { -- FIXME - --["KSH1"] = function(V) KSH1 = KSH1 + V end, - --["KSH2"] = function(V) KSH2 = KSH2 + V end, - --["KSB1"] = function(V) Train.KSB1:TriggerInput("Set",V) KSH1 = KSH1 + V end, - --["KSB2"] = function(V) Train.KSB2:TriggerInput("Set",V) KSH2 = KSH2 + V end, - ["KPP"] = function(V) Train.KPP:TriggerInput("Close",V) end, - - ["RPvozvrat"] = function(V) Train.RPvozvrat:TriggerInput("Open",V) end, - ["RRTuderzh"] = function(V) Train.RRTuderzh = V end, - ["RRTpod"] = function(V) Train.RRTpod = V end, - ["RUTpod"] = function(V) Train.RUTpod = V end, - - ["SDPP"] = function(V) Train.PositionSwitch:TriggerInput("MotorState",-1.0 + 2.0*math.max(0,V)) end, - ["SDRK_Shunt"] = function(V) SDRK_Shunt = V end, - ["SDRK_Coil"] = function(V) Train.RheostatController:TriggerInput("MotorCoilState",SDRK_Shunt*math.min(1,math.max(0,V))*(-1.0 + 2.0*Train.RR.Value)) end, - ["SDRK"] = function(V) Train.RheostatController:TriggerInput("MotorState",V) end, - - ["XR3.2"] = function(V) Train.PowerSupply:TriggerInput("XR3.2",V) end, - ["XR3.3"] = function(V) Train.PowerSupply:TriggerInput("XR3.3",V) end, - ["XR3.4"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.4",V) end, - ["XR3.6"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.6",V) end, - ["XR3.7"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.7",V) end, - ["XT3.1"] = function(V) Train.PowerSupply:TriggerInput("XT3.1",Train.Battery.Voltage*V) end, - - ["ReverserForward"] = function(V) Train.RKR:TriggerInput("Open",V) end, - ["ReverserBackward"] = function(V) Train.RKR:TriggerInput("Close",V) end, - } - --local S = Train.InternalCircuits.SolveEzh3(Train,self.Triggers) - --Train.KSH1:TriggerInput("Set",KSH1) - --Train.KSH2:TriggerInput("Set",KSH2) - - if self.TrainSolver == "Ezh3" then - Train.InternalCircuits.SolveEzh3(Train,self.Triggers) - else - Train.InternalCircuits.SolveEma508(Train,self.Triggers) - end - end - if (self.TrainSolver == "E") then - local KSH1,KSH2 = 0,0 - local SDRK_Shunt = 1.0 - self.Triggers = { -- FIXME - --["KSH1"] = function(V) KSH1 = KSH1 + V end, - --["KSH2"] = function(V) KSH2 = KSH2 + V end, - --["KSB1"] = function(V) Train.KSB1:TriggerInput("Set",V) KSH1 = KSH1 + V end, - --["KSB2"] = function(V) Train.KSB2:TriggerInput("Set",V) KSH2 = KSH2 + V end, - ["KPP"] = function(V) Train.KPP:TriggerInput("Close",V) end, - - ["RPvozvrat"] = function(V) Train.RPvozvrat:TriggerInput("Open",V) end, - ["RRTuderzh"] = function(V) Train.RRTuderzh = V end, - ["RRTpod"] = function(V) Train.RRTpod = V end, - ["RUTpod"] = function(V) Train.RUTpod = V end, - - ["SDPP"] = function(V) Train.PositionSwitch:TriggerInput("MotorState",-1.0 + 2.0*math.max(0,V)) end, - ["SDRK_Shunt"] = function(V) SDRK_Shunt = V end, - ["SDRK_Coil"] = function(V) Train.RheostatController:TriggerInput("MotorCoilState",SDRK_Shunt*math.min(1,math.max(0,V))*(-1.0 + 2.0*Train.RR.Value)) end, - ["SDRK"] = function(V) Train.RheostatController:TriggerInput("MotorState",V) end, - - ["XR3.2"] = function(V) Train.PowerSupply:TriggerInput("XR3.2",V) end, - ["XR3.3"] = function(V) Train.PowerSupply:TriggerInput("XR3.3",V) end, - ["XR3.4"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.4",V) end, - ["XR3.6"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.6",V) end, - ["XR3.7"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.7",V) end, - ["XT3.1"] = function(V) Train.PowerSupply:TriggerInput("XT3.1",Train.Battery.Voltage*V) end, - - ["ReverserForward"] = function(V) Train.RKR:TriggerInput("Open",V) end, - ["ReverserBackward"] = function(V) Train.RKR:TriggerInput("Close",V) end, - } - --local S = Train.InternalCircuits.SolveEzh3(Train,self.Triggers) - --Train.KSH1:TriggerInput("Set",KSH1) - --Train.KSH2:TriggerInput("Set",KSH2) - Train.InternalCircuits.SolveE(Train,self.Triggers) - end - if (self.TrainSolver == "81_704") then - local KSH1,KSH2 = 0,0 - local SDRK_Shunt = 1.0 - self.Triggers = { -- FIXME - --["KSH1"] = function(V) KSH1 = KSH1 + V end, - --["KSH2"] = function(V) KSH2 = KSH2 + V end, - --["KSB1"] = function(V) Train.KSB1:TriggerInput("Set",V) KSH1 = KSH1 + V end, - --["KSB2"] = function(V) Train.KSB2:TriggerInput("Set",V) KSH2 = KSH2 + V end, - ["KPP"] = function(V) Train.KPP:TriggerInput("Close",V) end, - - ["RPvozvrat"] = function(V) Train.RPvozvrat:TriggerInput("Open",V) end, - ["RRTuderzh"] = function(V) Train.RRTuderzh = V end, - ["RRTpod"] = function(V) Train.RRTpod = V end, - ["RUTpod"] = function(V) Train.RUTpod = V end, - - ["SDPP"] = function(V) Train.PositionSwitch:TriggerInput("MotorState",-1.0 + 2.0*math.max(0,V)) end, - ["SDRK_Shunt"] = function(V) SDRK_Shunt = V end, - ["SDRK_Coil"] = function(V) Train.RheostatController:TriggerInput("MotorCoilState",SDRK_Shunt*math.min(1,math.max(0,V))*(-1.0 + 2.0*Train.RR.Value)) end, - ["SDRK"] = function(V) Train.RheostatController:TriggerInput("MotorState",V) end, - - ["XR3.2"] = function(V) Train.PowerSupply:TriggerInput("XR3.2",V) end, - ["XR3.3"] = function(V) Train.PowerSupply:TriggerInput("XR3.3",V) end, - ["XR3.4"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.4",V) end, - ["XR3.6"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.6",V) end, - ["XR3.7"] = function(V) end, --Train.PowerSupply:TriggerInput("XR3.7",V) end, - ["XT3.1"] = function(V) Train.PowerSupply:TriggerInput("XT3.1",Train.Battery.Voltage*V) end, - - ["ReverserForward"] = function(V) Train.RKR:TriggerInput("Open",V) end, - ["ReverserBackward"] = function(V) Train.RKR:TriggerInput("Close",V) end, - } - --local S = Train.InternalCircuits.SolveEzh3(Train,self.Triggers) - --Train.KSH1:TriggerInput("Set",KSH1) - --Train.KSH2:TriggerInput("Set",KSH2) - Train.InternalCircuits.Solve81_704(Train,self.Triggers) - end -end - - - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolveThyristorController(Train,dT) - -- General state - local Active = ((Train.KSB1.Value > 0) or (Train.KSB2.Value > 0)) and (Train.LK2.Value == 1.0) - local StatorCurrent = (math.abs(self.Istator13) + math.abs(self.Istator24))*0.5 - local Current = (math.abs(Train.Electric.I13) + math.abs(Train.Electric.I24))/2 - local PrevCurrent = self.ThyristorPrevCurrent or Current - self.ThyristorPrevCurrent = Current - - -- Controllers resistance - local Resistance = 0.036 - - -- Update thyristor controller signal - if not Active then - self.ThyristorState = 0.00 - self.ThyristorTimeout = 0 - self.PrepareElectric = CurTime() - self.ThyristorDone = false - else--if self.PrepareElectric then - -- Generate control signal - --180+80 - local T = 180.0 + - --80.0*self.ThyristorState*(1-Train:ReadTrainWire(2)) + - (100.0*Train.Pneumatic.WeightLoadRatio+80.0)*Train:ReadTrainWire(2) - local I = Current - local dI = (Current - PrevCurrent)/dT - local A = (T-I)*0.1--0.05 - local B = -dI*0.1--0.05 - local C = A + B - - -- Output signal - --print(Format("%.1f/%.1f A %3d%% %.3f A",Current,T,self.ThyristorState*100,C)) - if self.PrepareElectric then - self.ThyristorState = 1 - if Current > 150 or CurTime()-self.PrepareElectric > 1.2 then - self.PrepareElectric = false - self.ThyristorState = 0 - end - elseif not self.ThyristorDone then - self.ThyristorState = math.max(0,math.min(1,self.ThyristorState + C*dT)) - if self.ThyristorState == 1 then self.ThyristorDone = true end - end - -- Generate resistance - local keypoints = { - 0.10,0.008, - 0.20,0.018, - 0.30,0.030, - 0.40,0.047, - 0.50,0.070, - 0.60,0.105, - 0.70,0.165, - 0.80,0.280, - 0.90,0.650, - 1.00,15.00, - } - local TargetField = 0.30 + 0.70*self.ThyristorState - local Found = false - for i=1,#keypoints/2 do - local X1,Y1 = keypoints[(i-1)*2+1],keypoints[(i-1)*2+2] - local X2,Y2 = keypoints[(i)*2+1],keypoints[(i)*2+2] - - if (not Found) and (not X2) then - Resistance = Y1 - Found = true - elseif (TargetField >= X1) and (TargetField < X2) then - local T = (TargetField-X1)/(X2-X1) - Resistance = Y1 + (Y2-Y1)*T - Found = true - end - end - end - - -- Allow or deny using manual brakes - --Train.ThyristorBU5_6:TriggerInput("Set",not self.PrepareElectric and self.ThyristorState > 0.90) - Train.ThyristorBU5_6:TriggerInput("Set",self.ThyristorDone) - -- Set resistance - self.ThyristorResistance = Resistance + 1e9 * (Active and 0 or 1) -end - - - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolvePowerCircuits(Train,dT) - -- ���������� ������������� � ���������� ����������� ����������� - if not self.ResistorBlocksInit then - self.ResistorBlocksInit = true - -- Load resistor blocks - self.Train:LoadSystem("ResistorBlocks","Gen_Res") - Train.ResistorBlocks.InitializeResistances_81_705(Train) - end - -- ���������� ���������� �1-�2, �12-�13 - self.ExtraResistanceLK5 = Train.KF_47A["L2-L4" ]*(1-Train.LK5.Value) - self.ExtraResistanceLK2 = Train.KF_47A["L12-L13"]*(1-Train.LK2.Value) - - if Train.PositionSwitch.SelectedPosition == 1 then -- PS - self.R1 = Train.ResistorBlocks.R1C1(Train) - self.R2 = Train.ResistorBlocks.R2C1(Train) - self.R3 = 0.0 - elseif Train.PositionSwitch.SelectedPosition == 2 then -- PP - self.R1 = Train.ResistorBlocks.R1C2(Train) - self.R2 = Train.ResistorBlocks.R2C2(Train) - self.R3 = 0.0 - elseif Train.PositionSwitch.SelectedPosition >= 3 then -- PT - self.R1 = Train.ResistorBlocks.R1C1(Train) - self.R2 = Train.ResistorBlocks.R2C1(Train) - self.R3 = Train.ResistorBlocks.R3(Train) - end - -- Apply LK3, LK4 contactors - self.R1 = self.R1 + 1e9*(1 - Train.LK3.Value) - self.R2 = self.R2 + 1e9*(1 - Train.LK4.Value) - - -- Shunt resistance - self.Rs1 = Train.ResistorBlocks.S1(Train) + 1e9*(1 - Train.KSH1.Value) - self.Rs2 = Train.ResistorBlocks.S2(Train) + 1e9*(1 - Train.KSH2.Value) - - -- Thyristor contrller - if self.ThyristorController then - self.Rs1 = ((self.ThyristorResistance^-1) + (self.Rs1^-1))^-1 - self.Rs2 = ((self.ThyristorResistance^-1) + (self.Rs2^-1))^-1 - end - - -- Calculate total resistance of engines winding - local RwAnchor = Train.Engines.Rwa*2 -- Double because each set includes two engines - local RwStator = Train.Engines.Rws*2 - -- Total resistance of the stator + shunt - self.Rstator13 = (RwStator^-1 + self.Rs1^-1)^-1 - self.Rstator24 = (RwStator^-1 + self.Rs2^-1)^-1 - -- Total resistance of entire motor - self.Ranchor13 = RwAnchor - self.Ranchor24 = RwAnchor - - -- ���������� ����������� (calculate electric power network) - if Train.PositionSwitch.SelectedPosition == 1 then -- PS - self:SolvePS(Train) - elseif Train.PositionSwitch.SelectedPosition == 2 then -- PS - self:SolvePP(Train,Train.RheostatController.SelectedPosition >= 17) - else - self:SolvePT(Train) - end - - -- Calculate current through rheostats 1, 2 - self.IR1 = self.I13 - self.IR2 = self.I24 - - -- Calculate induction properties of the motor - self.I13SH = self.I13SH or self.I13 - self.I24SH = self.I24SH or self.I24 - - -- Time constant - local T13const1 = math.max(16.00,math.min(28.0,(self.R13^2) * 2.0)) -- R * L - local T24const1 = math.max(16.00,math.min(28.0,(self.R24^2) * 2.0)) -- R * L - - -- Total change - local dI13dT = T13const1 * (self.I13 - self.I13SH) * dT - local dI24dT = T24const1 * (self.I24 - self.I24SH) * dT - - -- Limit change and apply it - if dI13dT > 0 then dI13dT = math.min(self.I13 - self.I13SH,dI13dT) end - if dI13dT < 0 then dI13dT = math.max(self.I13 - self.I13SH,dI13dT) end - if dI24dT > 0 then dI24dT = math.min(self.I24 - self.I24SH,dI24dT) end - if dI24dT < 0 then dI24dT = math.max(self.I24 - self.I24SH,dI24dT) end - self.I13SH = self.I13SH + dI13dT - self.I24SH = self.I24SH + dI24dT - self.I13 = self.I13SH - self.I24 = self.I24SH - - -- Re-calculate total current and simulate infinite resistance in circuit - if Train.PositionSwitch.SelectedPosition == 1 then -- PS - self.I13 = self.I13 * (Train.LK3.Value * Train.LK4.Value * Train.LK1.Value) - self.I24 = self.I24 * (Train.LK3.Value * Train.LK4.Value * Train.LK1.Value) - - self.I24 = (self.I24 + self.I13)*0.5 - self.I13 = self.I24 - self.Itotal = self.I24 - elseif Train.PositionSwitch.SelectedPosition == 2 then -- PS - self.I13 = self.I13 * Train.LK3.Value * Train.LK1.Value - self.I24 = self.I24 * Train.LK4.Value * Train.LK1.Value - - self.Itotal = self.I13 + self.I24 - else -- PT - self.I13 = self.I13 * Train.LK3.Value*Train.LK4.Value - self.I24 = self.I24 * Train.LK4.Value*Train.LK3.Value - - self.Itotal = self.I13 + self.I24 - end - - -- Calculate extra information - self.Uanchor13 = self.I13 * self.Ranchor13 - self.Uanchor24 = self.I24 * self.Ranchor24 - - - - ---------------------------------------------------------------------------- - -- Calculate current through stator and shunt - self.Ustator13 = self.I13 * self.Rstator13 - self.Ustator24 = self.I24 * self.Rstator24 - - self.Ishunt13 = self.Ustator13 / self.Rs1 - self.Istator13 = self.Ustator13 / RwStator - self.Ishunt24 = self.Ustator24 / self.Rs2 - self.Istator24 = self.Ustator24 / RwStator - - if Train.PositionSwitch.SelectedPosition >= 3 then - local I1,I2 = self.Ishunt13,self.Ishunt24 - self.Ishunt13 = -I2 - self.Ishunt24 = -I1 - - I1,I2 = self.Istator13,self.Istator24 - self.Istator13 = -I2 - self.Istator24 = -I1 - end - - -- Calculate current through RT2 relay - self.IRT2 = math.abs(self.Itotal * Train.PositionSwitch["10_contactor"]) - - -- Sane checks - if self.R1 > 1e5 then self.IR1 = 0 end - if self.R2 > 1e5 then self.IR2 = 0 end - - -- Calculate power and heating - local K = 12.0*1e-5 - local H = (10.00+(15.00*Train.Engines.Speed/80.0))*1e-3 - self.P1 = (self.IR1^2)*self.R1 - self.P2 = (self.IR2^2)*self.R2 - self.T1 = (self.T1 + self.P1*K*dT - (self.T1-25)*H*dT) - self.T2 = (self.T2 + self.P2*K*dT - (self.T2-25)*H*dT) - self.Overheat1 = math.min(1-1e-12, - self.Overheat1 + math.max(0,(math.max(0,self.T1-750.0)/400.0)^2)*dT ) - self.Overheat2 = math.min(1-1e-12, - self.Overheat2 + math.max(0,(math.max(0,self.T2-750.0)/400.0)^2)*dT ) - - -- Energy consumption - self.ElectricEnergyUsed = self.ElectricEnergyUsed + math.max(0,self.EnergyChange)*dT - self.ElectricEnergyDissipated = self.ElectricEnergyDissipated + math.max(0,-self.EnergyChange)*dT - --print(self.EnergyChange) -end - - - - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolvePS(Train) - -- Calculate total resistance of the entire series circuit - local Rtotal = self.Ranchor13 + self.Ranchor24 + self.Rstator13 + self.Rstator24 + - self.R1 + self.R2 + self.R3 + self.ExtraResistanceLK5 - local CircuitClosed = (self.Power750V*Train.LK1.Value > 0) and 1 or 0 - - -- Calculate total current - self.Utotal = (self.Power750V - Train.Engines.E13 - Train.Engines.E24)*Train.LK1.Value - self.Itotal = (self.Utotal / Rtotal)*CircuitClosed*(Train.BV and Train.BV.State or 1) - - -- Total resistance (for induction RL circuit) - self.R13 = Rtotal - self.R24 = Rtotal - - -- Calculate everything else - self.I13 = self.Itotal - self.I24 = self.Itotal - self.U13 = self.Utotal*(1/2) - self.U24 = self.Utotal*(1/2) - - -- Energy consumption - self.EnergyChange = math.abs((self.Itotal^2)*Rtotal) -end - -function TRAIN_SYSTEM:SolvePP(Train,inTransition) - -- Temporary hack for transition to parallel circuits - local extraR = 0.00 --inTransition and 0.909 or 0.00 - - -- Calculate total resistance of each branch - local R1 = self.Ranchor13 + self.Rstator13 + self.R1 + extraR + self.ExtraResistanceLK5 - local R2 = self.Ranchor24 + self.Rstator24 + self.R2 + extraR + self.ExtraResistanceLK5 - local R3 = 0 - local CircuitClosed = (self.Power750V*Train.LK1.Value > 0) and 1 or 0 - - -- Main circuit parameters - local V = self.Power750V*Train.LK1.Value - local E1 = Train.Engines.E13 - local E2 = Train.Engines.E24 - - -- Calculate current through engines 13, 24 - self.I13 = -((E1*R2 + E1*R3 - E2*R3 - R2*V)/(R1*R2 + R1*R3 + R2*R3))*CircuitClosed*(Train.BV and Train.BV.State or 1) - self.I24 = -((E2*R1 - E1*R3 + E2*R3 - R1*V)/(R1*R2 + R1*R3 + R2*R3))*CircuitClosed*(Train.BV and Train.BV.State or 1) - - -- Total resistance (for induction RL circuit) - self.R13 = R1 - self.R24 = R2 - - -- Calculate everything else - self.U13 = self.I13*R1 - self.U24 = self.I24*R2 - self.Utotal = (self.U13 + self.U24)/2 - self.Itotal = self.I13 + self.I24 - - -- Energy consumption - self.EnergyChange = math.abs((self.I13^2)*R1) + math.abs((self.I24^2)*R2) -end - -function TRAIN_SYSTEM:SolvePT(Train) - -- Winding resistances - local R1 = self.Ranchor13 + self.Rstator13 - local R2 = self.Ranchor24 + self.Rstator24 - -- Total resistance of the entire braking rheostat - local R3 = self.R1 + self.R2 + self.R3 + self.ExtraResistanceLK2 - - -- Main circuit parameters - local V = self.Power750V*Train.LK1.Value - local E1 = Train.Engines.E13 - local E2 = Train.Engines.E24 - - -- Calculate current through engines 13, 24 - self.I13 = -((E1*R2 + E1*R3 - E2*R3 - R2*V)/(R1*R2 + R1*R3 + R2*R3))*(Train.BV and Train.BV.State or 1) - self.I24 = -((E2*R1 - E1*R3 + E2*R3 - R1*V)/(R1*R2 + R1*R3 + R2*R3))*(Train.BV and Train.BV.State or 1) - - -- Total resistance (for induction RL circuit) - self.R13 = R3+((R1^-1 + R2^-1)^-1) - self.R24 = R3+((R1^-1 + R2^-1)^-1) - -- Calculate everything else - self.U13 = self.I13*R1 - self.U24 = self.I24*R2 - self.Utotal = (self.U13 + self.U24)/2 - self.Itotal = self.I13 + self.I24 - - -- Energy consumption - self.EnergyChange = -math.abs(((0.5*self.Itotal)^2)*self.R13) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_502_upo.lua b/lua/metrostroi/systems/_obsolete/sys_81_502_upo.lua deleted file mode 100644 index 7fb2400..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_502_upo.lua +++ /dev/null @@ -1,144 +0,0 @@ --------------------------------------------------------------------------------- --- UPO Announcer system for 81-502 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_502_UPO") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Line = 1 - self.Path = false - self.Station = 1 - self.Arrived = true - self.Selected = 0 - self.LineEnabled = false - if math.Rand then - self.Buzz = math.random() > 0.7 and 2 or math.random() > 0.7 and 1 - self.Clicks = math.random() > 0.7 - end - - self.LineOut = 0 -end - -function TRAIN_SYSTEM:Outputs() - return {"LineOut"} -end - -function TRAIN_SYSTEM:Inputs() - return {} -end - -if TURBOSTROI then return end - -function TRAIN_SYSTEM:TriggerInput(name, value) -end - -function TRAIN_SYSTEM:AnnQueue(msg) - local Announcer = self.Train.Announcer - if msg and type(msg) ~= "table" then - Announcer:Queue{msg} - else - Announcer:Queue(msg) - end -end - -function TRAIN_SYSTEM:Play(dep) - local tbl = Metrostroi.UPOSetup - if not tbl then return end - local stbl = tbl[self.Station] - local path = self.Path and 2 or 1 - if not stbl or dep and not stbl.dep or not dep and not stbl.arr and not stbl.arrlast then return end - if dep and stbl.dep and stbl.dep[path] then - if self.Buzz then self:AnnQueue{"buzz_start_upo",self.Buzz} else self:AnnQueue("buzz_end_upo") end - if self.Clicks then self:AnnQueue("click1") end - self:AnnQueue(math.Rand(0.0,0.2)) - if self.Noise then self:AnnQueue{"noise_start",self.Noise} else self:AnnQueue("noise_end") end - self:AnnQueue{math.Rand(0.0,0.2), stbl.tone or "tone"} - self:AnnQueue(stbl.dep[path]) - self:AnnQueue{math.Rand(0.1,0.4),"noise_end","buzz_end_upo"} - if self.Clicks then self:AnnQueue("click2") end - elseif not dep then - local msg,lastst - if stbl.arr then msg = stbl.arr[path] end - - if not msg and stbl.arrlast then - msg = stbl.arrlast[path] - lastst = true - end - if msg then - if self.Buzz then self:AnnQueue{"buzz_start_upo",self.Buzz} else self:AnnQueue("buzz_end_upo") end - if self.Clicks then self:AnnQueue("click1") end - self:AnnQueue(math.Rand(0.1,0.3)) - if self.Noise then self:AnnQueue{"noise_start",self.Noise} else self:AnnQueue("noise_end") end - self:AnnQueue{math.Rand(0.1,0.3), stbl.tone or "tone"} - if lastst then self:AnnQueue{-1} end - self:AnnQueue(msg) - self:AnnQueue{math.Rand(0.1,0.4),"noise_end","buzz_end_upo"} - if self.Clicks then self:AnnQueue("click2") end - end - end -end - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local Power = Train.Panel.V1 > 0.5 - local tbl = Metrostroi.UPOSetup - if not tbl then - self.State = false - - return - end - --local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - --local RVForward = (Train.KV["D4-15"] > 0 or KRUEnabled) - local UPOWork = Train.Panel.UPOPower>0 - - --self.LastStationName = stbl[self.Line][self.Path and self.StartStation or self.EndStation][2] - if UPOWork then - local path = Train:ReadCell(49170) --Metrostroi.PathConverter[self.Train:ReadCell(65510)] or 0 - self.Path = path == 2 - local station = Train:ReadCell(49169) - local stbl - local distance = math.min(3072, self.Train:ReadCell(49165)) - --Find my station - self.Station = nil - for i2, v in ipairs(tbl) do - if v[1] == station then - stbl = v - self.Station = i2 - break - end - end - --local stbl = tbl[self.Line] and tbl[self.Line][self.Station] - local dist = stbl and stbl.dist or 75 - --print(self.Path,stbl.arr[self.Path and 2 or 1][3],self.Path and 2 or 1) - if station ~= self.CurrentStation and distance < dist and self.UPOArrived == nil then - self.UPOArrived = true - self.CurrentStation = station - self.Noise = stbl and stbl.noise or 0 - if stbl then - self:Play(false) - end - end - if self.UPOArrived and self.AnnouncerPlay then - self.UPOArrived = false - if stbl then - self:Play(true) - if Train.PUAV then Train.PUAV.KSZDRing = true end - end - end - - if self.UPOArrived == false and Train.Speed > 0.1 then - self.UPOArrived = nil - end - if distance < 0 or distance > dist then - if #Train.Announcer.Schedule > 0 then - Train.Announcer:Reset() - --Train.Announcer:Queue{"click2"} - --Train:WriteTrainWire(47, 0) - end - if self.UPOArrived ~= nil then self.UPOArrived = nil end - if self.CurrentStation then self.CurrentStation = nil end - end - end - local Ann = Train.Announcer - self.LineOut = (Ann.AnnTable=="AnnouncementsUPO" and Ann.AnnounceTimer) and 1 or 0 -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_508_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_508_electric.lua deleted file mode 100644 index 70aecec..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_508_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-508 и 81-509 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_508_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "E" - self.ThyristorController = false - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_508_panel.lua b/lua/metrostroi/systems/_obsolete/sys_81_508_panel.lua deleted file mode 100644 index 28a8668..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_508_panel.lua +++ /dev/null @@ -1,111 +0,0 @@ --------------------------------------------------------------------------------- --- Панель управления E --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_508_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","Switch", {bass = true}) - - -- Buttons on the panel - self.Train:LoadSystem("DoorSelect","Relay","Switch", {bass = true, normally_closed = false }) - self.Train:LoadSystem("DIPon","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPoff","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VozvratRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VAH","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VAD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUD1","Relay","Switch", {bass = true }) - self.Train:LoadSystem("VUD2","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("VUD2L","Relay","Switch", { bass = true }) -- Doors close - self.Train:LoadSystem("VDL","Relay","Switch", {bass = true}) -- Doors left open - self.Train:LoadSystem("KDL","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KDP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRZD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KSN","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VZ1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ARS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ALS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KVT","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRR","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("KB","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KSD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DP","Relay","Switch", {bass = true, normally_closed = true}) - - - - self.Train:LoadSystem("Custom1","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Custom2","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Custom3","Relay","Switch",{bass = true}) - self.Train:LoadSystem("R_UNch","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_ZS","Relay","Switch", {av = true}) - self.Train:LoadSystem("R_G","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Radio","Relay","Switch", {av = true}) - self.Train:LoadSystem("R_Program1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Program2","Relay","Switch", {bass = true}) - self.Train:LoadSystem("RC1","Relay","Switch",{bass = true, normally_closed = true }) - - -- Педаль бдительности (ПБ) - self.Train:LoadSystem("PB","Relay","Switch", {bass = true}) - - -- Автоматические выключатели (АВ) - self.Train:LoadSystem("VU3","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VU2","Relay","Switch", {bass = true, normally_closed = true}) - self.Train:LoadSystem("AV8B","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VU","Relay","Switch", {bass = true, normally_closed = false}) - self.Train:LoadSystem("KDLK","Relay","Switch", {bass = true, normally_closed = true }) - self.Train:LoadSystem("VDLK","Relay","Switch", {bass = true, normally_closed = true }) - self.Train:LoadSystem("KDPK","Relay","Switch", {bass = true, normally_closed = true }) - self.Train:LoadSystem("KAHK","Relay","Switch", {bass = true, normally_closed = true }) - self.Train:LoadSystem("L_3","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("RST","Relay","Switch", {bass = true}) - self.Train:LoadSystem("IGLA","Relay","Switch", {bass = true}) - - -- Map of AV switches to indexes on panel - self:InitializeAVMap() - - self.CabinLight = 0 - self.HeadLights1 = 0 - self.HeadLights2 = 0 - self.HeadLights3 = 0 - self.RedLightLeft = 0 - self.RedLightRight = 0 - self.EmergencyLight = 0 - self.GreenRP = 0 - self.RedRP = 0 - self.KUP = 0 - self.V1 = 0 - self.AVU = 0 - self.Ring = 0 - self.SD = 0 - self.TrainBrakes = 0 - self.TrainRP = 0 - self.TrainDoors = 0 -end - -function TRAIN_SYSTEM:ClientInitialize() - self:InitializeAVMap() -end - -function TRAIN_SYSTEM:Outputs() - return { "CabinLight", "HeadLights1", "HeadLights2", "HeadLights3", - "RedLightLeft", "RedLightRight", "EmergencyLight", - "GreenRP", "RedRP", "KUP", "V1", "AVU", "Ring", "SD", - "TrainBrakes", "TrainRP", "TrainDoors" } -end - -function TRAIN_SYSTEM:InitializeAVMap() - self.AVMap = { - 61,55,54,56,27,21,10,53,43,45,42,41, - "VU",64,63,50,51,23,14,75, 1, 2, 3,17, - 62,29, 5, 6, 8,20,25,22,30,39,44,80, - 65,"L_5",24,32,31,16,"KSD",12, 7, 9,46,47 - } -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_701_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_701_electric.lua deleted file mode 100644 index d122ab5..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_701_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-701 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_701_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "E" - self.ThyristorController = true - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_704_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_704_electric.lua deleted file mode 100644 index 4f318fa..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_704_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-704 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_704_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "81_704" - self.ThyristorController = true - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_704_panel.lua b/lua/metrostroi/systems/_obsolete/sys_81_704_panel.lua deleted file mode 100644 index d320899..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_704_panel.lua +++ /dev/null @@ -1,111 +0,0 @@ --------------------------------------------------------------------------------- --- Панель управления Eм --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_704_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","Switch", {av3 = true}) - self.Train:LoadSystem("VBA","Relay","Switch", {av3 = true}) - - -- Buttons on the panel - --self.Train:LoadSystem("KVT","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("VZP","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("VZD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRZD","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KDL","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPon","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPoff","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VozvratRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KSN","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KDP","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("Ring","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("KAK","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("VAutodrive","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUD1","Relay","Switch", {bass = true }) - - self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("VUD2","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("VUD2L","Relay","Switch", { bass = true }) -- Doors close - self.Train:LoadSystem("VDL","Relay","Switch", {bass = true}) -- Doors left open - - self.Train:LoadSystem("VRU","Relay","Switch", {av = true}) - self.Train:LoadSystem("VAH","Relay","Switch", {av = true}) - self.Train:LoadSystem("VAD","Relay","Switch", {av = true}) - self.Train:LoadSystem("OVT","Relay","Switch", {av = true, normally_closed = true}) - self.Train:LoadSystem("KSD","Relay","Switch", {av = true}) - self.Train:LoadSystem("DP","Relay","Switch", {av = true, normally_closed = true}) - self.Train:LoadSystem("VKF","Relay","Switch", {av = true}) - - --self.Train:LoadSystem("KSAUP.","Relay","Switch", {av = true}) - self.Train:LoadSystem("OtklAVU","Relay","Switch", {av = true}) - self.Train:LoadSystem("KRP","Relay","Switch", {bass = true}) - - --self.Train:LoadSystem("RC1","Relay","Switch",{ bass = true,normally_closed = true }) - - --self.Train:LoadSystem("Radio13","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("ARS13","Relay","Switch", {bass = true}) - - -- Педаль бдительности (ПБ) - --self.Train:LoadSystem("PB","Relay","Switch", {bass = true}) - - -- Автоматические выключатели (АВ) - self.Train:LoadSystem("VU3","Relay","Switch", {av = true}) - self.Train:LoadSystem("VU1","Relay","Switch", {av = true}) - self.Train:LoadSystem("VU2","Relay","Switch", {av = true}) - self.Train:LoadSystem("AV8B","Relay","Switch", {mainav = true}) - self.Train:LoadSystem("VU","Relay","Switch", {normally_closed = false, av = true}) - --self.Train:LoadSystem("KDLK","Relay","Switch", { normally_closed = true }) - --self.Train:LoadSystem("VDLK","Relay","Switch", { normally_closed = true }) - --self.Train:LoadSystem("KDPK","Relay","Switch", { normally_closed = true }) - --self.Train:LoadSystem("KAHK","Relay","Switch", { normally_closed = true }) - - --self.Train:LoadSystem("RST","Relay","Switch", {normally_closed = true, av = true}) - --self.Train:LoadSystem("VSOSD","Relay","Switch", {av = true, normally_closed = true}) - - -- Map of AV switches to indexes on panel - self:InitializeAVMap() - - self.CabinLight = 0 - self.HeadLights1 = 0 - self.HeadLights2 = 0 - self.HeadLights3 = 0 - self.RedLightLeft = 0 - self.RedLightRight = 0 - self.EmergencyLight = 0 - self.GreenRP = 0 - self.RedRP = 0 - self.KUP = 0 - self.V1 = 0 - self.AVU = 0 - self.Ring = 0 - self.SD = 0 - self.TrainBrakes = 0 - self.TrainRP = 0 - self.TrainDoors = 0 -end - -function TRAIN_SYSTEM:ClientInitialize() - self:InitializeAVMap() -end - -function TRAIN_SYSTEM:Outputs() - return { "CabinLight", "HeadLights1", "HeadLights2", "HeadLights3", - "RedLightLeft", "RedLightRight", "EmergencyLight", - "GreenRP", "RedRP", "KUP", "V1", "AVU", "Ring", "SD", - "TrainBrakes", "TrainRP", "TrainDoors" } -end - -function TRAIN_SYSTEM:InitializeAVMap() - self.AVMap = { - 61,55,54,56,27,21,10,53,43,45,42,41, - "VU",64,63,50,51,23,14,75, 1, 2, 3,17, - 62,29, 5, 6, 8,20,25,22,30,39,44,80, - 65,"L_5",24,32,31,16,13,12, 7, 9,46,47 - } -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_705_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_705_electric.lua deleted file mode 100644 index 6db74cb..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_705_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-705 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_705_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "Ema508" - self.ThyristorController = true - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_705_panel.lua b/lua/metrostroi/systems/_obsolete/sys_81_705_panel.lua deleted file mode 100644 index 5a6d006..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_705_panel.lua +++ /dev/null @@ -1,113 +0,0 @@ --------------------------------------------------------------------------------- --- Панель управления Eма --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_705_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","Switch", {av3 = true}) - -- Выключатель батареи автоведения(ВБА) - self.Train:LoadSystem("VBA","Relay","VB-11", {av3 = true}) - - -- Buttons on the panel - self.Train:LoadSystem("KVT","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VZP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VZD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRZD","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KDL","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPon","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPoff","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VozvratRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KSN","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KDP","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("Ring","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KAK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VAutodrive","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUD1","Relay","Switch", {bass = true }) - - self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("VUD2","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("VUD2L","Relay","Switch", { bass = true }) -- Doors close - self.Train:LoadSystem("VDL","Relay","Switch", {bass = true}) -- Doors left open - - self.Train:LoadSystem("VRU","Relay","Switch", {av = true}) - self.Train:LoadSystem("VAH","Relay","Switch", {av = true}) - self.Train:LoadSystem("VAD","Relay","Switch", {av = true}) - self.Train:LoadSystem("OVT","Relay","Switch", {av = true, normally_closed = true}) - self.Train:LoadSystem("KSD","Relay","Switch", {av = true}) - self.Train:LoadSystem("DP","Relay","Switch", {av = true, normally_closed = true}) - self.Train:LoadSystem("VKF","Relay","Switch", {av = true}) - - --self.Train:LoadSystem("KSAUP.","Relay","Switch", {av = true}) - self.Train:LoadSystem("OtklAVU","Relay","Switch", {av = true}) - self.Train:LoadSystem("KRP","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("RC1","Relay","Switch",{rcr = true, normally_closed = true }) - - --self.Train:LoadSystem("Radio13","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("ARS13","Relay","Switch", {bass = true}) - - -- Педаль бдительности (ПБ) - self.Train:LoadSystem("PB","Relay","Switch", {bass = true}) - - -- Автоматические выключатели (АВ) - self.Train:LoadSystem("VU3","Relay","Switch", {av = true}) - self.Train:LoadSystem("VU1","Relay","Switch", {av = true}) - self.Train:LoadSystem("VU2","Relay","Switch", {av = true}) - self.Train:LoadSystem("AV8B","Relay","Switch", {mainav = true}) - self.Train:LoadSystem("VU","Relay","Switch", {normally_closed = true, av = true}) - self.Train:LoadSystem("KDLK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("VDLK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("KDPK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("KAHK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("L_3","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("RST","Relay","Switch", {normally_closed = true, av = true}) - self.Train:LoadSystem("VSOSD","Relay","Switch", {av = true, normally_closed = true}) - - -- Map of AV switches to indexes on panel - self:InitializeAVMap() - - self.CabinLight = 0 - self.HeadLights1 = 0 - self.HeadLights2 = 0 - self.HeadLights3 = 0 - self.RedLightLeft = 0 - self.RedLightRight = 0 - self.EmergencyLight = 0 - self.GreenRP = 0 - self.RedRP = 0 - self.KUP = 0 - self.V1 = 0 - self.AVU = 0 - self.Ring = 0 - self.SD = 0 - self.TrainBrakes = 0 - self.TrainRP = 0 - self.TrainDoors = 0 -end - -function TRAIN_SYSTEM:ClientInitialize() - self:InitializeAVMap() -end - -function TRAIN_SYSTEM:Outputs() - return { "CabinLight", "HeadLights1", "HeadLights2", "HeadLights3", - "RedLightLeft", "RedLightRight", "EmergencyLight", - "GreenRP", "RedRP", "KUP", "V1", "AVU", "Ring", "SD", - "TrainBrakes", "TrainRP", "TrainDoors" } -end - -function TRAIN_SYSTEM:InitializeAVMap() - self.AVMap = { - 61,55,54,56,27,21,10,53,43,45,42,41, - "VU",64,63,50,51,23,14,75, 1, 2, 3,17, - 62,29, 5, 6, 8,20,25,22,30,39,44,80, - 65,"L_5",24,32,31,16,13,12, 7, 9,46,47 - } -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_707_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_707_electric.lua deleted file mode 100644 index 4755700..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_707_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-704-81-710 (Е, Еж, Ем) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_707_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "E" - self.ThyristorController = true - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_708_panel.lua b/lua/metrostroi/systems/_obsolete/sys_81_708_panel.lua deleted file mode 100644 index bb248bc..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_708_panel.lua +++ /dev/null @@ -1,92 +0,0 @@ --------------------------------------------------------------------------------- --- Панель управления E --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_708_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","Switch", {av3 = true}) - - -- Buttons on the panel - self.Train:LoadSystem("DIPon","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPoff","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VozvratRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUD1","Relay","Switch", {bass = true }) - self.Train:LoadSystem("VUD2","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("VUD2L","Relay","Switch", { bass = true }) -- Doors close - self.Train:LoadSystem("VDL","Relay","Switch", {bass = true}) -- Doors left open - self.Train:LoadSystem("KDL","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KDP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRZD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KSN","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VZ1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ARS","Relay","Switch", {av = true}) - self.Train:LoadSystem("ALS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KVT","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRR","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("KB","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("KSD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DP","Relay","Switch", {av = true, normally_closed = true}) - - -- Автоматические выключатели (АВ) - self.Train:LoadSystem("VU3","Relay","Switch", {av = true}) - - self.Train:LoadSystem("VU1","Relay","Switch", {av = true}) - self.Train:LoadSystem("VU2","Relay","Switch", {av = true, normally_closed = true}) - self.Train:LoadSystem("AV8B","Relay","Switch", {mainav = true}) - self.Train:LoadSystem("VU","Relay","Switch", {av = true, normally_closed = false}) - self.Train:LoadSystem("KDLK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("VDLK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("KDPK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("KAHK","Relay","Switch", { normally_closed = true }) - self.Train:LoadSystem("L_3","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("RST","Relay","Switch", {av = true}) - - -- Map of AV switches to indexes on panel - self:InitializeAVMap() - - self.CabinLight = 0 - self.HeadLights1 = 0 - self.HeadLights2 = 0 - self.HeadLights3 = 0 - self.RedLightLeft = 0 - self.RedLightRight = 0 - self.EmergencyLight = 0 - self.GreenRP = 0 - self.RedRP = 0 - self.KUP = 0 - self.V1 = 0 - self.AVU = 0 - self.Ring = 0 - self.SD = 0 - self.TrainBrakes = 0 - self.TrainRP = 0 - self.TrainDoors = 0 -end - -function TRAIN_SYSTEM:ClientInitialize() - self:InitializeAVMap() -end - -function TRAIN_SYSTEM:Outputs() - return { "CabinLight", "HeadLights1", "HeadLights2", "HeadLights3", - "RedLightLeft", "RedLightRight", "EmergencyLight", - "GreenRP", "RedRP", "KUP", "V1", "AVU", "Ring", "SD", - "TrainBrakes", "TrainRP", "TrainDoors" } -end - -function TRAIN_SYSTEM:InitializeAVMap() - self.AVMap = { - 61,55,54,56,27,21,10,53,43,45,42,41, - "VU",64,63,50,51,23,14,75, 1, 2, 3,17, - 62,29, 5, 6, 8,20,25,22,30,39,44,80, - 65,"L_5",24,32,31,16,"KSD",12, 7, 9,46,47 - } -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_710ru1_electric.lua b/lua/metrostroi/systems/_obsolete/sys_81_710ru1_electric.lua deleted file mode 100644 index 6fcfc2e..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_710ru1_electric.lua +++ /dev/null @@ -1,30 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические цепи 81-704-81-710 (Е, Еж, Ем) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_710RU1_Electric") - -function TRAIN_SYSTEM:Initialize() - self.TrainSolver = "Ezh3RU1" - self.ThyristorController = true - - -- Load all functions from base - Metrostroi.BaseSystems["Electric"].Initialize(self) - for k,v in pairs(Metrostroi.BaseSystems["Electric"]) do - if type(v) == "function" then - self[k] = v - end - end -end - -function TRAIN_SYSTEM:Inputs(...) - return Metrostroi.BaseSystems["Electric"].Inputs(self,...) -end -function TRAIN_SYSTEM:Outputs(...) - return Metrostroi.BaseSystems["Electric"].Outputs(self,...) -end -function TRAIN_SYSTEM:TriggerInput(...) - return Metrostroi.BaseSystems["Electric"].TriggerInput(self,...) -end -function TRAIN_SYSTEM:Think(...) - return Metrostroi.BaseSystems["Electric"].Think(self,...) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_710ru1_panel.lua b/lua/metrostroi/systems/_obsolete/sys_81_710ru1_panel.lua deleted file mode 100644 index 08fcbfe..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_710ru1_panel.lua +++ /dev/null @@ -1,146 +0,0 @@ --------------------------------------------------------------------------------- --- Панель управления Еж3, Ем508Т, Ема --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_710RU1_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","VB-11", {bass = true}) - - -- Buttons on the panel - self.Train:LoadSystem("DIPon","Relay","Switch", {bass = true}) - self.Train:LoadSystem("DIPoff","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VozvratRP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VMK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VAH","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VAD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VUD1","Relay","Switch", {bass = true }) - self.Train:LoadSystem("VUD2","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("VDL","Relay","Switch", {bass = true}) -- Doors left open - self.Train:LoadSystem("KDL","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KDP","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRZD","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KSN","Relay","Switch", {bass = true}) - self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ARS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ALS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KVT","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KB","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KRP","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("R_UNch","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_ZS","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_G","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Radio","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_VPR","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Program1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Program2","Relay","Switch", {bass = true}) - self.Train:LoadSystem("RC1","Relay","Switch",{ normally_closed = true }) - - self.Train:LoadSystem("Radio13","Relay","Switch", {bass = true}) - self.Train:LoadSystem("ARS13","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("L_3","Relay","Switch", {bass = true}) - - -- Педаль бдительности (ПБ) - self.Train:LoadSystem("PB","Relay","Switch", {bass = true}) - - -- Автоматические выключатели (АВ) - self.Train:LoadSystem("A1","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A2","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A3","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A5","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A6","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A7","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A8","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A9","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A10","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A12","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A13","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A14","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A16","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A17","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A20","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A21","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A22","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A23","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A24","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A25","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A27","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A29","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A30","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A31","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A32","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A39","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A41","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A42","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A43","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A44","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A45","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A46","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A47","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A50","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A51","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A53","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A54","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A55","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A56","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A61","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A62","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A63","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A64","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A65","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("A75","Relay","VA21-29",{ normally_closed = false, bass = true}) - self.Train:LoadSystem("A80","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("VU","Relay","VA21-29", {bass = true}) - self.Train:LoadSystem("KDLK","Relay","Switch", { normally_closed = true ,bass = true}) - self.Train:LoadSystem("VDLK","Relay","Switch", { normally_closed = true ,bass = true}) - self.Train:LoadSystem("KDPK","Relay","Switch", { normally_closed = true ,bass = true}) - self.Train:LoadSystem("KAHK","Relay","Switch", { normally_closed = true ,bass = true}) - - -- 81-717 special - self.Train:LoadSystem("BPSNon","Relay","Switch", { bass = true }) - - -- Map of AV switches to indexes on panel - self:InitializeAVMap() - - self.CabinLight = 0 - self.HeadLights1 = 0 - self.HeadLights2 = 0 - self.HeadLights3 = 0 - self.RedLightLeft = 0 - self.RedLightRight = 0 - self.EmergencyLight = 0 - self.GreenRP = 0 - self.RedRP = 0 - self.KUP = 0 - self.V1 = 0 - self.AVU = 0 - self.Ring = 0 - self.SD = 0 - self.TrainBrakes = 0 - self.TrainRP = 0 - self.TrainDoors = 0 -end - -function TRAIN_SYSTEM:ClientInitialize() - self:InitializeAVMap() -end - -function TRAIN_SYSTEM:Outputs() - return { "CabinLight", "HeadLights1", "HeadLights2", "HeadLights3", - "RedLightLeft", "RedLightRight", "EmergencyLight", - "GreenRP", "RedRP", "KUP", "V1", "AVU", "Ring", "SD", - "TrainBrakes", "TrainRP", "TrainDoors" } -end - -function TRAIN_SYSTEM:InitializeAVMap() - self.AVMap = { - 61,55,54,56,27,21,10,53,43,45,42,41, - "VU",64,63,50,51,23,14,75, 1, 2, 3,17, - 62,29, 5, 6, 8,20,25,22,30,39,44,80, - 65,"L_5",24,32,31,16,13,12, 7, 9,46,47 - } -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_717_kv_70AV.lua b/lua/metrostroi/systems/_obsolete/sys_81_717_kv_70AV.lua deleted file mode 100644 index b50ebee..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_717_kv_70AV.lua +++ /dev/null @@ -1,232 +0,0 @@ --------------------------------------------------------------------------------- --- Кулачковый контроллер КВ-70 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("KV_70_AV") - -function TRAIN_SYSTEM:Initialize() - self.Enabled = 1 - self.ControllerPosition = 0 - self.AutodrivePosition = 0 - self.ReverserPosition = 0 - self.RealControllerPosition = 0 - self.ChangeSpeed = 0.10 - - self.ReverserMatrix = { - {"D", "D1" }, - { 1, 0, 1 }, - {"10/4", "C3" }, - { 0, 0, 1 }, - {"10/4", "F1" }, - { 1, 1, 0 }, - {"D4", "15" }, - { 1, 0, 1 }, - {"D8", "15A" }, - { 0, 1, 0 }, - {"3M35", "4" }, - { 0, 0, 1 }, - {"10AK", "4" }, - { 1, 0, 0 }, - {"10AK", "5" }, - { 0, 0, 1 }, - {"FR1", "10" }, - { 1, 0, 1 }, - {"F7", "10" }, - { 1, 0, 1 }, - } - self.ControllerMatrix = { - {"10", "8" }, - { 1, 0, 0, 0, 0, 0, 0 }, - {"U2", "10AS"}, - { 1, 1, 1, 0, 1, 1, 1 }, - {"0", "0" }, - { 0, 0, 0, 1, 0, 0, 0 }, - {"10AK", "2" }, - { 1, 1, 0, 0, 0, 1, 1 }, - {"U2", "3" }, - { 0, 0, 0, 0, 0, 0, 1 }, - {"0", "0" }, - { 0, 0, 0, 1, 1, 1, 1 }, - {"10AS", "33"}, - { 0, 0, 0, 0, 1, 1, 1 }, - {"10AS", "33D"}, - { 0, 0, 0, 1, 1, 1, 1 }, - {"U2", "33G"}, - { 1, 1, 1, 0, 0, 0, 0 }, - {"U2", "20a"}, - { 0, 0, 0, 0, 1, 1, 1 }, - {"U2", "25"}, - { 0, 1, 0, 0, 0, 0, 0 }, - {"10AS", "U4"}, - { 0, 0, 0, 1, 0, 0, 0 }, - {"15A", "15B"}, - { 1, 1, 1, 1, 0, 0, 0 }, - {"U2", "20b"}, - { 1, 1, 1, 0, 0, 0, 0 }, - } - - -- Initialize contacts values - for i=1,#self.ReverserMatrix/2 do - local v = self.ReverserMatrix[i*2-1] - self[v[1].."-"..v[2]] = 0 - end - for i=1,#self.ControllerMatrix/2 do - local v = self.ControllerMatrix[i*2-1] - self[v[1].."-"..v[2]] = 0 - end -end - -function TRAIN_SYSTEM:Inputs() - return { "Enabled", "ControllerSet", "ReverserSet", - "ControllerUp","ControllerDown","ReverserUp","ReverserDown", - "SetX1", "SetX2", "SetX3", "Set0", "Set0Fast", "SetT1", "SetT1A", "SetT2", "ControllerUnlock", - "SetAutodrive" } -end - -function TRAIN_SYSTEM:Outputs() - return { "ControllerPosition","RealControllerPosition", "ReverserPosition", "10AS-33","10-8","D4-15","10AK-4","U2-25", "AutodrivePosition"} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local prevReverserPosition = self.ReverserPosition - -- Change position - if name == "Type" then - self.Type = math.floor(value) - elseif name == "Enabled" then - self.Enabled = math.floor(value) - elseif name == "ControllerSet" then - if (self.Enabled ~= 0) and (self.ReverserPosition ~= 0) and (math.floor(value) ~= self.ControllerPosition) then - local prevControllerPosition = self.ControllerPosition - self.ControllerPosition = math.floor(value) - - -- Limit motion - if self.ControllerPosition > 3 then self.ControllerPosition = 3 end - if self.ControllerPosition < -3 then self.ControllerPosition = -3 end - end - elseif name == "ReverserSet" then - if (self.Enabled ~= 0) and (math.floor(value) ~= self.ReverserPosition) and self.ControllerPosition == 0 then - local prevReverserPosition = self.ReverserPosition - self.ReverserPosition = math.floor(value) - if self.ReverserPosition > 1 then self.ReverserPosition = 1 end - if self.ReverserPosition < -1 then self.ReverserPosition = -1 end - if prevReverserPosition ~= self.ReverserPosition then - if self.ReverserPosition == -1 then self.Train:PlayOnce("revers_0-b","cabin",1) end - if self.ReverserPosition == 0 then - if prevReverserPosition == -1 then - self.Train:PlayOnce("revers_b-0","cabin",1) - else - self.Train:PlayOnce("revers_f-0","cabin",1) - end - end - if self.ReverserPosition == 1 then self.Train:PlayOnce("revers_0-f","cabin",1) end - end - end - elseif (name == "ControllerUp") and (value > 0.5) then - if self.ControllerPosition+1 == 0 and not self.Locker then return end - self:TriggerInput("ControllerSet",self.ControllerPosition+1) - self.Timer = CurTime()-self.ChangeSpeed - self.SecondSound = true - elseif (name == "ControllerDown") and (value > 0.5) then - self:TriggerInput("ControllerSet",self.ControllerPosition-1) - self.Timer = CurTime()-self.ChangeSpeed - self.SecondSound = true - elseif (name == "ReverserUp") and (value > 0.5) then - self:TriggerInput("ReverserSet",self.ReverserPosition+1) - elseif (name == "ReverserDown") and (value > 0.5) then - self:TriggerInput("ReverserSet",self.ReverserPosition-1) - elseif (name == "SetX1") and (value > 0.5) then - self:TriggerInput("ControllerSet",1) - elseif (name == "SetX2") and (value > 0.5) then - self:TriggerInput("ControllerSet",2) - elseif (name == "SetX3") and (value > 0.5) then - self:TriggerInput("ControllerSet",3) - elseif (name == "Set0") and (value > 0.5) then - self:TriggerInput("ControllerSet",0) - elseif (name == "Set0Fast") and (value > 0.5) then - self:TriggerInput("ControllerSet",0) - self.ChangeSpeed = 0.05 - elseif (name == "SetT1") and (value > 0.5) then - self:TriggerInput("ControllerSet",-1) - elseif (name == "SetT1A") and (value > 0.5) then - self:TriggerInput("ControllerSet",-2) - elseif (name == "SetT2") and (value > 0.5) then - self:TriggerInput("ControllerSet",-3) - elseif (name == "ControllerUnlock") then - self.Locker = value > 0.5 - if self.Locker then - self.Train:PlayOnce("kv70_fix_on", "cabin",1) - else - self.Train:PlayOnce("kv70_fix_off", "cabin",1) - end - elseif name == "SetAutodrive" then - self.AutodrivePosition = value - end -end - - -function TRAIN_SYSTEM:Think() - local Train = self.Train - - if (self.Enabled == 0) and (self.ReverserPosition ~= 0) then - self.ReverserPosition = 0 - self.ControllerPosition = 0 - end - if (self.ReverserPosition == 0) and (self.ControllerPosition ~= 0) then - self.ReverserPosition = 0 - self.ControllerPosition = 0 - end - - -- Move controller - self.Timer = self.Timer or CurTime() - if ((CurTime() - self.Timer > self.ChangeSpeed) and (self.ControllerPosition > self.RealControllerPosition)) then - local previousPosition = self.RealControllerPosition - self.Timer = CurTime() - self.RealControllerPosition = self.RealControllerPosition + 1 - - local A,B = previousPosition,self.RealControllerPosition - - if (A == -3) and (B == -2) then self.Train:PlayOnce("kv70_t2_t1a", "cabin",1) end - if (A == -2) and (B == -1) then self.Train:PlayOnce("kv70_t1a_t1", "cabin",1) end - if self.SecondSound and (A == -1) and (B == 0) then self.Train:PlayOnce("kv70_t1_0", "cabin",1) end - if not self.SecondSound and (A == -1) and (B == 0) then self.Train:PlayOnce("kv70_t1_0_fix", "cabin",1) end - - if (A == 0) and (B == 1) then self.Train:PlayOnce("kv70_0_x1", "cabin",1) end - if (A == 1) and (B == 2) then self.Train:PlayOnce("kv70_x1_x2", "cabin",1) end - if (A == 2) and (B == 3) then self.Train:PlayOnce("kv70_x2_x3", "cabin",1) end - self.SecondSound = nil - end - if ((CurTime() - self.Timer > self.ChangeSpeed) and (self.ControllerPosition < self.RealControllerPosition)) then - local previousPosition = self.RealControllerPosition - self.Timer = CurTime() - self.RealControllerPosition = self.RealControllerPosition - 1 - - local A,B = previousPosition,self.RealControllerPosition - if (A == 3) and (B == 2) then self.Train:PlayOnce("kv70_x3_x2", "cabin",1) end - if (A == 2) and (B == 1) then self.Train:PlayOnce("kv70_x2_x1", "cabin",1) end - if (A == 1) and (B == 0) then self.Train:PlayOnce("kv70_x1_0", "cabin",1) end - - if (A == 0) and (B == -1) then self.Train:PlayOnce("kv70_0_t1", "cabin",1) end - if (A == -1) and (B == -2) then self.Train:PlayOnce("kv70_t1_t1a", "cabin",1) end - if (A == -2) and (B == -3) then self.Train:PlayOnce("kv70_t1a_t2", "cabin",1) end - self.SecondSound = nil - end - if self.RealControllerPosition == 0 then self.ChangeSpeed = 0.10 end - local position - if self.AutodrivePosition ~= 0 and self.RealControllerPosition == 0 then - position = self.AutodrivePosition - elseif self.AutodrivePosition >= 0 and self.RealControllerPosition ~= 0 then - position = self.RealControllerPosition - else - position = math.min(self.AutodrivePosition,self.RealControllerPosition) - end - -- Update contacts - for i=1,#self.ReverserMatrix/2 do - local v = self.ReverserMatrix[i*2-1] - local d = self.ReverserMatrix[i*2] - self[v[1].."-"..v[2]] = d[self.ReverserPosition+2] - end - for i=1,#self.ControllerMatrix/2 do - local v = self.ControllerMatrix[i*2-1] - local d = self.ControllerMatrix[i*2] - self[v[1].."-"..v[2]] = d[(position)+4] - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_717_pam.lua b/lua/metrostroi/systems/_obsolete/sys_81_717_pam.lua deleted file mode 100644 index 678683e..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_717_pam.lua +++ /dev/null @@ -1,3046 +0,0 @@ --------------------------------------------------------------------------------- --- ПАМ --------------------------------------------------------------------------------- ---[[ -а) включение ПА-М и начальное тестирование: - V 1) включение ПА-М; - V 2) алгоритм определения положения реверсивной рукоятки (РР); - V 3) функции доступа к системе: - – вход в систему с кодом доступа электромеханика, тестовый контроль аппаратуры; - – вход в систему с кодом доступа машиниста и приемка состава; - 4) алгоритм взаимодействия ПА-М и БАРС; - 5) выход из депо, переход в режим «Работа»; -б) алгоритмы контроля пневматических систем поезда: - 1) алгоритм контроля отпуска тормозов; - 2) алгоритм контроля работы воздухораспределителей; - 3) алгоритм контроля включения вентилей замещения В1 и В2; - 4) алгоритм контроля отключения вентилей замещения В1 и В2; -в) алгоритмы регулирования скорости: - 1) алгоритм формирования допустимой скорости движения по перегону; - 2) регулирование скорости в режиме КС и ОС; - V 3) регулирование скорости в режиме КС при значении Vд = 0; - 4) алгоритм контроля эффективности торможения; -г) алгоритм управления поездом на станции в режимах КС и ОС: - 1) фиксация станции; - 2) осаживание поезда; - 3) процедура открытия/закрытия дверей на станции; - 4) отправление со станции; - 5) движение при переезде поездом зоны ОПВ на станции; - 6) оборот на промежуточной станции; -д) проезд станции без остановки (транзитом); -е) алгоритм перехода на другую линию; -ж) управление поездом на перегоне: - 1) управление поездом при потере контроля дверей на перегоне; - 2) функция открытия дверей на перегоне по запросу машиниста; - -з) алгоритм коррекции пройденного пути; -и) алгоритм коррекции значений коэффициентов (бандажа); -к) осаживание при пожаре; -л) алгоритм контроля скатывания поезда (режим КС); -м) алгоритм проверки «противоскатывания» поезда; -н) алгоритм движения по станционным путям; -о) алгоритм работы ПА-М в режиме резервного управления поездом; -п) организация работы терминала машиниста. - -2.1.5 При обнаружении ПА-М пропадания сигнала КД она формирует команду ОХТ и ожидает запрос на разрешение движения без КД. -2.1.6 При пропадании сигнала КСОТ ПА-М автоматически переходит в режим ОС, дальнейшее движение поезда возможно при нажатой ПБ. При появлении сигнала КСОТ происходит автоматический переход в КС. -2.1.7 ПА-М не позволяет производить открытие дверей на перегоне, кроме случая выполнения машинистом запроса на открытие дверей только после полной остановки поезда. -2.1.8 ПА-М блокирует возможность движения состава при Vд = 0. Движение при Vд = 0 возможно со скоростью не более 20 км/ч при нажатой ПБ и включенном тумблере ВРД или введенном запросе машиниста «Движение при Vд = 0». -2.1.9 ПА-М не производит автоматического открытия дверей на станции при отсутствии радиосвязи с СА КСД. -2.1.10 ПА-М блокирует открытие дверей на станции со стороны, противоположной стороне платформы. -2.1.11 ПА-М запрещает осаживание поезда на станции открытого типа при проезде зоны ОПВ и разрешает на станции закрытого типа при проезде зоны ОПВ не более 3 м. -2.1.12 ПА-М запрещает движение со скоростью более 20 км/ч при нажатой ПБ независимо от значения Vд. -2.1.13 ПА-М в режимах КС и ОС блокирует возможность проследования станции без остановки, кроме случая введения машинистом запроса на проследование станции транзитом. -2.2.3.2 Перед включением ПА-М проверить включенное состояние переключателей РЦ1, РЦ2, автоматических выключателей А58, А59, А61 и включенное состояние выключателя ВАУ (положение «ВКЛ»). - -2.3.3 Управление поездом при отсутствии кодирования (НЧ) -2.3.3.1 Функция формирования допустимой скорости движения: - а) При наезде на Vд = НЧ выдается значение предыдущей допустимой скорости, пока непройдет 0.8 секунды с момента наезда на Vд = НЧ и поезд не проедет 12 – 20 м (в зависимостиот скорости движения поезда); - б) При несовпадении данных полученных от двух плат ФФК или получении недостовер-ных данных по одной из них (при получении частот вне диапазона значений или двойных час-тот и т.д.) формируется Vд = НЧ через 1,5 секунды и после прохождения поездом 12 – 20 м(в зависимости от скорости движения поезда); - в) На стоящем поезде (при скорости менее 0.1 м/с), при пропадании частоты смена допус-тимой скорости производится через 2,5 с, не дожидаясь прохождения составом 12 м.2.3.3.2 Функция управления поездом при наезде на рельсовую цепь с отсутствием коди-рования (НЧ): - а) При наезде на рельсовую цепь с отсутствием кодирования (НЧ) выдается зуммер; - б) ПА М формирует последовательность команд ОХТ → Т2; - в) После нажатия ПБ зуммер отключается; - г) Торможение (Т2) продолжается до полной остановки, а после остановки поезда ПА-М формирует команду В1; - д) При отпущенной ПБ ПА-М формирует команду ОХТ + В1; - е) При установленном в положение «0» КВ и нажатой ПБ ПА-М формирует команду ОД; - ж) После перевода КВ в положение ХОД движение поезда возможно со скоростью не более 20 км/ч при нажатой ПБ. - 2.3.4 Возможность проследования блок-участка с Vд = 0 -2.3.4.1 При наезде на рельсовую цепь с Vд = 0 за 100 метров до станции с путевым разви- тием, разрешается дальнейшее движение без остановки со скоростью не более 20 км/ч при ус- ловии нажатой ПБ. -2.3.4.2 В остальных случаях при наезде на Vд = 0 происходит торможение до полной ос- тановки. -2.3.4.3 При смене допустимой скорости с Vд ≠ 0 на Vд = 0 ПА-М должна сформировать последовательность команд ОХТ → Т2 до остановки поезда, с выдачей зуммера. -2.3.4.4 После остановки поезда и нажатии ПБ команда Т2 + В1 меняется на ОХТ + В1. -2.3.4.5 При последующем отпуске ПБ, зуммер отключается. -2.3.4.6 При переводе КВ в положение ХОД назначение ходового режима запрещается, и на дисплее ТМ появляется подсказка «Движение при Vд = 0». -2.3.4.7 После остановки поезда возобновление движения со скоростью не более 20 км/ч возможно при условии нажатой ПБ и наличия сигнала ВРД (включен выключатель ВРД). -2.3.4.8 После остановки поезда возобновление движения со скоростью не более 20 км/ч возможно при условии нажатой ПБ и введения на блоке ТМ запроса «Движение при Vд = 0». -2.3.4.9 Для ввода запроса необходимо последовательно нажать на ТМ клавишу «F», за- тем выбрать пункт меню, нажав клавишу «5». -2.3.4.10 На дисплее ТМ появится «Запрос на разрешение продолжения движения при Vд = 0» (рисунок 11). -2.3.4.11 При нажатии клавиши «Esc» произойдет возврат к предыдущему кадру без раз- решения продолжения движения (режим ОХТ + В1). -2.3.4.12 При нажатии клавиши « ←⏐» ПА М разрешит продолжение движения при Vд = 0, а на ТМ произойдет возврат к предыдущему кадру и на время 7 секунд появится под- сказка «Разрешено движение при Vд = 0». -2.3.4.13 Режим ОХТ + В1 сменится на ОД + В1 при нажатой ПБ. -2.3.4.14 При появлении Vд ≠ 0 запрос «движение при Vд = 0» автоматически снимается. -]] - -Metrostroi.DefineSystem("PAM") -TRAIN_SYSTEM.DontAccelerateSimulation = true -TRAIN_SYSTEM.TriggerNames = { - "PAM7", - "PAM8", - "PAM9", - "PAMLeft", - "PAMRight", - "PAM4", - "PAM5", - "PAM6", - "PAMUp", - "PAM1", - "PAM2", - "PAM3", - "PAMDown", - "PAM0", - "PAMEnter", - "PAMEsc", - "PAMF", - "PAMM", - "PAMP", - "PAMKeyB", -} - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("PAM_VV") - self.Train:LoadSystem("KSD_R","Relay") - self.Train:LoadSystem("KSD_VAU","Relay") - --self.Train:LoadSystem("KSZD","Relay","Switch",{ bass = true }) - --self.Train:LoadSystem("VZP","Relay","Switch",{ bass = true }) - --self.Train:LoadSystem("VAU","Relay","Switch",{ bass = true, normally_closed = true }) - --self.Train:LoadSystem("RC2","Relay","Switch",{ bass = true, normally_closed = true }) - - - self.Triggers = {} - self.Touches = {} - for k,v in pairs(self.TriggerNames) do - self.Train:LoadSystem(v,"Relay","Switch",{ bass = true }) - self.Triggers[k] = false - self.Touches[k] = false - end - - self.NoFreq = 0 - self.F6 = 0 - self.F5 = 0 - self.F4 = 0 - self.F3 = 0 - self.F2 = 0 - self.F1 = 0 - - self["2"] = 0 --Вращение РК - self["3"] = 0 --Ход 3 - self["8"] = 0 --Замещение электрического торможения - self["16"] = 0 --Закрытие дверей - self["17"] = 0 -- Разрешение восстановления реле перегрузки - self["19"] = 0 -- Разрешение замещения электрического торможения - self["20"] = 0 -- Включение двигателей - self["20X"] = 0 -- Разрешение включения двигателей в ходовые режимы - self["025"] = 0 -- Разрешение ручного торможения - self["25"] = 0 -- Ручное торможение - self["31"] = 0 --Открытие открытия левых дверей - self["32"] = 0 --Открытие правых дверей - self["33"] = 0 --Включение ходового режима - self["033"] = 0 --Разрешение включения ходового режима - self["33G"] = 0 --Включение режима торможения - self["39"] = 0 --Включение вентиля замещения № 2 - self["7GA"] = 0 --Включение вентиля замещения № 2 - self["48"] = 0 --Включение вентиля замещения № 1 - self.EPK = 0 - - - self.Ring = 0 - - self.State = 0 - self.Selected = 1 - - self.Keyboard = false - - self.Station = "" - self.Path = "" - self.RouteNumber = "" - self.DriverNumber = "" - --self:SetDriveMode = "Zero" - --self.CurrentDoorMode = "DO" - --self.CurrentPneumoMode = "NT" - self.SpeedLimit = 0 - self.ErrorTimers = {} -end - - ---if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { "KSDMode" } -end -function TRAIN_SYSTEM:Outputs() - return { - "2","3","8","16","17","19","20","20X","025","25","31","32","33","033","33G","39","7GA","48","EPK", - "Ring", "NoFreq", "F5", "F4", "F3", "F2", "F1" - } -end - -if CLIENT then - local function createFont(name,font,size) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = 800, - blursize = false, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - scanlines = false, - }) - end - createFont("PAM15","Arial",15) - createFont("PAM19","Arial",19) - createFont("PAM20","Arial",20) - createFont("PAM21","Arial",21) - createFont("PAM24","Arial",24) - createFont("PAM25","Arial",25) - createFont("PAM26","Arial",26) - createFont("PAM27","Arial",27) - createFont("PAM28","Arial",28) - createFont("PAM29","Arial",29) - createFont("PAM30","Arial",30) - createFont("PAM31","Arial",31) - createFont("PAM35","Arial",35) - createFont("PAM45","Arial",45) - - function TRAIN_SYSTEM:ClientThink() - if not self.Train:ShouldDrawPanel("PAMScreen") then return end - if self.FilterMag then - render.PopFilterMag() - render.PopFilterMin() - end - - self.FilterMag = true - - render.PushRenderTarget(self.Train.PAM,0,0,1024, 512) - render.Clear(0, 0, 0, 0) - cam.Start2D() - render.SetScissorRect(0, 0, 640, 480, true) - render.PushFilterMag( TEXFILTER.POINT ) - render.PushFilterMin( TEXFILTER.POINT ) - surface.SetDrawColor(0,0,0) - surface.DrawRect(0,0,640,480) - if true then self:PAMScreen(self.Train) end - render.SetScissorRect(0, 0, 0, 0, false) - render.PopFilterMag() - render.PopFilterMin() - cam.End2D() - render.PopRenderTarget() - self.FilterMag = false - end - - local button = {"button_lt","button_lc","button_lb","button_ct","button_cc","button_cb"} - local button_p = {"button_p_lt","button_p_lc","button_p_lb","button_p_ct","button_p_cc","button_p_cb"} - local button_s = {"button_s_lt","button_s_lc","button_s_lb","button_s_ct","button_s_cc","button_s_cb"} - - local textbox = { - "textbox_corner_tl","textbox_corner_t","textbox_corner_tr", - "textbox_corner_l","textbox_corner_r", - "textbox_corner_bl","textbox_corner_b","textbox_corner_br", - } - local speed = { - "speed_tl","speed_t","speed_tr", - "speed_l","speed_c","speed_r", - "speed_bl","speed_b","speed_br", - } - local window = { - "window_tl","window_tc","window_tr", - "window_cl","window_cc","window_cr", - "window_bl","window_bc","window_br", - } - local function replaceNames(tbl,path) - for k,v in pairs(tbl) do tbl[k] = surface.GetTextureID((path or "models/metrostroi_train/81-717/screens/pa/buttons/")..v) end - end - replaceNames(button) - replaceNames(button_p) - replaceNames(button_s) - replaceNames(textbox) - replaceNames(speed) - replaceNames(window,"models/metrostroi_train/81-717/screens/pa/window/") - local function drawButton(x,y,w,h,button,color) - --[[ surface.SetDrawColor(255,0,0) - surface.DrawLine(x,y,x+w,y) - surface.DrawLine(x+w,y,x+w,y+h) - surface.DrawLine(x,y+h,x+w,y+h) - surface.DrawLine(x,y,x,y+h)--]] - if not button then return end - w = math.max(w-16,0) - h = math.max(h-16,0) - surface.SetDrawColor(color or Color(255,255,255)) - surface.SetTexture(button[1]) - surface.DrawTexturedRect(x,y,8,8) - surface.DrawTexturedRectUV(x+w+8,y,8,8,1,0,0,1) - if h > 0 then - surface.SetTexture(button[2]) - surface.DrawTexturedRect(x,y+8,8,h) - surface.SetTexture(button[2]) - surface.DrawTexturedRectUV(x+w+8,y+8,8,h,1,0,0,1) - --surface.DrawTexturedRectUV(x+8,y,w,h,0,0,1*(w/8),1) - end - if w > 0 then - surface.SetTexture(button[4]) - surface.DrawTexturedRectUV(x+8,y,w,8,0,0,1*(w/8),1) - surface.SetTexture(button[5]) - surface.DrawTexturedRect(x+8,y+8,w,h) - surface.SetTexture(button[6]) - surface.DrawTexturedRectUV(x+8,y+h+8,w,8,0,0,1*(w/8),1) - end - surface.SetTexture(button[3]) - surface.DrawTexturedRect(x,y+h+8,8,8) - surface.DrawTexturedRectUV(x+w+8,y+h+8,8,8,1,0,0,1) - --surface.SetTexture(button[3]) - --surface.DrawTexturedRect(x+w+8,y,8,h,0) - end - local function drawWindow(x,y,w,h,text) - w = math.max(w-16,0) - h = math.max(h-40,0) - --Color(74,95,148) - surface.SetDrawColor(color or Color(255,255,255)) - --surface.DrawRect(x+4,y+4,w,h) - surface.SetTexture(window[1]) - surface.DrawTexturedRect(x,y,8,32) - surface.SetTexture(window[2]) - surface.DrawTexturedRect(x+8,y,w,32) - surface.SetTexture(window[3]) - surface.DrawTexturedRect(x+w+8,y,8,32) - draw.SimpleText(text,"Metrostroi_PAM19",x+8+w/2,y+18, Color(28,35,53),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(text,"Metrostroi_PAM19",x+8+w/2,y+16, col or Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(color or Color(255,255,255)) - surface.SetTexture(window[4]) - surface.DrawTexturedRect(x,y+32,8,h) - surface.SetTexture(window[5]) - surface.DrawTexturedRect(x+8,y+32,w,h) - surface.SetTexture(window[6]) - surface.DrawTexturedRect(x+w+8,y+32,8,h) - - surface.SetTexture(window[7]) - surface.DrawTexturedRect(x,y+h+32,8,4) - surface.SetTexture(window[8]) - surface.DrawTexturedRect(x+8,y+h+32,w,4) - surface.SetTexture(window[9]) - surface.DrawTexturedRect(x+w+8,y+h+32,8,4) - - --draw.SimpleText(text,font,x+w/2+4,y+h/2+4, Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --surface.SetTexture(button[3]) - --surface.DrawTexturedRect(x+w+8,y,8,h,0) - end - local function drawTextBox(x,y,w,h,text,font,color) - --[[ surface.SetDrawColor(255,0,0) - surface.DrawLine(x,y,x+w,y) - surface.DrawLine(x+w,y,x+w,y+h) - surface.DrawLine(x,y+h,x+w,y+h) - surface.DrawLine(x,y,x,y+h)--]] - - w = math.max(w-8,0) - h = math.max(h-8,0) - surface.SetDrawColor(color or Color(255,255,255)) - surface.DrawRect(x+4,y+4,w,h) - surface.SetTexture(textbox[1]) - surface.DrawTexturedRect(x,y,4,4) - surface.SetTexture(textbox[2]) - surface.DrawTexturedRect(x+4,y,w,4) - surface.SetTexture(textbox[3]) - surface.DrawTexturedRect(x+w+4,y,4,4) - - surface.SetTexture(textbox[4]) - surface.DrawTexturedRect(x,y+4,4,h) - surface.SetTexture(textbox[5]) - surface.DrawTexturedRect(x+w+4,y+4,4,h) - - surface.SetTexture(textbox[6]) - surface.DrawTexturedRect(x,y+h+4,4,4) - surface.SetTexture(textbox[7]) - surface.DrawTexturedRect(x+4,y+h+4,w,4) - surface.SetTexture(textbox[8]) - surface.DrawTexturedRect(x+w+4,y+h+4,4,4) - - draw.SimpleText(text,font,x+w/2+4,y+h/2+4, Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - local function drawSpeed(x,y,w,h,color) - --[[ - surface.SetDrawColor(255,0,0) - surface.DrawLine(x,y,x+w,y) - surface.DrawLine(x+w,y,x+w,y+h) - surface.DrawLine(x,y+h,x+w,y+h) - surface.DrawLine(x,y,x,y+h)--]] - --w = math.max(w-8,0) - h = math.max(h-8,0) - if w < -4 then return end - surface.SetDrawColor(color or Color(255,255,255)) - --surface.DrawRect(x+4,y+4,w,h) - surface.SetTexture(speed[1]) - surface.DrawTexturedRect(x,y,4,4) - surface.SetTexture(speed[2]) - surface.DrawTexturedRect(x+4,y,w,4) - surface.SetTexture(speed[3]) - surface.DrawTexturedRect(x+w+4,y,4,4) - - surface.SetTexture(speed[4]) - surface.DrawTexturedRect(x,y+4,4,h) - surface.SetTexture(speed[5]) - surface.DrawTexturedRectUV(x+4,y+4,w,h,0,0,1*(w/19),1) - surface.SetTexture(speed[6]) - surface.DrawTexturedRect(x+w+4,y+4,4,h) - - surface.SetTexture(speed[7]) - surface.DrawTexturedRect(x,y+h+4,4,4) - surface.SetTexture(speed[8]) - surface.DrawTexturedRect(x+4,y+h+4,w,4) - surface.SetTexture(speed[9]) - surface.DrawTexturedRect(x+w+4,y+h+4,4,4) - end - local function buttonWTextC(x,y,w,h,text,font,color,button,buttoncolor) - drawButton(x,y,w,h,button,buttoncolor) - draw.SimpleText(text,font,x+w/2,y+h/2, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - function drawFrame(tex,x,y,w,h,alpha) - x,y,w,h = x or 0,y or 0,w or 1024,h or 512 - surface.SetTexture(tex) - surface.SetDrawColor(255,255,255,alpha) - surface.DrawTexturedRect(x,y,w,h) - --surface.DrawTexturedRectRotated(x+w/2,y+h/2,w,h,0) - end - - function stateDebug(Train) - draw.SimpleText(Format("St = %.02f",Train:GetNW2Float("PAM:TrackS",-1)),"Metrostroi_PAM30",5,20, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S = %.02f",Train:GetNW2Float("PAM:S",-1)),"Metrostroi_PAM30",5,20+20*1, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("Sd = %.02f",Train:GetNW2Float("PAM:Sd",-1)),"Metrostroi_PAM30",5,20+20*2, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S2 = %.02f",Train:GetNW2Float("PAM:S2",-1)),"Metrostroi_PAM30",5,20+20*3, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S2d = %.02f",Train:GetNW2Float("PAM:S2d",-1)),"Metrostroi_PAM30",5,20+20*4, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("SSd = %.02f",Train:GetNW2Float("PAM:S",-1)-Train:GetNW2Float("PAM:S2",-1)),"Metrostroi_PAM30",5,20+20*5, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(Format("SensID = %0.1f",Train:GetNW2Float("PAM:LastSensorDist",-1)),"Metrostroi_PAM30",5,20+20*7, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("SensD = %0.1f",Train:GetNW2Float("PAM:SensorDist",-1)),"Metrostroi_PAM30",5,20+20*8, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("SensT = %0.1f",Train:GetNW2Float("PAM:LastSensorTime",-1)),"Metrostroi_PAM30",5,20+20*9, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("SensD1 = %0.3f",Train:GetNW2Float("PAM:LastSensorDiff",-1)),"Metrostroi_PAM30",5,20+20*10, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("SensD2 = %0.3f",Train:GetNW2Float("PAM:LastSensorDiff2",-1)),"Metrostroi_PAM30",5,20+20*11, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(Format("Sig = %s",Train:GetNW2String("PAM:Signal","n\\a")),"Metrostroi_PAM30",5,20+20*13, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(Format("ST = %d",Train:GetNW2Int("PAM:Station",-1)),"Metrostroi_PAM30",5,20+20*15, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("STd = %0.2f",Train:GetNW2Float("PAM:StationS",-1)),"Metrostroi_PAM30",5,20+20*16, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("STD = %0.1f",Train:GetNW2Float("PAM:StationD",-1)),"Metrostroi_PAM30",5,20+20*17, Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - local state1_nkr = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state1_nkr") - local state1_kr = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state1_kr") - local function State1(Train) - local reverser = Train:GetNW2Bool("PAM:Reverser") - local xmin = reverser and 36 or 0 - drawFrame(reverser and state1_kr or state1_nkr) - local Stest,SSetup,SBack = Train:GetNW2Bool("PAM:GoodTest"),Train:GetNW2Bool("PAM:GoodSetup"),Train:GetNW2Int("PAM:GoodBack",0) - if Stest then - draw.SimpleText("НОРМА","Metrostroi_PAM28",431,163+38*0-xmin, Color(0,165,13),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("НЕ НОРМА","Metrostroi_PAM28",431,163+38*0-xmin, Color(213,18,8),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - if SSetup then - draw.SimpleText("НОРМА","Metrostroi_PAM28",431,163+38*1-xmin, Color(0,165,13),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("НЕ НОРМА","Metrostroi_PAM28",431,163+38*1-xmin, Color(213,18,8),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - if SBack==1 then - draw.SimpleText("НОРМА","Metrostroi_PAM28",431,163+38*2-xmin, Color(0,165,13),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - elseif SBack==-1 then - draw.SimpleText("НЕ НОРМА","Metrostroi_PAM28",431,163+38*2-xmin, Color(213,18,8),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("НЕТ СВЯЗИ","Metrostroi_PAM28",431,163+38*2-xmin, Color(125,125,125),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - draw.SimpleText("2.2","Metrostroi_PAM28",431-5,163+38*3-xmin, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - - draw.SimpleText("ПСР не подключен","Metrostroi_PAM27",315,318-xmin, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - buttonWTextC(542,352-xmin,77,51,"Esc","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - if reverser then - buttonWTextC(320-55,410,110,51,"Enter","Metrostroi_PAM30",SSetup and Color(0,0,0) or Color(124,124,124), (SSetup and Train:GetNW2Bool("PAM:KeyEnter")) and button_p or button) - end - end - local state1_errs = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state1_errs") - local function State1_5(Train) - drawFrame(state1_errs) - local backPA = Train:GetNW2Int("PAM:GoodBack",0) - for i=0,7 do - if i~=4 or Train:GetNW2Bool("PAM:GoodSetup") then - draw.SimpleText("НОРМА","Metrostroi_PAM28",302,164+31*i, Color(0,165,13),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText("НЕ НОРМА","Metrostroi_PAM28",302,164+31*i, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if backPA ==0 then - draw.SimpleText("НЕТ СВЯЗИ","Metrostroi_PAM28",471,164+31*i, Color(125,125,125),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - elseif i==4 and backPA == -1 then - draw.SimpleText("НЕ НОРМА","Metrostroi_PAM28",471,164+31*i, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText("НОРМА","Metrostroi_PAM28",471,164+31*i, Color(0,165,13),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - buttonWTextC(320-82,408,164,51,"Закрыть","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - end - local state2 = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state2") - local tbl = { - 1,"Выход на линию", - 2,"Перезапуск", - false,"Назад", - "M","Технологическое меню", - } - local function State2(Train) - drawFrame(state2) - local sel = Train:GetNW2Int("PAM:Selected",1) - for i=1,#tbl/2 do - local color = i==sel and Color(255,255,255) or Color(0,0,0) - local y = 121+59*(i-1)+25 - if i~=2 or Train:GetNW2Bool("PAM:HaveRestart") then - if i==4 then y=y+69 end - drawButton(320-298,y-25,596,50, i==sel and button_s or button) - draw.SimpleText(tbl[i*2],"Metrostroi_PAM28",320-98,y, color,TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if tbl[i*2-1] then - draw.SimpleText(tbl[i*2-1],"Metrostroi_PAM28",320-292,y, color,TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if i==4 then - Metrostroi.DrawLine(320-290,y+13,320-272,y+13,color,3) - else - Metrostroi.DrawLine(320-290,y+13,320-277,y+13,color,3) - end - end - end - end - end - - local keyboard_na = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/keyboard_na") - local keyboard = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/keyboard") - local keys = { - "P", - "F" , "Up" , "M", - "Left","Down","Right", - "1" , "2" , "3", - "4" , "5" , "6", - "7" , "8" , "9", - "Esc" , "0" ,"Enter", - } - local keysConv = {Up="▲",Left="◄",Down="▼",Right="►",} - local function drawKeyboard(Train,x,y) - local selected = Train:GetNW2String("PAM:Touching","") ~= "" - drawFrame(selected and keyboard or keyboard_na,x,y,256,512) - local colors = Color(0,0,0,255*0.3) - for i,keyName in ipairs(keys) do - local touched = not selected and Train:GetNW2String("PAM:LastToucn") == keyName - local touching = Train:GetNW2String("PAM:Touching") == keyName - local col = Color(255,255,255,colors.a) - if touching then col = Color(245,46,18) end - if touched then - col = Color(255,255,255) - end - local key = i+1 - local xp = key%3 - local yp = math.floor(key/3) - buttonWTextC(x+5+60*xp,y+32+49*yp,60,49,keysConv[keyName] or keyName,"Metrostroi_PAM27",Color(0,0,0), Train:GetNW2Bool("PAM:Key"..keyName) and button_p or button,col) - end - end - local combobox = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/combobox") - local combobox_g = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/combobox_g") - local function comboBox(Train,x,y) - local count = Train:GetNW2Int("PAM:ElemCount",0) - if count <= 0 then return end - local w,h = 260,163 - drawFrame(combobox,x,y,256,256) - for i=1,Train:GetNW2String("PAM:ElemCount",0) do - local text = Train:GetNW2String("PAM:Elem"..i) - local tab = text:find("\t") - if tab then - draw.SimpleText(text:sub(1,tab-1),"Metrostroi_PAM20",x+13,y+27-10+18*(i-1), Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(text:sub(tab+1,-1),"Metrostroi_PAM20",x+13+35,y+27-10+18*(i-1), Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(text,"Metrostroi_PAM20",x+13,y+27-5+18*(i-1), Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - --x+28+18*i Train:SetNW2String("PAM:Elem"..iS,id.."\t"..(name or id)) - end - --[[ surface.SetDrawColor(Color(255,0,0)) - surface.DrawLine(x+219,y+5,x+219+31,y+5) - surface.DrawLine(x+219,y+5,x+219,y+5+15) - surface.DrawLine(x+219,y+5+15,x+219+31,y+5+15) - surface.DrawLine(x+219+31,y+5,x+219+31,y+5+15) - - surface.SetDrawColor(Color(0,255,0)) - surface.DrawLine(x+219,y+128,x+219+31,y+128) - surface.DrawLine(x+219,y+128,x+219,y+128+14) - surface.DrawLine(x+219,y+128+14,x+219+31,y+128+14) - surface.DrawLine(x+219+31,y+128,x+219+31,y+128+14) - - surface.SetDrawColor(Color(0,0,255)) - surface.DrawLine(x+219,y+143,x+219+31,y+143) - surface.DrawLine(x+219,y+143,x+219,y+143+14) - surface.DrawLine(x+219,y+143+14,x+219+31,y+143+14) - surface.DrawLine(x+219+31,y+143,x+219+31,y+143+14)--]] - - end - local state3 = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state3") - local state3k = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state3k") - local keyb_icon = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/buttons/keyb_icon") - local function State3(Train) - local selected = Train:GetNW2String("PAM:Touching") ~= "" - local keyboard = Train:GetNW2Bool("PAM:Keyboard") - if keyboard then drawFrame(state3k,640-512,nil,512) else drawFrame(state3) end - local sel = Train:GetNW2Int("PAM:Selected",1) - local xadd = keyboard and 1 or 0 - drawTextBox(374,103+35*0,210,35,Train:GetNW2String("PAM:StationS",""),"Metrostroi_PAM30",not selected and sel == 1 and Color(79,252,246)) - drawTextBox(374,103+35*1,210,35,Train:GetNW2String("PAM:PathS",""),"Metrostroi_PAM30",not selected and sel == 2 and Color(79,252,246)) - drawTextBox(374,103+35*2,210,35,Train:GetNW2String("PAM:RouteNumber",""),"Metrostroi_PAM30",not selected and sel == 3 and Color(79,252,246)) - drawTextBox(374,103+35*3,210,35,Train:GetNW2String("PAM:DriverNumber",""),"Metrostroi_PAM30",not selected and sel == 4 and Color(79,252,246)) - drawTextBox(374,103+35*4,210,35,os.date("%d.%m.%y %H:%M:%S",Metrostroi.GetSyncTime()),"Metrostroi_PAM30",sel == 5 and Color(79,252,246)) - if sel==1 then comboBox(Train,374,103+35*1) end - local err = Train:GetNW2String("PAM:EnterError","") - if err ~= "" then draw.SimpleText(err,"Metrostroi_PAM30",320+xadd*90,300, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - local currStation = Train:GetNW2String("PAM:CurrentStationS") - if currStation ~= "" then draw.SimpleText(currStation,"Metrostroi_PAM30",320+xadd*90,330, Color(0,165,13),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - buttonWTextC(156+xadd*127,369,120,51,"Ввод","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - buttonWTextC(286+xadd*127,369,120,51,"Назад","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - if Train:GetNW2Bool("PAM:KeyKeyB") or keyboard then drawButton(443+xadd*100,369,40,51, keyboard and button_p or button) end - surface.SetDrawColor(255,255,255) - surface.SetTexture(keyb_icon) - surface.DrawTexturedRect(447+xadd*100,363,32,64) - if keyboard then drawKeyboard(Train,22,47) end - end - local state35 = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state35") - local state35k = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state35k") - local function State35(Train) - local selected = Train:GetNW2String("PAM:Touching") ~= "" - local keyboard = Train:GetNW2Bool("PAM:Keyboard") - - if keyboard then drawFrame(state35k,640-512,nil,512) else drawFrame(state35) end - local sel = Train:GetNW2Int("PAM:Selected",1) - local xadd = keyboard and 1 or 0 - drawTextBox(374,103+35*0,210,35,Train:GetNW2String("PAM:StationS",""),"Metrostroi_PAM30",not selected and sel == 1 and Color(79,252,246)) - drawTextBox(374,103+35*1,210,35,Train:GetNW2String("PAM:PathS",""),"Metrostroi_PAM30",not selected and sel == 2 and Color(79,252,246)) - if sel==1 then comboBox(Train,374,103+35*1) end - local err = Train:GetNW2String("PAM:EnterError","") - if err ~= "" then draw.SimpleText(err,"Metrostroi_PAM30",320+xadd*90,260, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - local currStation = Train:GetNW2String("PAM:CurrentStationS") - if currStation ~= "" then draw.SimpleText(currStation,"Metrostroi_PAM30",320+xadd*90,330, Color(0,165,13),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - buttonWTextC(156+xadd*127,369,120,51,"Ввод","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - buttonWTextC(286+xadd*127,369,120,51,"Назад","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - - if Train:GetNW2Bool("PAM:KeyKeyB") or keyboard then drawButton(443+xadd*100,369,40,51, keyboard and button_p or button) end - surface.SetDrawColor(255,255,255) - surface.SetTexture(keyb_icon) - surface.DrawTexturedRect(447+xadd*100,363,32,64) - - if keyboard then drawKeyboard(Train,22,47,selected) end - end - - local state4 = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state4") - local function State4(Train) - drawFrame(state4) - buttonWTextC(320-19,278,76,38,"Ввод","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - end - - local function drawText2(x,y,text,state,col) - if state then - draw.SimpleText(text,"Metrostroi_PAM30",x,y, col or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(text,"Metrostroi_PAM30",x+1,y+1, Color(173,178,172),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(text,"Metrostroi_PAM30",x,y, col or Color(142,147,146),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - local driveModes = { - [0]="?", - "ОС", - "КС", - "АВ", - "ОР", - "КР", - } - - local KVModes = { - [-4]="Т2", - [-3]="Т1а", - [-2]="Т1", - [-1]="ОХТ", - [0]="ОД", - [1]="Х1", - [2]="Х2", - [3]="Х3", - } - local menus = { - {"Проверка","скатывания"}, - {"Движение","без КД"}, - "Смена линии", - {"Движение","транзитом"}, - {"Движение"," при Vд=0"}, - {"Открытие дверей","на перегоне"}, - {"Движение","без контроля ЛПТ"}, - {"Зонный","оборот"}, - {"Фиксация","станции"}, - [12]="Закрыть" - } - local acceptions = { - [-7] = "Подтверди переход на другую линию", - [-6] = "Подтверди осаживание при пожаре", - [-4] = {"Подтверди движение по станционным","путям"}, - [-3] = "Подтверди переход в ОС", - [-2] = "Подтверди переход в КС", - [-1] = "Подтверди переход в АВ", - "Подтвердите проверку скатывания", - "Подтвердите движение без КД", - "Подтвердите смену линии", - "Подтвердите движение транзитом", - "Подтвердите движение при Vд = 0", - "Подтвердите открытие дверей на перегоне", - "Подтвердите движение без контроля ЛПТ", - "Подтвердите зонный оборот", - [11]="Подтвердите отмену проверки скатывания", - [12]="Подтвердите отмену движения без КД", - [13]="Подтвердите отмену смены линии", - [14]="Подтвердите отмену движения транзитом", - [15]="Подтвердите отмену движения при Vд = 0", - [16]={"Подтвердите отмену открытия дверей на","перегоне"}, - [17]="Подтвердите восстановление контроля ЛПТ", - [18]="Подтвердите отмену зонного оборота", - } - local menusReset = { - {"Проверка","скатывания"}, - {"Движение","без КД"}, - "Смена линии", - "Транзит", - {"Движение"," при Vд=0"}, - {"Открытие дверей","на перегоне"}, - {"Движение","без контроля ЛПТ"}, - "Оборот", - [11]="Закрыть" - } - - local errors = { - "Открой правые двери", - "Открой левые двери", - "Переведи РР вперед", - "Нет контроля открытия дверей", - "Нет контроля закрытия дверей", - "Нет блокировки дверей", - "Разблокируй двери", - "Не открыл двери! Подтвердись ПБ", - "Несработка ДКП! Зафиксируйте станцию", - "Отпусти пневмотормоз", - "Выключите тумблер ВЗП", - "Движение при Vд=0", - "Нет набора скорости", - "Для перехода сбросьте с хода", - "Доложи диспетчеру Vд=0", - "Выход на линию", - "Установи реверсивную рукоятку", - "Необходимо дополнительное включение", - "РР в другой голове", - "Переход в ОС", - "Переход в КС", - "Постоянное электропитание на КДЛ/КДП", - "Введён транзит", - "Отсутствует КСОТ", - "Оборот", - "Режим ОС", - "Открой двери станции", - "Перейди в КС", - "Нет питания на 34 проводе(ЛКТ)", - "Есть притание на 34 проводе", - - [51]={"Контроль дверей отменён"}, - [52]={"Контроль дверей восстановлен"}, - [53]={"Движение по станционным","путям запрещено",true}, - [54]={"Разрешено движение","при Vд = 0"}, - [55]={"Движение по станционным","путям разрешено"}, - [56]={"Открытие дверей на","перегоне разрешено"}, - [57]={"Открытие дверей на","перегоне запрещено",true}, - [58]={"Контроль ЛПТ отменён"}, - [59]={"Контроль ЛПТ","восстановлен"}, - [60]={"Движение под оборот","разрешено"}, - [61]={"Движение под оборот","запрещено",true}, - [62]={"Оборот отменён"}, - [63]={"Транзит разрешён"}, - [64]={"Транзит запрещён",true}, - [65]={"Транзит отменён"}, - [66]={"Осаживание при пожаре","разрешено"}, - [67]={"Осаживание при пожаре","запрещено",true}, - [68] = {"Режим КС разрешён"}, - [69] = {"Режим КС запрещён",true}, - [70] = {"Режим ОС разрешён"}, - [71]={"Движение по станционным","путям",true}, - } - local state5 = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5_main") - local state5k = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5k_main") - local state5b = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5b_main") - local state5kb = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5kb_main") - local question = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/question") - local function State5(Train) - local speed = Train:GetNW2Int("PAM:Vf") - local mode = Train:GetNW2Int("PAM:Mode",0) - local currentStation = Train:GetNW2String("PAM:CurrentStation") - local targetStation = Train:GetNW2String("PAM:TargetStation") - local Vd = Train:GetNW2Int("PAM:Vd") - local speedLimit = Train:GetNW2Int("PAM:SpeedLimit") - - local driveMode = Train:GetNW2Int("PAM:DriveMode",0) - local KVMode = Train:GetNW2Int("PAM:KVMode",0) - - local state = Train:GetNW2Int("PAM:State5",-1) - local stateAcc = Train:GetNW2Int("PAM:State5Accept",0) - local sel = Train:GetNW2Int("PAM:Selected",1) - local block = state~=-1 or stateAcc~=0 - - local ksd = Train:GetNW2Bool("PAM:KSD") - - surface.SetDrawColor(1,54,2) - surface.DrawRect(2,70,541,35) - if Train:GetNW2Bool("PAM:OXT") then - drawSpeed(3,71,542/100*speed-5,33,Color(240,240,40)) - else - drawSpeed(3,71,542/100*speed-5,33,Color(40,220,40)) - end - if block then - drawFrame(ksd and state5kb or state5b) - else - drawFrame(ksd and state5k or state5) - end - - - draw.SimpleText("28.08.2012","Metrostroi_PAM24",57,11, Color(199,199,199),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("12:38:19","Metrostroi_PAM28",59,32, Color(199,199,199),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - --Train:GetNW2Int("PAM:Vf") - --Train:GetNW2Int("PAM:Vd") - --Train:GetNW2String("PAM:RC") - --Train:GetNW2Float("PAM:S") - --Линия - draw.SimpleText(Train:GetNW2String("PAM:Line"),"Metrostroi_PAM28",239,13, Color(222,234,58),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Путь - draw.SimpleText(Train:GetNW2String("PAM:Path"),"Metrostroi_PAM28",371,13, Color(222,234,58),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - --Текущая - draw.SimpleText(speed,"Metrostroi_PAM45",605,67, Color(20,239,32),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - --Ограничение - if speedLimit == -1 then - draw.SimpleText("НЧ","Metrostroi_PAM45",605,104, Color(232,13,12),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif speedLimit <= 20 then - draw.SimpleText(speedLimit,"Metrostroi_PAM45",605,104, Color(232,13,12),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(speedLimit,"Metrostroi_PAM45",605,104, Color(246,242,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - if Train:GetNW2Bool("PAM:State5_5") then draw.SimpleText("Vд=0","Metrostroi_PAM28",145,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_2") then draw.SimpleText("КД","Metrostroi_PAM28",195,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_4") then draw.SimpleText("ТР","Metrostroi_PAM28",235,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_8") then draw.SimpleText("ОБ","Metrostroi_PAM28",275,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_3") then draw.SimpleText("СЛ","Metrostroi_PAM28",315,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_7") then draw.SimpleText("ЛПТ","Metrostroi_PAM28",365,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - if Train:GetNW2Bool("PAM:State5_6") then draw.SimpleText("ДП","Metrostroi_PAM28",420,70, Color(225,235,110),TEXT_ALIGN_CENTER,TEXT_ALIGN_BOTTOM) end - - if Vd == -1 then - draw.SimpleText("НЧ","Metrostroi_PAM24",5,122, Color(232,13,12),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(6,68,6,107,Color(246,242,0),3) - elseif Vd == 0 then - draw.SimpleText(0,"Metrostroi_PAM24",5,122, Color(232,13,12),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(6,68,6,107,Color(246,242,0),3) - elseif Vd <= 20 then - draw.SimpleText(0,"Metrostroi_PAM24",-4+5.47*20,122, Color(232,13,12),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(-5+5.47*20,68,-5+5.47*20,107,Color(246,242,0),3) - else - draw.SimpleText(speedLimit,"Metrostroi_PAM24",-4+5.47*speedLimit,122, Color(246,242,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(-5+5.47*speedLimit,68,-5+5.47*speedLimit,107,Color(246,242,0),3) - end - - local mess = Train:GetNW2Int("PAM:CurrentMessage",0) - if mode == 6 then - if mess==0 then mess = 21 end - elseif mode == 3 then - draw.SimpleText("T = 00:00:00","Metrostroi_PAM31",0,412, Color(20,239,32),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("пр","Metrostroi_PAM15",20,416, Color(20,239,32),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("Нагон= 0 с"),"Metrostroi_PAM28",175,411, Color(20,239,32),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("T ="),"Metrostroi_PAM28",355,411, Color(20,239,32),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("ост","Metrostroi_PAM15",374,416, Color(20,239,32),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(math.Clamp(Train:GetNW2Int("PAM:BoardTime",0),-999,999),"Metrostroi_PAM28",443,411, Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("с","Metrostroi_PAM28",470+3,411, Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S=%.2fм",Train:GetNW2Float("PAM:S")),"Metrostroi_PAM31",639,412, Color(20,239,32),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - - if not Train:GetNW2Bool("PAM:Shunt") then - if mess == 0 then - draw.SimpleText(currentStation,"Metrostroi_PAM35",320,222, Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%d путь",Train:GetNW2String("PAM:Path")),"Metrostroi_PAM35",320,258, Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if targetStation=="оборот" then - draw.SimpleText("оборот","Metrostroi_PAM26",639,11, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(Format("до %s",targetStation),"Metrostroi_PAM26",639,11, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - draw.SimpleText(currentStation,"Metrostroi_PAM25",639,34, Color(20,239,32),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - elseif mode == 2 then - draw.SimpleText(Format("РЦ= %s",Train:GetNW2String("PAM:RC")),"Metrostroi_PAM31",0,412, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --draw.SimpleText(Format("Пикет="),"Metrostroi_PAM28",141,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("Уклон= %d",Train:GetNW2Int("PAM:Slope",0)),"Metrostroi_PAM28",349,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S=%.2fм",Train:GetNW2Float("PAM:S")),"Metrostroi_PAM31",639,412, Color(27,234,30),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("до %s",targetStation),"Metrostroi_PAM26",639,11, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(currentStation,"Metrostroi_PAM25",639,34, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif mode == 4 or mode == 5 then - draw.SimpleText("РЦ= ","Metrostroi_PAM31",0,412, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --draw.SimpleText(Format("Пикет="),"Metrostroi_PAM28",141,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Уклон=","Metrostroi_PAM28",349,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("S=%.2fм",Train:GetNW2Float("PAM:S")),"Metrostroi_PAM31",639,412, Color(27,234,30),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(mode == 5 and "депо" or "оборот","Metrostroi_PAM26",639,11, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(currentStation,"Metrostroi_PAM25",639,34, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("РЦ=","Metrostroi_PAM31",0,412, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --draw.SimpleText("Пикет=","Metrostroi_PAM28",141,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Уклон=","Metrostroi_PAM28",349,411, Color(27,234,30),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("S=1337.00м","Metrostroi_PAM31",639,412, Color(27,234,30),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText("выход на линию","Metrostroi_PAM26",639,11, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(currentStation,"Metrostroi_PAM25",639,34, Color(154,154,154),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - if mess>0 then - local mess = errors[50+mess] - if #mess == 1 or #mess==2 and mess[2]==true then - draw.SimpleText(mess[1],"Metrostroi_PAM35",320,240, mess[2] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(mess[1],"Metrostroi_PAM35",320,222, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(mess[2],"Metrostroi_PAM35",320,258, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - local err = Train:GetNW2Int("PAM:CurrentError",0) - if err>0 then - draw.SimpleText(errors[err],"Metrostroi_PAM31",10,385, Color(225,235,110),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - --local function draw - draw.SimpleText("1 АВ","Metrostroi_PAM29",3,173, Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(4,173+14,15,173+14,Color(206,206,206),3) - draw.SimpleText("1 АВ","Metrostroi_PAM29",2,172, Color(140,140,140),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(3,172+14,15,172+14,Color(140,140,140),3) - draw.SimpleText("7 Лин","Metrostroi_PAM29",570+1,262+1, Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,262+14+1,583,262+14+1,Color(206,206,206),3) - draw.SimpleText("7 Лин","Metrostroi_PAM29",570,262, Color(140,140,140),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,262+14,583,262+14,Color(140,140,140),3) - for i=block and 1 or 0,0,-1 do - local blocked = i==0 and block - draw.SimpleText("2 КС","Metrostroi_PAM29",2+i,218+i, ((driveMode==2 or driveMode==4) and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(3,218+14+i,15,218+14+i,((driveMode==2 or driveMode==4) and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),3) - if ksd then - draw.SimpleText("3 ОС","Metrostroi_PAM29",2+i,264+i, ((driveMode==1 or driveMode==5) and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(3,264+14+i,15,264+14+i,((driveMode==1 or driveMode==5) and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),3) - end - draw.SimpleText("P Маш","Metrostroi_PAM29",2+i,305+i, blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(3,304+14+i,17,304+14+i,blocked and Color(140,140,140) or Color(206,206,206),3) - - - draw.SimpleText("4 СтП","Metrostroi_PAM29",570+i,170+i, blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,170+14+i,583,170+14+i,blocked and Color(140,140,140) or Color(206,206,206),3) - draw.SimpleText("6 Пож","Metrostroi_PAM29",570+i,216+i, (Train:GetNW2Bool("PAM:State5_-6") and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,216+14+i,583,216+14+i,(Train:GetNW2Bool("PAM:State5_-6") and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),3) - --draw.SimpleText("7 Лин","Metrostroi_PAM29",570+i,262+i, blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --Metrostroi.DrawLine(570,262+14+i,583,262+14+i,blocked and Color(140,140,140) or Color(206,206,206),3) - draw.SimpleText("8 Отм","Metrostroi_PAM29",570+i,308+i, blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,308+14+i,583,308+14+i,blocked and Color(140,140,140) or Color(206,206,206),3) - draw.SimpleText("9 ФСт","Metrostroi_PAM29",570+i,354+i, (mode == 3 and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(570,354+14+i,583,354+14+i,(mode == 3 and i==0) and Color(85,75,225) or blocked and Color(140,140,140) or Color(206,206,206),3) - end - if state==0 then - surface.SetDrawColor(192,192,192,255) - surface.DrawRect(0,119,636,248,0) - for i,text in pairs(menus) do - local color = i==3 and Color(113,113,113) or i==sel and Color(255,255,255) or Color(0,0,0) - - local x,y = 212*((i-1)%3),119+(math.ceil(i/3)-1)*62 - drawButton(x,y,212,62, i==sel and button_s or button) - if type(text)=="table" then - draw.SimpleText(text[1],"Metrostroi_PAM21",x+106+10,y+31-12, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(text[2],"Metrostroi_PAM21",x+106+10,y+31+12, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(text,"Metrostroi_PAM21",x+106+10,y+31, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if i<12 then - draw.SimpleText(i%10,"Metrostroi_PAM35",x+17,y+31, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(x+10,y+48,x+24,y+48,color,3) - end - end - end - if state==8 then - drawWindow(0,120, 640,241,"Зонный оборот") - local count = Train:GetNW2Int("PAM:ElemCount",0) - for i=1,math.min(9,Train:GetNW2String("PAM:ElemCount",0)) do - local selected = i==sel - local color = selected and Color(255,255,255) or Color(0,0,0) - - local x,y = 4+210*((i-1)%3),152+(math.ceil(i/3)-1)*50 - drawButton(x,y,210,50, selected and button_s or button) - local text = Train:GetNW2String("PAM:Elem"..i) - draw.SimpleText(text:sub(1,-2),selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24-10, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if text[#text]=="1" then - draw.SimpleText("(непр) оборот",selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24+10, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText("оборот",selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24+10, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - draw.SimpleText(i%10,"Metrostroi_PAM31",x+17,y+24, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(x+10,y+37,x+24,y+37,color,2) - --x+28+18*i Train:SetNW2String("PAM:Elem"..iS,id.."\t"..(name or id)) - end - buttonWTextC(4+210*1.5-145,152+3*50,140,50,"Да - Enter","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - buttonWTextC(4+210*1.5+5,152+3*50,140,50,"Нет - Esc","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - if Train:GetNW2Bool("PAM:ElemCountStart") then - buttonWTextC(4+210*0,152+3*50,80,50,"◄","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyLeft") and button_p or button) - end - if Train:GetNW2Bool("PAM:ElemCountEnd") then - buttonWTextC(4+210*3-80,152+3*50,80,50,"►","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyRight") and button_p or button) - end - end - if state==-8 then - drawWindow(0,120, 640,241,"Введенные запросы") - for i,text in pairs(menusReset) do - if Train:GetNW2Bool("PAM:State5_"..i) or i==11 then - local selected = i==sel - local disabled = i==5 or i==6 - local color = disabled and Color(113,113,113) or selected and Color(255,255,255) or Color(0,0,0) - - local x,y = 4+210*((i-1)%3),152+(math.ceil(i/3)-1)*50 - drawButton(x,y,209,49, selected and button_s or button) - if type(text)=="table" then - draw.SimpleText(text[1],selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24-10, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(text[2],selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24+10, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(text,selected and "Metrostroi_PAM20" or "Metrostroi_PAM21",x+106+10,y+24, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if i<11 and not disabled then - draw.SimpleText(i%10,"Metrostroi_PAM31",x+17,y+24, color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(x+10,y+37,x+24,y+37,color,2) - end - end - end - Metrostroi.DrawLine(4,202,640-8,202,Color(113,113,113),2) - Metrostroi.DrawLine(4,252,640-8,252,Color(113,113,113),2) - Metrostroi.DrawLine(4,302,640-8,302,Color(113,113,113),2) - Metrostroi.DrawLine(214,154,214,351,Color(113,113,113),2) - Metrostroi.DrawLine(424,154,424,351,Color(113,113,113),2) - end - if state==1 then - drawWindow(82,160, 484,180,"Режим проверки скатывания") - buttonWTextC(139,270,370,50,"Завершить скатывание (Esc)","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - local dist = Train:GetNW2Float("PAM:RollDist",0) - draw.SimpleText("Скатывание на","Metrostroi_PAM30",110,225, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(Format("%.2f",dist),"Metrostroi_PAM35",380,225, Color(0,0,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - - draw.SimpleText("м","Metrostroi_PAM30",395,225, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if dist >= 0 then - draw.SimpleText("вперед","Metrostroi_PAM30",440,225, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("назад","Metrostroi_PAM30",440,225, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - elseif state==9 then - local selected = Train:GetNW2String("PAM:Touching") ~= "" - local keyboard = Train:GetNW2Bool("PAM:Keyboard") - - drawWindow(keyboard and 82+130 or 82,145,keyboard and 484-(130-40) or 484,261,"Фиксация станции") - local sel = Train:GetNW2Int("PAM:Selected",1) - local xadd = keyboard and 1 or 0 - if keyboard then - draw.SimpleText("Станция","Metrostroi_PAM27",99+130,201, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Путь","Metrostroi_PAM27",99+130,201+39, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("Код станции","Metrostroi_PAM27",99,201, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Номер пути","Metrostroi_PAM27",99,201+39, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - drawTextBox(322+40*xadd,190+39*0,229,31,Train:GetNW2String("PAM:StationS",""),"Metrostroi_PAM30",not selected and sel == 1 and Color(79,252,246)) - drawTextBox(322+40*xadd,190+39*1,229,31,Train:GetNW2String("PAM:PathS",""),"Metrostroi_PAM30",not selected and sel == 2 and Color(79,252,246)) - local err = Train:GetNW2String("PAM:EnterError","") - if err ~= "" then draw.SimpleText(err,"Metrostroi_PAM30",325+xadd*90,275, Color(213,18,8),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - local currStation = Train:GetNW2String("PAM:CurrentStationS") - if currStation ~= "" then draw.SimpleText(currStation,"Metrostroi_PAM30",325+xadd*90,301, Color(0,165,13),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - buttonWTextC(190+xadd*39,320,75+xadd*65,50,"Ввод","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - buttonWTextC(288+xadd*(42+39+10),320,120+xadd*20,50,"Закрыть","Metrostroi_PAM30",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - - if Train:GetNW2Bool("PAM:KeyKeyB") or keyboard then drawButton(501+xadd*40,320,40,51, keyboard and button_p or button) end - surface.SetDrawColor(255,255,255) - surface.SetTexture(keyb_icon) - surface.DrawTexturedRect(505+xadd*40,314,32,64) - - if sel==1 then comboBox(Train,320+40*xadd,200+29*1) end - if keyboard then drawKeyboard(Train,10,47,selected) end - end - if stateAcc ~= 0 then - local text = acceptions[stateAcc] - surface.SetFont("Metrostroi_PAM21") - local y,x=21 - if type(text) == "table" then - x = surface.GetTextSize(text[1]) - y=42 - else x = surface.GetTextSize(text) end - drawWindow(320-x/2-36,240-72-16,x+72,128+y+16,"Подтверждение") - surface.SetTexture(question) - surface.DrawTexturedRect(296-x/2,200,32,32) - if type(text) == "table" then - draw.SimpleText(text[1],"Metrostroi_PAM21",336-x/2,210, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(text[2],"Metrostroi_PAM21",336-x/2,210+21, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(text,"Metrostroi_PAM21",336-x/2,210, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - buttonWTextC(194,219+y,120,50,"Да - Enter","Metrostroi_PAM21",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEnter") and button_p or button) - buttonWTextC(326,219+y,120,50,"Нет - Esc","Metrostroi_PAM21",Color(0,0,0), Train:GetNW2Bool("PAM:KeyEsc") and button_p or button) - end - - - drawText2(201,441,Format("%s = %s",driveModes[driveMode],KVModes[KVMode]),true) - - local VZ = Train:GetNW2Int("PAM:V",0) - if VZ > 0 then - drawText2(307,441,"В"..VZ,true) - elseif VZ==-1 then - drawText2(307,441,"ЭПК",true) - else - drawText2(307,441,"В",false) - end - - drawText2(386,441,"ЛПТ",Train:GetNW2Bool("PAM:LPT")) - local KD = Train:GetNW2Int("PAM:KD",2) - if KD == 2 then - drawText2(465,441,"КД",true,Color(213,15,15)) - elseif KD==1 then - drawText2(465-1,441-1,"КД",false,Color(238,129,31)) - else - drawText2(465,441,"КД",true,Color(0,0,0)) - end - - if ksd then - drawText2(320,467,"Зона ОПВ",Train:GetNW2Bool("PAM:OPV")) - else - drawText2(181.5,467,"АРС",Train:GetNW2Bool("PAM:KVARS")) - drawText2(273.5,467,"ПСР",false) - drawText2(365.5,467,"ВРД",Train:GetNW2Bool("PAM:VRD")) - drawText2(458,467,"ОПВ",Train:GetNW2Bool("PAM:OPV")) - end - end - local function drawBlink_(x,y) if CurTime()%0.4 > 0.2 then draw.SimpleText("_","Metrostroi_PAM30",x, y,Color(150,150,150),TEXT_ALIGN_LEFT,TEXT_ALIGN_BOTTOM) end end - local bios_splash = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/bios_splash") - local splash = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/splash") - local splash_egg = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/splash_egg") - function TRAIN_SYSTEM:PAMScreen(Train) - --surface.SetTexture(splash_egg) - --surface.SetDrawColor(255,255,255) - --surface.DrawTexturedRectRotated(512,256,1024,512,0) - - local state = Train:GetNW2Float("PAM:State",0) - - if state ~= 0 and state ~= -1 and state ~= -0.5 then - surface.SetDrawColor(50,50,50,100) - surface.DrawRect(0,0,640,480,0) - if state == -100 then stateDebug(Train) end - if state < 0 then - local time = Train:GetNW2Float("PAM:StartTimer",0) - if state == -2 then - if time > 0.4 then drawBlink_(620,440) else drawBlink_(5,20) end - end - if state == -3 then drawFrame(bios_splash) end - if state == -4 then - if time > 0.5 then drawBlink_(5,40) else drawBlink_(5,20) end - end - if state == -5 then drawFrame(splash) end - end - - if state == 1 then State1(Train) end - if state == 1.5 then State1_5(Train) end - if state == 2 then State2(Train) end - if state == 3 then State3(Train) end - if state == 3.5 then State35(Train) end - if state == 4 then State4(Train) end - if state == 5 then State5(Train) end - surface.SetDrawColor(0,0,0,150) - surface.DrawRect(0,0,640,480,0) - end - end - return -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "KSDMode" then self.PAKSD = value>0 end -end - -function TRAIN_SYSTEM:UpdateStationList(entered,id) - local Train = self.Train - if not entered or #entered < 1 or #entered > 2 then - Train:SetNW2Int("PAM:ElemCount",0) - self.ScrollCount = 0 - self.Scroll = 0 - return - end - local iS = 0 - if #entered < 3 then - local line = tonumber(entered[1]) - local tbl = Metrostroi.PAMStations[line] - if id then - if tbl then - for k,station in ipairs(tbl) do - if string.find(tostring(station.id),"^"..entered) then - if iS < 8+self.Scroll and iS >= self.Scroll and (iS+1-self.Scroll)==id then - return station.id - end - iS = iS + 1 - end - end - end - return - else - self.LineS = line - if tbl then - for k,station in ipairs(tbl) do - if string.find(tostring(station.id),"^"..entered) then - if iS < 8+self.Scroll and iS >= self.Scroll then - local id,name = station.id,station.name - Train:SetNW2String("PAM:Elem"..(iS+1-self.Scroll),id.."\t"..(name or id)) - end - iS = iS + 1 - end - end - end - end - end - Train:SetNW2Int("PAM:ElemCount",math.min(8,iS)) - self.ScrollCount = iS - self.Scroll = math.Clamp(self.Scroll,0,math.max(0,self.ScrollCount-8)) - --end -end -function TRAIN_SYSTEM:UpdateLastStationList() - local Train = self.Train - local iS = 0 - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - self.Scroll = math.Clamp(self.Scroll,0,math.max(0,math.ceil(((self.ScrollCount or 0)-9)/9)*9)) - self.DeadlockS = nil - local curr - if self.Mode==2 or self.Mode==3 and not self.Shunt then - for i,stat in ipairs(tbl[1].stations) do - if i<#tbl[1].stations then - if not curr and tostring(self.Station)==tostring(stat.id) then - curr=i - end - if curr and i>=curr and stat.isLast then - if iS < 9+self.Scroll and iS >= self.Scroll then - local id = (iS+1-self.Scroll) - Train:SetNW2String("PAM:Elem"..id,stat.name..(stat.isInWrong and 1 or 0)) - if self.Selected == id then self.DeadlockS = stat end - end - iS = iS + 1 - end - end - end - end - if self.Selected>0 and self.DeadlockS == nil then self.Selected = 0 end - Train:SetNW2Int("PAM:ElemCount",math.min(10,iS-self.Scroll)) - Train:SetNW2Bool("PAM:ElemCountStart",self.Scroll>=9) - Train:SetNW2Bool("PAM:ElemCountEnd",(iS-self.Scroll)>9) - self.ScrollCount = iS - self.Scroll = math.Clamp(self.Scroll,0,math.max(0,math.ceil((self.ScrollCount-9)/9)*9)) - --end -end -function TRAIN_SYSTEM:Trigger(name,value,press) - local Train = self.Train - Train:SetNW2Bool("PAM:Key"..name,value) - if press and value then - self.Train:PlayOnce("pa_"..name:lower(),"bass",1) - end - if name == "KeyB" and not value then self.Keyboard = not self.Keyboard end - if self.State == 1 and not value then - if name == "Esc" then - self.State = 1.5 - self:SetWaitTimer(0.1) - end - if name == "Enter" and self.GoodSetup and self.ReverserWrench then - self.State = 2 - self:SetWaitTimer(0.1) - self.Selected = 1 - - self.LineS = self.LineS or self.Line - self.PathS = self.PathS or self.Path - self.StationS = self.StationS or self.Station - self.RouteNumberS = self.RouteNumberS or self.RouteNumber - self.DriverNumberS = self.DriverNumberS or self.DriverNumber - - self.HaveRestart = #self.DriverNumber == 4 and #self.RouteNumber == 3 - and Metrostroi.PAMConfTest[self.Line] - and Metrostroi.PAMConfTest[self.Line][tonumber(self.Path)] - and Metrostroi.PAMStations[self.Line][tonumber(self.Station)] - Train:SetNW2Bool("PAM:HaveRestart",self.HaveRestart) - end - elseif self.State == 1.5 and name == "Esc" and not value then - self.State = 1 - self:SetWaitTimer(0.1) - elseif self.State == 2 then - if name == "Down" and value then - self.Selected = self.Selected < 4 and self.Selected+1 or 1 - if not self.HaveRestart and self.Selected == 2 then self.Selected = 3 end - end - if name == "Up" and value then - self.Selected = self.Selected > 1 and self.Selected-1 or 4 - if not self.HaveRestart and self.Selected == 2 then self.Selected = 1 end - end - if name == "1" and value then self.Selected = 1 end - if name == "2" and self.HaveRestart and value then self.Selected = 2 end - if name == "Esc" and value then self.Selected = 3 end - if name == "M" and value then self.Selected = 4 end - if (name == "Esc" or name == "Enter") and not value and self.Selected == 3 then - self.State = 1 - self:SetWaitTimer(0.1) - end - if (name == "1" or name == "Enter") and not value and self.Selected == 1 then - self.State = 3 - self.KeyboardX,self.KeyboardY = 22,47 - self:SetWaitTimer(0.1) - self.Selected = 1 - self.StationS = "" - self.PathS = "" - self.RouteNumberS = "" - self.DriverNumberS = "" - Train:SetNW2String("PAM:EnterError","") - end - if self.HaveRestart and (name == "2" or name == "Enter") and not value and self.Selected == 2 then - self.State = 3.5 - self.KeyboardX,self.KeyboardY = 22,47 - self:SetWaitTimer(0.1) - self.Selected = 1 - self.StationS = tostring(self.StationS) - self.PathS = tostring(self.PathS) - self.RouteNumberS = tostring(self.RouteNumberS) - self.DriverNumberS = tostring(self.DriverNumberS) - Train:SetNW2String("PAM:EnterError","") - end - if (name == "M" or name == "Enter") and not value and self.Selected == 4 then - self.State = 2 - self:SetWaitTimer(0.1) - end - elseif self.State == 3 then - if name == "Down" and value then self.Selected = self.Selected < 4 and self.Selected+1 or 1 end - if name == "Up" and value then self.Selected = self.Selected > 1 and self.Selected-1 or 4 end - local num = tonumber(name) - if num and value then - if self.Selected == 1 and #self.StationS < 3 then - self.StationS = self.StationS..num - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 and #self.PathS < #tostring(Metrostroi.LineCount) then self.PathS = self.PathS..num end - if self.Selected == 3 and #self.RouteNumberS < 3 then self.RouteNumberS = self.RouteNumberS..num end - if self.Selected == 4 and #self.DriverNumberS < 4 then self.DriverNumberS = self.DriverNumberS..num end - end - if name == "Left" and value then - if self.Selected == 1 then - self.StationS = self.StationS:sub(1,-2) - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 then self.PathS = self.Path:sub(1,-2) end - if self.Selected == 3 then self.RouteNumberS = self.RouteNumberS:sub(1,-2) end - if self.Selected == 4 then self.DriverNumberS = self.DriverNumberS:sub(1,-2) end - end - if name == "Esc" and not value then - self.State = 2 - self:SetWaitTimer(0.1) - end - if name == "Enter" and not value then - if #self.StationS < 3 or not Metrostroi.PAMStations[self.LineS] or not Metrostroi.PAMStations[self.LineS][tonumber(self.StationS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер станции") - elseif #self.PathS < #tostring(Metrostroi.LineCount) or not Metrostroi.PAMConfTest[self.LineS][tonumber(self.PathS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер пути") - elseif #self.RouteNumberS < 3 then - Train:SetNW2String("PAM:EnterError","Неверный номер маршрута") - elseif #self.DriverNumberS < 4 then - Train:SetNW2String("PAM:EnterError","Неверный табельный номер") - else - self.Line = self.LineS - self.Station = self.StationS - self.Path = self.PathS - self.RouteNumber = self.RouteNumberS - self.drivernumber = self.DriverNumberS - self.StationS = nil - self.PathS = nil - self.RouteNumberS = nil - self.DriverNumberS = nil - - self.State = 4 - self.CheckRing = true - self:SetWaitTimer(0.1) - self.StationTable,self.PrevStationTable = self:FindStation(self.Line,self.Path,self.Station) - self.LastStationTable = self:FindLastStation() - end - end - elseif self.State == 3.5 then - if name == "Down" and value then self.Selected = self.Selected < 2 and self.Selected+1 or 1 end - if name == "Up" and value then self.Selected = self.Selected > 1 and self.Selected-1 or 2 end - local num = tonumber(name) - if num and value then - if self.Selected == 1 and #self.StationS < 3 then - self.StationS = self.StationS..num - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 and #self.PathS < 1 then self.PathS = self.PathS..num end - end - if name == "Left" and value then - if self.Selected == 1 then - self.StationS = self.StationS:sub(1,-2) - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 then self.PathS = self.PathS:sub(1,-2) end - end - if name == "Esc" and not value then - self.State = 2 - self:SetWaitTimer(0.1) - end - if name == "Enter" and not value then - if #self.StationS < 3 or not Metrostroi.PAMStations[self.LineS] or not Metrostroi.PAMStations[self.LineS][tonumber(self.StationS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер станции") - elseif #self.Path < #tostring(Metrostroi.LineCount) or not Metrostroi.PAMConfTest[self.Line][tonumber(self.PathS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер пути") - else - self.Station = self.StationS - self.Path = self.PathS - self.StationS = nil - self.PathS = nil - - self.State = 5 - self.EPKActive = true - self.ControlMode = 2 - self:SetWaitTimer(0.1) - self.Mode = 1--Выход на линию - self.Distance = 1000 - self.StationTable,self.PrevStationTable = self:FindStation(self.Line,self.Path,self.Station) - self.LastStationTable = self:FindLastStation() - self.SensorError = false - end - end - elseif self.State == 4 and not self.CheckRing and not self.Stopping and name == "Enter" and not value then - self.State = 5 - self.EPKActive = 1 - self.ControlMode = 2 - self:SetWaitTimer(0.1) - self.Mode = 1--Выход на линию - self.Distance = 1000 - self.SensorError = false - elseif self.State == 5 then - local char = tonumber(name) - --if char and not value and self.Selected == char then self.State5 = char+1 end - if self.State5Accept then - local PAM_VV = Train.PAM_VV - if name == "Enter" and not value then - if self.State5Accept == 2 then - self.NoKD = true - self:Message(1) - elseif self.State5Accept == 4 then - if self.Mode == 2 or self.Mode == 3 then - self.Transit = true - self:Message(13) - else - self:Message(14) - end - elseif self.State5Accept == 5 and self.ZeroStopped then - self.Vd0 = true - self:Message(4) - elseif self.State5Accept == 6 then - if self.Speed<2.5 and (PAM_VV.LPT>0 or self.NoLPT or PAM_VV.V1>0) then - self.OpenDoors = true - self:Message(6) - else - self.OpenDoors = false - self:Message(7) - end - elseif self.State5Accept == -6 then - local prev = self:FindPrevStation() - if self.StationTable and self.StationTable~=prev and self.Speed<0.2 then - self.FireBack = prev - self:Message(16) - else - self.FireBack = false - self:Message(17) - end - elseif self.State5Accept == -1 then - --AV - elseif self.State5Accept == -2 then - if PAM_VV.KSOT == 0 or not self.ControlMode2 then - self:Error(24,true,7,true) - self:Message(19) - else - self.ControlMode=2 - self.ControlModeAuto = false - self:Message(18) - end - elseif self.State5Accept == -3 then - self.ControlMode=1 - self.ControlModeAuto = false - self:Message(20) - elseif self.State5Accept == -4 then - if self.Speed<0.2 and (self.StationTable.isLast or self.StationTable.hasSwitches) then - self:Message(5) - self.Shunt = true - else - self:Message(3) - end - elseif self.State5Accept == 7 then - self.NoLPT = true - self:Message(8) - elseif self.State5Accept == 12 then - self.NoKD = false - self:Message(2) - elseif self.State5Accept == 14 then - self.Transit = false - self:Message(15) - elseif self.State5Accept == 15 then self.Vd0 = false - elseif self.State5Accept == 16 then self.OpenDoors = false - elseif self.State5Accept == 17 then - self.NoLPT = false - self:Message(9) - elseif self.State5Accept == 18 then - self.Deadlock = nil - self:Message(12) - else - self.State5 = self.State5Accept - if self.State5 == 8 then - self.Selected = 0 - self.Scroll = 0 - self:UpdateLastStationList() - end - end - self.State5Accept = nil - end - if name == "Esc" and not value then self.State5 = nil self.State5Accept = nil end - elseif self.State5 == 0 then - if char and value and char ~= 3 then self.Selected = char end - if char and not value and char==self.Selected then - self.State5 = nil - if char == 9 then - self:Trigger("9",true) - self:Trigger("9",false) - else - self.State5Accept = char - end - end - if name == "Esc" and value then self.Selected = 12 end - if name == "Esc" and not value and self.Selected == 12 then self.State5 = nil end - elseif self.State5 == 8 then - if name == "Esc" and not value then - self.State5 = nil - self.DeadlockS = nil - end - if name == "Enter" and not value then - self.State5 = nil - if true or not self.Transit then - self.Deadlock = self.DeadlockS - self:Message(10) - else - self:Message(11) - end - end - if (name == "Left" or name == "Right") and not value then - self.Scroll = name == "Right" and self.Scroll+9 or math.max(self.Scroll-9,0) - self.Selected = 0 - self:UpdateLastStationList() - end - if char and value then - self.Selected = char - self:UpdateLastStationList() - end - elseif self.State5 == -8 then - local charAccept = char and Train:GetNW2Bool("PAM:State5_"..char) - if charAccept and value and (char~=5 and char~=6) then self.Selected = char end - if charAccept and not value and char==self.Selected then - self.State5 = nil - self.State5Accept = 10+char - end - if name == "Esc" and value then self.Selected = 11 end - if name == "Esc" and not value and self.Selected == 11 then self.State5 = nil end - elseif self.State5 == 1 then - if name == "Esc" and not value then - self.State5 = nil - Train:SetNW2Float("PAM:RollDist",0) - end - elseif self.State5 == 9 then - if name == "Down" and value then self.Selected = self.Selected < 2 and self.Selected+1 or 1 end - if name == "Up" and value then self.Selected = self.Selected > 1 and self.Selected-1 or 2 end - local num = tonumber(name) - if num and value then - if self.Selected == 1 and #self.StationS < 3 then - self.StationS = self.StationS..num - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 and #self.PathS < 1 then self.PathS = self.PathS..num end - end - if name == "Left" and value then - if self.Selected == 1 then - self.StationS = self.StationS:sub(1,-2) - self.Scroll = 0 - self:UpdateStationList(self.StationS) - end - if self.Selected == 2 then self.PathS = self.PathS:sub(1,-2) end - end - if name == "Esc" and not value then - self.State5 = nil - end - if name == "Enter" and not value then - if #self.StationS < 3 or not Metrostroi.PAMStations[self.Line] or not Metrostroi.PAMStations[self.Line][tonumber(self.StationS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер станции") - elseif #self.Path < #tostring(Metrostroi.LineCount) or not Metrostroi.PAMConfTest[self.Line][tonumber(self.PathS)] then - Train:SetNW2String("PAM:EnterError","Неверный номер пути") - else - if self.Speed < 2.5 then - self.Station = self.StationS - self.Path = self.PathS - self.StationTable,self.PrevStationTable = self:FindStation(self.Line,self.Path,self.Station) - self.LastStationTable = self:FindLastStation() - self.Distance = self.StationTable.pos+0.001 - self.Mode = 3 - self.SensorError = false - self:FindSensor(self.Distance,true) - self.Transit = false - self.FireBack = false - self.Shunt = false - self.AntiMiss = false - end - self.StationS = nil - self.PathS = nil - self.State5 = nil - end - end - else - if name == "F" and value then - self.State5 = 0 - self.Selected = 1 - end - - --if name == "1" and value then self.State5Accept=-1 end - if name == "2" and value then self.State5Accept=-2 end - if name == "3" and value then self.State5Accept=-3 end - if name == "4" and value then self.State5Accept=-4 end - if name == "6" and value then self.State5Accept=-6 end - --if name == "7" and value then self.State5Accept=-7 end - if name == "8" and value then self.State5=-8 self.Selected = 0 end - if name == "9" and value then - self.State5=9 - self.Selected = 1 - self.StationS = ""--tostring(self.Station) - self.PathS = ""--tostring(self.Path) - self.KeyboardX,self.KeyboardY = 10,47 - Train:SetNW2String("PAM:EnterError","") - self:UpdateStationList(self.StationS) - end - end - end -end -local keys = { - "P", - "F" , "Up" , "M", - "Left","Down","Right", - "1" , "2" , "3", - "4" , "5" , "6", - "7" , "8" , "9", - "Esc" , "0" ,"Enter", -} -local acceptions = { - [-7] = 1, - [-6] = 1, - [-4] = 2, - [-3] = 1, - [-2] = 1, - [-1] = 1, - 1,1,1,1,1,1,1,1, - [11]=1, - [12]=1, - [13]=1, - [14]=1, - [15]=1, - [16]=2, - [17]=1, - [18]=1, -} -local acceptionsReset = { - 1,1,1,1,1,2,1,1, -} -function TRAIN_SYSTEM:Touch(value,x,y) - local Train = self.Train - Train:SetNW2String("PAM:Touching","") - if self.Keyboard and (self.State==3 or self.State==3.5 or self.State==5 and self.State5==9) then - for i,keyName in ipairs(keys) do - local key = i+1 - local xp = key%3 - local yp = math.floor(key/3) - if math.InRangeXYR(x,y,self.KeyboardX+5+60*xp,self.KeyboardY+33+49*yp,60,49) then - self.Touches[keyName] = true - Train:SetNW2String("PAM:LastToucn",keyName) - if value then Train:SetNW2String("PAM:Touching",keyName) end - break - end - end - end - if not value then - for k in pairs(self.Touches) do self.Touches[k] = false end - return - end - if self.State == 1 then - if value and math.InRangeXYR(x,y,542,self.ReverserWrench and 316 or 352,77,51) then self.Touches["Esc"] = true return end - if value and math.InRangeXYR(x,y,265,410,110,51) then self.Touches["Enter"] = true return end - elseif self.State == 1.5 then - if value and math.InRangeXYR(x,y,238,408,164,51) then self.Touches["Esc"] = true return end - elseif self.State == 2 then - if math.InRangeXYR(x,y,320-298,121+59*0,596,50) then self.Touches["1"] = true return end - if math.InRangeXYR(x,y,320-298,121+59*1,596,50) then self.Touches["2"] = true return end - if math.InRangeXYR(x,y,320-298,121+59*2,596,50) then self.Touches["Esc"] = true return end - if math.InRangeXYR(x,y,320-298,121+59*4+10,596,50) then self.Touches["M"] = true return end - elseif self.State == 3 or self.State == 3.5 then - if self.Selected==1 and self.ScrollCount and self.ScrollCount > 0 then - local xa,ya = 374,103+35*1 - if math.InRangeXYR(x,y,xa+219,ya+5,31,15) or math.InRangeXYR(x,y,xa+219,ya+128,31,14) then - self.Scroll = math.max(self.Scroll-1,0) - self:UpdateStationList(self.StationS) - return - elseif math.InRangeXYR(x,y,xa+219,ya+143,31,14) then - self.Scroll = math.Clamp(self.Scroll+1,0,math.max(0,self.ScrollCount-8)) - self:UpdateStationList(self.StationS) - return - end - - for i=1,math.min(8,self.ScrollCount) do - if math.InRangeXYR(x,y,xa+13,ya+27-10+18*(i-1)-9,200,17) then - local st = self:UpdateStationList(self.StationS,i) - self.StationS = st and tostring(st) or self.StationS - self:UpdateStationList(self.StationS) - return - end - end - else - for i=0,self.State==3.5 and 1 or 3 do - if math.InRangeXYR(x,y,374,103+35*i,210,35) then self.Selected = i+1 return end - end - end - if self.Keyboard then - if math.InRangeXYR(x,y,156+127,369,120,51) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,286+127,369,120,51) then self.Touches["Esc"] = true return end - if math.InRangeXYR(x,y,443+100,369,40,51) then self.Touches["KeyB"] = true return end - else - if math.InRangeXYR(x,y,156,369,120,51) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,286,369,120,51) then self.Touches["Esc"] = true return end - if math.InRangeXYR(x,y,443,369,40,51) then self.Touches["KeyB"] = true return end - end - elseif self.State == 4 and math.InRangeXYR(x,y,320-19,278,76,38) then - self.Touches["Enter"] = true - return - elseif self.State == 5 then - if self.State5Accept and self.State5Accept ~= 0 then - local ya = acceptions[self.State5Accept]*21 - if math.InRangeXYR(x,y,194,219+ya,120,50) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,326,219+ya,120,50) then self.Touches["Esc"] = true return end - elseif self.State5==0 then - for i=1,10 do - if i==10 then i=12 end - if math.InRangeXYR(x,y,212*((i-1)%3),119+(math.ceil(i/3)-1)*62,212,62) then - if i==12 then - self.Touches["Esc"] = true - return - else - self.Touches[tostring(i%10)] = true - return - end - end - end - elseif self.State5==-8 then - for i=1,9 do - if i==9 then i=11 end - if math.InRangeXYR(x,y,4+210*((i-1)%3),152+(math.ceil(i/3)-1)*50,209,49) then - if i==11 then - self.Touches["Esc"] = true - return - else - self.Touches[tostring(i%10)] = true - return - end - end - end - elseif self.State5 == 1 then - if math.InRangeXYR(x,y,139,270,370,50) then self.Touches["Esc"] = true return end - elseif self.State5 == 8 then - if self.ScrollCount and self.ScrollCount > 0 then - for i=1,math.min(9,Train:GetNW2String("PAM:ElemCount",0)) do - if math.InRangeXYR(x,y,4+210*((i-1)%3),152+(math.ceil(i/3)-1)*50,210,50) then self.Touches[tostring(i)] = true return end - end - if math.InRangeXYR(x,y,4+210*0,152+3*50,80,50) then self.Touches["Left"] = true return end - if math.InRangeXYR(x,y,4+210*3-80,152+3*50,80,50) then self.Touches["Right"] = true return end - end - if math.InRangeXYR(x,y,4+210*1.5-145,152+3*50,140,50) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,4+210*1.5+5,152+3*50,140,50) then self.Touches["Esc"] = true return end - elseif self.State5 == 9 then - if self.Selected==1 and self.ScrollCount and self.ScrollCount > 0 then - local xa,ya = 320+40*(self.Keyboard and 1 or 0),229 - if math.InRangeXYR(x,y,xa+219,ya+5,31,15) or math.InRangeXYR(x,y,xa+219,ya+128,31,14) then - self.Scroll = math.max(self.Scroll-1,0) - self:UpdateStationList(self.StationS) - return - elseif math.InRangeXYR(x,y,xa+219,ya+143,31,14) then - self.Scroll = math.Clamp(self.Scroll+1,0,self.ScrollCount-8) - self:UpdateStationList(self.StationS) - return - end - - for i=1,math.min(8,self.ScrollCount) do - if math.InRangeXYR(x,y,xa+13,ya+27-10+18*(i-1)-9,200,17) then - local st = self:UpdateStationList(self.StationS,i) - self.StationS = st and tostring(st) or self.StationS - self:UpdateStationList(self.StationS) - return - end - end - else - for i=0,1 do - if math.InRangeXYR(x,y,322+40*(self.Keyboard and 1 or 0),190+39*i,229,31) then self.Selected = i+1 return end - end - end - if self.Keyboard then - if math.InRangeXYR(x,y,190+1*39,320,75+1*65,50) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,288+1*(42+39+10),320,120+1*20,50) then self.Touches["Esc"] = true return end - if math.InRangeXYR(x,y,501+1*40,320,40,51) then self.Touches["KeyB"] = true return end - else - if math.InRangeXYR(x,y,190+0*39,320,75+0*65,50) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,288+0*(42+39+10),320,120+0*20,50) then self.Touches["Esc"] = true return end - if math.InRangeXYR(x,y,501+0*40,320,40,51) then self.Touches["KeyB"] = true return end - end - else - if math.InRangeXYR(x,y,0,429,136,51) then self.Touches["F"] = true return end - if math.InRangeXYR(x,y,3,289,80,35) then self.Touches["P"] = true return end - - for i=0,2 do - if math.InRangeXYR(x,y,2,157+i*46,70,35) then self.Touches[tostring(i+1)] = true end - end - for i=0,4 do - if math.InRangeXYR(x,y,570,155+i*46,70,35) then self.Touches[i==0 and "4" or tostring(i+5)] = true end - end - end - end -end - -TRAIN_SYSTEM.DriveModesConv = { - AT = -4, - AT1 = -4, - VPR = -3, - ST = -2, - OXT = -1, - OD = 0, - X1 = 1, - X2 = 2, - X3 = 3, -} -TRAIN_SYSTEM.DriveModes = { - --Priority 2 3 8 017 19 20 20X 25 025 33 033 33G - X3 = {1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - X2 = {2, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - X1 = {3, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - OD = {4, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0}, - OXT = {5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0}, - ST = {6, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1}, - VPR = {7, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1}, - AT1 = {8, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1}, - AT = {9, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - Zero = {10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, -} -function TRAIN_SYSTEM:SetDriveMode(curMode,override) - local mode = self.DriveModes[curMode] - if mode and mode[1] > self.CurrentDriveModePriority then - self.CurrentDriveMode = mode - self.CurrentDriveModePriority = mode[1] - self.DriveMode = curMode - end -end -TRAIN_SYSTEM.PneumoModes = { - --Priority 39 48 - NT = {1, 0, 0,}, - V1 = {2, 0, 1,}, - V2 = {3, 1, 0,}, - V12 = {4, 1, 1,}, -} -function TRAIN_SYSTEM:SetDoorMode(curMode,override) - local mode = self.DoorModes[curMode] - self.CurrentDoorMode = mode - self.DoorMode = curMode -end -TRAIN_SYSTEM.DoorModes = { - -- 16 31 32 - ZD = {1, 0, 0,}, - DL = {0, 1, 0,}, - DP = {0, 0, 1,}, - DO = {0, 0, 0,}, -} -function TRAIN_SYSTEM:SetPneumoMode(curMode,override) - if self.CurrentPneumoModePriority==2 and curMode=="V2" then - curMode = "V12" - end - if self.CurrentPneumoModePriority==3 and curMode=="V1" then - curMode = "V12" - end - local mode = self.PneumoModes[curMode] - if mode and (override or mode[1] > self.CurrentPneumoModePriority) then - self.CurrentPneumoMode = mode - self.CurrentPneumoModePriority = mode[1] - self.PneumoMode = curMode - end -end - -function TRAIN_SYSTEM:TriggerSensor(coil,plate) - if self.SensorEnabled then - --self.Distance = plate.TrackX - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - if self.Mode == 1 then - --Ищем позицию нашей станции - --[[ local pos - for i,stat in ipairs(tbl[1].stations) do - if stat.id == tonumber(self.Station) then - pos = stat.pos - break - end - end--]] - --Ищем ближайший датчик на станции в районе 200м - --[[ for i,sensor in ipairs(tbl[1].sensors) do - if pos-sensor<200 then - sensorDist = sensor - break - end - end--]] - self:FindSensor(self.StationTable.linkedSensor or false) - if self.NextSensorDist then - --print(Format("SENSOR: New pos: %.2fm",self.NextSensorDist)) - self.Distance = self.NextSensorDist - self.SensorError = false - self.Mode = 2 - self.LastStationTable = self:FindLastStation() - self:FindSensor() - --else - --print(Format("SENSOR: Error! Can't find good detector near station %s",self.Station)) - end - self.AlwaysSensor = false - else - --Ищем ближайший сенсор от нас для коррекции пути - --[[ local nearest,sensorDist - for i,sensor in ipairs(tbl[1].sensors) do - if not nearest or math.abs(sensor-self.Distance) dist then - self.NextSensor = i - break - end - end - elseif sens~=nil then - self.NextSensor = sens - else - self.NextSensor = self.NextSensor + 1 - end - self.NextSensorDist = tbl[1].sensors[self.NextSensor] -end - -function TRAIN_SYSTEM:FindNextSignal() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - for i,sig in ipairs(tbl[1].signals) do - if sig[2] > dist then - return sig[1] - end - end -end - -function TRAIN_SYSTEM:FindNextSlope() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return 0 end - local stbl = tbl[1].slopes - if not stbl then return 0 end - for i,slp in ipairs(stbl) do - if slp[2] > dist then - return stbl[i-1] and stbl[i-1][1] or 0 - end - end -end - -function TRAIN_SYSTEM:FindNextStation() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - for i,stat in ipairs(tbl[1].stations) do - if stat.pos-10 > dist then - return stat,tbl[1].stations[i-1] - end - end -end -function TRAIN_SYSTEM:FindPrevStation() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - for i,stat in ipairs(tbl[1].stations) do - if stat.pos+120 > dist then - return stat - end - end -end -function TRAIN_SYSTEM:FindStation(line,path,stationIndex) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][tonumber(path) or 1] - if not tbl then return end - for i,v in ipairs(tbl[1].stations) do - if v.id == tonumber(stationIndex) then return v,tbl[1].stations[i-1] end - end - return station and station.id -end -function TRAIN_SYSTEM:FindFirstStation() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - return tbl[1].stations[1] -end -function TRAIN_SYSTEM:FindLastStation() - local dist = self.Distance - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if not tbl then return end - return tbl[1].stations[#tbl[1].stations] -end -function TRAIN_SYSTEM:Message(id) - self.CurrentMessage = id - self.MessageTimer = CurTime() -end -local errorsRing = { - true ,true ,nil ,false,nil ,nil ,true ,true , - true ,nil ,nil ,nil ,false,nil ,false,nil , - nil ,nil ,nil ,nil ,nil ,true ,nil ,false, - nil ,nil ,false,nil ,nil ,false,nil ,nil , -} -function TRAIN_SYSTEM:Error(id,state,time,removeOnTimer) - if (state or removeOnTimer and self.ErrorTimers[id] and CurTime()-self.ErrorTimers[id]0 then - if self.State<4 and back.State==4 then self.State = 4 end - if self.State<5 and back.State>=5 then self.EPKActive = 1 self.State = 5 self.ControlMode = 2 end - if self.State==5 then - self.Line = back.Line - self.Path = back.Path=="2" and "1" or "2" - self.RouteNumber = back.RouteNumber - self.DriverNumber = back.DriverNumber - self.Deadlock = self.Mode==4 and self.Deadlock or nil - self.Shunt = back.Shunt - if self.Station ~= back.Station or not self.BackRR or self.BackMode~=back.Mode then - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - for k,v in ipairs(tbl[1].stations) do - if v.id == tonumber(back.Station) then - self.Station = back.Station - self.StationTable = v - self.Distance = v.pos - self.PrevStationTable = tbl[1].stations[k-1] - self.LastStationTable = self:FindLastStation() - self.AlwaysSensor = true - self:FindSensor(self.StationTable.linkedSensor or false) - self.AddDistance = 100+math.random()*50 - end - end - self.BackMode = back.Mode - end - if back.Deadlock and not self.Deadlock then - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - for k,v in ipairs(tbl[1].stations) do - if back.Deadlock and v.id == back.Deadlock and tonumber(back.Station) == back.Deadlock and not self.StationTable.isInWrong then - self.Deadlock = v - self.Mode = 4 - self.AddDistance = false - end - end - end - if back.Mode<=4 and not self.Deadlock then - self.Mode = math.min(2,back.Mode) - --[[ elseif back.Mode==3 and self.StationTable and self.StationTable.isInWrong and self.Deadlock then - self.Mode = 2 - self.Deadlock = nil--]] - end - if (back.Mode==5 or back.Mode==1) and self.Mode~=1 then - self.Mode = 1 - self.Distance = 1000 - self.StationTable,self.PrevStationTable = self:FindStation(self.Line,self.Path,self.Station) - self.LastStationTable = self:FindLastStation() - self.SensorError = false - end - if back.Mode==6 then - self.Mode = 6 - self.Shunt = false - self.StationTable,self.PrevStationTable = self:FindStation(self.Line,self.Path,self.Station) - self.LastStationTable = self:FindLastStation() - end - end - end - self.BackRR = back and back.RR - end - -end -function TRAIN_SYSTEM:CANWrite(name,value,number) - if self.State == 0 then return end - if self.CANIgnore and CurTime()-self.CANIgnore < 1 then return end - local source = self.Train:GetWagonNumber() - self.Train:CANWrite("PAM",source,"PAM",number,name,value) -end -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - if Train.Electric.Type < 4 then return end - self.OldDriveModePriority = self.CurrentDriveModePriority or 0 - self.CurrentDriveModePriority = 0 - self.CurrentPneumoModePriority = 0 - - local PAM_VV = Train.PAM_VV - local Power = PAM_VV.Power > 0 - local ALS = Train.ALSCoil - local BackReverser = PAM_VV.KRR2 > 0 - local BackActive = PAM_VV.KRR1 > 0 - local RR = (PAM_VV.KRR > 0 or PAM_VV.KRU > 0) and not BackActive - if RR and self.AddDistance then - if not self.Deadlock then self.Distance = self.Distance-self.AddDistance end - self.AddDistance = false - end - if Power and self.State == 0 then - self.State = -0.5 - self.StartTimer = CurTime() - end - if not Power and self.State ~= 0 then - self.State = 0 - for k,v in pairs(self.TriggerNames) do - self.Triggers[v] = false - self.Touches[v:sub(4,-1)] = false - end - self.BackCheckTimer = false - self.BackPA = nil - end - if self.State == -0.5 and CurTime()-self.StartTimer > 0.05 then self.State = -1 self.StartTimer = CurTime() end - if self.State == -1 and CurTime()-self.StartTimer > 5 then self.State = -2 self.StartTimer = CurTime() self:SetWaitTimer(0.2) end - if self.State == -2 and CurTime()-self.StartTimer > 0.8 then self.State = -3 self.StartTimer = CurTime() self:SetWaitTimer(1) end - if self.State == -3 and CurTime()-self.StartTimer > 3 then self.State = -4 self.StartTimer = CurTime() end - if self.State == -4 and CurTime()-self.StartTimer > 2 then self.State = -5 self.StartTimer = CurTime() self:SetWaitTimer(1) end - if self.State == -4 and CurTime()-self.StartTimer > 2 then self.State = -5 self.StartTimer = CurTime() self:SetWaitTimer(1) end - if self.State == -5 and CurTime()-self.StartTimer > 5 then self.State = 1 self.StartTimer = CurTime() self:SetWaitTimer(0.2) end - if self.ChangeTimer and CurTime()-self.ChangeTimer > 0 then self.ChangeTimer = nil end - - local ALSOn = (self.State>0 and RR) and 1 or 0 - if self.PAKSD and ALSOn ~= ALS.Enabled then - ALS:TriggerInput("Enable",ALSOn) - end - - self.Speed = ALS.Speed--math.Round(ALS.Speed or 0,1) - local speed = self.Speed - local speedMpS = speed/3600*1000 - local speedMpSSigned = speedMpS*ALS.SpeedSign - local accel = ALS.Acceleration - if self.State > 0 or self.State<-3 then - for k,v in pairs(self.TriggerNames) do - local name = v:sub(4,-1) - local val = Train[v].Value > 0.5 - if (self.Touches[name] or val) ~= self.Triggers[v] then - self.Triggers[v] = self.Touches[name] or val - self:Trigger(name,self.Triggers[v],val == self.Triggers[v]) - end - end - if (not self.BackCheckTimer or CurTime()-self.BackCheckTimer > 1) then - self:CANWrite("Check") - self.BackCheckTimer = CurTime() - end - if self.BackPA and CurTime()-self.BackPA.LastAnswer > 2 then - self.BackPA = nil - end - - local ALSSh = (1-Train.ALS.Value)*Train.VRD.Value --ALS Shunt - local Vd = -1 - if ALS.F5*(1-ALSSh) > 0 then Vd = 0 end - if ALS.F4*(1-ALSSh) > 0 then Vd = 40 end - if ALS.F3*(1-ALSSh) > 0 then Vd = 60 end - if ALS.F2*(1-ALSSh) > 0 then Vd = 70 end - if ALS.F1*(1-ALSSh) > 0 then Vd = 80 end - if Vd ~= self.SpeedLimit then - if Vd == -1 and not self.FQChagneTimer then - self.FQChagneTimer = CurTime() - end - if Vd ~= -1 or self.FQChagneTimer and (speedMpS <= 0.1 and CurTime()-self.FQChagneTimer > 2.5 or speedMpS >= 0.1 and CurTime()-self.FQChagneTimer > 0.8) then - self.SpeedLimit = Vd - self.FQChagneTimer = nil - end - end - if self.PAKSD then --ALS outputs for KSD - self.F5 = self.SpeedLimit==0 and 1 or 0 - self.F4 = self.SpeedLimit==40 and 1 or 0 - self.F3 = self.SpeedLimit==60 and 1 or 0 - self.F2 = self.SpeedLimit==70 and 1 or 0 - self.F1 = self.SpeedLimit==80 and 1 or 0 - self.F6 = self.SpeedLimit>-1 and ALS.F6 or 0 - end - self.NoFreq = self.SpeedLimit==-1 and 1 or 0 - elseif self.State==-0.5 then - self.NoFreq = 1 - self.F6 = 1 - self.F5 = 1 - self.F4 = 1 - self.F3 = 1 - self.F2 = 1 - self.F1 = 1 - else - self.NoFreq = 0 - self.F6 = 0 - self.F5 = 0 - self.F4 = 0 - self.F3 = 0 - self.F2 = 0 - self.F1 = 0 - end - Train:SetNW2Float("PAM:State",self.ChangeTimer and -10 or self.State) - if self.StartTimer then Train:SetNW2Float("PAM:StartTimer",CurTime()-self.StartTimer) end - - --if self.WorkTimer and CurTime()- self.WorkTimer < 0.1 then return end - --self.WorkTimer = CurTime() --CHECK - local Ring = false - if self.State > 0 then - self.GoodSetup = Metrostroi.PAMConfTest ~= nil - self.ReverserWrench = PAM_VV.KRR > 0 - self.CurrentError = 0 - - if self.State == 1 or self.State == 1.5 then - Train:SetNW2Bool("PAM:GoodTest",true) - Train:SetNW2Bool("PAM:GoodSetup",self.GoodSetup) - Train:SetNW2Int("PAM:GoodBack",self.BackPA~=nil and (self.BackPA.state.Errors and -1 or 1) or 0 ) - - end - if self.State == 3 then - Train:SetNW2String("PAM:RouteNumber",self.RouteNumberS) - Train:SetNW2String("PAM:DriverNumber",self.DriverNumberS) - end - if self.State == 3 or self.State == 3.5 or self.State==5 and self.State5 == 9 then - if self.StationS ~= "" then - local st = self:FindStation(self.LineS,self.PathS,self.StationS) - Train:SetNW2String("PAM:CurrentStationS",st and (st.name or st.id) or "") - else - Train:SetNW2String("PAM:CurrentStationS", "") - end - Train:SetNW2String("PAM:StationS",self.StationS) - Train:SetNW2String("PAM:LineS",self.LineS) - Train:SetNW2String("PAM:PathS",self.PathS) - end - if self.State < 4 then - self:SetDriveMode("OXT") - self:SetDoorMode("DO") - self:SetPneumoMode("NT") - self["7GA"] = 0 - --[[ if PAM_VV.KB==0 then - self:SetPneumoMode("V2") - else - self:SetPneumoMode("NT") - end--]] - self.SensorEnabled = false - if (not self.ReverserWrench or not self.GoodSetup) and self.State >= 2 then - self.State = 1 - self:SetWaitTimer(0.1) - end - else - self["7GA"] = PAM_VV.KSOT+PAM_VV.KB - end - if self.State == 4 then - self.SensorEnabled = false - if self.CheckRing and PAM_VV.KB > 0 then self.CheckRing = false end - Ring = self.CheckRing - - - if RR and PAM_VV.KDL > 0 or PAM_VV.KDP > 0 then - self:SetDoorMode(PAM_VV.KDP>0 and "DP"or "DL") - else - self:SetDoorMode("DO") - end - if RR and speed>0.2 then self.Stopping = true end - if RR and speed<=0.2 and PAM_VV.KGR>0 and PAM_VV.KB>0 then self.Stopping = false end - if RR and self.Stopping then - self:SetDriveMode("AT") - self:SetPneumoMode("V2") - else - self:SetDriveMode("OD") - self:SetPneumoMode("NT") - end - else - self.Stopping = false - end - - - if self.State == 5 then - self:Error(17,not RR and not BackActive) - self:Error(19,BackActive) - --Distance count - if not self.Distance then self.Distance = self.StationTable and self.StationTable.pos or 0 end - if self.Mode > 1 and self.Mode~=6 then - local pos = Metrostroi.TrainPositions[Train];pos = pos and pos[1] - local delta = speedMpS*dT - if pos and pos.path ~= self.OldPath then - self.OldPath = pos.path - self.OldPos = pos.x+Train.PosX - delta = speedMpS*dT - elseif pos then - local x = pos.x+Train.PosX - delta = (x-self.OldPos)*(Metrostroi.TrainDirections[Train] and 1 or -1) - self.OldPos = x - end - self.Distance = self.Distance + delta - end - --Drive block after drive reset - if self.OldDriveModePriority>4 and PAM_VV.KGR==0 then - self:SetDriveMode("OXT") - else - self:SetDriveMode("OD") - end - self:SetDoorMode("DO") - if not RR and not BackActive then - self:SetPneumoMode("V1") - else - self:SetPneumoMode("NT") - end - - if (self.Mode~=2 and self.Mode~=3) or self.NextSensorDist and math.abs(self.Distance-self.NextSensorDist)<=20 or self.AlwaysSensor then - self.SensorEnabled =true - elseif self.SensorEnabled then - if self.Mode==2 and self.SensorError==nil then - self.SensorError = true - end - self.SensorEnabled = nil - end - - local stationLast = "" - local station = "" - local signal = "" - local slope = 0 - local dist = 1337 - local opv = false - if self.Mode == 1 then - stationLast = "выход на линию" - if self.StationTable then station = self.StationTable.name end - elseif self.Mode == 2 or self.Mode == 3 then - local lasttbl = self.Deadlock or self.LastStationTable - if self.Mode == 3 and lasttbl and lasttbl.id==self.StationTable.id then - stationLast = "оборот" - else - stationLast = lasttbl and lasttbl.name_last or "?" - end - dist = self.StationTable.pos-self.Distance - station = self.StationTable.name - signal = self:FindNextSignal() - slope = self:FindNextSlope() - if self.PrevStationTable then - local dist = self.PrevStationTable.pos-self.Distance - local opvDist = self.PrevStationTable.isHorlift and 0.45 or 3 - opv = -opvDist < dist and dist < opvDist - end - if not opv then - local opvDist = self.StationTable.isHorlift and 0.45 or 3 - opv = -opvDist < dist and dist < opvDist - end - elseif self.Mode == 4 or self.Mode == 5 then - stationLast = "оборот" - station = self.StationTable.name - if self.Mode == 5 then - dist = 1337 - opv = true - else - dist = self.StationTable.dist_last_end-self.Distance - opv = self.Distance > self.StationTable.dist_last_start - end - end - - if RR and (self.Mode==2 or self.Mode==3) and (dist < -3 and (self.Transit or not self.AntiMiss)) or self.OpenControl == false and speed > 0.2 or self.Mode == 4 and dist<0 then - local oldSt = self.StationTable - if not self.Shunt then self.StationTable,self.PrevStationTable = self:FindNextStation() end - - if self.Mode == 4 then - self.Mode = 5 - - self.StationTable = oldSt - elseif self.StationTable then - if self.Shunt then - self.Mode = 6 - self.Shunt = false - elseif self.Deadlock and oldSt.id == self.Deadlock.id then - self.Mode=4 - - self.StationTable=self.Deadlock - self.Deadlock = nil - elseif self.Mode == 3 then - self.Mode = 2 - end - elseif oldSt and oldSt.isLast and oldSt.dist_last_end then - self.Mode = 4 - self.StationTable = oldSt - else - self.Mode = 1 - self.StationTable = self:FindFirstStation() - end - self.Station = self.StationTable.id - self.OpenControl = nil - end - if self.Mode==2 and dist<=200 then - local line = self.Line - local path = tonumber(self.Path) - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] - if self.StationBrakeRing==nil and tbl and tbl[1].sensors[self.StationTable.linkedSensor] and tbl[1].sensors[self.StationTable.linkedSensor]0.05 then self.StationBrakeRing = false end - elseif self.StationBrakeRing==false or self.StationBrakeRing and CurTime()-self.StationBrakeRing > 0.05 then - self.StationBrakeRing = nil - end - - Train:SetNW2Int("PAM:Mode",self.Mode) - self:Error(8,self.AntiMiss==2 or dist<-3 and self.AntiMiss ) - Train:SetNW2Bool("PAM:Shunt",self.Shunt) - -- DO: Движение по станционным путям - -- Включается на станциях с путевым развитием при фактической скорости 0 или нахождении в зоне ОПВ - -- Автоматически вводится после передачи управления при отсутствии связи между головой и хвостом - -- Не контролирует пройденный путь и отменяется при фиксации - -- Разрешает движение со скоростью не более 40, а при ограничении 20 не делает предварительную остановку - - --TODO: Смена линии - -- Возможно назначить в любой момент до отправления со станции с передаточной ветвью - -- Видны все станции по ходу движения, имеющие передаточную ветвь - -- Автмоатическая фиксация станции - -- При ограничении 20 не делает предварительную остановку - - --TODO: Транзит - -- Ограничение скорости проезда ОПВ 29км\\ч и 10 на конечных - -- При запрещающем показании светофора у выходных светофоров торможенеи до полной остановки - - --Block door open without all conditions - --TODO: При наличии 16 провода и отсутвии 15го в течении 5 секунд подсказка "Нет контроля закрытия дверей" - local CanOpen = PAM_VV.KRH==0 and (PAM_VV.LPT > 0 or self.NoLPT and PAM_VV.V1>0) - if RR and ((opv or self.Mode==5) and speed < 0.5 or (self.OpenDoors and speed < 2.5)) and CanOpen then - self:SetDoorMode(not self.OpenControl and "ZD" or "DO") - local err - if (self.Mode > 3 or self.OpenDoors) then - local Open = PAM_VV.KDL > 0 or PAM_VV.KDP > 0 - if Open and PAM_VV.ZD == 0 then - self:SetDoorMode(PAM_VV.KDP > 0 and "DP"or "DL") - if not self.OpenControl then self.OpenControl = CurTime() end - if not self.OpeningTimer and PAM_VV.KD>0 then self.OpeningTimer = CurTime() end - end - if Open and PAM_VV.ZD>0 and not self.OpenTimer then - self.OpenTimer = CurTime() - elseif (not Open or PAM_VV.ZD==0) and self.OpenTimer then - self.OpenTimer = nil - end - --TODO: При открытии контроль 16 провода, через 0.7с при наличии 16 провода сообщение "Разблокируйте двери" - --TODO: При нажатии на кнопку>2.5с и не пропадании КД подсказка "Нет контроля открытия дверей - elseif self.Mode<=3 then - local stationTable = dist>10 and self.PrevStationTable or self.StationTable - local Open = PAM_VV.KDL > 0 or PAM_VV.KDP > 0 - local CanOpen = not self.Transit and (PAM_VV.KDL > 0 and not stationTable.rightDoors or PAM_VV.KDP > 0 and stationTable.rightDoors) - if PAM_VV.ZD==0 and CanOpen then - self:SetDoorMode(stationTable.rightDoors and "DP"or "DL") - if opv and (stationTable==self.StationTable or self.FireBack) then - self.Mode = 3 - self.StationTable = stationTable - self.FireBack = false - if not self.AntiMiss then self.AntiMiss = false end - end - if not self.OpenControl then self.OpenControl = CurTime() end - if not self.OpeningTimer and PAM_VV.KD>0 then self.OpeningTimer = CurTime() end - else - self.OpeningTimer = false - self:Error(1,Open and not CanOpen and not self.Transit and stationTable.rightDoors) - self:Error(2,Open and not CanOpen and not self.Transit and not stationTable.rightDoors) - self:Error(23,Open and not CanOpen and self.Transit) - end - if CanOpen and PAM_VV.ZD>0 and not self.OpenTimer then - self.OpenTimer = CurTime() - elseif (not CanOpen or PAM_VV.ZD==0) and self.OpenTimer then - self.OpenTimer = nil - end - --TODO: При открытии контроль 16 провода, через 0.7с при наличии 16 провода сообщение "Разблокируйте двери" - --TODO: При нажатии на кнопку>2.5с и не пропадании КД подсказка "Нет контроля открытия дверей - end - if self.OpeningTimer and (CurTime()-self.OpeningTimer>2.7 and PAM_VV.KD==0 or not RR) then self.OpeningTimer = false end - self:Error(4,self.OpeningTimer and CurTime()-self.OpeningTimer>2.7) - --TODO: Для режима "3" на станции закрытого типа сообщение "Откройте двери станции" при отсутствии КД(контроллируемом) и наличии частоты - -- Отмена сообщения на КБ либо появлении 0(с отменой ходового режима) - else - if RR and (not CanOpen or PAM_VV.ZD>0 or self.DoorMode=="ZD") then self:SetDoorMode("ZD") end - self.OpenDoors = false - self.OpenTimer = false - self.OpeningTimer = false - end - --if PAM_VV.K16>0 and PAM_VV.KD==0 and not self.KDTimer then self.KDTimer = CurTime() end - --if (PAM_VV.K16==0 or PAM_VV.KD>0) and self.KDTimer then self.KDTimer = nil end - if RR and (self.OpenControl~=true or PAM_VV.K16>0) and PAM_VV.KD==0 then - if not self.KDTimer then self.KDTimer = CurTime() end - if self.KDTimer and CurTime()-self.KDTimer>5 then self.OpenControl = false end - elseif self.KDTimer then - self.KDTimer = nil - end - if RR and self.OpenControl and self.StationTable.isHorlift and self.SpeedLimit~=0 then - if not self.StationDoorsTimer then self.StationDoorsTimer = CurTime() end - if PAM_VV.KB>0 then self.StationDoorsTimer = true end - elseif self.StationDoorsTimer then - self.StationDoorsTimer = nil - end - --self:Error(10,self.KDTimer and not self.OpenControl,7,true) - self:Error(5,self.KDTimer and not self.OpenControl) - self:Error(27,self.StationDoorsTimer and self.StationDoorsTimer~=true and CurTime()-self.StationDoorsTimer>1.5) - - - if self.OpenControl and self.OpenControl~=true and PAM_VV.KD > 0 then self.OpenControl = CurTime() end - if self.OpenControl==true and PAM_VV.KD > 0 then self.OpenControl = false end - if self.OpenControl and self.OpenControl ~= true and CurTime()-self.OpenControl > 1 then self.OpenControl = true end - self:Error(7,self.OpenTimer and CurTime()-self.OpenTimer>0.7) - self:Error(9,self.SensorError and PAM_VV.ZD==0 and (PAM_VV.KDL>0 or PAM_VV.KDP>0)) - if PAM_VV.KDL>0 or PAM_VV.KDP>0 then - if not self.KDLPTimer then self.KDLPTimer = CurTime() end - elseif self.KDLPTimer then self.KDLPTimer = nil end - self:Error(22,self.KDLPTimer and CurTime()-self.KDLPTimer>10) - - --Disable NoKD if we got KD - if self.NoKD and PAM_VV.KD>0 and not self.KDOnTime then self.KDOnTime = CurTime() end - if self.NoKD then self:SetDoorMode("ZD") end - if self.KDOnTime and PAM_VV.KD>0 and CurTime()-self.KDOnTime>5 then self.KDOnTime = false self.NoKD = false end - if self.KDOnTime and PAM_VV.KD==0 then self.KDOnTime = false end - if PAM_VV.KRU>0 and PAM_VV.ZD==0 then self:SetPneumoMode("V2") end - - --Movement block by 64tw - if RR and PAM_VV.I33*PAM_VV.LPT>0 and not self.NoLPT then - if not self.LPTTimer then self.LPTTimer = CurTime() end - elseif self.LPTTimer and (PAM_VV.KGR>0 or not RR or self.NoLPT or CurTime()-self.LPTTimer<=6.5) then - self.LPTTimer = nil - end - self:Error(10,self.LPTTimer and CurTime()-self.LPTTimer > 6.5) - - --Get controller state - local driveModeKV = 0 - if PAM_VV.KGR == 0 then - driveModeKV = 1+PAM_VV.I2+PAM_VV.I3 - elseif PAM_VV.I33G > 0 then - driveModeKV = -2-PAM_VV.I2*2+PAM_VV.I25 - end - - --Fire rolling back logic - if self.FireBack then - local opvDist = self.FireBack.isHorlift and -0.45 or -1 - if self.FireBack.pos-self.Distance>opvDist then - self.StationTable=self.FireBack - self:SetDriveMode("OXT") - self:SetPneumoMode("V1") - if speed>5.4 then self:SetPneumoMode("V2") end - if speed<0.2 then self.FireBack = false end - end - end - local No34 = self.V1Stop and CurTime()-self.V1Stop > 4 - self.ControlMode2 = (PAM_VV.KVARS > 0 or self.PAKSD) and not No34 and PAM_VV.KSOT > 0 - local mode = self.ControlMode2 and 2 or 1 - - if self.ControlMode~=mode and (mode==1 or self.ControlModeAuto) then - self.ControlMode = mode - self.ControlModeAuto = true - end - self:Error(20,self.ControlModeAuto and self.ControlMode==1,No34 and 14 or 7,true) - self:Error(21,self.ControlModeAuto and self.ControlMode==2,7,true) - self:Error(29,No34,7,true) - - self:Error(30,self.No34 and not No34,7,true) - self.No34 = No34 - - self:Error(24,false,7,true) - local BlockBack = not self.FireBack and (not self.StationTable.isHorlift or dist > -.45 or dist < -6 or speed>=3.6) - if (driveModeKV>=0 or PAM_VV.KRU > 0) and ( - --TODO аппаратура отменяет ходвоой режим и назначает ВЗ№1 при подезде к рейке - BackReverser and BlockBack - or self.FireBack and speed>10 - or self.LPTTimer and CurTime()-self.LPTTimer>6.5 - or self.ControlMode==1 and PAM_VV.KB==0 - or PAM_VV.KD < 1 and not self.NoKD and PAM_VV.KRU == 0 - or PAM_VV.KTARS > 0) then - self:SetDriveMode("OXT") - end - self:Error(3,BackReverser and BlockBack and not BackActive) - - - local speedLimit = math.max(20,self.SpeedLimit+1) - if self.ControlMode == 1 then - speedLimit = (speedLimit > 40 and 35 or 20)*PAM_VV.KB - elseif PAM_VV.KB>0 then - speedLimit=20 - end - if self.Mode > 3 then speedLimit = math.min(40,speedLimit) end - local OXT = false - --KS Mode - if RR and self.SpeedLimit <= 20 then - if not self.ZeroStopped and speed <= 0.2 then - self.ZeroStopped = true - end - local station = (self.Mode==1 or self.Mode==2) and dist<=100 - if self.ZeroStopped == nil and speed > 0.2 then - self.ZeroStopped = self.Mode>3 or station and not self.Transit - end - if self.ZeroStopped and PAM_VV.KB == 0 or self.SpeedLimit~=-1 and ((ALS.F6==0 or station and self.Transit) and not self.Vd0 and (PAM_VV.VRD==0 or self.PAKSD) and not station) then - self:SetDriveMode("OXT") - OXT = true - speedLimit=0 - end - if not self.ZeroStopped or speed > 0.2 and PAM_VV.KB == 0 then speedLimit = 0 end - if self.SpeedLimit~=-1 then - if not self.ZeroTimer then self.ZeroTimer = CurTime() end - else - self.ZeroTimer = nil - end - self:Error(12,not self.ZeroStopped and PAM_VV.KGR==0 and OXT and PAM_VV.KB>0) - self:Error(15,self.ZeroTimer and CurTime()-self.ZeroTimer>30,7,true) - elseif self.SpeedLimit > 20 then - self.ZeroStopped = nil - self.ZeroTimer = nil - end - self:Error(26,self.ControlMode==1 and PAM_VV.KB==0 and PAM_VV.KGR==0) - if self.SpeedLimit>20 or self.SpeedLimit == -1 then self.Vd0 = false end - local speedLimitMpS = speedLimit/3600*1000 - local timeAdd = (1-PAM_VV.I33G*1+PAM_VV.I33*1) - self.Acceleration = self.Acceleration or 0 - self.Acceleration = self.Acceleration+(accel-self.Acceleration)*dT*1 - if RR and (speedMpS+self.Acceleration*timeAdd > speedLimitMpS and speed>0.2 or self.STTimer) then - local ST,AT = false,false - if not self.OXTTimer then self.OXTTimer = CurTime() end - if speed > speedLimit or self.OXTTimer and CurTime()-self.OXTTimer > 1.5 then - ST = true - if not self.STTimer then - self.STTimer = CurTime() - self.RingArmed = PAM_VV.KRT==0 and CurTime() - self.STV1Timer = PAM_VV.KRT==0 and CurTime() - end - end - if speed > speedLimit or self.STTimer and CurTime()-self.STTimer > 1 then - AT = true - end - if self.STV1Timer and CurTime()-self.STV1Timer < 0.7 then self:SetPneumoMode("V1") end - if AT then - self:SetDriveMode("AT") - elseif ST then - self:SetDriveMode("ST") - else - self:SetDriveMode("OXT") - end - if speed < speedLimit-2 and not self.RingArmed then self.STTimer = false end - OXT = true - else - self.STTimer = false - self.OXTTimer = false - self.STV1Timer = nil - end - --Rolling check - if self.State5==1 then - if not self.RollingCheckRolled then self.RollingCheckRolled = 0 end - local rolled = speedMpSSigned*dT - if math.abs(rolled) >0.001 then - self.RollingCheckRolled = self.RollingCheckRolled + rolled - Train:SetNW2Float("PAM:RollDist",self.RollingCheckRolled) - end - if self.RollingCheckRolled > 2.5 or self.RollingCheckRolled < -0.3 then - self.Stopped = 1 - self.RollingCheckRolled = false - self.State5 = nil - Train:SetNW2Float("PAM:RollDist",0) - end - if self.NoFreq>0 and PAM_VV.KB==0 then - self:SetPneumoMode("V2") - end - else - self.RollingCheckRolled = false - end - --AntiRolling - if RR then - if not self.RollingCheckRolled and (speed < 2.5 or self.Stopped) and PAM_VV.KRH == 0 and (self.NoFreq==0 or PAM_VV.KB==0) then - self:SetPneumoMode("V1") - if not self.V1Stop and PAM_VV.KET==0 then self.V1Stop = CurTime() end - if PAM_VV.KET>0 and self.V1Stop then - if not self.V1StopTimer then self.V1StopTimer = CurTime() end - if self.V1StopTimer and CurTime()-self.V1StopTimer>1 then - self.V1StopTimer = nil - self.V1Stop = nil - end - end - if not self.Stopped then self.Stopped = true end - if self.Stopped and speed>5.5 then - self.Stopped = 1 - end - if self.Stopped==1 then self:SetPneumoMode("V2") end - self.Starting = (speed>0.2 or PAM_VV.KRH>0 or PAM_VV.KGR==0) and self.Starting - elseif not self.RollingCheckRolled then - if self.Stopped then - self.Stopped = false - self.Starting = self.NoFreq==0 and CurTime() - end - if self.Starting and CurTime()-self.Starting<4.5 and speed>0.5 then self.Starting = nil end - end - else - self.Starting = nil - self.Stopped = false - end - if self.Starting and CurTime()-self.Starting>=4.5 then self:SetDriveMode("AT") end - if not self.Stopped then self.V1Stop = nil end - self:Error(13,self.Starting and CurTime()-self.Starting>=4.5) - if RR then - if speedMpSSigned < -0.01 and not self.Rolling and not self.FireBack then self.Rolling = 0 end - if self.Rolling and self.Rolling < 0 then self.Rolling = false end - if self.Rolling then - local rolled = -speedMpSSigned*dT - if math.abs(rolled) >0.001 then - self.Rolling = self.Rolling + rolled - end - end - if not self.Rolled and self.Rolling and self.Rolling > 0.5+PAM_VV.KRH*2.5 then - self.Rolled = PAM_VV.KRH - end - if self.Rolled then - if self.Rolled>0 then - self:SetDriveMode("OXT") - end - if self.Rolled == 0 and PAM_VV.KRH > 0 then - self.Rolled = false - self.Rolling = false - end - if PAM_VV.KRH == 0 then self.Rolled = 0 end - self:SetPneumoMode("V2") - end - else - self.Rolled = false - self.Rolling = false - end - if RR and self.Transit and self.Mode == 2 then - local lasttbl = self.Deadlock or self.LastStationTable - local last = lasttbl and lasttbl.id==self.StationTable.id - if last and dist<60 and speed>10 or not last and dist<50 and speed>35 then - self.TransitBraking = last and 10 or 35 - end - if self.TransitBraking and speed>self.TransitBraking then - self:SetDriveMode("AT") - elseif self.TransitBraking then - self.TransitBraking = false - end - else - self.TransitBraking = false - end - if RR and not self.Transit and (self.Mode==2 or self.Mode==3) then - if self.AntiMiss == nil then - local SchemeEngageDistance,_ACCEL,_ACCEL2 - local currA = -math.min(0,Train.Acceleration) - _ACCEL = 1.61 - _ACCEL2 = _ACCEL*2 - local _SCHTime - if PAM_VV.KRT>0 then - --local speed = 45 - --local speedMpS = speed/3600*1000 - _SCHTime = ( - ( - math.Clamp(((18-PAM_VV.KPRK)/17)^1.5*(55-(speed-5))/55,0,1)^1.1 - )*2.2-math.Clamp(PAM_VV.KPRK-14,0,4)/4*3.3*math.Clamp((16-(speed-3))/16,0,1)^2.2 - )*math.Clamp((0.5-currA),0,1) - --_SCHTime = ((math.Clamp((PAM_VV.KPRK-1)/17*(55-(10-5))/55,0,1)^1.1)*2.2-math.Clamp(PAM_VV.KPRK-12,0,6)/6*3-3.5*math.Clamp((16-(10-3))/16,0,1)^2.2)*math.Clamp((0.8-currA)/0.8,0.2,1) - SchemeEngageDistance = speedMpS*_SCHTime+(_ACCEL*(_SCHTime^2))/2-(2.0)*math.Clamp((7-(speed-3))/7,0,1) - else - _SCHTime = ((math.Clamp((55-(speed-5))/55,0,1)^1.2)*1.85+1-3.5*math.Clamp((16-(speed-3))/16,0,1)^1.7)*math.Clamp((_ACCEL-currA)/_ACCEL,0,1) - SchemeEngageDistance = speedMpS*_SCHTime+(_ACCEL*(_SCHTime^2))/2 - end - --SchemeEngageDistance = speedMS*_SCHTime+(_ACCEL*(_SCHTime^2))/2 - if speed>0.2 and (dist-SchemeEngageDistance) < (speedMpS^2)/_ACCEL2 and not self.AntiMiss then - self.AntiMiss = opv and 2 or 1 - print("ENGAGED "..dist) - end - end - if self.AntiMiss then - self:SetDriveMode("AT") - self:SetPneumoMode("V1") - if speed<6 then - self:SetPneumoMode("V2") - end - if speed < 0.2 and ((self.AntiMiss==2 or -3<=dist) and PAM_VV.KB>0 or self.AntiMiss==1) then - self.AntiMiss = self.AntiMiss==1 and nil - end - end - if self.AntiMiss==false and self.Mode==2 and dist > 150 then self.AntiMiss = nil end - else - self.AntiMiss = nil - end - --if RR and self.ControlMode==1 and PAM_VV.KB==0 then self:SetPneumoMode("V2") end - if self.PneumoMode == "V1" or self.PneumoMode == "V12" then - if PAM_VV.V1==0 and not self.V1Timer then self.V1Timer = CurTime() end - if PAM_VV.V1>0 then - if self.V1Timer then self.V1Timer = nil end - if PAM_VV.LPT==0 and not self.V1ETimer then self.V1ETimer = CurTime() end - if PAM_VV.LPT>0 and PAM_VV.V2==0 and self.V1ETimer then self.V1ETimer = nil end - end - else - self.V1Timer = nil - self.V1ETimer = nil - end - if self.V1Timer and CurTime()-self.V1Timer > 2 then self:SetPneumoMode("V2") end - if self.V1ETimer and CurTime()-self.V1ETimer > 2.5 then self:SetPneumoMode("V2") end - - if self.PneumoMode == "V2" or self.PneumoMode == "V12" then - if PAM_VV.V2==0 and not self.V2Timer then self.V2ETimer = CurTime() end - if PAM_VV.V2>0 then - if self.V2Timer then self.V2Timer = nil end - if PAM_VV.LPT==0 and not self.V2ETimer then self.V2ETimer = CurTime() end - if PAM_VV.LPT>0 and self.V2ETimer then self.V2ETimer = nil end - end - else - self.V2Timer = nil - self.V2ETimer = nil - end - if speed<2.5 and (PAM_VV.KB > 0 or not RR) then self.EPKActive = true end - if self.RingArmed and CurTime()-self.RingArmed>3 then self.EPKActive = false end - if self.V2ETimer and CurTime()-self.V2ETimer>2 then self.EPKActive = false end - if self.Mode==3 then - if self.BoardRing==nil and Train.BoardTimer and Train.BoardTimer<-2 and PAM_VV.KD==0 then self.BoardRing = CurTime() end - if self.BoardRing and (PAM_VV.KB>0 or PAM_VV.KD>0 or CurTime()-self.BoardRing>2) then self.BoardRing = false end - else - self.BoardRing = nil - end - - if self.RingArmed and PAM_VV.KB > 0 then self.RingArmed = false end - if self.CurrentErrorR ~= self.CurrentError then - self.CurrentErrorR = self.CurrentError - self.CurrentErrorRing = errorsRing[self.CurrentError]==false and CurTime() - end - Ring = self.RingArmed or self.BoardRing or self.StationBrakeRing or errorsRing[self.CurrentError] or self.CurrentErrorRing and CurTime()-self.CurrentErrorRing<1.5 - Train:SetNW2Int("PAM:DriveMode",self.ControlMode+PAM_VV.KRU*3) - local driveMode = self.DriveModesConv[self.DriveMode] - Train:SetNW2Int("PAM:KVMode",driveMode>0 and math.max(driveMode,driveModeKV) or driveMode<0 and math.min(driveMode,driveModeKV) or driveModeKV) - Train:SetNW2String("PAM:CurrentStation",station) - Train:SetNW2String("PAM:TargetStation",stationLast) - Train:SetNW2Int("PAM:BoardTime",Train.BoardTimer or 0) - Train:SetNW2Int("PAM:CurrentError",self.CurrentError or 0) - - if self.MessageTimer and CurTime()-self.MessageTimer > 4 then - self.CurrentMessage = 0 - self.MessageTimer = false - end - Train:SetNW2Int("PAM:CurrentMessage",self.CurrentMessage or 0) - - Train:SetNW2Bool("PAM:OXT",OXT) - Train:SetNW2Int("PAM:Vf",speed) - Train:SetNW2Int("PAM:Vd",self.SpeedLimit) - Train:SetNW2Int("PAM:SpeedLimit",self.SpeedLimit) - Train:SetNW2String("PAM:RC",signal) - Train:SetNW2Int("PAM:Slope",slope) - Train:SetNW2Float("PAM:S",dist) - Train:SetNW2Int("PAM:V",not self.EPKActive and -1 or PAM_VV.V2 > 0 and 2 or PAM_VV.V1 > 0 and (false and 2 or 1) or 0) - Train:SetNW2Bool("PAM:LPT",PAM_VV.LPT > 0) - Train:SetNW2Bool("PAM:KD",self.OpenControl==true and 1 or PAM_VV.KD <= 0 and 2 or 0) - Train:SetNW2Bool("PAM:KVARS",PAM_VV.KVARS > 0) - Train:SetNW2Bool("PAM:VRD",PAM_VV.VRD > 0) - Train:SetNW2Bool("PAM:OPV",opv) - Train:SetNW2Bool("PAM:State5_-6",not not self.FireBack) --Vд=0 - Train:SetNW2Bool("PAM:State5_5",self.Vd0) --Vд=0 - Train:SetNW2Bool("PAM:State5_2",self.NoKD) --КД - Train:SetNW2Bool("PAM:State5_4",self.Transit) --ТР - Train:SetNW2Bool("PAM:State5_8",self.Deadlock~=nil) --ОБ - --Train:SetNW2Bool("PAM:State5_3") --СЛ - Train:SetNW2Bool("PAM:State5_7",self.NoLPT) --ЛПТ - Train:SetNW2Bool("PAM:State5_6",self.OpenDoors) --ОДП - end - if self.CurrentDriveMode then - self["2"] = self.CurrentDriveMode[2] - self["3"] = self.CurrentDriveMode[3] - local pr8 = self.CurrentDriveMode[4] - if pr8 ~= self.Target8 then - if pr8 == 0 or self.pr8Timer and CurTime()-self.pr8Timer > 1.5 then - self.Target8 = pr8 - self.pr8Timer = nil - end - if pr8 > 0 and not self.pr8Timer then self.pr8Timer = CurTime() end - end - if pr8 == 0 and self.pr8Timer then self.pr8Timer = CurTime() end - self["8"] = self.Target8+self.CurrentDriveMode[13]*(PAM_VV.KRU+self.NoFreq) - self["17"] = self.CurrentDriveMode[5] - self["19"] = self.CurrentDriveMode[6] - self["20"] = self.CurrentDriveMode[7] - self["20X"] = self.CurrentDriveMode[8] - self["25"] = self.CurrentDriveMode[9] - self["025"] = self.CurrentDriveMode[10] - self["33"] = self.CurrentDriveMode[11] - self["033"] = self.CurrentDriveMode[12] - self["33G"] = self.CurrentDriveMode[13]*(1-PAM_VV.KRU) - end - if self.CurrentDoorMode then - self["16"] = self.CurrentDoorMode[1] - self["31"] = self.CurrentDoorMode[2] - self["32"] = self.CurrentDoorMode[3] - end - if self.CurrentPneumoMode then - self["39"] = self.CurrentPneumoMode[2] - self["48"] = self.CurrentPneumoMode[3] - end - self.EPK = (self.State==4 or self.State==5 and RR and self.EPKActive) and 1 or 0 - self.Ring = (Ring) and 1 or 0 - Train:SetNW2String("PAM:Station",self.Station) - Train:SetNW2String("PAM:Line",self.Line) - Train:SetNW2String("PAM:Path",self.Path) - Train:SetNW2Bool("PAM:Reverser",self.ReverserWrench) - Train:SetNW2Bool("PAM:Keyboard",self.Keyboard) - Train:SetNW2Bool("PAM:Selected",self.Selected) - Train:SetNW2Int("PAM:State5",self.State5) - Train:SetNW2Int("PAM:State5Accept",self.State5Accept) - else - self["2"] = 0 - self["3"] = 0 - self["8"] = 0 - self["17"] = 0 - self["19"] = 0 - self["20"] = 0 - self["20X"] = 0 - self["25"] = 0 - self["025"] = 0 - self["33"] = 0 - self["033"] = 0 - self["33G"] = 0 - self["16"] = 0 - self["31"] = 0 - self["32"] = 0 - self["39"] = 0 - self["7GA"] = 0 - self["48"] = 0 - self.EPK = 0 - - self.Ring = self.State==-0.5 and 1 or 0 - self.Mode = 0 - self.SensorEnabled = false - end - Train:SetNW2Bool("PAM:KSD",self.PAKSD) - --[[ - local pos = Metrostroi.TrainPositions[Train];pos = pos and pos[1] - self.Distance2 = self.Distance2 or self.Distance - local delta = 0 - if pos then - local x = pos.x+Train.PosX - self.Distance = self.Distance or x - self.OldPos = self.OldPos or x - delta = x-self.OldPos - self.OldPos = x - end - self:FindNextSignal() - self:FindNextStation() - local speed = Train.Speed*Train.SpeedSign - local speedMpS = speed*0.2778 - if not self.Distance then return end - self.Distance = self.Distance + delta - self.Distance2 = self.Distance2 + speedMpS*dT - Train:SetNW2Float("PAM:TrackS",pos and pos.x+Train.PosX or -2) - Train:SetNW2Float("PAM:S",self.Distance) - Train:SetNW2Float("PAM:Sd",delta) - Train:SetNW2Float("PAM:S2",self.Distance2) - Train:SetNW2Float("PAM:S2d",delta) - if IsValid(self.Signal) then - Train:SetNW2String("PAM:Signal",self.Signal.Name) - end - if self.Station then - Train:SetNW2Int("PAM:Station",self.Station[1]) - Train:SetNW2Int("PAM:StationD",self.Station[2]) - Train:SetNW2Float("PAM:StationS",self.Station[2]-self.Distance) - end--]] -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_81_717_puav_normal.lua b/lua/metrostroi/systems/_obsolete/sys_81_717_puav_normal.lua deleted file mode 100644 index 466bd36..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_717_puav_normal.lua +++ /dev/null @@ -1,736 +0,0 @@ --------------------------------------------------------------------------------- --- ПУАВ - Поездное Устройство АвтоВедения --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PUAV_N") -TRAIN_SYSTEM.DontAccelerateSimulation = false - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("IPAV") - - self.Train:LoadSystem("KH","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VAV","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("KSZD","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VZP","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VAU","Relay","Switch",{ bass = true, normally_closed = true }) - self.Train:LoadSystem("RC2","Relay","Switch",{ bass = true, normally_closed = true }) - - self.Train:LoadSystem("P1","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P2","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P3","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P4","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P5","Relay","Switch",{ bass = true }) - - self.Selected = true - - self.KRRBrake = false - self.LK16 = 0 - self.LAVT = 0 - self.LOS = 0 - self.LRS = 0 - self.LKI1 = 0 - self.LKI2 = 0 - - self.NoFreq = 0 - self.F5 = 0 - self.F4 = 0 - self.F3 = 0 - self.F2 = 0 - self.F1 = 0 - self.LRSTimer = false - self.OldF5 = 0 - self.OldNF = 0 - - self["2"] = 0 --Вращение РК - self["3"] = 0 --Ход 3 - self["8"] = 0 --Замещение электрического торможения - self["16"] = 0 --Закрытие дверей - self["17"] = 0 -- Разрешение восстановления реле перегрузки - self["19"] = 0 -- Разрешение замещения электрического торможения - self["20"] = 0 -- Включение двигателей - self["20X"] = 0 -- Разрешение включения двигателей в ходовые режимы - self["025"] = 0 -- Разрешение ручного торможения - self["25"] = 0 -- Ручное торможение - self["31"] = 0 --Открытие открытия левых дверей - self["32"] = 0 --Открытие правых дверей - self["33"] = 0 --Включение ходового режима - self["033"] = 0 --Разрешение включения ходового режима - self["33G"] = 0 --Включение режима торможения - self["39"] = 0 --Включение вентиля замещения № 2 - self["48"] = 0 --Включение вентиля замещения № 1 - - self.Power = 0 - self.ALSPower = 0 - self.KRH = 0 - self.KRT = 0 - self.KGR = 0 - self.KRR1 = 0 --Контроль нулевого положения реверсивной рукоятки головного вагона - self.KRR2 = 0 --Контроль нулевого положения реверсивной рукоятки хвостового вагона - self.KRR3 = 0 --Контроль реверсивной рукоятки, установленной в положение «Назад» - self.KD = 0 - self.KPRK = 0 - self.KOAT = 0 - self.KET = 0 - self.KSOT = 0 - self.KDL = 0 - self.KDP = 0 - self.RK1 = 0 - self.KRU = 0 - - self.KVARS = 0 - self.KTARS = 0 - self.VAV = 0 - self.KH3 = 0 - self.VZP = 0 - self.KSZD = 0 - self.KB = 0 - self.RD = 0 - - - self.Ring = 0 - self.RingZero = 0 - - self.State = -1 - - --self:SetDriveMode = "Zero" - --self.CurrentDoorMode = "DO" - --self.CurrentPneumoMode = "NT" -end - - ---if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { - --Autodrive commands - "CommandDoorsLeft","CommandDoorsRight", - "CommandDrive", "CommandBrake","CommandBrakeCount","CommandBrakeElapsed" - } -end -function TRAIN_SYSTEM:Outputs() - return { "Ring","RingZero","LK16" , "LAVT", "LOS", "LRS", "LKI1", "LKI2", "NoFreq", "F5", "F4", "F3", "F2", "F1" } -end - -if CLIENT then - local function createFont(name,font,size) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = 500, - blursize = false, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - scanlines = false, - }) - end - createFont("PUAV","Liquid Crystal Display",38,400) - function TRAIN_SYSTEM:ClientThink() - if not self.Train:ShouldDrawPanel("PUAVOScreen") and not self.Train:ShouldDrawPanel("PUAVNScreen") then return end - --RunConsoleCommand("say","президент!!!") - if not self.DrawTimer then - render.PushRenderTarget(self.Train.PUAV,0,0,512, 128) - render.Clear(0, 0, 0, 0) - render.PopRenderTarget() - end - if self.DrawTimer and CurTime()-self.DrawTimer < 0.1 then return end - self.DrawTimer = CurTime() - render.PushRenderTarget(self.Train.PUAV,0,0,512, 128) - --render.Clear(0, 0, 0, 0) - cam.Start2D() - self:PUAVScreen(self.Train) - cam.End2D() - render.PopRenderTarget() - end - function TRAIN_SYSTEM:PrintText(x,y,text,inverse) - local str = {utf8.codepoint(text,1,-1)} - for i=1,#str do - local char = utf8.char(str[i]) - if inverse then - draw.SimpleText(string.char(0x7f),"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(0,0,0,240),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(char,"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(140,190,0,150),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(char,"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(0,0,0,240),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - end - - function TRAIN_SYSTEM:PUAVScreen(Train) - local State = Train:GetNW2Bool("BURPower",false) - if State then - surface.SetDrawColor(75*0.8,165*0.8,0,self.Warm and 130 or 0) - self.Warm = true - else - surface.SetDrawColor(20,50,0,150) - self.Warm = false - end - surface.DrawRect(0,0,512,128) - if not State then - return - end - surface.SetDrawColor(75*0.3,165*0.3,0,35) - for x=1,16 do - for y=0,1 do - surface.DrawRect(x*27+3,y*50+12,26,40) - end - end - self:PrintText(-2+9,0,"БУР") - - self:PrintText(0,1,os.date("%H:%M:%S %d/%m",Metrostroi.GetSyncTime())) - --self:PrintText(0,0,"010101010101") - --self:PrintText(1,1,Format("РК:%02d",Train:GetNW2Int("PUAV:RK",0))) - --self:PrintText(1,1,"(точнее криво)") - end -end - -function TRAIN_SYSTEM:Trigger(name,nosnd) -end - -TRAIN_SYSTEM.DriveModes = { - --Priority 2 3 8 017 19 20 20X 25 025 33 033 33G - X3 = {1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - X2 = {2, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - X1 = {3, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0}, - OD = {4, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0}, - OXT = {5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0}, - ST = {6, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1}, - VPR = {7, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1}, - AT1 = {8, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1}, - AT = {9, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - Zero = {10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, -} -function TRAIN_SYSTEM:SetDriveMode(curMode,override) - local mode = self.DriveModes[curMode] - if mode and mode[1] > self.CurrentDriveModePriority then - self.CurrentDriveMode = mode - self.CurrentDriveModePriority = mode[1] - self.DriveMode = curMode - end -end -TRAIN_SYSTEM.PneumoModes = { - --Priority 39 48 - NT = {1, 0, 0,}, - V1 = {2, 0, 1,}, - V2 = {3, 1, 0,}, -} -function TRAIN_SYSTEM:SetDoorMode(curMode,override) - local mode = self.DoorModes[curMode] - self.CurrentDoorMode = mode -end -TRAIN_SYSTEM.DoorModes = { - -- 16 31 32 - ZD = {1, 0, 0,}, - DL = {0, 1, 0,}, - DP = {0, 0, 1,}, - DO = {0, 0, 0,}, -} -function TRAIN_SYSTEM:SetPneumoMode(curMode,override) - if curMode == "V2" and self.Train.ALSCoil.Speed > 10 then self.SpeedError = true return end - local mode = self.PneumoModes[curMode] - if mode and (override or mode[1] > self.CurrentPneumoModePriority) then - self.CurrentPneumoMode = mode - self.CurrentPneumoModePriority = mode[1] - end -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "CommandBrakeElapsed" and self.KRR2 == 0 and self.KRR1 > 0 and value ~= -1 and self.CrossCount then - if self.Stage1 and value > 1 then self.Stage2Prepared = true end - - if value*1000 < 80+46+2*(8*1.5) then - self.CrossCount = self.CrossCount+1 - if self.CrossCount > 10 then self.Station = true end - if not self.Stage1 and self.BrakeProgramm then - self.Stage1 = true - self:SetTargetKPRK(15) - end - if self.Stage2Prepared then - self.Stage2 = true - end - end - --if self.VAV > 0 then print(self.Stage1,self.Stage2Prepared,self.Stage2,value*1000) end - end - if name == "CommandBrake" and self.KRR2 == 0 and self.KRR1 > 0 then - self.BrakeProgramm = self.LAVT > 0 - self.CommandDrive = false - self.DriveCommand = false - - if self.TargetKPRK and self.LastBrakeProgrammLoss and CurTime()-self.LastBrakeProgrammLoss > 0.3 then self:SetTargetKPRK(self.TargetKPRK+1) end - self.LastBrakeProgrammLoss = value == 0 and CurTime() - if self.BrakeProgrammLossDistance and self.BrakeProgrammLossDistance>15 then - self.BrakeProgrammCurrentDistance=0 - elseif value == 0 then - self.BrakeProgrammLossDistance = 0 - end - if value > 0 then - self.CrossCount = 0 - else - self.CrossCount = nil - end - end - if name == "CommandDrive" then - if value < 0 then - self.CommandDrive = false - self.DriveCommand = false - self.BrakeProgramm = false - elseif value > 0 then - self.CommandDrive = value - else - self.CommandDrive = false - end - end - if name == "CommandDoorsLeft" then self.DoorsLeft = value > 0 end - if name == "CommandDoorsRight" then self.DoorsRight = value > 0 end - -end - -function TRAIN_SYSTEM:SetTargetKPRK(val) - self.TargetKPRK = val - self.LastKRPK = self.KPRK -end - -local IgnoreDoors = false -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - if Train.Electric.Type > 3 then return end - self.CurrentDriveModePriority = 0 - self.CurrentPneumoModePriority = 0 - --if self.KB > 0 and not self.KBimer then self.KBimer = CurTime() end - --if self.KB == 0 and self.KBimer then self.KBimer = nil end - local ALS = Train.ALSCoil - - local Ring = false - local LKI = false - - local speed = math.Round(Train.ALS_ARS.Speed or 0,1) - local speedMpS = speed*0.2778 - local speedMpSS = speedMpS*ALS.SpeedSign - - local Power = self.Power>0 - local Reverser = (self.KRR1 > 0 or self.KRU > 0) - local BackReverser = self.KRR2 > 0 - if Power and not BackReverser and self.Checked==true and Reverser then - --KPRK - if self.RK1 > 0 then self.RKPos = 1 end - - local OS = ((1-self.KVARS))+(1-self.KSOT)--0 - local RS = (1-OS)*self.KVARS*self.KSOT--1 - local AV = RS*self.VAV - local KB = self.KB > 0 - -- - local ALSSh = (1-Train.ALS.Value)*Train.VRD.Value - self.F1 = ALS.F1*(1-ALSSh)*self.ALSPower - self.F2 = ALS.F2*(1-ALSSh)*self.ALSPower - self.F3 = ALS.F3*(1-ALSSh)*self.ALSPower - self.F4 = ALS.F4*(1-ALSSh)*self.ALSPower - self.F5 = ALS.F5*(1-ALSSh)*self.ALSPower - self.F6 = ALS.F6*(1-ALSSh)*self.ALSPower - self.NoFreq = (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1))*self.ALSPower - local NoFreq = self.NoFreq+(1-self.ALSPower) - if self.ALSPower==0 then LKI=true end - --Find current speedlimit - local Vz = 0 - if self.F4 > 0 then Vz = 40 end - if self.F3 > 0 then Vz = 60 end - if self.F2 > 0 then Vz = 70 end - if self.F1 > 0 then Vz = 80 end - - local Station = self.Station and 1 or self.F6 - local Vno = -1 - - if self.IgnorePedal and not KB then self.IgnorePedal = false end - if (NoFreq > 0 and self.OldF5 > 0 or self.F5+self.F6 > 0 and self.OldNF > 0) and self.IgnorePedal then - KB = false - end - self.OldF5 = self.F5+self.F6 - self.OldNF = NoFreq - if OS > 0 then - if KB and Vz <= 40 then Vno = 20 end - if KB and Vz > 40 then Vno = 35 end - if self.F5 > 0 and self.IgnoreF6 == nil then self.IgnoreF6 = true end - if self.F5 > 0 and self.IgnoreF6 and speed < 0.1 and self.KGR > 0 then self.IgnoreF6 = false end - if self.F5 == 0 and self.IgnoreF6 ~= nil then self.IgnoreF6 = nil end - else - self.IgnoreF6 = nil - Vno = Vz - if self.VRD > 0 and Vno > 20 then Vno = -1 end - if KB and Vno < 40 or KB and Vno >= 40 then Vno = 20 end - if self.F5 > 0 and (Station+self.VRD) == 0 then Vno = -1 end - end - if self.F5 > 0 and (not KB or Station+self.VRD == 0 or self.VRD > 0 and self.IgnoreF6) then Vno = -1 end - if NoFreq > 0 and not KB then Vno = -1 end - if self.VRD > 0 and Vno > 20 then Vno = 20 end - if self.KVARS*self.KTARS > 0 then self:SetDriveMode("OXT") end - - local prior = self.CurrentDriveModePriority - local Vo = speed + math.max(0,ALS.Acceleration*(1+self.KRH-self.KRT)) - local Vko = Vno-4 - if Vo > Vno then - if not self.OXT then - self.OXT = true - self.OXTTimer = CurTime() - - if NoFreq > 0 or self.F5*self.KD > 0 then self.RingArmed = self.RingArmed or speed>0.1 and CurTime() end - end - if (self.OXTTimer and CurTime()-self.OXTTimer > 1.5 or speed > Vno) and not self.ST then - self.ST = true - self.RingArmed = self.RingArmed or speed>0.1 and CurTime() - --if Vz > 40 then self.RingArmed = true end - end - if self.ST and not self.STTimer and self.KRT==0 then - self.STTimer = CurTime() - end - if self.ST and (self.STTimer and CurTime()-self.STTimer > 1 and speed > Vno or not self.STTimer and self.KRT>0) then - self.AT = true - end - end - if Vo < Vno and self.OXT and not self.ST and self.KGR > 0 then - if not self.OXTTimer or CurTime()-self.OXTTimer > 1.5 then - self.OXTTimer = false - self.OXT = false - end - end - --if Vo < Vko and self.ST and not self.RingArmed then --KB then - if Vo < Vno and self.ST and not self.RingArmed then --KB then - self.ST = false - self.STTimer = false - self.AT = false - end - if KB and self.RingArmed then self.RingArmed = false end - - if self.AT then - self:SetDriveMode("AT") - elseif self.ST then - self:SetDriveMode("ST") - elseif self.OXT then - self:SetDriveMode("OXT") - end - local NoStation = (not self.BrakeProgramm or not self.DoorsLeft or not self.DoorRight) and self.NoStationTimer - if NoStation and not self.NoStationTimer then self.NoStationTimer = CurTime() end - if self.NoStationTimer and not NoStation then self.NoStationTimer = nil end - local ResetBrake = self.KGR==0 and speed>10 and self.NoStationTimer and CurTime()-self.NoStationTimer>1 - if not self.BrakeProgramm or ResetBrake then - --self.BrakeProgrammLossDistance = false - --self.BrakeProgrammCurrentDistance = false - self.Stage1 = false - self.Stage1Timer = false - self.Stage2Prepared = false - self.Stage2 = false - self.Stage3 = false - self.LastBrakeProgrammLoss = false - self.TargetKPRK = false - if ResetBrake then - self.Station = false - self.NoStationTimer = false - end - end - - if self.BrakeProgrammLossDistance then self.BrakeProgrammLossDistance = self.BrakeProgrammLossDistance+speedMpS*dT end - if self.BrakeProgrammLossDistance and self.BrakeProgrammLossDistance > 30 then self.BrakeProgrammLossDistance = false end - if self.BrakeProgrammCurrentDistance then - if self.StationBrakeRing == nil then - self.StationBrakeRing = self.KRT == 0 and CurTime() - end - self.BrakeProgrammCurrentDistance = self.BrakeProgrammCurrentDistance+speedMpS*dT - end - if self.StationBrakeRing and CurTime()-self.StationBrakeRing > 3 then self.StationBrakeRing = false end - if not self.BrakeProgrammCurrentDistance and self.StationBrakeRing == false then self.StationBrakeRing = nil end - if self.BrakeProgramm then - self:SetDriveMode("OXT") - if AV > 0 then - if self.KRH == 0 then - self:SetDriveMode("ST") - if not self.TargetKPRK then self.TargetKPRK = 1 end - end - if self.TargetKPRK and self.TargetKPRK > 1 and self.KPRK < self.TargetKPRK-0.3 then - local diff = self.TargetKPRK-self.LastKRPK - if diff <= 1.4 then - self.VPR = CurTime() - else - self:SetDriveMode("AT") - end - elseif self.TargetKPRK == 5 then - self.Stage1Timer = CurTime() - end - if self.VPR then - if CurTime()-self.VPR < 0.5 then - self:SetDriveMode("VPR") - --print("VPR",self.TargetKPRK,self.KPRK) - else - self.VPR = false - end - end - if self.Stage2 then - self:SetDriveMode("AT1") - end - if self.Stage2 and not self.BrakeProgramm then - self:SetPneumoMode("V1") - end - if self.Stage1Timer and CurTime()-self.Stage1Timer > 5 then - self.Stage1 = true - self:SetTargetKPRK(15) - end - else - self.BrakeProgramm = false - end - if self.BrakeProgrammCurrentDistance then - if not self.BrakeProgrammTargetDistance and speed<36 then self.BrakeProgrammTargetDistance=(130-6*speedMpS-2*8) end - if self.BrakeProgrammTargetDistance and (self.BrakeProgrammTargetDistance) < self.BrakeProgrammCurrentDistance and self.TargetKPRK < 5 then - self:SetTargetKPRK(5) - end - end - end - if self.BrakeProgrammCurrentDistance and (not self.BrakeProgrammTargetDistance or self.BrakeProgrammCurrentDistance > self.BrakeProgrammTargetDistance) then - self.BrakeProgrammCurrentDistance = false - self.BrakeProgrammTargetDistance = false - end - --if self.KH3 > 0 then self.SpeedError = true end - if self.SpeedError and speed < 0.1 then self.SpeedError = false end - if self.SpeedError and not self.LoseVf then self.LoseVf = CurTime() end - if not self.SpeedError and self.LoseVf then self.LoseVf = false end - if self.LoseVf then - local LTimer = CurTime()-self.LoseVf - if LTimer >= 2.5 then - self:SetDriveMode("AT1") - elseif LTimer >= 1.5 then - self:SetDriveMode("ST") - else - self:SetDriveMode("OXT") - end - LKI = true - end - self:SetPneumoMode("NT") - local AntiRollingAccept = not self.Stage2 and (NoFreq==0 or self.KB==0) - if AntiRollingAccept and speed < 3.6 and self.KRH == 0 or self.KRT==0 and self.STTimer and CurTime()-self.STTimer < 0.8 then - self:SetPneumoMode("V1") - end - self.LRS = RS - self.LAVT = AV - self.LOS = OS - - if self.KGR == 0 and NoFreq == 0 then - if self.AntiRolling == nil then - self.AntiRolling = CurTime() - end - elseif self.AntiRolling == false then - self.AntiRolling = nil - self.AntiRollingCount = false - end - if self.AntiRolling and not self.AntiRollingCount then self.AntiRollingCount = 0 end - if self.AntiRollingCount then self.AntiRollingCount = self.AntiRollingCount+speedMpSS*dT end - if self.AntiRolling and (self.AntiRollingCount<-(AntiRollingAccept and 0.35 or 5) or CurTime()-self.AntiRolling > 6) then - local time = CurTime()-self.AntiRolling-6 - - if self.KGR == 1 and speed < 0.1 then - self.AntiRolling = false - self.AntiRollingCount = false - end - self:SetDriveMode("OXT") - LKI = true - if time > 7 then - self:SetPneumoMode("V2") - else - self:SetPneumoMode("V1") - Ring = time > 5 or time%1 > 0.5 - end - elseif self.AntiRollingCount and self.AntiRollingCount > 0.5 and self.AntiRolling then - self.AntiRolling = false - self.AntiRollingCount = false - end - if self.F5 > 0 and self.F6 == 0 then - if self.F5Timer == nil then self.F5Timer = CurTime() end - else - self.F5Timer = nil - end - if self.F5Timer and CurTime()-self.F5Timer > 30 then - local time = CurTime()-self.F5Timer-30 - self.RingZero = time<8 and 1 or 0--time < 3 or time%1 > 0.5 - if time > 7 then self.F5Timer = false end - else self.RingZero = 0 end - - local KD = self.KD>0 - if KD and not self.KDTimer then self.KDTimer = CurTime() end - if not KD then self.KDTimer = false end - if KD and self.KDTimer and CurTime()-self.KDTimer < 0.3 then KD=false end - --print(self.KD)-- ,self.KD>0 , NoFreq == 0 , Vz > 20 , self.KSOT > 0 , self.VZP*self.VAV > 0 , self.KRT == 0 , self.KRR3 == 0) - --Autodrive drive commands control - local CanDrive = KD and NoFreq == 0 and Vz > 20 and self.KSOT > 0 and self.VZP*self.VAV > 0 and self.KRT == 0 and self.KRR3 == 0 and self.KDCycle -- and self.KGR > 0 or speed > 0.1) - local commandDrive = math.max(self.CommandDrive or 0,self.KH3*3--[[ *(Vz > 40 and 3 or 2)--]] ,self.DriveCommand or 0) - if self.KH3*self.VAV>0 and self.KDOffTimer then - self.CommandDrive = 3--Vz > 40 and 3 or 2 - end - if CanDrive and commandDrive>0 then - self.DriveCommand = commandDrive - end - --[=[ if CanDrive and --[[ not self.DriveCommand and--]] self.KH3 > 0 then - self.DriveCommand = (Vz > 40 or self.DriveCommand and self.DriveCommand>2) and 3 or 2 - end--]=] - if (Vo > Vno or self.KTARS > 0 or self.VZP==0) then - self.DriveCommand = false - end - if not CanDrive then self.DriveCommand = false end - if self.DriveCommand then - if self.KRH > 0 and not self.KRHTimer then self.KRHTimer = CurTime() end - if self.KRHTimer and CurTime()-self.KRHTimer > 1 then - if self.DriveCommand == 3 then self:SetDriveMode("X3") - elseif self.DriveCommand > 0 then self:SetDriveMode("X2") end - elseif not self.CommandDrive and self.KH3==0 then self.DriveCommand = false - else self:SetDriveMode("X1") end - else - self:SetDriveMode("OD") - self.KRHTimer = false - end - - if self.KD == 0 and not self.KDOffTimer then self.KDOffTimer = CurTime() end - if self.KD > 0 and self.KDOffTimer then self.KDOffTimer = false end - if commandDrive>0 and self.KDOffTimer and CurTime()-self.KDOffTimer > 5 then - if self.KGR > 0 then self.BrakeProgramm = false end - if (self.KRT == 0 or AV==0) and self.StationRing == nil then self.StationRing = CurTime() end - self.KDCycle = true - end - if self.VAV==0 then self.KDCycle = nil end - if self.StationRing and (self.KRH > 0 or self.KSZD > 0) then self.StationRing = false end - if not self.KDOffTimer and self.StationRing ~= nil then self.StationRing = nil end - - --Doors control - local CanOpen = speed <= 0.1 and self.KOAT > 0 and self.KSZD*self.VAV < 1 - --and (not self.StationRing or CurTime()-self.StationRing<4) --KEK - local CanOpenLeft = CanOpen and (self.DoorsLeft or self.ALSPower*NoFreq > 0) - local CanOpenRight = CanOpen and (self.DoorsRight or self.ALSPower*NoFreq > 0) - - if self.BrakeProgramm and self.Station and CanOpen and self.K16 == 0 then - self.OpenLeftTimer = CanOpenLeft and CurTime() - self.OpenRightTimer = CanOpenRight and CurTime() - end - --if --[[ self.KH3 > 0 or--]] speed < 0.1 and (not self.OpenLeftTimer and not self.OpenLeftTimer) or self.KD < 1 then self.BrakeProgramm = false end - --if self.KH3 > 0 then self.Station = false end - if self.OpenLeftTimer and CurTime()-self.OpenLeftTimer > 1 then self.OpenLeftTimer = nil end - if self.OpenRightTimer and CurTime()-self.OpenRightTimer > 1 then self.OpenRightTimer = nil end - if CanOpenLeft or CanOpenRight then - self.CanOpen = true - end - if not CanOpen then self.CanOpen = false end - if self.CanOpen then self:SetDoorMode("DO") else self:SetDoorMode("ZD") end - if CanOpenLeft and (self.KDL > 0 or self.OpenLeftTimer) then - self:SetDoorMode("DL") - end - if CanOpenRight and (self.KDP > 0 or self.OpenRightTimer) then - self:SetDoorMode("DP") - end - - --if self.VAV==0 or self.KDCycle and (not CanOpen or self.KD>0) then self.KDCycle = nil end - --if self.KD == 0 and CanOpen and self.KDCycle==nil then self.KDCycle = CurTime() end - --if self.KDCycle and CurTime()-self.KDCycle>5 then self.KDCycle = false end) - self.LKI1 = LKI and CurTime()%0.5 > 0.25 and 1 or 0 - self.LKI2 = LKI and CurTime()%0.5 <= 0.25 and 1 or 0 - self.LK16 = self.K16 - self.KRR1Brake = true - else - if self.Checked and not Power then self.Checked = false end - self.OXTTimer = false - self.OXT = false - self.ST = false - self.STTimer = false - self.F5Timer = nil - self.AT = false - self.RingArmed = false - self.BrakeProgramm = false - self.LastBrakeProgrammLoss = false - self.BrakeProgrammLossDistance = false - self.BrakeProgrammTargetDistance = false - self.BrakeProgrammCurrentDistance = false - self.StationBrakeRing = false - self.SpeedError = false - self.LoseVf = false - self.AntiRolling = false - self.KRHTimer = false - self.StationRing = false - self.KDOffTimer = false - self.CommandDrive = false - --print(self.KRR1,self.KRR2) - if Power and Reverser and not BackReverser and not self.Checked then - self.Checked = CurTime() - elseif not BackReverser and Power then - if self.KRR1Brake then - self:SetDriveMode("OD") - self:SetPneumoMode("V1") - else - self:SetDriveMode("Zero") - self:SetPneumoMode("NT") - end - self:SetDoorMode("DO") - if speed > 1 then self.KRR1Brake = true end - if self.Checked and self.Checked ~= true and CurTime()-self.Checked < 0.2 then - Ring = true - end - if self.Checked and self.Checked ~= true and CurTime()-self.Checked > 1.5 then - self.Checked = true - self.RingArmed = CurTime() - end - else - self:SetDriveMode("Zero") - self:SetPneumoMode("NT") - end - - self.LK16 = (self.Checked and self.Checked ~= true) and 1 or 0 - self.LRS = self.LK16 - self.LAVT = self.LK16 - self.LOS = self.LK16 - self.LKI1 = self.LK16 - self.LKI2 = self.LK16 - - self.NoFreq = 0 - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.SpeedError = false - self.RingZero = 0 - end - if self.CurrentDriveMode then - self["2"] = self.CurrentDriveMode[2] - self["3"] = self.CurrentDriveMode[3] - local pr8 = self.CurrentDriveMode[4] - if pr8 ~= self.Target8 then - if pr8 == 0 or self.pr8Timer and CurTime()-self.pr8Timer > 1.5 then - self.Target8 = pr8 - self.pr8Timer = nil - end - if (--[[ (1-self.KOAT)*pr8 > 0 and--]] speed>0.1) and not self.pr8Timer then self.pr8Timer = CurTime() end - end - if pr8 == 0 and self.pr8Timer then self.pr8Timer = CurTime() end - self["8"] = (self.Target8+self.CurrentDriveMode[13]*self.KRU)*self.KRR1 - self["17"] = self.CurrentDriveMode[5] - self["19"] = self.CurrentDriveMode[6] - self["20"] = self.CurrentDriveMode[7] - self["20X"] = self.CurrentDriveMode[8] - self["25"] = self.CurrentDriveMode[9] - self["025"] = self.CurrentDriveMode[10] - self["33"] = self.CurrentDriveMode[11] - self["033"] = self.CurrentDriveMode[12] - self["33G"] = self.CurrentDriveMode[13]*(1-self.KRU) - end - if self.CurrentDoorMode then - self["16"] = self.CurrentDoorMode[1] - self["31"] = self.CurrentDoorMode[2] - self["32"] = self.CurrentDoorMode[3] - end - if self.CurrentPneumoMode then - self["39"] = self.CurrentPneumoMode[2]*self.KRR1 - self["48"] = self.CurrentPneumoMode[3]*self.Power - end - self.Ring = (Ring or self.RingArmed and (self.RingArmed-CurTime())%3 > 1.5 or self.StationRing or self.StationBrakeRing) and 1 or 0 - --[[ - for i,train in ipairs(Train.WagonList) do - if train.RheostatController then - Train:SetNW2Int("PUAV:RK"..i,math.floor(train.RheostatController.Position+0.5)) - end - end--]] -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_718_bkbd.lua b/lua/metrostroi/systems/_obsolete/sys_81_718_bkbd.lua deleted file mode 100644 index 71f6aeb..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_718_bkbd.lua +++ /dev/null @@ -1,270 +0,0 @@ --------------------------------------------------------------------------------- --- Блок контроля безопасности движения 718 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_718_BKBD") - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("ALSCoil") - self.Power = 0 - self.FMM1 = 0 - - self.KB = 0 - self.Ring = 0 - self.KRH = 0 - self.Drive = 0 - self.Brake = 0 - self.EPKContacts = 0 - self.V0 = 0 - - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.RealF5 = 0 - self.NoFreq = 0 - -- Реле педали бдительности (РПБ) - self.Train:LoadSystem("RPB","Relay","REV-813T", { bass = true, open_time = 2.5,}) - self.Train:LoadSystem("ROT1","Relay","", { bass = true}) - self.Train:LoadSystem("ROT2","Relay","", { bass = true}) - - - self.Train:LoadSystem("ARS_NG","Relay","") - self.Train:LoadSystem("ARS_NH","Relay","") - self.Train:LoadSystem("KPK1","Relay","") - self.Train:LoadSystem("KPK2","Relay","") -end - -function TRAIN_SYSTEM:Inputs() - return { } -end - -local outputs = {"NoFreq","F5","F4","F3","F2","F1"} -function TRAIN_SYSTEM:Outputs() - return outputs -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end -if not math.Round then - function math.Round( num, idp ) - - local mult = 10 ^ ( idp or 0 ) - return math.floor( num * mult + 0.5 ) / mult - - end -end - ---A48-self.PBPower ---KRU*A42+A48*KV*A79 - self.FMM1 ---KRU*A17+A48*KV*A29- self.FMM2 -function TRAIN_SYSTEM:Think() - local Train = self.Train - local ALS = Train.ALSCoil - local speed = math.Round(ALS.Speed or 0,1) - local BUP = Train.BUP - local EnableALS = (Train.BKBD.Power75V+self.Power) - - Train.FMM1:TriggerInput("Set",self.FMM1) - Train.FMM2:TriggerInput("Set",self.FMM2) - self.PBPower = 1 - self.KPK1 = self.FMM1 - if EnableALS ~= ALS.Enabled then - ALS:TriggerInput("Enable",EnableALS) - end - if self.Power12V > 0 then - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - self.NoFreq = self.NoFreq + (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1)) - else - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.RealF5 = 0 - self.NoFreq = 0 - end - - -- ARS system placeholder logic - if EnableALS then - local TwoToSix = self.TwoToSix > 0 - if (ALS.F1+ALS.F2+ALS.F3+ALS.F4+ALS.F5+ALS.F6+self.NoFreq) == 0 then self.NoFreq = 1 end - local Vlimit = 0 - if self.F4 > 0 then Vlimit = 40 end - if self.F3 > 0 then Vlimit = 60 end - if self.F2 > 0 then Vlimit = 70 end - if self.F1 > 0 then Vlimit = 80 end - -- Determine next limit and current limit - self.SpeedLimit = Vlimit - self.NextLimit = Vlimit - if self.F1 > 0 then self.NextLimit = 80 end - if self.F2 > 0 then self.NextLimit = 70 end - if self.F3 > 0 then self.NextLimit = 60 end - if self.F4 > 0 then self.NextLimit = 40 end - if self.F5 > 0 then self.NextLimit = 20 end - if not TwoToSix and (self.NextLimit ~= math.max(20,Vlimit) or self.F6 > 0) then - self.SpeedLimit = 0 - self.NextLimit = self.SpeedLimit - self.NoFreq = 1 - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.RealF5 = 0 - elseif TwoToSix and (self.NextLimit == math.max(20,Vlimit) and self.F6 == 0) then - self.SpeedLimit = math.min(40,self.SpeedLimit) - self.NextLimit = math.min(40,self.NextLimit) - end - if self.AttentionPedal then self.SpeedLimit = self.SpeedLimit > 40 and 40 or 0 end - if TwoToSix and self.F4 > 0 and self.F6 > 0 then - self.LN = 1 - elseif not TwoToSix then - self.LN = 0 - end - else - local V = math.floor(speed +0.05) - self.SpeedLimit = 0 - self.NextLimit = 0 - end - - if self.Power > 0 then - self.KVT = self.KB>0 - --[[ if PB and not self.AttentionPedalTimer and not self.Overspeed then - self.AttentionPedalTimer = CurTime() + 1 - end - - if PB and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not PB and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if PB or Train.SB9.Value > 0.5 then self.KVT = true end - if not PB and Train.SB9.Value < 0.5 then self.KVT = false end ---]] - -- Ignore pedal - --[[ if self.IgnorePedal and self.KVT then - self.KVT = false - else - self.IgnorePedal = false - end--]] - - --if self.EnableARS ~= EnableARS then Train.EPKContacts:TriggerInput("Set",Train.EPKContacts.Value) end - local SpeedLimit = self.LN == 0 and TwoToSix and self.SpeedLimit > 40 and 40 or self.SpeedLimit - if SpeedLimit < 20 and self.KVT then SpeedLimit = 20 end - -- Check absolute stop - if self.NoFreq ~= self.PrevNoFreq and BUP.IT < 1 then - self.IgnorePedal = self.NoFreq > 0 and BUP.IT < 1 - self.PrevNoFreq = self.NoFreq - end - local zero = (self.NoFreq+self.RealF5) > 0 - -- Enable PV1 and disassembly when we overspeed - if speed > SpeedLimit+0.5 and not self.Disassembly then - if zero then - self.Disassembly = CurTime()-2 - else - self.Disassembly = CurTime() - end - self.ElectricBrake = true - self.ARSRing = true - end - if self.KVT and self.ARSRing then self.ARSRing = false end - --We can disable brake, if speed < Vdop-3 and electric brake - if not self.ARSRing and speed <= SpeedLimit-3 and self.ElectricBrake then - self.ElectricBrake = false - self.Disassembly = false - self.PneumaticBrake2 = false - end - --We can disable ring if speed < Vdop and not electric brake - if self.KVT and speed <= SpeedLimit and not self.ElectricBrake and self.ARSRing then self.ARSRing = false end - --Disable PN1 when we overspeed and time of overspeed < 1.5 - --[[ if speed <= SpeedLimit and self.Disassembly and CurTime()-self.Disassembly < 1.5 then - self.Disassembly = false - self.ElectricBrake = false - end--]] - --PN2 when we brake to 0 speed - if self.Disassembly and self.ElectricBrake and speed < 0.25 then self.PneumaticBrake2 = true end - - -- AntiRolling - local Drive = self.KRH > 0 - -- Engage RO - if speed < 3 and self.RO ~= true and not Drive and self.KDReadyToRelease ~= false then self.RO = true end - -- Check RO when we starting - if self.RO and self.RO ~= true and (speed > 5 or CurTime()-self.RO > 7) then - self.RO = nil - self.PneumaticBrake2 = self.NoFreq == 0 and speed <= 5 - self.KDReadyToRelease = nil - end - -- Disable PN1 and start RO timer - if Drive and self.RO == true then - self.RO = CurTime() - end - - -- Kiyv door close cancel pneumatic brake 1 command trigger - --[[ if self.KiyvMode then - -- Prepare - if Train.KD.Value == 0 then self.KDReadyToRelease = true end - -- Release brakes and give RO additional time - if (Train.KD.Value == 1) and self.KDReadyToRelease then - self.KDReadyToRelease = false - self.RO = CurTime() + 1.5 - end - end--]] - - --[[ local delay = 3.5 - if 10 < speed and speed < 30 then delay = 5.5 end - if speed < 3 then delay = 10 end - if (self.ElectricBrake or speed < 0.2) and Train:ReadTrainWire(34) == 0 then - if not self.EPKTimer then self.EPKTimer = CurTime() end - else - self.EPKTimer = nil - end - if self.EPKTimer and CurTime()-self.EPKTimer > delay then Train.EPKContacts:TriggerInput("Open",1) end ---]] - -- ARS signals - local Ebrake, Abrake, Pbrake1,Pbrake2 = - ((self.ElectricBrake) and 1 or 0), - ((self.Disassembly or self.ARSRing or self.ElectricBrake or zero and not self.KVT) and 1 or 0), - ((self.Disassembly and (zero or CurTime()-self.Disassembly < 1.5) or self.RO == true) and 1 or 0), - ((self.PneumaticBrake2 or zero and not self.KVT) and 1 or 0) - -- Apply ARS system commands - - self.Drive = 1-(Ebrake+Abrake) - self.DriveR = self.Drive - self.Brake = Ebrake - self.EPKContacts = 1 - self.OKT = self.IKT - self.Ring = self.ARSRing and 1 or 0 - self.V0 = self.RO == true and 1 or 0 - else - --if Train.EPK.Value == 0 then Train.EPKContacts:TriggerInput("Set",1) end - self.ARSRing = true - self.ElectricBrake = true - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.Disassembly = CurTime()-5 - self.EPKTimer = false - self.RO = true - - self.Drive = 0 - self.Brake = 0 - --self.DriveR = 0 - self.EPKContacts = 0 - self.IKT = 0 - self.OKT = 0 - self.Ring = 0 - self.V0 = 0 - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_718_electric.lu b/lua/metrostroi/systems/_obsolete/sys_81_718_electric.lu deleted file mode 100644 index e31c870..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_718_electric.lu +++ /dev/null @@ -1,784 +0,0 @@ --------------------------------------------------------------------------------- --- Электрические и силовые цепи 718 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_718_Electric") -TRAIN_SYSTEM.DontAccelerateSimulation = false - - - -function TRAIN_SYSTEM:Initialize() - -- General power output - self.Main750V = 0.0 - self.Aux750V = 0.0 - self.Power750V = 0.0 - self.Aux80V = 0.0 - self.Lights80V = 0.0 - self.Battery80V = 0.0 - - -- Resistances - self.R1 = 1e9 - self.R2 = 1e9 - self.Rs1 = 1e9 - self.Rs2 = 1e9 - - self.Rstator13 = 1e9 - self.Rstator24 = 1e9 - self.Ranchor13 = 1e9 - self.Ranchor24 = 1e9 - - -- Electric network info - self.Itotal = 0.0 - self.I13 = 0.0 - self.I24 = 0.0 - self.Ustator13 = 0.0 - self.Ustator24 = 0.0 - self.Ishunt13 = 0.0 - self.Istator13 = 0.0 - self.Ishunt24 = 0.0 - self.Istator24 = 0.0 - self.Utotal = 0.0 - -- Calculate current through rheostats 1, 2 - self.IR1 = self.Itotal - self.IR2 = self.Itotal - self.IRT2 = self.Itotal - self.T1 = 25 - self.T2 = 25 - self.P1 = 0 - self.P2 = 0 - self.Overheat1 = 0 - self.Overheat2 = 0 - - -- Total energy used by train - self.ElectricEnergyUsed = 0 -- joules - self.ElectricEnergyDissipated = 0 -- joules - self.EnergyChange = 0 - - --Train wire outside power - -- Need many iterations for engine simulation to converge - self.SubIterations = 16 - - self.Train:LoadSystem("KK","Relay","KPP-110",{ bass = true }) - self.Train:LoadSystem("BV","Relay") - self.Train:LoadSystem("GV","Relay","GV_10ZH",{bass=true}) - - - --Регулятор давления - self.Train:LoadSystem("RD","Relay","AK-11B") - --self.Train:LoadSystem("Telemetry",nil,"",{"Electric","Panel","Engines"}) -end - - -function TRAIN_SYSTEM:Inputs() - return { } -end - -function TRAIN_SYSTEM:Outputs() - return { "I13","I24","Itotal", "Brake", "Drive", - --[[ - "Rs1","Rs2","Itotal","I13","I24","IRT2", - "Ustator13","Ustator24","Ishunt13","Istator13","Ishunt24","Istator24", - "Uanchor13","Uanchor24","U13","U24","Utotal","RVState",--]] - "Main750V", "Power750V", "Aux750V", "Aux80V", "Lights80V", "Battery80V", --[[ - "ElectricEnergyUsed", "ElectricEnergyDissipated", "EnergyChange", - "RPSignalResistor"]] - "RNState", "RN", - "BTB","V2","V1", - "BVKA_KM1","BVKA_KM2","BVKA_KM3","BVKA_KM4","BVKA_KM5", - "Vent1","Vent2", - "BSKA","BTPI_V","BTPI_ZKK","BUTP" - } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end - - - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:Think(dT,iter) - local Train = self.Train - -- local dT = dT/8 - ---------------------------------------------------------------------------- - -- Voltages from the third rail - ---------------------------------------------------------------------------- - self.Main750V = Train.TR.Main750V - self.Aux750V = Train.TR.Main750V - self.Power750V = self.Main750V--*Train.GV.Value - - - ---------------------------------------------------------------------------- - -- Information only - ---------------------------------------------------------------------------- - self.Aux80V = BBE and 82 or 65 - self.Lights80V = BBE and 82 or 0 - self.Battery80V = 65--(Train.VB.Value > 0) and (BBE and 82 or 65) or 0 - - ---------------------------------------------------------------------------- - -- Some internal electric - ---------------------------------------------------------------------------- - local P = self.Battery80V > 62 and 1 or 0 - local HV = 550 < self.Main750V and self.Main750V < 975 and 1 or 0 - - - ---------------------------------------------------------------------------- - -- Solve circuits - ---------------------------------------------------------------------------- - self:SolvePowerCircuits(Train,dT) - if iter == 1 then - self:SolveControlCircuits(Train,dT) - end - - - ---------------------------------------------------------------------------- - -- Calculate current flow out of the battery - ---------------------------------------------------------------------------- - --local totalCurrent = 5*A30 + 63*A24 + 16*A44 + 5*A39 + 10*A80 - --local totalCurrent = 20 + 60*DIP -end - -local S = {} -local min = math.min -function TRAIN_SYSTEM:SolveControlCircuits(Train,dT) - local B = (Train.Battery.Voltage > 62) and 1 or 0 - local T = Train.SolverTemporaryVariables - if not T then - T = {} - for i=1,100 do T[i] = 0 end - Train.SolverTemporaryVariables = T - end - - for i=1,100 do - T[i] = min(Train:ReadTrainWire(i),1) - end - T[-34] = min(Train:ReadTrainWire(-34),1) - T[-11] = min(Train:ReadTrainWire(-11),1) - - local BUP = Train.BUP - local BUV = Train.BUV - - local BKCU = Train.BKCU - local BKVA = Train.BKVA - local BUVS = Train.BUVS - local BBE = Train.BBE - local BKBD = Train.BKBD - - local Panel = Train.Panel - --1.1. Цепи аккумуляторной батареи. Страница 7 - S[303] = B*Train.VB.Value - S[305] = S[303] - S[315] = S[303]*Train.SF5.Value - S[310] = B*Train.VB.Value - S[550] = S[310]*Train.SF2.Value--CHECK - Train:WriteTrainWire(50,S[550]) - S[316] = S[315]+T[50] --+ДИОД - S[311] = B*Train.VB.Value - S[334] = S[311]*Train.SF45.Value - S[312] = S[311]*Train.SF3.Value --CHECK - BBE.KMPower = S[334] - BBE.Power = S[305] - - --1.2. Цепи заряда аккумуляторной батареи. Включение ББЭ. Страница 7 - S[318] = S[316]*Train.SF7.Value - S[518] = S[318]*Train.SB15.Value - Train:WriteTrainWire(18,S[518]) - S[324] = T[18]*Train.SF12.Value - BBE.Activate = S[324] --Включение ББЭ - - --1.4. Отключение ББЭ. Страница 8 - S[519] = S[318]*Train.SB16.Value - Train:WriteTrainWire(19,S[519]) - S[333] = T[19]*Train.SF13.Value - - --1.5. Аварийное отключение ББЭ и сигнализации Страница 9 - Train:WriteTrainWire(20,BBE.Error) - Panel.HL7 = S[318]*T[20] - BBE.Deactivate = S[333] --Включение ББЭ - - --2.1. Освещение вагонов основное. Страница 9 - S[544] = S[318]*Train.SAP8.Value - Train:WriteTrainWire(44,S[544]) - S[538] = (1-Train.SAP8.Value)*T[44] - Train:WriteTrainWire(38,S[538]) - S[340] = T[38]*Train.SF16.Value - BBE.KM2Power = S[340] - - S[408] = S[305]*BBE.KM2 - S[409] = S[408]*Train.SF44.Value --END - Panel.EL7_30 = S[409] - - --2.2. Аварийное освещение салонов и кабины. Страница 10 - S[407] = S[312]*Train.SF44.Value - Panel.EL3_6 = S[407] - S[322] = T[50]*Train.SF11.Value - Panel.EL1 = S[322] - S[321] = T[50]*Train.SF10.Value - S[385] = S[321]*Train.SAP13.Value - Panel.EL2 = S[385] - --2.3. Освещение аппаратных отсеков. Страница 10 - S[384] = S[322]*Train.SAP12.Value - Panel.EL31 = S[384] - --2.4. Подсветка прибора. Страница 10 - S[328] = T[50]*Train.SF72.Value - S[131] = S[328]*Train["SA4/1"].Value - Panel.HL52 = S[131] - - --3.1 Основное управление ЭК. Страница 11 - S[531] = S[318]*(1-Train.SA16.Value) - Train:WriteTrainWire(31,S[531]) - S[410] = Train.SA16.Value*T[31] + Train.SF56.Value*T[55] --3.3. Особенности управления ЭК в неполном составе. Страница 12 - S[529] = S[410]*Train.SP1.Value - Train:WriteTrainWire(29,S[529]) - - - --3.2. Резервное управление ЭК. Страница 10 - S[320] = S[316]*Train.SF9.Value - S[530] = S[320]*Train.SB14.Value - Train:WriteTrainWire(30,S[530]) - S[348] = T[30]*Train.SF22.Value - - S[347] = T[29] - BKVA.KM2 = (S[347]+S[348])--[[*тепловое реле]] - - S[206] = self.Main750V > 200 and 1 or 0 - S[208] = S[206]*BKVA.KM2 - Train.KK:TriggerInput("Set",S[208]) - - --4.1. Обогрев кабины. Страница 13 - S[383] = S[321]*Train.SAP11.Value - BKVA.KM1 = S[383] - - --5.1. Вентиляция салонов. Страница 13 - S[307] = S[312]*Train.SF34.Value - - S[540] = S[321]*Train.SAP9.Value --Включение - Train:WriteTrainWire(40,S[540]) - S[375] = T[40]*Train.SF23.Value - BUVS.KM1 = S[375] - - S[379] = S[307]*BUVS.KM1 --Контроль - BUVS.KV1 = S[379] - S[542] = 1-BUVS.KV1 --Сигнализация - Train:WriteTrainWire(42,S[542]) - Panel.VS1 = T[42]*S[321] - - - S[541] = S[322]*Train.SAP10.Value - Train:WriteTrainWire(41,S[541]) - S[377] = T[41]*Train.SF23.Value - BUVS.KM2 = S[377] - - S[381] = S[307]*BUVS.KM2 - BUVS.KV2 = S[381] - - S[549] = 1-BUVS.KV2 - Train:WriteTrainWire(49,S[549]) - Panel.VS2 = T[49]*S[322] - - -- 5.2. Питание двигателя вентилятора кабины. Страница 13 - - - --6.1. Звуковая сигнализация. Страница 14 - S[613] = B*(1-Train.VB.Value) - S[675] = S[613]*Train.SF55.Value - - S[548] = S[318]*Train.SB5.Value + S[675]*Train.SP7.Value - Train:WriteTrainWire(48,S[548]) - Train.BZOS.Ring = T[48] - - --6.3. Пожарная сигнализация. Страница 15 --TODO - S[326] = T[50]*Train.SF76.Value - --6.2. Охранная сигнализация. Страница 14 - Train.BZOS.Power = S[326] - - --7.2. Цепи "нулевого" положения КР и КРУ. Цепи габаритных фонарей. Страница 16 - S[317] = S[316]*Train.SF6.Value - BKCU.KM3 = S[317]*Train.KRU["317-317A"]*Train.KR["317A-387"]*(1-BKCU.KM1)*(1-BKCU.KM2) - S[320] = S[316]*Train.SF9.Value - BKCU.KM7 = S[320]*Train.KRU["320A-393"]*(1-BKCU.KM5)*(1-BKCU.KM6) - S[366] = S[316]*Train.SF41.Value - Panel.H11 = S[366]*(1-BKCU.KM2) - - --7.3. Цепи положения "ВПЕРЕД" КР. Страница 17 - S[3178] = S[317]*Train.KRU["317-317A"]*(1-BKCU.KM8)*(1-BKCU.KM4) --FIXME - BKCU.KM2 = S[3178]*Train.KR["317B-388"] - S[673] = S[317]*Train.SF51.Value - --673-679 - Гребнесмазыватель - --S[369] = S[316]*Train.SF8.Value*Train.KR["673-679"] - - --7.4. Цепи положения "НАЗАД" КР. Страница 17 - BKCU.KM1 = S[3178]*Train.KR["317B-386"] - - --7.5. Цепи положения "ВПЕРЕД" КРУ. Страница 17 - S[3208] = S[320]*Train.KR["320-320A"]*(1-BKCU.KM8)*(1-BKCU.KM4) --FIXME - BKCU.KM6 = S[3208]*Train.KRU["320B-392"] - S[319] = S[316]*Train.SF8.Value - S[369] = S[319]*(Train.KR["319-369"]+Train.KRU["319-369"]) - - S[680] = S[316]*Train.SF52.Value - S[620] = S[680]*Train.KRU["680-680A"] + S[673]*Train.KR["673-673A"] - S[611] = S[620]*Train.SF61.Value - BKBD.FMM1 = S[611] - BKCU.KM5 = S[3208]*Train.KRU["320B-394"] - - --8.1. Открытие дверей. Страница 18 - S[536] = S[369]*(Train.SB1.Value*(1-Train.SA7.Value)+Train.SA24.Value+Train.SBP4.Value) - Panel.HL3 = S[369]*(1-Train.SA7.Value) - Train:WriteTrainWire(36,S[536]) - --S[357] = T[36]*Train.SF18.Value+S[358] - - --8.1.4 Открытие правых дверей Страница 19 - S[537] = S[369]*(Train.SB2.Value*Train.SA7.Value+Train.SBP6.Value) - Train:WriteTrainWire(37,S[537]) - Panel.HL4 = S[369]*Train.SA7.Value - --S[359] = T[37]*Train.SF20.Value+S[358] - - --8.2. Закрытие дверей. Страница 19 - S[532] = S[369]*Train.SA5.Value*Train.SA6.Value - Train:WriteTrainWire(32,S[532]) - - --352-353-354 - S[354] =(1-BKVA.KM4) - Train.U1:TriggerInput("Set", T[32]*S[354]) - - --8.2.2 - S[533] = S[369]*Train.SB3.Value - Train:WriteTrainWire(33,S[533]) - - S[358] = T[33]*Train.SF19.Value - S[357] = T[36]*Train.SF18.Value+S[358] - S[359] = T[37]*Train.SF20.Value+S[358] - Train.U2:TriggerInput("Set",S[357]) - Train.U3:TriggerInput("Set",S[359]) - - --8.3. Контроль положения дверей. Страницы 19-20 - --312-SA15..SA22-351 - S[351] = S[312]*Train.SAD.Value - BKVA.KM4 = S[351] - - --312-KM2/1-534(-34)-Концевые каждого вагона(34)-Замкнутый КМ3 БКЦУ-36 провод - S[534] = S[312]*(BKCU.KM1+BKCU.KM2)+S[320]*(BKCU.KM5+BKCU.KM6)*(1-BKCU.KM7) - Train:WriteTrainWire(-34,S[534]) --Подача питания на 34 провод - Train:WriteTrainWire(34,T[-34]*Train.SAD.Value) --Разрыв питания онцевых переключателей - S[535] = T[34]*BKCU.KM3*BKCU.KM7 - Train:WriteTrainWire(35,S[535]) - Panel.SD = T[35] - Panel.HL13 = S[312]*S[354] - BUP.IKDV = BUP.Power*(1-T[35]) - - --9. БЛОКИРОВКА ПОСТОВ УПРАВЛЕНИЯ И ФОРМИРОВАНИЕ ЦЕПЕЙ УПРАВЛЕНИЯ ДВИЖЕНИЕМ СОСТАВА - --Страница 20-21 - --317Г - S[515] = S[317]*(BKCU.KM1+BKCU.KM2)-->V - Train:WriteTrainWire(15,S[515])-->V - BKCU.KM4 = T[15]*min(1,BKCU.KM3+BKCU.KM4) - --320Г - S[516] = S[320]*(BKCU.KM5+BKCU.KM6)-->V - Train:WriteTrainWire(16,S[516])-->V - BKCU.KM8 = T[16]*min(1,BKCU.KM7+BKCU.KM8) - BUP.Power = S[515] - - --9.4 - S[335] = T[15]*Train.SF14.Value - S[337] = T[16]*Train.SF5.Value - BKVA.KM3 = S[335]+S[337] - - --312=314 - S[314] = S[312]*Train.SF4.Value*BKVA.KM3 - BUV.Power = S[314] - Train.BSKA.Power = S[314] - Train.PTTI.Power = S[314] - - S[517] = (1-BKVA.KM3) - Train:WriteTrainWire(17,S[517]) - Panel.CUV = T[15]*T[17]--Питание с 15 провода и земля с 17 - - --10. ЦЕПИ БЕЛЫХ ФАР И ЛАМП СИГНАЛИЗАЦИИ СТОЯНОЧНОГО ТОРМОЗА - --Страница 322 - - - --316-SF41-365-KM2/6-390 - S[390] = S[316]*Train.SF41.Value*(BKCU.KM2+BKCU.KM6) - --390-SA1/1(SA2/1)-367(368)-R9(R10)-HL17-19(HL20-22) - S[512] = S[328]*Train.SQ1.Value - Train:WriteTrainWire(12,S[512]) - Panel.HL46 = S[512] - Panel.ST = T[12] - - Panel.HL17 = S[390]*Train["SA1/1"].Value - Panel.HL20 = S[390]*Train["SA2/1"].Value - --11. ЗАЩИТА СИЛОВЫХ ЦЕПЕЙ. ЦЕПИ КОНТРОЛЯ СОСТОЯНИЯ ЗАЩИТЫ. - --11.1. Цепи быстродействующих автоматических выключателей. - --Страница 23 - S[306] = S[312]*Train.SF27.Value - Train.BVA.Power = S[306] - S[3061] = S[306]*Train.SF46.Value - Train.BVA.ControlPower = S[3061] - - --S[526] = T[45]*Train.SB12.Value - Train.BVA.Reset = T[26] - - --317Г + 320Г - S[522] = S[515]*Train.SB13.Value - Train:WriteTrainWire(22,S[522]) - - --11.4 - Train.BVA.Disable = T[22] - --360А-Лампа-БУВ-725 - Panel.HL25 = S[3061]*BUV.ORP - --Мы получаем землю - S[528] = Panel.HL25*100+BUV.OIZ - Train:WriteTrainWire(28,S[528]) - Panel.HL6 = S[515]*(S[528]+T[28]) - - --11.1.5 - S[526] = (T[45]+T[54])*Train.SB12.Value - Train:WriteTrainWire(26,S[526]) - - --12.2. Команды направления движения. - BUP.IV = BUP.Power*S[317]*BKCU.KM2 - BUP.IN = BUP.Power*S[317]*BKCU.KM1 - - --13.1. Формирование сигналов безопасности движения с включенной системой АРС. - --626=363 - S[626] = (S[611]*Train.SA13.Value+T[87]*(1-Train.SA13.Value))*Train.RC.Value - BKBD.Power = S[626] - S[610] = Train.PB.Value*S[611] + (1-Train.SAP26.Value)*S[626] - Train.RPB:TriggerInput("Set",S[610]) - BUP.IPB = BUP.Power*S[610] - - S[584] = S[626]*Train.PB.Value + T[87]*Train.SA14.Value*Train.SB8.Value - Train:WriteTrainWire(84,S[584]) - BKBD.KB = T[84] - - --13.2 - S[5908] = S[673]*(1-Train.RC.Value) - S[5901] = S[5908]*Train.SF77.Value - S[590] = BKBD.Drive*Train.RC.Value + S[5901]*Train.SBR16.Value - Train:WriteTrainWire(90,S[590]) - S[589] = BKBD.Drive--[[R]] *Train.RC.Value - Train:WriteTrainWire(89,S[589]) - --13.1 - BUP.IX = T[90] - Train.ROT1:TriggerInput("Set",S[590]+T[90]*(1-Train.RC.Value)) - Train.ROT2:TriggerInput("Set",S[589]+T[89]*(1-Train.RC.Value)) - Panel.KVD = T[87]*(1-Train.ROT2.Value) - --501Г-501В - S[5012] = Train.ROT1.Value*BUP.OXp - --501Б-501Е - S[5016] = S[5012]*(Train.SP2.Value+Train.SA9.Value) - S[5011] = S[5016]*(Train.SP5.Value+Train.SAP26.Value) - S[501] = S[5011]*(Train.RPB.Value+Train.SA8.Value) - BUP.IX = S[501] - BUP.IROT = BUP.OXp*(1-S[5012]) - BUP.IPVU = BUP.OXp*(1-S[5016]) - BUP.ISOT = BUP.OXp*(1-S[5011]) - BUP.IRPB = BUP.OXp*(1-S[501]) - Train:WriteTrainWire(1,S[501]) - - S[649] = S[326]*(1-Train.SP2.Value) - Panel.AVU = S[649] - - S[724] = S[515]*Train.SA2.Value - BUP.IBDV = S[724] - - - --13.2. Формирование сигналов безопасности при отключении системы АРС. Страница 30 - --РПБ- - S[509] = S[611]*(1-Train.RPB.Value)*(1-Train.SAP24.Value) + T[14]*Train.KRU["514-509"]--15.2 - Train:WriteTrainWire(09,S[509]) - S[5091] = T[09]*Train.SF26.Value - - S[672] = S[316]*Train.SF60.Value - S[615]= S[672]*(Train.SA13.Value+Train.SA15.Value) - S[627] = S[672]*Train.SA15.Value - BKBD.Power75V = S[627] - BKBD.Power12V = S[615] - - --13.3 Формирование сигналов безопасности в режиме АРС-Р. Страница 31 - S[680] = S[316]*Train.SF52.Value - S[5875] = S[680]*Train.SA14.Value - S[587] = S[5875]*(1-Train.RC.Value) - Train:WriteTrainWire(87,S[587]) - - S[606] = BKBD.EPKContacts*Train.RC.Value - - S[583] = S[606]*(1-Train.SA13.Value) - Train:WriteTrainWire(83,S[583]) - Train.U4:TriggerInput("Set",T[83]+S[606]) - - --14.1. Ходовые режимы основного управления. Страница 32-33 - Train.KMR1:TriggerInput("Set",BUV.OVP*(1-Train.KMR2.Value)*S[314]) - Train.KMR2:TriggerInput("Set",BUV.ONZ*(1-Train.KMR1.Value)*S[314]) - BUV.IRV = S[314]*Train.KMR1.Value - BUV.IRN = S[314]*Train.KMR2.Value - - BUV.IRV = S[314]*Train.KMR1.Value - BUV.IRN = S[314]*Train.KMR2.Value - Train.K1:TriggerInput("Set",S[314]*BUV.OLK) - Train.K2:TriggerInput("Set",S[314]*BUV.OKX) - Train.K3:TriggerInput("Set",S[314]*BUV.OKT) - - BUV.IKX = Train.K2.Value - BUV.IKT = Train.K3.Value - BUV.ILT = Train.K1.Value - - --14.2. Резервное управление ходовыми режимами. Страница 34 - S[557] = S[320]*BKCU.KM6 - Train:WriteTrainWire(57,S[557]) - S[558] = S[320]*BKCU.KM5 - Train:WriteTrainWire(58,S[558]) - - S[3205] = S[516]*(Train.ROT2.Value+Train.ROT1.Value)*Train.SP5.Value - S[555] = S[3205]*(Train.SBR14.Value+Train.SBR15.Value) - Train:WriteTrainWire(55,S[555]) - S[556] = S[555]*Train.SBR15.Value - Train:WriteTrainWire(56,S[556]) - --14.3. Режим "МАНЕВР". Страница 35 - S[513] = S[515]*Train.SB7.Value - Train:WriteTrainWire(13,S[513]) - --15. УПРАВЛЕНИЕ СИЛОВЫМ ПРИВОДОМ В ТОРМОЗНЫХ РЕЖИМАХ Страница 36-37 - --КТ - --БКБД головного-511-К4БУВС-БКБД хвостового - S[5092] = S[5091]+T[08]*(1-BUVS.KM3) - BUVS.KM3 = S[314]*BUV.ORMT - BUVS.KM4 = S[314]*BUV.ORKT - Train.U6:TriggerInput("Set",S[5092]) - S[5102] = T[10]+Train.SF29.Value*BUV.OV1 - Train.U7:TriggerInput("Set",S[5102]) - --15.2. Управление от АРС и контроль эффективности торможения. Страница 39 - --!!!7.5.4. замкнутыми контакта ми КРУ 514 КРУ → 509 КРУ объединяются цепи команд аварийного торможения ВЗ №2 от БКБД. - S[507] = S[626]*BKBD.Brake - - Train:WriteTrainWire(07,S[507]) - Train:WriteTrainWire(14,S[507]) - --16. ПЕРЕХОД В РЕЖИМ "ВЫБЕГ" - --320Г-SB14/15 - S[554] = S[516]*(1-Train.SBR14.Value)*(1-Train.SBR15.Value) - Train:WriteTrainWire(54,S[554]) - --17. РЕЖИМЫ РАБОТЫ ЭЛЕКТРИЧЕСКОЙ СХЕМЫ УПРАВЛЕНИЯ ВАГОНА И ЦЕПЕЙ КОНТРОЛЯ - S[527] = S[318]*Train.SB4.Value - Train:WriteTrainWire(27,S[527]) - S[523] = BUV.Power*BUV.OSN - Train:WriteTrainWire(23,S[523]) - Panel.HL5 = S[318]*T[23] - S[547] = S[515]*Train.SBP22.Value - Train:WriteTrainWire(47,S[547]) - - --19. УПРАВЛЕНИЕ ОТЖАТИЕМ ТОКОПРИЕМНИКОВ - S[524] = T[50]*((Train.VTPR.Value == 1 or Train.VTPR.Value == 2) and 1 or 0) - S[525] = T[50]*((Train.VTPR.Value == 1 or Train.VTPR.Value == 3) and 1 or 0) - S[559] = Train.VTPR.Value > 0 and 1 or 0 - Train:WriteTrainWire(24,S[524]) - Train:WriteTrainWire(25,S[525]) - Train:WriteTrainWire(59,S[559]) - Train.U5:TriggerInput("Set",T[24]*T[59]) - - --24. УПРАВЛЕНИЕ АППАРАТУРОЙ АРС ПРИ ДВИЖЕНИИ СОСТАВА СО ВСПОМОГАТЕЛЬНЫМ ПОЕЗДОМ - S[574] = S[611]*Train.SAP23.Value - Train:WriteTrainWire(74,S[574]) - S[588] = S[611]*Train.SAP14.Value*(1-Train.SAP23.Value) - Train:WriteTrainWire(88,S[588]) - --Выдача сигналов БУП на поездные провода - Train:WriteTrainWire(01,BUP.OX) - Train:WriteTrainWire(02,BUP.OT) - Train:WriteTrainWire(03,BUP.OU1) - Train:WriteTrainWire(04,BUP.OU2) - Train:WriteTrainWire(05,BUP.OV) - Train:WriteTrainWire(06,BUP.ON) - Train:WriteTrainWire(08,BUP.OZPT) - Train:WriteTrainWire(45,BUP.O0) - - --Передача сигналов с поездных проводов в БУВ - local BUVPower = BUV.Power - BUV.IX = BUVPower*T[01] - BUV.IT = BUVPower*T[02] - BUV.IU1 = BUVPower*T[03] - BUV.IU2 = BUVPower*T[04] - BUV.IVP = BUVPower*T[05] - BUV.INZ = BUVPower*T[06] - BUV.ITARS = BUVPower*T[07] - BUV.ITEM = BUVPower*T[14] - BUV.IM = BUVPower*T[13] - BUV.IVZ = BUVPower*T[26] - BUV.IPROV = BUVPower*T[27] - BUV.IPROV0 = BUVPower*T[47] - BUV.IXP = BUVPower*T[55] - BUV.IU1R = BUVPower*T[56] - BUV.IVR = BUVPower*T[57] - BUV.INR = BUVPower*T[58] - BUV.IAVR = BUVPower*(1-Train.SP3.Value) --737-700 14.3. Режим "МАНЕВР". - --BUV. = BUVPower*Train:ReadTrainWire(45) - self.Schemes = S -end - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolvePowerCircuits(Train,dT) - -- Apply K2, K3 contactors - self.R1 = self.R1 + 1e9*(1 - math.min(1,Train.K2.Value+Train.K3.Value)) - self.R2 = self.R2 + 1e9*(1 - math.min(1,Train.K2.Value+Train.K3.Value)) - - -- Thyristor contrller - self.Rs1 = Train.PTTI.RVResistance or 1e9 - self.Rs2 = Train.PTTI.RVResistance or 1e9 - - -- Calculate total resistance of engines winding - local RwAnchor = Train.Engines.Rwa*2 -- Double because each set includes two engines - local RwStator = Train.Engines.Rws*2 - -- Total resistance of the stator + shunt - self.Rstator13 = (RwStator^(-1) + self.Rs1^(-1))^(-1) - self.Rstator24 = (RwStator^(-1) + self.Rs2^(-1))^(-1) - -- Total resistance of entire motor - self.Ranchor13 = RwAnchor - self.Ranchor24 = RwAnchor - - -- Calculate electric power network - --FIXME - if Train.PTTI.State < 0 then - self:SolvePT(Train) - else - self:SolvePP(Train) - end - - -- Calculate current through rheostats 1, 2 - self.IR1 = self.I13 - self.IR2 = self.I24 - - -- Calculate induction properties of the motor - self.I13SH = self.I13SH or self.I13 - self.I24SH = self.I24SH or self.I24 - - -- Time constant - local T13const1 = math.max(16.00,math.min(28.0,(self.R13^2) * 2.0)) -- R * L - local T24const1 = math.max(16.00,math.min(28.0,(self.R24^2) * 2.0)) -- R * L - -- Total change - local dI13dT = T13const1 * (self.I13 - self.I13SH) * dT - local dI24dT = T24const1 * (self.I24 - self.I24SH) * dT - - -- Limit change and apply it - if dI13dT > 0 then dI13dT = math.min(self.I13 - self.I13SH,dI13dT) end - if dI13dT < 0 then dI13dT = math.max(self.I13 - self.I13SH,dI13dT) end - if dI24dT > 0 then dI24dT = math.min(self.I24 - self.I24SH,dI24dT) end - if dI24dT < 0 then dI24dT = math.max(self.I24 - self.I24SH,dI24dT) end - self.I13SH = self.I13SH + dI13dT - self.I24SH = self.I24SH + dI24dT - self.I13 = self.I13SH - self.I24 = self.I24SH - - --FIXME - if Train.PTTI.State > 0 then -- PS - self.I13 = self.I13 * Train.K2.Value * Train.K1.Value - self.I24 = self.I24 * Train.K2.Value * Train.K1.Value - - self.Itotal = Train.Electric.I13 + Train.Electric.I24 - else -- PT - self.I13 = self.I13 * Train.K3.Value - self.I24 = self.I24 * Train.K3.Value - - self.Itotal = Train.Electric.I13 + Train.Electric.I24 - end - - -- Calculate extra information - self.Uanchor13 = self.I13 * self.Ranchor13 - self.Uanchor24 = self.I24 * self.Ranchor24 - - - - ---------------------------------------------------------------------------- - -- Calculate current through stator and shunt - self.Ustator13 = self.I13 * self.Rstator13 - self.Ustator24 = self.I24 * self.Rstator24 - - self.Ishunt13 = self.Ustator13 / self.Rs1 - self.Istator13 = self.Ustator13 / RwStator - self.Ishunt24 = self.Ustator24 / self.Rs2 - self.Istator24 = self.Ustator24 / RwStator - - --FIXME - if Train.PTTI.State < 0 then - local I1,I2 = self.Ishunt13,self.Ishunt24 - self.Ishunt13 = -I2 - self.Ishunt24 = -I1 - - I1,I2 = self.Istator13,self.Istator24 - self.Istator13 = -I2 - self.Istator24 = -I1 - end - - - -- Sane checks - if self.R1 > 1e5 then self.IR1 = 0 end - if self.R2 > 1e5 then self.IR2 = 0 end - - -- Calculate power and heating --FIXME - local K = 12.0*1e-5 - local H = (10.00+(15.00*Train.Engines.Speed/80.0))*1e-3 - self.P1 = (self.IR1^2)*self.R1 - self.P2 = (self.IR2^2)*self.R2 - self.T1 = (self.T1 + self.P1*K*dT - (self.T1-25)*H*dT) - self.T2 = (self.T2 + self.P2*K*dT - (self.T2-25)*H*dT) - self.Overheat1 = math.min(1-1e-12, - self.Overheat1 + math.max(0,(math.max(0,self.T1-750.0)/400.0)^2)*dT ) - self.Overheat2 = math.min(1-1e-12, - self.Overheat2 + math.max(0,(math.max(0,self.T2-750.0)/400.0)^2)*dT ) - - -- Energy consumption - self.ElectricEnergyUsed = self.ElectricEnergyUsed + math.max(0,self.EnergyChange)*dT - self.ElectricEnergyDissipated = self.ElectricEnergyDissipated + math.max(0,-self.EnergyChange)*dT -end - -function TRAIN_SYSTEM:SolvePP(Train) - -- Calculate total resistance of each branch - local R1 = self.Ranchor13 + self.Rstator13 - local R2 = self.Ranchor13 + self.Rstator13 - local CircuitClosed = (self.Power750V*Train.K1.Value > 0) and 1 or 0 - - -- Main circuit parameters - local V = self.Power750V*Train.K1.Value*Train.PTTI.RNState - local E1 = Train.Engines.E13 - local E2 = Train.Engines.E24 - - -- Calculate current through engines 13, 24 - self.I13 = math.max(0,((V - E1)/R1)*CircuitClosed) - self.I24 = math.max(0,((V - E2)/R2)*CircuitClosed) - - -- Total resistance (for induction RL circuit) - self.R13 = R1 - self.R24 = R2 - - -- Calculate everything else - self.U13 = self.I13*R1 - self.U24 = self.I24*R2 - self.Utotal = (self.U13 + self.U24)/2 - self.Itotal = Train.Electric.I13 + Train.Electric.I24 - -- Energy consumption - self.EnergyChange = math.abs((self.I13^2)*R1) + math.abs((self.I24^2)*R2) -end - -function TRAIN_SYSTEM:SolvePT(Train) - -- Winding resistances - local R1 = self.Ranchor13 + self.Rstator13 - local R2 = self.Ranchor24 + self.Rstator24 - -- Total resistance of the entire braking rheostat - local R3 = --[[ (1.730+0.4)*--]] 2.5*(1-0.84*Train.PTTI.RNState) - -- Main circuit parameters - local V = self.Power750V*Train.K1.Value - local E1 = Train.Engines.E13 - local E2 = Train.Engines.E24 - - -- Calculate current through engines 13, 24 - self.I13 = -((E1*R2 + E1*R3 - E2*R3 - R2*V)/(R1*R2 + R1*R3 + R2*R3)) - self.I24 = -((E2*R1 - E1*R3 + E2*R3 - R1*V)/(R1*R2 + R1*R3 + R2*R3)) - - -- Total resistance (for induction RL circuit) - self.R13 = R3+((R1^(-1) + R2^(-1))^(-1)) - self.R24 = R3+((R1^(-1) + R2^(-1))^(-1)) - - -- Calculate everything else - self.U13 = self.I13*R1 - self.U24 = self.I24*R2 - self.Utotal = (self.U13 + self.U24)/2 - self.Itotal = Train.Electric.I13 + Train.Electric.I24 - - -- Energy consumption - self.EnergyChange = -math.abs(((0.5*self.Itotal)^2)*self.R13) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_720_asnp.lua b/lua/metrostroi/systems/_obsolete/sys_81_720_asnp.lua deleted file mode 100644 index 678aa1c..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_720_asnp.lua +++ /dev/null @@ -1,737 +0,0 @@ --------------------------------------------------------------------------------- --- Announcer and announcer-related code --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_720_ASNP") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.TriggerNames = { - "R_ASNPMenu", - "R_ASNPUp", - "R_ASNPDown", - "R_ASNPOn", - "R_Program1", - "R_Program2", - --R_Announcer - --R_Line - } - self.Triggers = {} - - self.State = 0 - - self.Line = 1 - self.Path = false - self.Station = 1 - self.Arrived = true - - self.RouteNumber = 0 - - self.Line = 1 - - self.Train:LoadSystem("R_ASNPOn","Relay","Switch",{ normally_closed = true, bass = true }) - self.Train:LoadSystem("R_ASNPMenu","Relay","Switch",{bass = true }) - self.Train:LoadSystem("R_ASNPUp","Relay","Switch",{bass = true }) - self.Train:LoadSystem("R_ASNPDown","Relay","Switch",{bass = true }) -end - -if TURBOSTROI then return end -function TRAIN_SYSTEM:ClientInitialize() -end -if TURBOSTROI then return end - -function TRAIN_SYSTEM:Inputs() - return {} -end - -function TRAIN_SYSTEM:Outputs() - return {} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end -if CLIENT then - local function createFont(name,font,size) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = 500, - blursize = false, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - scanlines = false, - }) - end - createFont("ASNP","Liquid Crystal Display",30,400) - function TRAIN_SYSTEM:ClientThink() - --RunConsoleCommand("say","президент!!!") - if not self.DrawTimer then - render.PushRenderTarget(self.Train.ASNP,0,0,512, 128) - render.Clear(0, 0, 0, 0) - render.PopRenderTarget() - end - if self.DrawTimer and CurTime()-self.DrawTimer < 0.1 then return end - self.DrawTimer = CurTime() - render.PushRenderTarget(self.Train.ASNP,0,0,512, 128) - --render.Clear(0, 0, 0, 0) - cam.Start2D() - self:ASNPScreen(self.Train) - cam.End2D() - render.PopRenderTarget() - end - function TRAIN_SYSTEM:PrintText(x,y,text,inverse) - local str = {utf8.codepoint(text,1,-1)} - for i=1,#str do - local char = utf8.char(str[i]) - if inverse then - draw.SimpleText(string.char(0x7f),"Metrostroi_ASNP",(x+i)*20.5+5,y*40+40,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(char,"Metrostroi_ASNP",(x+i)*20.5+5,y*40+40,Color(140,190,0,150),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(char,"Metrostroi_ASNP",(x+i)*20.5+5,y*40+40,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - end - - TRAIN_SYSTEM.LoadSeq = "/-\\|" - function TRAIN_SYSTEM:ASNPScreen(Train) - local State = self.Train:GetNW2Int("ASNP:State",-1) - if State ~= 0 then - surface.SetDrawColor(140,190,0,self.Warm and 130 or 255) - self.Warm = true - else - surface.SetDrawColor(20,50,0,230) - self.Warm = false - end - surface.DrawRect(0,0,512,128) - if State == 0 then - return - end - - - if State == -2 then - self:PrintText(0,0,"Ошибка памяти") - self:PrintText(0,1,"Карта не поддерживается") - return - end - - if State == 1 then - self:PrintText(0,0,"Нажмиие \"MENU\"") - self:PrintText(0 ,1,"для начала настройки") - end - if State > 1 and not Metrostroi.ASNPSetup then - self:PrintText(0,0,"Client error") - self:PrintText(0,1,"ASNPSetup nil") - return - end - if State == 2 then - local RouteNumber = Format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0)) - local sel = Train:GetNW2Int("ASNP:Selected",0) - self:PrintText(0,0,"Номер маршрута:") - if sel == 2 then - local timer = math.ceil(RealTime()%7.5/1.5) - if timer == 1 then self:PrintText(4,1,"Для подтверждения") - elseif timer == 2 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") - elseif timer == 3 then self:PrintText(6,1,"Для возврата к") - elseif timer == 4 then self:PrintText(5,1,"предыдущей цифре") - elseif timer == 5 then self:PrintText(4,1,"нажмите \"+\" или \"-\"") end - else - local timer = math.ceil(RealTime()%7.5/1.5) - if timer == 1 then self:PrintText(5,1,"Для ввода номера") - elseif timer == 2 then self:PrintText(4,1,"нажмите \"+\" или \"-\"") - elseif timer == 3 then self:PrintText(6,1,"Для перехода к") - elseif timer == 4 then self:PrintText(5,1,"следующей цифре") - elseif timer == 5 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") end - end - - self:PrintText(0,1,RouteNumber[1],sel==0 and RealTime()%1 > 0.5) - self:PrintText(1,1,RouteNumber[2],sel==1 and RealTime()%1 > 0.5) - end - - local stbl = Metrostroi.ASNPSetup and Metrostroi.ASNPSetup[Train:GetNW2Int("Announcer",1)] - if State > 2 and not stbl then - self:PrintText(0,0,"Client error") - self:PrintText(0,1,"ASNPSetup[ann] nil") - return - end - - if State == 3 then - local Line = self.Train:GetNW2Int("ASNP:Line",1) - local ltbl = stbl[Line] - local St,En = ltbl[1],ltbl[#ltbl] - self:PrintText(0,0,"Маршрут"..(ltbl.Loop and " ()" or "")) - local timer = math.ceil(RealTime()%7.5/1.5) - if timer == 1 then self:PrintText(0,1,(ltbl.Name or "Нет названия")) - elseif timer == 2 then self:PrintText(0,1,"От:");self:PrintText(3,1,St[2]);self:PrintText(21,1,tostring(St[1])) - elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 4 then self:PrintText(4,1,"Для подтверждения") - elseif timer == 5 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") end - end - - if State == 4 then - local Line = Train:GetNW2Int("ASNP:Line",1) - local ltbl = stbl[Line] - if ltbl.Loop then - local Path = Train:GetNW2Bool("ASNP:Path") - self:PrintText(0,0,"Путь") - self:PrintText(0,1,Path and "II (второй)" or " I (первый)") - else - local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] - self:PrintText(0,0,"Начальная станция") - self:PrintText(0,1,St[1]..":"..St[2]) - end - end - - if State == 5 then - local Line = Train:GetNW2Int("ASNP:Line",1) - local ltbl = stbl[Line] - if ltbl.Loop then - local station = Train:GetNW2Int("ASNP:LastStation",1) - local En = ltbl[station] - self:PrintText(0,0,"Конечная станция") - if station == 0 then - self:PrintText(0,1," ():".."Кольцевой") - else - self:PrintText(0,1,En[1]..":"..En[2]) - end - else - local En = ltbl[Train:GetNW2Int("ASNP:LastStation",1)] - self:PrintText(0,0,"Конечная станция") - self:PrintText(0,1,En[1]..":"..En[2]) - end - end - - if State == 6 then - local Line = Train:GetNW2Int("ASNP:Line",1) - local ltbl = stbl[Line] - local Path = Train:GetNW2Bool("ASNP:Path") - self:PrintText(0,0,"Проверьте данные") - self:PrintText(18,0,Format("%02d",Line)) - self:PrintText(22,0,Path and "II" or "I") - self:PrintText(22,1,Format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0))) - if ltbl.Loop then - local station = Train:GetNW2Int("ASNP:LastStation",1) - local En = ltbl[station] - self:PrintText(20,0,"()") - local timer = math.ceil(RealTime()%9/1.5) - if timer == 1 then self:PrintText(0,1,"()"..(ltbl.Name or "Нет названия")) - elseif timer == 2 and station > 0 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 2 and station == 0 then self:PrintText(0,1,"До:Кольцевой") - --elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 3 then self:PrintText(2,1,"Для подтверждения") - elseif timer == 4 then self:PrintText(4,1,"нажмите \"МЕНЮ\"") - elseif timer == 5 then self:PrintText(6,1,"Для отмены") - elseif timer == 6 then self:PrintText(1,1,"нажмите \"+\" или \"-\"") end - else - local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] - local En = ltbl[Train:GetNW2Int("ASNP:LastStation",1)] - if Path then - local StT = En;En=St;St=StT - end - local timer = math.ceil(RealTime()%10.5/1.5) - if timer == 1 then self:PrintText(0,1,(ltbl.Name or "Нет названия")) - elseif timer == 2 then self:PrintText(0,1,"От:");self:PrintText(3,1,St[2]);self:PrintText(21,1,tostring(St[1])) - elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 4 then self:PrintText(2,1,"Для подтверждения") - elseif timer == 5 then self:PrintText(4,1,"нажмите \"МЕНЮ\"") - elseif timer == 6 then self:PrintText(6,1,"Для отмены") - elseif timer == 7 then self:PrintText(1,1,"нажмите \"+\" или \"-\"") end - end - end - if State == 7 then - local Line = Train:GetNW2Int("ASNP:Line",1) - local ltbl = stbl[Line] - - local Path = Train:GetNW2Bool("ASNP:Path") - - local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] - local En - if Path and not ltbl.Loop then - En = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] - else - En = ltbl[Train:GetNW2Int("ASNP:LastStation",1)] - end - - local Station = ltbl[Train:GetNW2Int("ASNP:Station",1)] - local Dep = self.Train:GetNW2Bool("ASNP:Arrived",false) - - - if Dep then self:PrintText(0,0,"Отпр.") else self:PrintText(0,0,"Приб.") end - self:PrintText(6,0,Station[2]) - --if self.Train:GetNW2Int("ASNP:Locked",0) > 1 then self:PrintText(20,0,"Бл*Л") else self:PrintText(20,0,"Пл Л") end - if Train:GetNW2Bool("ASNP:Playing",false) then - self:PrintText(0,1,"<<< ИДЕТ ОБЪЯВЛЕНИЕ >>>") - --elseif Station == En then - -- self:PrintText(0,1,"<<< КОНЕЧАЯ >>>") - else - --self:PrintText(0,1,string.rep("I",Path and 2 or 1)) - self:PrintText(0,1,string.format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0))) - if ltbl.Loop and Train:GetNW2Int("ASNP:LastStation",1) == 0 then - self:PrintText(6,1,"Кольцевой") - else - self:PrintText(6,1,En[2]:upper()) - end - --if self.Train:GetNW2Int("ASNP:Locked",0) > 1 then self:PrintText(20,1,"Бл*П") else self:PrintText(20,1,"Пл П") end - end - end - end - return -end - -function TRAIN_SYSTEM:Zero() - self.Station = self.Path and self.LastStation or self.FirstStation - self.Arrived = true - self:UpdateBoards() -end - -function TRAIN_SYSTEM:Next() - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if tbl.Loop then - if self.Arrived then - if self.Path then - self.Station = self.Station - 1 - else - self.Station = self.Station + 1 - end - if self.Station == 0 or self.Station > #tbl then - self.Station = self.Station == 0 and #tbl or 1 - end - if self.Station == 0 or self.Station > #tbl then - self.Station = self.Station == 0 and (self.LastStation > 0 and self.LastStation or #tbl) or 1 - end - self.Arrived = false - --self.Station = 1 - else - self.Arrived = true - end - else - if self.Arrived then - if self.Station ~= (self.Path and self.FirstStation or self.LastStation) then - if self.Path then - self.Station = math.max(self.FirstStation,self.Station - 1) - else - self.Station = math.min(self.LastStation,self.Station + 1) - end - self.Arrived = false - end - else - self.Arrived = true - end - end - self:UpdateBoards() -end -function TRAIN_SYSTEM:Prev() - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if tbl.Loop then - if not self.Arrived then - if self.Path then - self.Station = self.Station + 1 - else - self.Station = self.Station - 1 - end - if self.Station == 0 or self.Station > #tbl then - self.Station = self.Station == 0 and (self.LastStation > 0 and self.LastStation or #tbl) or 1 - end - --self.Station = 1 - self.Arrived = true - else - self.Arrived = false - end - else - if not self.Arrived then - if self.Path then - self.Station = math.min(self.LastStation,self.Station + 1) - else - self.Station = math.max(self.FirstStation,self.Station - 1) - end - self.Arrived = true - else - if self.Station ~= (self.Path and self.LastStation or self.FirstStation) then - self.Arrived = false - end - end - end - self:UpdateBoards() -end -function TRAIN_SYSTEM:AnnQueue(msg) - local Announcer = self.Train.Announcer - if msg and type(msg) ~= "table" then - Announcer:Queue{msg} - else - Announcer:Queue(msg) - end -end -function TRAIN_SYSTEM:Play(dep,not_last) - local message - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - local stbl = tbl[self.Station] - local last,lastst - if tbl.Loop then - last = self.LastStation - lastst = not dep and self.LastStation > 0 and self.Station == last and tbl[last].arrlast - else - last = self.Path and self.FirstStation or self.LastStation - lastst = not dep and self.Station == last and tbl[last].arrlast - end - if dep then - message = stbl.dep[self.Path and 2 or 1] - else - if lastst then - message = stbl.arrlast[self.Path and 2 or 1] - else - message = stbl.arr[self.Path and 2 or 1] - end - end - self:AnnQueue{"click1"} - self:AnnQueue(message) - if lastst then table.insert(message,1,-1) end - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line][self.Station] - if self.LastStation > 0 and not dep and self.Station ~= last and tbl[last].not_last and (stbl.have_inrerchange or math.abs(last-self.Station) <= 3) then - self:AnnQueue(tbl[last].not_last) - end - self:AnnQueue{"click2"} - self:UpdateBoards() -end -function TRAIN_SYSTEM:CANReceive(source,sourceid,target,targetid,textdata,numdata) - if sourceid == self.Train:GetWagonNumber() then return end - if textdata == "RouteNumber" then self.RouteNumber = numdata end - if textdata == "Path" then self.Path = numdata > 0 end - if textdata == "Line" then self.Line = numdata end - if textdata == "FirstStation" then self.FirstStation = numdata end - if textdata == "LastStation" then self.LastStation = numdata end - if textdata == "Activate" then - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - self.Station = tbl.Loop and 1 or self.Path and self.LastStation or self.FirstStation - self.Arrived = true - self.State = 7 - local last = self.Path and not tbl.Loop and self.FirstStation or self.LastStation - local lastst = tbl[last] and tbl[last][1] - if lastst then self.Train:SetNW2Int("LastStation",lastst) end - self.Train:SetNW2Int("RouteNumber",self.RouteNumber) - end -end -function TRAIN_SYSTEM:SyncASNP() - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - local last = self.Path and self.FirstStation or self.LastStation - local lastst = tbl[last] and tbl[last][1] - if lastst then self.Train:SetNW2Int("LastStation",lastst) end - self.Train:SetNW2Int("RouteNumber",self.RouteNumber) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"RouteNumber",self.RouteNumber) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"Path",self.Path and 0 or 1) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"Line",self.Line) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"FirstStation",self.FirstStation) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"LastStation",self.LastStation) - self.Train:CANWrite("ASNP",self.Train:GetWagonNumber(),"ASNP",nil,"Activate") -end -function TRAIN_SYSTEM:UpdateBoards() - if self.State < 7 then - return - end - local BUKP = self.Train.BUKP - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - local stbl = tbl.LED - local curr = 0 - if self.Path then - for i=#stbl,self.Station+1,-1 do curr = curr + stbl[i] end - else - for i=1,self.Station-1 do curr = curr + stbl[i] end - end - local nxt = 0 - if self.Arrived then - curr = curr + stbl[self.Station] - else - nxt = stbl[self.Station] - end - BUKP:CState("PassSchemeCurr",curr,nil,true) - BUKP:CState("PassSchemeArr",nxt,nil,true) - --[[ - if Train:GetNW2Bool("PassSchemesRotated") then - --BUKP:CState("PassSchemePath",not self.Path,nil,true) - else - --BUKP:CState("PassSchemePath",self.Path,nil,true) - end]] - BUKP:CState("PassSchemePath",self.Path,nil,true) - BUKP:CState("TickerNext",not self.Arrived,nil,true) - BUKP:CState("TickerCurr",tbl[self.Station][2],nil,true) -end - -function TRAIN_SYSTEM:Trigger(name,value) - local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)] - if name == "R_Program2" and value and #self.Train.Announcer.Schedule==0 then - if self.State ~= 7 and tbl[self.Line] and tbl[self.Line].spec_last then - self:AnnQueue{"click1"} - self:AnnQueue(-1) - self:AnnQueue(tbl[self.Line].spec_last) - self:AnnQueue{"click2"} - elseif self.State == 7 then - local ltbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - local last,lastst - if self.Arrived then - if tbl.Loop then - ltbl = self.LastStation - lastst = self.LastStation > 0 and self.Station == last and ltbl[last].arrlast - else - last = self.Path and self.FirstStation or self.LastStation - lastst = self.Station == last and ltbl[last].arrlast - end - end - if lastst then - self:AnnQueue{"click1"} - self:AnnQueue(-1) - self:AnnQueue(ltbl.spec_last) - self:AnnQueue{"click2"} - else - self.StopMessage = not self.StopMessage - self:AnnQueue{"click1"} - self:AnnQueue(ltbl.spec_wait[self.StopMessage and 1 or 2]) - self:AnnQueue{"click2"} - end - end - end - if self.State == 1 and name == "R_ASNPMenu" and value then - self.State = 2 - self.Selected = 0 - elseif self.State == 2 and value then - if name == "R_ASNPMenu" then - self.Selected = self.Selected + 1 - if self.Selected > 2 then - self.State = 3 - end - end - if (name == "R_ASNPUp" or name == "R_ASNPDown") and self.Selected < 2 then - local sel = 1-self.Selected - local num = Format("%02d",self.RouteNumber)[self.Selected+1] - if name == "R_ASNPUp" then if num == "9" then self.RouteNumber = self.RouteNumber - 10^sel*9 else self.RouteNumber = self.RouteNumber + 10^sel end end - if name == "R_ASNPDown" then if num == "0" then self.RouteNumber = self.RouteNumber + 10^sel*9 else self.RouteNumber = self.RouteNumber - 10^sel end end - end - if (name == "R_ASNPUp" or name == "R_ASNPDown") and self.Selected == 2 then self.Selected = 0 end - elseif self.State == 3 and value then - if name == "R_ASNPDown" and value then - self.Line =self.Line + 1 - if self.Line > #tbl then self.Line = 1 end - end - if name == "R_ASNPUp" and value then - self.Line = math.max(1,self.Line - 1) - if self.Line < 1 then self.Line = #tbl end - end - if name == "R_ASNPMenu" and value then - if not tbl[self.Line].Loop then - self.FirstStation = 1 - end - self.State = 4 - end - elseif self.State == 4 and value and not tbl[self.Line].Loop then --Не кольцевой - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if name == "R_ASNPDown" then - local found = false - for i=self.FirstStation+1,#stbl do - if stbl[i].arrlast then self.FirstStation = i;found=true;break end - end - if not found then - for i=1,#stbl do - if stbl[i].arrlast then self.FirstStation = i;break end - end - end - end - if name == "R_ASNPUp" then - local found = false - for i=self.FirstStation-1,1,-1 do - if stbl[i].arrlast then self.FirstStation = i;found=true;break end - end - if not found then - for i=#stbl,1,-1 do - if stbl[i].arrlast then self.FirstStation = i;break end - end - end - end - if name == "R_ASNPMenu" then - self.State = 5 - for i=#stbl,1,-1 do - if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;break end - end - end - elseif self.State == 4 and value and tbl[self.Line].Loop then --Кольцевой - if name == "R_ASNPDown" or name == "R_ASNPUp" then - self.Path = not self.Path - end - if name == "R_ASNPMenu" then - self.LastStation = 0 - self.FirstStation = 0 - self.State = 5 - end - elseif self.State == 5 and value and not tbl[self.Line].Loop then --Не кольцевой - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if name == "R_ASNPDown" then - local found = false - for i=self.LastStation+1,#stbl do - if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;found=true;break end - end - if not found then - for i=1,#stbl do - if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;break end - end - end - end - if name == "R_ASNPUp" then - local found = false - for i=self.LastStation-1,1,-1 do - if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;found=true;break end - end - if not found then - for i=#stbl,1,-1 do - if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;break end - end - end - end - if name == "R_ASNPMenu" then - self.Path = self.FirstStation > self.LastStation - self.Station = self.FirstStation - if self.Path then - local first = self.LastStation - self.LastStation = self.FirstStation - self.FirstStation = first - end - self.Arrived = true - self.State = 6 - end - elseif self.State == 5 and value and tbl[self.Line].Loop then --Кольцевой - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if name == "R_ASNPDown" then - local found = false - for i=self.LastStation+1,#stbl do - if stbl[i].arrlast then self.LastStation = i;found=true;break end - end - if not found and self.LastStation ~= 0 then - self.LastStation = 0 - end - end - if name == "R_ASNPUp" then - local found = false - if self.LastStation == 1 then - self.LastStation = 0 - found = true - end - for i=self.LastStation-1,1,-1 do - if stbl[i].arrlast and stbl[i].arrlast[self.Path and 2 or 1] then self.LastStation = i;found=true;break end - end - if not found then - for i=#stbl,1,-1 do - if stbl[i].arrlast and stbl[i].arrlast[self.Path and 2 or 1] then self.LastStation = i;break end - end - end - end - if name == "R_ASNPMenu" then - self.State = 6 - self.Station = 1 - self.Arrived = true - end - elseif self.State == 6 and value then - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if name == "R_ASNPDown" or name == "R_ASNPUp" then - self.State = 2 - self.Selected = 0 - end - if name == "R_ASNPMenu" then - if self.FirstStation ~= 0 then - if self.Path then - self.Train.Announcer:Queue{"click1","announcer_ready",stbl[self.LastStation].arrlast[3],stbl[self.FirstStation].arrlast[3],"click2"} - else - self.Train.Announcer:Queue{"click1","announcer_ready",stbl[self.FirstStation].arrlast[3],stbl[self.LastStation].arrlast[3],"click2"} - end - end - self.State = 7 - self:UpdateBoards() - self:SyncASNP() - self.StopMessage = false - end - elseif self.State == 7 then - local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - if name == "R_ASNPMenu" and value then self.ReturnTimer = CurTime() end - if name == "R_ASNPMenu" and not value and self.ReturnTimer and self.ReturnTimer - CurTime() < 0.7 then - self.ReturnTimer = nil - end - if name == "R_ASNPDown" and value then self:Next() end - if name == "R_ASNPUp" and value then self:Prev() end - if name == "R_Program1" and value and #self.Train.Announcer.Schedule==0 then - if self.Arrived and self.Station == (self.Path and self.FirstStation or self.LastStation) then - self:Zero() - end - self:Play(self.Arrived) - self:Next() - end - end -end - ---States: --- -2 - Loaded in another cab --- -1 - Starting up ---nil - First setUp and get settings from last ---1 - Welcome Screen ---2 - Route Choose ---3 - Choose start station ---4 - Choose end station ---5 - Choose path ---6 - Choose style of playing ---7 - Normal state ---8 - Confim a settings (on last stations) -function TRAIN_SYSTEM:Think() - local Train = self.Train - local Power = Train.Electric.Battery80V > 62 ---[[ - if self.Train.R_ZS.Value < 0.5 and self.Train.KV.ReverserPosition == 1.0 then - Train:WriteTrainWire(47,1) - else - Train:WriteTrainWire(47,0) - end - Train:SetNW2Bool("ASNPPlay",Power and Train:ReadTrainWire(47) > 0)]] - local ASNPWork = Power and Train.R_ASNPOn.Value > 0.5 - if not ASNPWork and self.ASNPState ~= 0 then - self.State = 0 - self.ASNPTimer = nil - end - if ASNPWork and self.State == 0 then - self.State = -1 - self.ASNPTimer = CurTime()-math.Rand(-0.3,0.3) - end - if self.State == -1 and self.ASNPTimer and CurTime()-self.ASNPTimer > 1 then - self.State = Metrostroi.ASNPSetup and 1 or -2 - end - if ASNPWork and self.State > -1 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - self:Trigger(v,Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - if not Metrostroi.ASNPSetup and self.State > 0 then - self.State = -2 - end - if self.PassSchemeWork ~= (Train.PassScheme.Value>0 and self.State==7) then - self:UpdateBoards() - self.PassSchemeWork = Train.PassScheme.Value>0 and self.State==7 - end - - if self.ReturnTimer and CurTime()-self.ReturnTimer > 0.7 then - if self.State == 7 then self.State = 6 end - self.ReturnTimer = nil - end - Train:SetNW2Int("ASNP:State",self.State) - Train:SetNW2Int("ASNP:RouteNumber",self.RouteNumber) - - Train:SetNW2Int("ASNP:Selected",self.Selected) - Train:SetNW2Int("ASNP:Line",self.Line) - Train:SetNW2Int("ASNP:FirstStation",self.FirstStation) - Train:SetNW2Int("ASNP:LastStation",self.LastStation) - Train:SetNW2Bool("ASNP:Path",self.Path) - - Train:SetNW2Bool("ASNP:Station",self.Station) - Train:SetNW2Bool("ASNP:Arrived",self.Arrived) - Train:SetNW2Bool("ASNP:Playing",#Train.Announcer.Schedule>0) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_720_tr_7b.lua b/lua/metrostroi/systems/_obsolete/sys_81_720_tr_7b.lua deleted file mode 100644 index f245ad2..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_720_tr_7b.lua +++ /dev/null @@ -1,35 +0,0 @@ --------------------------------------------------------------------------------- --- 81-720 TR-7B --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_720_TR_7B") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - -- Output voltage from contact rail - self.Main750V = 0.0 -end - -function TRAIN_SYSTEM:Inputs() - return { } -end - -function TRAIN_SYSTEM:Outputs() - return { "Main750V"} -end - -function TRAIN_SYSTEM:Think(dT) - -- Don't do logic if train is broken - if (not IsValid(self.Train.FrontBogey)) or (not IsValid(self.Train.RearBogey)) then - return - end - - -- Too high current - --print( self.Train.AsyncInverter.InverterVoltage*self.Main750V , ">", (750*1000)) - if self.Train.Electric.Utotal*self.Main750V > (750*1000) then - self.Train:PlayOnce("spark","front_bogey",1.0,math.random(100,150)) - self.Train:PlayOnce("spark","rear_bogey",1.0,math.random(100,150)) - end - self.Main750V = math.max(self.Train.FrontBogey.Voltage,self.Train.RearBogey.Voltage) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_81_722_bars.lua b/lua/metrostroi/systems/_obsolete/sys_81_722_bars.lua deleted file mode 100644 index 6e6a662..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_81_722_bars.lua +++ /dev/null @@ -1,250 +0,0 @@ --------------------------------------------------------------------------------- --- БАРС для 81-722 --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_722_BARS") -TRAIN_SYSTEM.DontAccelerateSimulation = true - - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("ALSCoil") - self.Power = 0 - self.ARSPower = 0 - - -- Internal state - self.Active = 0 - - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Ring = 0 - self.Overspeed = false - - self.Brake = false - self.Brake2 = false - self.Drive = false - self.Braking = false - self.PN1 = 0 - self.PN2 = 0 - self.RVTB = 0 - - - self.NoFreq = 0 - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 -end - -function TRAIN_SYSTEM:Outputs() - return {"Active","Ring","Brake","Brake2","Drive","PN1","PN2", "SpeedLimit", "RVTB"} -end - -function TRAIN_SYSTEM:Inputs() - return {"NoFreq","F1","F2","F3","F4","F5","F6"} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local ALS = Train.ALSCoil - local speed = ALS.Speed - local Power = self.Power - local EnableALS = Power and Train.ALS.Value > 0.5-- and Train.BUKP.Active > 0 - if EnableALS ~= (ALS.Enabled==1) then - ALS:TriggerInput("Enable",EnableALS and 1 or 0) - end - - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1 - self.F2 = ALS.F2 - self.F3 = ALS.F3 - self.F4 = ALS.F4 - self.F5 = ALS.F5 - self.F6 = ALS.F6 - self.RealF5 = self.F5*(1-self.F6) - if (self.F1+self.F2+self.F3+self.F4+self.F5+self.F6) == 0 then self.NoFreq = 1 end - - -- Speed check and update speed data - if CurTime() - (self.LastSpeedCheck or 0) > 0.5 then - self.LastSpeedCheck = CurTime() - end - -- ARS system placeholder logic - self.KVT = (Train.PB.Value > 0.5 or Train.Vigilance.Value > 0.5)-- and not self.PBBlock - --[[if self.PBBlock == nil and self.NoFreq then - self.PBBlock = Train.PB.Value > 0.5 or Train.Vigilance.Value > 0.5 - end - if self.PBBlock and Train.PB.Value < 0.5 and Train.Vigilance.Value < 0.5 then self.PBBlock = false end - if self.PBBlock ~= nil and not self.NoFreq then self.PBBlock = nil end]] - local Active = Power and self.ARSPower - if self.KVT and not self.AttentionPedalTimer then - self.AttentionPedalTimer = CurTime() + 1 - end - - if self.KVT and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not self.KVT and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if EnableALS then - local V = math.floor(speed +0.05) - local Vlimit = 0 - if self.F4 then Vlimit = 40 end - if self.F3 then Vlimit = 60 end - if self.F2 then Vlimit = 70 end - if self.F1 then Vlimit = 80 end - - --if ( self.KVT) and (Vlimit ~= 0) and (V > Vlimit) then self.Overspeed = true end - --if ( self.KVT) and (Vlimit == 0) and (V > 20) then self.Overspeed = true end - --if (not self.KVT) and (V > Vlimit) and (V > (self.RealNoFreq and 0 or 3)) then self.Overspeed = true end - --if ( self.KVT) and (Vlimit == 0) and self.Train.ARSType and self.Train.ARSType == 3 and not self.Train["PA-KSD"].VRD then self.Overspeed = true end - --self.Ring = self.Overspeed and (speed > 5) - - -- Determine next limit and current limit - self.SpeedLimit = Vlimit+0.5 - self.NextLimit = Vlimit - if self.F1 then self.NextLimit = 80 end - if self.F2 then self.NextLimit = 70 end - if self.F3 then self.NextLimit = 60 end - if self.F4 then self.NextLimit = 40 end - if self.F5 then self.NextLimit = 20 end - else - local V = math.floor(speed +0.05) - self.SpeedLimit = 0 - self.NextLimit = 0 - end - - if Active then - if Train.Pneumatic.RVTBLeak == 0 then - self.RVTB = 1 - end - if self.Starting and CurTime() - self.Starting > 7 then - if speed > 7 then - self.Starting = nil - else - self.Starting = false - end - end - if speed < 0.1 and self.Starting == false and self.KVT then - self.Starting = nil - end - local Drive = self.Drive > 0 - local Brake = self.Brake > 0 - local Brake2 = self.Brake2 > 0 - local SpeedLimit = self.SpeedLimit - if self.SpeedLimit < 20 then SpeedLimit = 20 end - if self.AttentionPedal or Train.VRD.Value > 0.5 then SpeedLimit = 20 end - if speed > SpeedLimit - or (self.Starting == false or self.Starting and CurTime() - self.Starting > 7) - --or (self.F1 or self.F2 or self.F3 or self.F4) and self.KVT and speed > 20 - or not EnableALS and not self.NoFreq - or (self.NoFreq) and not self.KVT - or not self.NoFreq and self.RealF5 and (not self.KVT or not self.F6 and not self.VRD) - or self.Braking and not Brake then - if not Brake and self.SpeedLimit > 20 then self.Braking = true end - if not Brake and (self.SpeedLimit > 20 or speed > 0.1) then self.Ringing = true end - Brake = true - elseif speed < SpeedLimit and not self.Braking then - Brake = false - Brake2 = false - end - if (self.Braking or self.Ringing) and self.KVT and (self.NoFreq or EnableALS) then - self.Braking = false - self.Ringing = false - end - if self.Ringing and self.KVT then - self.Ringing = false - end - if self.Ringing then - self.RVTB = 0 - end - if speed < 3 and self.PN1 == 0 and Train.BUKP.PowerCommand <= 0 then - self.PN1 = 1 - self.PN2Timer = CurTime() - if self.Starting then self.Starting = nil end - end - if (Train.BUKP.PowerCommand > 0.1 or self.NoFreq and self.KVT) and self.PN1 > 0 then - if not self.Starting and not self.NoFreq then - self.Starting = CurTime() - end - self.PN1 = 0 - end - if self.PN1 > 0 and (--[[ Train.BUKP.PN2 > 0 or --]] self.PN2Timer and CurTime()-self.PN2Timer > 1) and self.PN2 == 0 then - self.PN2 = 1 - self.PN2Timer = nil - end - if self.PN1 < 1 then self.PN2 = 0 end - if self.BPSArmed then self.PN2 = 1 end - - if Brake and not Brake2 and not self.Brake2Timer then self.Brake2Timer = CurTime() end - if Brake and not Brake2 and self.Brake2Timer and CurTime() - self.Brake2Timer > 1.5 then - self.Brake2Timer = nil - Brake2 = true - end - if not Brake and (Brake2 or self.Brake2Timer) then - self.Brake2Timer = nil - Brake2 = false - end - if Train.VRD.Value > 0.5 and self.RealF5 and self.VRD == nil then - self.VRD = false - end - if (Train.VRD.Value < 0.5 or not self.RealF5) and self.VRD ~= nil then - self.VRD = nil - end - if self.VRD == false and speed <= 0.1 then - self.VRD = true - end - - --[[ self.BPSMeter = self.BPSMeter or 0 - if Train.Speed*Train.SpeedSign < 0 or self.BPSMeter < 0 then - self.BPSMeter = self.BPSMeter + math.min(0,Train.Speed*Train.SpeedSign*1000/3600)*dT - if Train.Speed*Train.SpeedSign > 0.1 then - self.BPSMeter = 0 - end - if -self.BPSMeter > 1.5 then - self.BPSArmed = true - end - end - if Train.BUV.Reverser == 0 and self.BPSArmed then self.BPSArmed = nil end--]] - --speed >= SpeedLimit-3 and (Train.BUKP.PowerCommand > 5 or Train:ReadTrainWire(19) > 0) or - self.DriveOff = speed >= SpeedLimit-2 - Drive = not self.DriveOff and ( - not self.NoFreq and EnableALS and self.RealF5 and self.KVT and (self.F6 or self.VRD) - or (self.NoFreq or not EnableALS) and self.KVT - or not self.NoFreq and EnableALS and not self.RealF5 - ) and not Brake and not self.BPSArmed - self.Ring = self.Ringing and 1 or 0 - self.Brake = Brake and 1 or 0 - self.Brake2 = Brake2 and 1 or 0 - self.Drive = Drive and 1 or 0 - if self.RVTBReset then - self.RVTB = 1 - self.RVTBReset = false - end - else - if self.RVTB == 0 and not self.RVTBReset then - if not self.RVTBResetTimer then self.RVTBResetTimer = CurTime() end - end - if not self.RVTBReset and self.RVTB == 1 or self.RVTBResetTimer and CurTime()-self.RVTBResetTimer > 3 then - self.RVTBReset = trueя - self.RVTBResetTimer = nil - end - self.RVTB = (self.KVT or Train.VAH.Value > 0.5) and 1 or 0 - self.Brake = 0 - self.Brake2 = 0 - self.Brake2Timer = nil - self.Drive = 0 - self.Ring = 0 - self.PN1 = 0 - self.PN2 = Train.RCARS.Value*Train.BUKP.Active - self.Starting = nil - self.Braking = true - self.Ringing = true - self.BPSArmed = nil - end - self.Active = Active and 1 or 0 -end diff --git a/lua/metrostroi/systems/_obsolete/sys_alstest.lua b/lua/metrostroi/systems/_obsolete/sys_alstest.lua deleted file mode 100644 index 36b8acc..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_alstest.lua +++ /dev/null @@ -1,106 +0,0 @@ --------------------------------------------------------------------------------- --- Статив и приёмные катушки АЛС --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("ALSTest") -TRAIN_SYSTEM.DontAccelerateSimulation = true - - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("F6","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("F5","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("F4","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("F3","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("F2","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("F1","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("NF","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("SpeedAdd","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("SpeedRem","Relay","Switch",{ bass = true }) - - self.TriggerNames = { - "F6", - "F5", - "F4", - "F3", - "F2", - "F1", - "NF", - "SpeedAdd", - "SpeedRem", - } - self.Triggers = {} - for k,v in pairs(self.TriggerNames) do - if self.Train[v] then self.Triggers[v] = self.Train[v].Value > 0.5 end - end - self.Speed = 0 - self.Acceleration = 0 - -- ALS state - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.NoFreq = 1 - self.NoFreqTimer = nil - self.RealF5 = 1 - self.Speed = 0 - self.SpeedSign = 0 -end - -function TRAIN_SYSTEM:Outputs() - return { - } -end - -function TRAIN_SYSTEM:Inputs() - return {"Enable"} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "Enable" then - self.Enabled = value - end -end - -function TRAIN_SYSTEM:Trigger(name,value) - local Train = self.Train - if name == "SpeedAdd" then - self.Speed = self.Speed + 2.5 - return - end - if name == "SpeedRem" then - self.Speed = self.Speed - 2.5 - return - end - if not value then return end - if name == "F6" then - self.F6 = 1-self.F6 - return - end - if name == "NF" then - self.F6 = 0 - self.F5 = 0 - self.F4 = 0 - self.F3 = 0 - self.F2 = 0 - self.F1 = 0 - self.NoFreq = 1 - return - end - self.F5 = name =="F5" and 1 or 0 - self.F4 = name =="F4" and 1 or 0 - self.F3 = name =="F3" and 1 or 0 - self.F2 = name =="F2" and 1 or 0 - self.F1 = name =="F1" and 1 or 0 - self.NoFreq = 0 -end -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - self:Trigger(v,Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_announcer.lua b/lua/metrostroi/systems/_obsolete/sys_announcer.lua deleted file mode 100644 index c3c93ab..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_announcer.lua +++ /dev/null @@ -1,249 +0,0 @@ --------------------------------------------------------------------------------- --- Announcer and announcer-related code --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Announcer") -TRAIN_SYSTEM.DontAccelerateSimulation = true -if TURBOSTROI then return end - -function table.GetLastKey(t) - local lk = -math.huge - for ki in pairs(t) do - lk = math.max(lk,ki) - end - return lk -end ---[[ -Metrostroi.AnnouncementSequences = { - [1101] = { 0211, 0308, 0321 }, - [1102] = { 0211, 0321, 0308 }, - - [1108] = { 0220, 0308 }, - [1109] = { 0220, 0309 }, - [1110] = { 0220, 0310, 0231 }, - [1111] = { 0220, 0311 }, - [1112] = { 0220, 0312 }, - [1113] = { 0220, 0313 }, - [1114] = { 0220, 0314 }, - [1115] = { 0220, 0315, 0231, 0202, 0203, 0415 }, - [1116] = { 0220, 0316 }, - [1117] = { 0220, 0317 }, - [1118] = { 0220, 0318, 0231 }, - [1119] = { 0220, 0319 }, - [1120] = { }, - [1121] = { 0220, 0321 }, - [1122] = { 0220, 0322 }, - [1123] = { 0220, 0323 }, - - [1208] = { 0218, 0219, 0308 }, - [1209] = { 0218, 0219, 0309 }, - [1210] = { 0218, 0219, 0310 }, - [1211] = { 0218, 0219, 0311 }, - [1212] = { 0218, 0219, 0312 }, - [1213] = { 0218, 0219, 0313 }, - [1214] = { 0218, 0219, 0314 }, - [1215] = { 0218, 0219, 0315 }, - [1216] = { 0218, 0219, 0316 }, - [1217] = { 0218, 0219, 0317 }, - [1218] = { 0218, 0219, 0318 }, - [1219] = { 0218, 0219, 0319 }, - [1220] = { }, - [1221] = { 0218, 0219, 0321 }, - [1222] = { 0218, 0219, 0322 }, - [1223] = { 0218, 0219, 0323 }, -}]] ---[[ Quick lookup -for k,v in pairs(Metrostroi.Announcements) do - v[3] = k -end -for k,v in pairs(Metrostroi.AnnouncementsPNM) do - v[3] = k -end]] - -local function recurprecache(tbl) - if not tbl then return end - for k,v in pairs(tbl) do - if type(v[2]) == "string" then - util.PrecacheSound(v[2]) - elseif type(v) == "table" then - recurprecache(v) - else ErrorNoHalt("Metrtostroi: Can't precache "..k..", because v("..tostring(v).." !table") end - end -end - --------------------------------------------------------------------------------- -function TRAIN_SYSTEM:Initialize() - recurprecache(Metrostroi.Announcements) - - self.AnnouncerType = 0 - -- Currently playing announcement - self.Announcement = 0 - -- End time of the announcement - self.EndTime = -1e9 - -- Announcement schedule - self.Schedule = {} - -- Fake wire 49 - self.Fake48 = 0 -end - - -function TRAIN_SYSTEM:Inputs() - return { "Queue" } -end -function TRAIN_SYSTEM:Outputs() - return { "AnnMap" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if (name == "Queue") and (value > 0.0) then - self:Queue(math.floor(value)) - end -end - - -function TRAIN_SYSTEM:Queue(id) - if self.Train and self.Train.SubwayTrain and self.Train.SubwayTrain.Type and self.Train.SubwayTrain.Type == "E" and - (id == 5 or id == 6) then return end - -- Add announcement to queue - if #self.Schedule < 16 then - --[[if Metrostroi.AnnouncementSequences[id] then - for k,i in pairs(Metrostroi.AnnouncementSequences[id]) do - self:Queue(i) - end - else]] - local tbl = Metrostroi.Announcements[self.AnnouncerType][id] - if id >= 1000 then - tbl = Metrostroi.Announcements[self.AnnouncerType].stations[id-1000] - end - if not tbl then print(id) end - table.insert(self.Schedule, {id,tbl[1]}) - end -end - - -function TRAIN_SYSTEM:ClientInitialize() -end - -function TRAIN_SYSTEM:ClientThink() - if self.AnnouncerType ~= self.Train:GetNW2Int("Announcer") then - self.AnnouncerType = self.Train:GetNW2Int("Announcer") - if Metrostroi.Announcements[self.AnnouncerType] then - self.Train.SoundNames["bpsn_ann"] = Metrostroi.Announcements[self.AnnouncerType][0007][2] - self.Train.SoundNames["bpsn_ann_cab"] = Metrostroi.Announcements[self.AnnouncerType][0007][2] - end - end - local active = self.Train:GetNW2Bool("BPSNBuzz",false) - self.Train:SetSoundState("bpsn_ann",(active and self.Train:GetPackedBool("buzz")) and 0.175 or 0,1) - self.Train:SetSoundState("bpsn_ann_cab",(active and self.Train:GetPackedBool("buzz_cab")) and 0.175 or 0,1) -end - -function TRAIN_SYSTEM:MultiQueue(...) - for _,v in pairs({...}) do - local v = tonumber(v) - if v ~= nil then - self:Queue(v) - end - end -end - -function TRAIN_SYSTEM:Think() - -- Check if new announcement must be started from train wire - local targetAnnouncement = self.Train:ReadTrainWire(47) - if targetAnnouncement < 0 then targetAnnouncement = 0 end - local onlyCabin = false - if (targetAnnouncement == 0) then targetAnnouncement = self.Fake48 or 0 onlyCabin = true end - if (targetAnnouncement > 0) and (targetAnnouncement ~= self.Announcement) and (CurTime() > self.EndTime) then - self.Announcement = targetAnnouncement - local tbl = Metrostroi.Announcements[self.AnnouncerType][targetAnnouncement] - if targetAnnouncement >= 1000 then - tbl = Metrostroi.Announcements[self.AnnouncerType].stations[targetAnnouncement-1000] - end - if tbl then - --if not Metrostroi["Announcements" .. (self.Train.PNM and "PNM" or "")][targetAnnouncement] then print(targetAnnouncement) end - self.Sound = tbl[2] - self.EndTime = CurTime() + tbl[1] - - -- Emit the sound - if self.Sound ~= "" then - if self.Train.DriverSeat and (not self.Train.R_G or self.Train.R_G.Value > 0.5) then - self.Train.DriverSeat:EmitSound(self.Sound, 73, 100) - end - if onlyCabin == false then - self.Train:EmitSound(self.Sound, 85, 100) - end - if tbl[3] == 2 then - self.Train.AnnouncementToLeaveWagon = true - self.Train.AnnouncementToLeaveWagonAcknowledged = false - --else - --self.Train.AnnouncementToLeaveWagon = false - end - if self.Train:GetNW2Float("PassengerCount") == 0 then - self.Train.AnnouncementToLeaveWagon = false - end - end - -- BPSN buzz - if tbl[3] == 1 and self.Train.PNM then timer.Simple(0.1,function() self.Train:SetNW2Bool("BPSNBuzz",true) end) end - if tbl[3] == 1 and not self.Train.PNM then timer.Simple(0.2,function() self.Train:SetNW2Bool("BPSNBuzz",true) end) end - if tbl[3] == 0 then - self.Train:SetNW2Bool("BPSNBuzz",false) - --[[ - if self.Train.PNM then - self.Train:SetNW2Bool("BPSNBuzz",false) - self.BPSNBuzzTimeout1 = CurTime() + 0 - else - self.BPSNBuzzTimeout1 = CurTime() + 0.4 - --timer.Simple(0.4,function() if not IsValid(self.Train) then return end self.Train:SetNW2Bool("BPSNBuzz",false) end) - end - ]] - end - self.BPSNBuzzTimeout = CurTime() + 10.0 - end - elseif (targetAnnouncement == 0) then - self.Announcement = 0 - end - - -- Buzz timeout - if self.BPSNBuzzTimeout and (CurTime() > self.BPSNBuzzTimeout) then - self.BPSNBuzzTimeout = nil - self.Train:SetNW2Bool("BPSNBuzz",false) - end - if self.BPSNBuzzTimeout1 and (CurTime() > self.BPSNBuzzTimeout1) then - self.BPSNBuzzTimeout1 = nil - self.Train:SetNW2Bool("BPSNBuzz",false) - end - -- Check if new announcement must be started from schedule - if (self.ScheduleAnnouncement == 0) and (self.Schedule[1]) then - self.ScheduleAnnouncement = self.Schedule[1][1] - self.ScheduleEndTime = CurTime() + self.Schedule[1][2] - table.remove(self.Schedule,1) - end - - - -- Check if schedule announcement is playing - if self.ScheduleAnnouncement ~= 0 then - if self.Train.DriverSeat and ((self.Train.R_ZS and self.Train.R_ZS.Value < 0.5) or (self.Train.R_UPO and self.Train.R_UPO.Value < 0.5)) then - self.Fake48 = self.ScheduleAnnouncement - else - self.Train:WriteTrainWire(47,self.ScheduleAnnouncement) - self.Fake48 = 0 - end - if CurTime() > (self.ScheduleEndTime or -1e9) then - self.ScheduleAnnouncement = 0 - self.Fake48 = 0 - self.Train:WriteTrainWire(47,0) - end - end - if self.Train.R_ZS and self.Train.KV then - if self.Train.R_ZS.Value < 0.5 and self.Train.KV.ReverserPosition == 1.0 then - self.Train:WriteTrainWire(47,-1) - elseif self.Train:ReadTrainWire(47) == -1 then - self.Train:WriteTrainWire(47,0) - end - end - if self.Train.R_UPO and self.Train.KV then - if self.Train.R_UPO.Value < 0.5 and self.Train.KV.ReverserPosition == 1.0 then - self.Train:WriteTrainWire(47,-1) - elseif self.Train:ReadTrainWire(47) == -1 then - self.Train:WriteTrainWire(47,0) - end - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_ars_dnepr_spb.lua b/lua/metrostroi/systems/_obsolete/sys_ars_dnepr_spb.lua deleted file mode 100644 index 8383afc..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_ars_dnepr_spb.lua +++ /dev/null @@ -1,333 +0,0 @@ --------------------------------------------------------------------------------- --- АРС-АЛС --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("ARS_Dnepr_SPB") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("BPS","Relay","Switch", {bass = true,normally_closed = true }) - self.Train:LoadSystem("BUD","Relay","Switch", {bass = true,normally_closed = true }) - self.Train:LoadSystem("RC2","Relay","Switch", {bass = true,normally_closed = true }) - self.Train:LoadSystem("VAU","Relay","Switch",{ bass = true,normally_closed = true }) - self.Train:LoadSystem("VRD","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("ROT","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("ALSCoil") - - -- Internal state - self.SpeedLimit = 0 - self.ARSRing = false - self.Overspeed = false - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.AttentionPedal = false - - self.KVT = false - self.LN = 0 - - -- ARS wires - self["33D"] = 0 - self["33G"] = 0 - self["33Zh"] = 0 - self["2"] = 0 - self["6"] = 0 - self["8"] = 0 - self["20"] = 0 - --self["21"] = 0 - self["29"] = 0 - self["31"] = 0 - self["32"] = 0 - - -- Lamps - ---self.LKT = false - self.LVD = false -end - -function TRAIN_SYSTEM:Outputs() - return { - "2", "8", "20", "29", "33D", "33G", "33Zh", "31", "32", - "NoFreq","F1","F2","F3","F4","F5","F6","LN" - } -end - -function TRAIN_SYSTEM:Inputs() - return { "IgnoreThisARS","AttentionPedal","Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local Train = self.Train - if name == "AttentionPedal" then - self.AttentionPedal = value > 0.5 - if Train and Train.PB then - Train.PB:TriggerInput("Set",value) - end - end - if name == "IgnoreThisARS" then - self.IgnoreThisARS = value > 0.5 - end - if name == "Ring" then - self.ARSRingOverride = value > 0.5 - end -end - - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local PUAV = not Train.Blok or Train.Blok == 1 - if not PUAV then return end - local ALS = Train.ALSCoil - local speed = math.Round(ALS.Speed or 0,1) - - local power = Train.VB.Value > 0 - -- ALS, ARS state - local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - local RVForward = power and (Train.KV["D4-15"] > 0 or KRUEnabled) - local EnableARS = power and RVForward and (not Train.A42 or Train.A42.Value > 0) and Train.ARS.Value > 0 - local EnableALS = power and (not Train.A43 or Train.A43.Value > 0) and Train.ALS.Value > 0 - - if (RVForward and EnableALS) ~= (ALS.Enabled==1) then - ALS:TriggerInput("Enable",RVForward and EnableALS and 1 or 0) - end - - self.EnableARS = EnableARS - self.EnableALS = EnableALS - - --local EPKActivated = Train.EPK and Train.EPK.Value > 0.5 and (Train.Pneumatic.ValveType == 2 and Train.DriverValveDisconnect.Value > 0.5 or Train.DriverValveBLDisconnect.Value > 0.5) - -- Pedal state - --if (Train.PB) and Train.PB.Value > 0.5 then self.AttentionPedal = true end - --if (Train.PB) and Train.PB.Value < 0.5 then self.AttentionPedal = false end - local PB = Train.PB.Value > 0 - if PB and not self.AttentionPedalTimer and not self.Overspeed then - self.AttentionPedalTimer = CurTime() + 1 - end - - if PB and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not PB and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if PB or (Train.KVT) and Train.KVT.Value > 0.5 then self.KVT = true end - if not PB and (Train.KVT) and Train.KVT.Value < 0.5 then self.KVT = false end - - -- Ignore pedal - if self.IgnorePedal and self.KVT then - self.KVT = false - else - self.IgnorePedal = false - end - - - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - if EnableARS then self.NoFreq = self.NoFreq + (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1)) end - - -- ARS system placeholder logic - if EnableALS then - if (ALS.F1+ALS.F2+ALS.F3+ALS.F4+ALS.F5+ALS.F6+self.NoFreq) == 0 then self.NoFreq = 1 end - local Vlimit = 0 - if self.F4 > 0 then Vlimit = 40 end - if self.F3 > 0 then Vlimit = 60 end - if self.F2 > 0 then Vlimit = 70 end - if self.F1 > 0 then Vlimit = 80 end - -- Determine next limit and current limit - self.SpeedLimit = Vlimit - else - local V = math.floor(speed +0.05) - self.SpeedLimit = 0 - end - - if EnableARS then - if self.EnableARS ~= EnableARS then Train.EPKContacts:TriggerInput("Set",Train.EPKContacts.Value) end - local SpeedLimit = self.SpeedLimit - if SpeedLimit < 20 and self.KVT then SpeedLimit = 20 end - -- Check absolute stop - if self.NoFreq ~= self.PrevNoFreq and Train:ReadTrainWire(6) < 1 then - self.IgnorePedal = self.NoFreq > 0 and Train:ReadTrainWire(6) < 1 - self.PrevNoFreq = self.NoFreq - end - local zero = (self.NoFreq+self.RealF5) > 0 - -- Enable PV1 and disassembly when we overspeed - if speed > SpeedLimit+0.5 and not self.Disassembly then - if zero then - self.Disassembly = CurTime()-2 - else - self.Disassembly = CurTime() - end - self.ElectricBrake = true - self.ARSRing = true - end - if self.KVT and self.ARSRing then self.ARSRing = false end - --We can disable brake, if speed < Vdop-3 and electric brake - if not self.ARSRing and speed <= SpeedLimit-3 and self.ElectricBrake then - self.ElectricBrake = false - self.Disassembly = false - self.PneumaticBrake2 = false - end - --We can disable ring if speed < Vdop and not electric brake - if self.KVT and speed <= SpeedLimit and not self.ElectricBrake and self.ARSRing then self.ARSRing = false end - --Disable PN1 when we overspeed and time of overspeed < 1.5 - if speed <= SpeedLimit and self.Disassembly and CurTime()-self.Disassembly < 1.5 then - self.Disassembly = false - self.ElectricBrake = false - end - --Engage electric when we overspeed and time of overspeed >= 1.5 - if self.Disassembly and not self.ElectricBrake and ((CurTime() - self.Disassembly) >= 1.5) then - self.ElectricBrake = true - end - --PN2 when we brake to 0 speed - if self.Disassembly and self.ElectricBrake and speed < 0.25 then self.PneumaticBrake2 = true end - - -- AntiRolling - local Drive = (Train.KV["10AS-33"] > 0 or KRUEnabled)-- and Train.KRR.Value > 0) - -- Engage RO - if speed < 3 and self.RO ~= true and not Drive and self.KDReadyToRelease ~= false then self.RO = true end - -- Check RO when we starting - if self.RO and self.RO ~= true and (speed > 5 or CurTime()-self.RO > 7) then - self.RO = nil - self.PneumaticBrake2 = self.NoFreq == 0 and speed <= 5 - self.KDReadyToRelease = nil - end - -- Disable PN1 and start RO timer - if Drive and self.RO == true then - self.RO = CurTime() - end - - local delay = 3.5 - if 10 < speed and speed < 30 then delay = 5.5 end - if speed < 3 then delay = 10 end - if (self.ElectricBrake or speed < 0.2) and Train.Panel.KT == 0 then - if not self.EPKTimer then self.EPKTimer = CurTime() end - else - self.EPKTimer = nil - end - if self.EPKTimer and CurTime()-self.EPKTimer > delay then Train.EPKContacts:TriggerInput("Open",1) end - -- ARS signals - local Ebrake, Abrake, Pbrake1,Pbrake2 = - ((self.ElectricBrake) and 1 or 0), - ((self.Disassembly or self.ARSRing or self.ElectricBrake or zero and not self.KVT or self.F5 > 0 and Train.VRD.Value == 0) and 1 or 0), - ((self.Disassembly and (zero or CurTime()-self.Disassembly < 1.5) or self.RO == true) and 1 or 0), - ((self.PneumaticBrake2 or zero and not self.KVT) and 1 or 0) - -- Apply ARS system commands - self["33D"] = (1 - Abrake)*(1-Pbrake2) - self["33G"] = Ebrake - self["33Zh"] = (1 - Abrake)*(1-Pbrake2) - self["2"] = Ebrake-- + NFBrake - self["20"] = Ebrake-- + NFBrake - self["29"] = Pbrake1-- + (self.BPSActive and 1 or 0) - --print(Train.Speed) - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(self.SpeedLimit,self.self.SpeedLimit <= 20 and not self.KVT) end - --if StPetersburg then print(self.Train:EntIndex()) end - self["8"] = Pbrake2 - + (KRUEnabled and 1 or 0)*Ebrake + (self.Disassembly and CurTime()-self.Disassembly >= 1.5 and 1 or 0) - --+ (1 - ((EPKActivated and 1 or 0) or 1)) - ---self.LKT = (self["33G"] > 0.5) or (self["29"] > 0.5) or (Train:ReadTrainWire(35) > 0) - self.LVD = self.LVD or self["33D"] < 0.5 - if Train:ReadTrainWire(6) < 1 and self["33D"] > 0.5 then self.LVD = false end - --self.ARSRing = ((self["33D"] < 0.5) or self.KSZD) - else - if Train.EPK.Value == 0 then Train.EPKContacts:TriggerInput("Set",1) end - self.ElectricBrake = true - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.Disassembly = CurTime()-5 - self.RO = true - self["33D"] = 0 - self["33Zh"] = 1 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - - ---self.LKT = false - self.LN = 0 - self.LVD = false - self.ARSRing = true - end - -- ARS signalling train wires - self.Train:WriteTrainWire(21,self.LVD and 1 or 0) - -- RC1 operation - if Train.RC1 and Train.RC1.Value == 0 then - self["33D"] = 1 - self["33G"] = 0 - self["33Zh"] = 1--KAH - -- - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - -- - self["31"] = 0 - self["32"] = 0 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - --[[ - if not EnableARS and EnableUOS then - self["33D"] = speed > 35 and 0 or KAH - --self["33Zh"] = 1--(self.Speed + 0.5 > 40) and 0 or KAH - self["8"] = speed > 35 and 1 or KRUEnabled and (1-Train.RPB.Value) or 0 - else]] - --end - end - local EPKActivated = Train.Pneumatic.EPKEnabled-- or Train.UOS.Value > 0 - if (not EPKActivated or Train.EPKContacts.Value == 0) and Train.RC1.Value > 0 then - self["33D"] = 0 - end - - if Train.BPS.Value > 0 and Train.KV["10AK-4"] > 0 then - if not self.BPSArmed then - self.BPSMeter = self.BPSMeter or 0 - self.BPSMeter = self.BPSMeter + math.min(0,Train.Speed*Train.SpeedSign*1000/3600)*dT - if Train.Speed*Train.SpeedSign > 0.1 then - self.BPSMeter = 0 - end - if -self.BPSMeter > 3 then - self.BPSArmed = true - end - end - else - self.BPSArmed = false - self.BPSMeter = 0 - end - if self.BPSArmed then - self["8"] = 1 - self["29"] = 1 - self["33D"] = 0 - self["33Zh"] = 0 - end - - Train.RV_2:TriggerInput("Set",(EnableARS and not self.BPSArmed) and 1 or 0) - -- 81-717 special VZ1 button - if self.Train.VZ1 then self["29"] = self["29"] + self.Train.VZ1.Value end - if (Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts then self["33D"] = 0 end - if Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve and self.UAVAContacts then - self.UAVAContacts = nil - Train:PlayOnce("uava_reset","bass",1) - end - self["8"] = self["8"]*(self.Train.A41 and self.Train.A41.Value or 1)*(self.Train.A8 and self.Train.A8.Value or 1) - self["29"] = self["29"]*(self.Train.A8 and self.Train.A8.Value or 1) - --Train.Rp8:TriggerInput("Set",self["8"] + ((self.Train.RC1 and (self.Train.RC1.Value == 0)) and (1-self["33D"]) or 0)) - Train.Rp8:TriggerInput("Set",EnableARS and (Train:ReadTrainWire(6)*Train:ReadTrainWire(2)*(1-Train:ReadTrainWire(25))) or 0) - - --local P = math.ceil(Train.PositionSwitch.Position) --FIXME - local RK = math.ceil(Train.RheostatController.Position) - --print(RK,P,((RK >= 17 and RK <= 18) and 1 or 0),Train.KV["10-8"]) - --Train.RO:TriggerInput("Set",Train.A8.Value*Train:ReadTrainWire(8)*((RK >= 17 and RK <= 18) and 1 or 0) + ((EnableARS and self.RO==true) and 1 or 0)) - self.Ring = self.ARSRingOverride or self.ARSRing and EnableARS - if Train.PUAV.ZeroTimer then - local timer = (CurTime()-Train.PUAV.ZeroTimer) - if timer >= 0 and timer < 3.5 then - self.Ring = true - elseif timer >= 3.5 and timer < 3.5+4 and timer%1 < 0.5 then - self.Ring = true - end - end - self.Ring = self.Ring or Train.PUAV.RingArmed -end diff --git a/lua/metrostroi/systems/_obsolete/sys_ars_ezh3.lua b/lua/metrostroi/systems/_obsolete/sys_ars_ezh3.lua deleted file mode 100644 index 3bb8cf7..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_ars_ezh3.lua +++ /dev/null @@ -1,366 +0,0 @@ --------------------------------------------------------------------------------- --- АРС-АЛС (модифицированная версия для составов Еж) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("ARS_EZh3") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("ALSCoil") - self.Train:LoadSystem("EPKContacts","Relay","",{close_time = 3}) - self.Alarm = false - -- Internal state - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Ring = false - self.Overspeed = false - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.AttentionPedal = false - self.KVT = false - self.LN = false - self.IgnoreThisARS = false - - -- ARS wires - self["33D"] = 0 - self["33G"] = 0 - self["33Zh"] = 0 - self["2"] = 0 - self["6"] = 0 - self["8"] = 0 - self["20"] = 0 - --self["21"] = 0 - self["29"] = 0 - self["31"] = 0 - self["32"] = 0 - - -- Lamps - ---self.LKT = false - self.LVD = false -end - -function TRAIN_SYSTEM:Outputs() - return { "2", "8", "20", "29", "33D", "33G", "33Zh",--"31", "32", - "Speed", "SpeedLimit", "Ring"} -end - -function TRAIN_SYSTEM:Inputs() - return { "IgnoreThisARS","AttentionPedal","Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local Train = self.Train - if name == "AttentionPedal" then - self.AttentionPedal = value > 0.5 - if Train and Train.PB then - Train.PB:TriggerInput("Set",value) - end - end - if name == "IgnoreThisARS" then - self.IgnoreThisARS = value > 0.5 - end - if name == "Ring" then - self.RingOverride = value > 0.5 - end -end - - - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local ALS = Train.ALSCoil - local speed = ALS.Speed - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(Train:ReadCell(49165)) end - - - -- ALS, ARS state - local power = Train.VB.Value > 0 - local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - local RVForward = power and (Train.KV["D4-15"] > 0 or KRUEnabled) - local EnableARS = Train.VB.Value == 1.0 and Train.ARS.Value == 1.0 and RVForward - local EnableALS = Train.VB.Value == 1.0 and Train.ALS.Value == 1.0 and RVForward - if EnableALS ~= (ALS.Enabled==1) then - ALS:TriggerInput("Enable",EnableALS and 1 or 0) - end - - self.EnableARS = EnableARS - self.EnableALS = EnableALS - local EPKActivated = Train.EPK and Train.EPK.Value > 0.5 and Train.DriverValveBLDisconnect.Value > 0.5 - -- Pedal state - local PB = Train.PB.Value > 0.5 or Train.KB.Value > 0.5 - self.KVT = Train.KVT.Value > 0.5 - if PB and not self.AttentionPedal then - self.AttentionPedal = true - end - if not PB and self.AttentionPedal then - self.AttentionPedal = false - end - - -- Ignore pedal - if self.IgnorePedal and self.AttentionPedal then - self.AttentionPedal = false - else - self.IgnorePedal = false - end - -- Speed check and update speed data - if CurTime() - (self.LastSpeedCheck or 0) > 0.5 then - self.LastSpeedCheck = CurTime() - --self.Speed = (Train.Speed or 0) --FIXME - end - --if RVForward then - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - if EnableARS then self.NoFreq = self.NoFreq + (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1+self.NoFreq)) end - --end - - - if EnableALS then - local V = math.floor(speed +0.05) - local Vlimit = 20 - local VLimit2 - if self.F4 > 0 then Vlimit = 40 end - if self.F3 > 0 then Vlimit = 60 end - if self.F2 > 0 then Vlimit = 70 end - if self.F1 > 0 then Vlimit = 80 end - - --if ( self.KVT) and (Vlimit ~= 0) and (V > Vlimit) then self.Overspeed = true end - --if ( self.KVT) and (Vlimit == 0) and (V > 20) then self.Overspeed = true end - --if (not self.KVT) and (V > Vlimit) and (V > (self.RealNoFreq and 0 or 3)) then self.Overspeed = true end - --if ( self.KVT) and (Vlimit == 0) and self.Train.ARSType and self.Train.ARSType == 3 and not self.Train["PA-KSD"].VRD then self.Overspeed = true end - --self.Ring = self.Overspeed and (speed > 5) - - -- Determine next limit and current limit - self.SpeedLimit = VLimit2 or Vlimit--+0.5 - else - local V = math.floor(speed +0.05) - self.SpeedLimit = 0 - end - - - if EnableARS then - if self.EnableARS ~= EnableARS then Train.EPKContacts:TriggerInput("Set",Train.EPKContacts.Value) end - local SpeedLimit = self.SpeedLimit - if self.AttentionPedal then SpeedLimit = 20 end - - -- Check absolute stop - if self.NoFreq > 0 and not self.PrevNoFreq then --and Train:ReadTrainWire(6) < 1 then - self.IgnorePedal = true - end - if self.F5 > 0 and not self.PrevF5 then --and Train:ReadTrainWire(6) < 1 then - self.IgnorePedal = self.PrevNoFreq - end - self.PrevNoFreq = self.NoFreq > 0 - self.PrevF5 = self.F5 > 0 - -- Check overspeed - if speed > SpeedLimit and not self.ElectricBrake then - self.ElectricBrake = true - self.BSpeedLimit = SpeedLimit - self.RVV = nil - end - if self.BSpeedLimit and speed < self.BSpeedLimit-4 and self.ElectricBrake and not self.ARSBrake then - self.ElectricBrake = false - self.RVV = CurTime() - end - if self.RVV and CurTime()-self.RVV > 8 then - self.ARSBrake = true - self.ElectricBrake = true - self.RVV = nil - end - if speed < SpeedLimit and self.ElectricBrake and not self.ARSBrake and self.KVT then - self.RVV = nil - self.ElectricBrake = false - end - if self.KVT and self.RVV then - self.RVV = nil - end - - if self.BSpeedLimit and SpeedLimit < self.BSpeedLimit then self.BSpeedLimit = SpeedLimit end - - if (not self.BSpeedLimit or speed < self.BSpeedLimit) and self.ElectricBrake and self.KVT then - self.ARSBrake = false - self.ElectricBrake = false - self.PneumaticBrake2 = false - end - if (Train.KV["10AS-33"] > 0 and self.AntiRolling or Train:ReadTrainWire(31)> 0 or Train:ReadTrainWire(32) > 0 or Train:ReadTrainWire(12) > 0) and speed < 10 then - self.AntiRolling = false - self.RO = true - self.ROBlock = Train.KV["10AS-33"] > 0 - end - if self.ROBlock and Train.KV["10AS-33"] <= 0 then self.ROBlock = false end - --[[ - if self.Speed <= 5.5 and not self.AntiRolling and not self.RO then - self.AntiRolling = CurTime() - end - if self.Speed < 3 and Train:ReadTrainWire(6) > 0 and not self.RO and not self.AntiRolling then - self.AntiRolling = CurTime()-8 - end]] - if speed < 3 and not self.RO and not self.AntiRolling and self.NoFreq == 0 then - self.AntiRolling = CurTime()-8 - end - if self.AntiRolling and speed > 5.5 then - self.AntiRolling = false - end - if not self.ROBlock and (Train.KV["10AS-33"] > 0 or self.AttentionPedal and not self.AttentionPedalRO) and self.RO == true then - self.PneumaticBrake1 = false - self.AttentionPedalRO = true - self.RO = CurTime() - if self.AntiRolling and CurTime()-self.AntiRolling > 8 then self.AntiRolling = false end - end - if self.AttentionPedalRO and not self.AttentionPedal then self.AttentionPedalRO = false end - if self.RO and self.RO ~= true and (speed > 5.5 or CurTime()-self.RO > 7 or self.NoFreq > 0) then - self.AntiRolling = speed <= 5.5 and CurTime()-8 or false - if not self.ElectricBrake and not self.PneumaticBrake2 and self.AntiRolling and not self.AttentionPedal then - Train.EPKContacts:TriggerInput("Open",1) - end - self.RO = false - end - if self.RO and self.RO ~= true and self.AttentionPedal then self.RO = false end - if self.AntiRolling and self.AttentionPedal then self.AntiRolling = false end - --[[ - -- Check use of valve #1 during overspeed - --self.PV1Timer = self.PV1Timer or -1e9 - if self.PV1Timer and ((CurTime() - self.PV1Timer) >= 1) then - if self.Overspeed then - self.ElectricBrake = true - if self.Speed <= 5 then - self.PneumaticBrake2 = true - end - else - self.PneumaticBrake1 = false - end - self.PV1Timer = nil - end]] - local ElectricBrake = (self.ElectricBrake or self.AntiRolling and CurTime()-self.AntiRolling > 8) - - if (ElectricBrake or self.PN2Timer == false) and not self.PN2Timer then - self.PN2Timer = CurTime() - elseif not ElectricBrake and self.PN2Timer then - self.PN2Timer = nil - end - local delay - if 60 < speed then - delay = 3.6--3.2 - elseif 30 < speed then - delay = 4.2--3.9 - elseif 20 < speed then - delay = 5.2 - else - delay = 7.9 - end - if (ElectricBrake or speed < 0.2 and not self.AttentionPedal) and Train:ReadTrainWire(34) == 0 then - if not self.EPKTimer then self.EPKTimer = CurTime() end - else - self.EPKTimer = nil - end - if self.EPKTimer and CurTime()-self.EPKTimer > delay then Train.EPKContacts:TriggerInput("Open",1) end - -- ARS signals - local Ebrake, Abrake, Pbrake1,Pbrake2 = - (ElectricBrake and 1 or 0), - ((ElectricBrake or self.RO==true) and 1 or 0), - --((self.SpeedLimit == 0 and not self.KVT and not self.ARSBrake) and 1 or 0), - (self.RO == true and 1 or 0), - ((self.PneumaticBrake2 or self.PN2Timer and CurTime()-self.PN2Timer > 2.7 or SpeedLimit <= 20.5 and not self.AttentionPedal) and 1 or 0) - -- Apply ARS system commands - self["33D"] = (1 - Abrake) - self["33G"] = Ebrake - self["33Zh"] = (1 - Abrake) - self["2"] = Ebrake - self["20"] = Ebrake - self["29"] = Pbrake1 - self["8"] = Pbrake2 - --print(self.ElectricBrake , self.AntiRolling,self.ARSBrake,self.RO,self.BSpeedLimit,Train:ReadTrainWire(2),Train:ReadTrainWire(8)) - self.LVD = math.min(1,self.LVD+self["33G"]) - if Train:ReadTrainWire(6) < 1 and self["33G"] < 0.5 then self.LVD = 0 end - self.Ring = self.ARSBrake and 1 or 0 - --[[ - торможении от АРС ЭПВ имеет 4 ступени задержки по времени на срабатывание: - 80-60 км/ч - 3с (округлённо) - 60-30 км/ч - 4с - 30-20 км/ч - 5с - менее 10 км/ч - 8с - if self.ElectricBrake or self.PneumaticBrake2 then - if not self.LKT and not self.EPKTimer then - self.EPKTimer = CurTime() + ((10 <= self.Speed and self.Speed <= 30) and 5.5 or 3.3) - elseif self.LKT then - self.EPKTimer = nil - end - else - self.EPKTimer = nil - end - --if self.BPSActive then self.AntiRolling = false end - if EPKActivated and not self.LKT and self.Speed < 0.05 and Train:ReadTrainWire(1) == 0 then -- or (self.AntiRolling and Train:ReadTrainWire(1) > 0) then - if not self.EPKTimer2 then - self.EPKTimer2 = CurTime()+1 - end - if self.EPKTimer2 and CurTime() - self.EPKTimer2 > 0 and not Train.Pneumatic.EmergencyValveEPK then - Train.Pneumatic.EmergencyValveEPK = true - - RunConsoleCommand("say","EPV braking (LKT off when stopped)",Train:GetDriverName()) - self.BeOffARS = nil - end - else - self.EPKTimer2 = nil - end]] - else - if Train.EPK.Value == 0 then Train.EPKContacts:TriggerInput("Set",1) end - self.ElectricBrake = true - self.ARSBrake = true - self.RO = true - self.PneumaticBrake2 = false - self.AntiRolling = false - self.BSpeedLimit = nil - self.PN2Timer = false - self["33D"] = 0 - self["33Zh"] = 1 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - - ---self.LKT = false - self.LVD = 0 - self.Ring = 0 - end - -- ARS signalling train wires - if EnableARS then - self.Train:WriteTrainWire(21,self.LVD)-----self.LKT and 1 or 0) - else--if not EnableUOS then - self.Train:WriteTrainWire(21,0) - end - -- RC1 operation - if self.Train.RC1.Value == 0 then - self["33D"] = 1 - self["33G"] = 0 - self["33Zh"] = 1--KAH - -- - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - -- - self["31"] = 0 - self["32"] = 0 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - end - if Train.RV_2 then Train.RV_2:TriggerInput("Set",EnableARS and 1 or 0) end - if (Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts then self["33D"] = 0 end - if Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve and self.UAVAContacts then - self.UAVAContacts = nil - Train:PlayOnce("uava_reset","bass",1) - end - local EPKActivated = Train.Pneumatic.EPKEnabled or Train.RC1.Value == 0 - if not EPKActivated or Train.EPKContacts.Value == 0 then - self["33D"] = 0 - end - --self.Ring = self.Ring and 1 or 0 - if Train.Rp8 then Train.Rp8:TriggerInput("Set",self["8"] + (1-self.Train.RC1.Value)*(1-self["33D"]))end - --self.Ring = self.RingOverride or self.Ring - Train.RPB:TriggerInput("Set",(self.Train.PB.Value + self.Train.KVT.Value + self.Train.RV_2.Value)*self.Train.VB.Value) - Train:WriteTrainWire(34,Train.RKTT.Value+Train.DKPT.Value) -end diff --git a/lua/metrostroi/systems/_obsolete/sys_asnp.lua b/lua/metrostroi/systems/_obsolete/sys_asnp.lua deleted file mode 100644 index 573a141..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_asnp.lua +++ /dev/null @@ -1,945 +0,0 @@ --------------------------------------------------------------------------------- --- Announcer and announcer-related code --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("ASNP") -TRAIN_SYSTEM.DontAccelerateSimulation = true -if TURBOSTROI then return end - -function table.GetLastKey(t) - local lk = -math.huge - for ki in pairs(t) do - lk = math.max(lk,ki) - end - return lk -end - - -function TRAIN_SYSTEM:Initialize() - self.TriggerNames = { - "Custom1", - "Custom2", - "Custom3", - "R_Program1", - "R_Program2", - } - self.Triggers = {} - self.State = 0 - self.Style = 1 - self.RealState = 99 - self.RouteNumber = "00" - self.Depeat = false - self.Train:LoadSystem("ASNPOn","Relay","Switch",{ normally_closed = true, bass = true }) -end - -function TRAIN_SYSTEM:ClientInitialize() - self.STR1r = {} - self.STR1x = 1 - - self.End = false - self.Right = false - self.State = 0 - self.Right = false -end -if TURBOSTROI then return end - -function TRAIN_SYSTEM:Inputs() - return {} -end - -function TRAIN_SYSTEM:Outputs() - return {} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end -Metrostroi.AnnButtons = {"-","+","Меню"} -function TRAIN_SYSTEM:AnnDisplay(train,ezh3) - -- Draw button labels - if not ezh3 then - for x=0,2 do - draw.Text({ - text = string.Trim(Metrostroi.AnnButtons[x+1]), - font = "MetrostroiSubway_VerySmallText3", - pos = { 310+x*135,350+0*150}, - xalign = TEXT_ALIGN_CENTER,yalign = TEXT_ALIGN_CENTER,color = Color(0,0,0,255)}) - end - draw.Text({ - text = "Manual", - font = "MetrostroiSubway_VerySmallText3", - pos = { 735,200}, - xalign = TEXT_ALIGN_CENTER,yalign = TEXT_ALIGN_CENTER,color = Color(0,0,0,255)}) - draw.Text({ - text = "Auto", - font = "MetrostroiSubway_VerySmallText3", - pos = { 735,100}, - xalign = TEXT_ALIGN_CENTER,yalign = TEXT_ALIGN_CENTER,color = Color(0,0,0,255)}) - end - - if not train:GetPackedBool(32) then return end - if false then - for i=1,25 do - surface.SetDrawColor(Color(53,91,25)) - surface.DrawRect(235+(i-1)*18+1 - (ezh3 and 5 or 0),125+4,16,25) - --draw.DrawText(string.upper(text1[i] or ""),"MetrostroiSubway_IGLA",287+(i-1)*17.7,125+0,Color(0,0,0,210)) - end - for i=1,25 do - surface.SetDrawColor(Color(53,91,25)) - surface.DrawRect(235+(i-1)*18+1 - (ezh3 and 5 or 0),125+31+4,16,25) - --draw.DrawText(string.upper(text2[i] or ""),"MetrostroiSubway_IGLA",287+(i-1)*17.7,125+31,Color(0,0,0,210)) - end - end - - for y = 0,#self.STR1r-1 do - local xmin = 0 - local blink = false - local checked = false - local x = 0 - local iter = 0 - while((x <= math.min(24+xmin,#self.STR1r[y+1]-1+xmin))) do - --for x = 0,math.min(19,#self.STR1r[y+1]-1)-xmin do - local char = self.STR1r[y+1][x+1] - if char == "|" then - Metrostroi.DrawLine(235+9+(x-xmin)*18 - (ezh3 and 5 or 0),141 + y*30-10,235+9+(x-xmin)*18,141+ y*30+9, Color(0,0,0),3) - elseif char == "_" then - if CurTime()%0.5<=0.25 then - draw.DrawText(char,"MetrostroiSubway_FixedSYS",236+(x-xmin)*18 - (ezh3 and 5 or 0),121 + y*30, Color(0,0,0)) - end - xmin = xmin + 1 - else - draw.DrawText(char,"MetrostroiSubway_FixedSYS",235+(x-xmin)*18 - (ezh3 and 5 or 0),125 + y*30, Color(0,0,0)) - end - x = x + 1 - end - end - surface.SetAlphaMultiplier(1) -end -function TRAIN_SYSTEM:STR1(str,notchange) - if type(str) == "number" then str = tostring(str) end - if SERVER then return end - if str == true then - for i = 1,2 do - self.STR1r[i] = "" - end - self.STR1x = 1 - else - if self.STR1x > (notchange and 3 or 2) then print("STR1:ERR:MAX",str) return end - if notchange then - self.STR1r[self.STR1x-1] = self.STR1r[self.STR1x-1]..str:upper() - else - self.STR1r[self.STR1x] = str:upper() or "" - self.STR1x = self.STR1x + 1 - end - end -end -function TRAIN_SYSTEM:DisplayStation(St,stay,max) - max = (max or 25)-1 - local sz = stay and #self.STR1r[self.STR1x-1] or #self.STR1r[self.STR1x] - local Siz = stay and #self.STR1r[self.STR1x-1] or #self.STR1r[self.STR1x] - local StS = Metrostroi.AnnouncerData[St] and Metrostroi.AnnouncerData[St][1] or "Unknown" - local StT = string.Explode(" ",StS) - local str = "" - if #StT > 1 then - str = StT[1][1]..". "..table.concat(StT," ",2) - elseif #StS > 26-sz-(25-max) then - str = StS:sub(1,25-sz-2-(25-max)).."..." - else - str = StS - end - self:STR1(str,stay) -end -TRAIN_SYSTEM.LoadSeq = "/-\\|" -function TRAIN_SYSTEM:ClientThink() - - local State = self.Train:GetNW2Int("Announcer:State",-1) - self:STR1(true) - - if State == -2 then - self:STR1("ASNP Error") - self:STR1("Map not supported") - end - if State == 0 then - self:STR1("Welcome! ver 0.8") - self:STR1("loading:") - self:STR1(self.LoadSeq[math.floor(CurTime()%0.5*8)+1],true) - - --self:STR1("ver 0.8") - end - - if State == 1 then - self:STR1("Welcome") - if self.Train:GetNW2Bool("BPSNBuzzType",false) then - self:STR1(" pnm ",true) - else - self:STR1(" riu ",true) - end - self:STR1("ver 0.8",true) - - self:STR1("press menu to start") - end - if State > 1 and (not Metrostroi.WorkingStations or not Metrostroi.EndStations) then - self:STR1("Client error") - self:STR1("WorkingStations nil") - return - end - if State == 2 then - local RouteNumber = self.Train:GetNW2String("Announcer:RouteNumber","00") - local Pos = self.Train:GetNW2Int("Announcer:State2Pos",1) - self:STR1("enter route number: ") - if Pos == 1 then - self:STR1("_",true) - end - self:STR1(RouteNumber[1],true) - if Pos == 2 then - self:STR1("_",true) - end - self:STR1(RouteNumber[2],true) - if Pos == 3 then - if CurTime()%3 > 1.5 then - self:STR1("accept: menu") - else - self:STR1("cancel: +/-") - end - else - self:STR1("confirm ") - self:STR1(Pos,true) - self:STR1(" digit: \"menu\"",true) - end - end - if State > 2 and not Metrostroi.EndStations[self.Train:GetNW2Int("Announcer:Line",1)] then - self:STR1("Client error") - self:STR1("EndStations") - return - end - if State > 2 and not Metrostroi.WorkingStations[self.Train:GetNW2Int("Announcer:Line",1)] then - self:STR1("Client error") - self:STR1("WorkingStations") - return - end - - if State == 3 then - local Line = self.Train:GetNW2Int("Announcer:Line",1) - local St = Metrostroi.EndStations[Line][1] - local En = Metrostroi.EndStations[Line][#Metrostroi.EndStations[Line]] - self:STR1("choose route") - self:STR1("_") - self:STR1(Line, true) - local tim = CurTime()%4.5 - if tim < 1.5 then - self:STR1(" ",true) - self:STR1(St,true) - self:STR1("->",true) - self:STR1(En,true) - elseif tim < 3 then - self:STR1(" ST:",true) - self:DisplayStation(St,true) - else - self:STR1(" EN:",true) - self:DisplayStation(En,true) - end - end - - if State == 4 then - local Line = self.Train:GetNW2Int("Announcer:Line",1) - local StSt = self.Train:GetNW2Int("Announcer:FirstStation",1) - local St =Metrostroi.EndStations[Line][StSt] - self:STR1("Choose start station") - if not St then - self:STR1("Error, restart ASNP") - else - self:STR1(St ) - local tim = CurTime()%4.5 - self:STR1(":",true) - self:DisplayStation(St,true) - end - end - - if State == 5 then - local Line = self.Train:GetNW2Int("Announcer:Line",1) - local StSt = self.Train:GetNW2Int("Announcer:LastStation",1) - local St =Metrostroi.EndStations[Line][StSt] - self:STR1("Choose end station") - if not St then - self:STR1("Error, restart ASNP") - else - self:STR1(St) - local tim = CurTime()%4.5 - self:STR1(":",true) - self:DisplayStation(St,true) - end - end - - if State == 6 then - local Style = self.Train:GetNW2Int("Announcer:Style",1) - self:STR1("Choose style") - self:STR1(Metrostroi.PlayingStyles[Style]) - end - - if State == 7 then - local Line = self.Train:GetNW2Int("Announcer:Line",1) - local StStF = self.Train:GetNW2Int("Announcer:FirstStation",1) - local StStL = self.Train:GetNW2Int("Announcer:LastStation",1) - local StF =Metrostroi.EndStations[Line][StStF] - local StL =Metrostroi.EndStations[Line][StStL] - local Style = self.Train:GetNW2Int("Announcer:Style",1) - self:STR1("Check settings") - local tim = CurTime()%6 - if tim < 1.5 then - self:STR1("Line:") - self:STR1(Line,true) - elseif tim < 3 then - self:STR1("ST:") - self:DisplayStation(StF,true) - elseif tim < 4.5 then - self:STR1("EN:") - self:DisplayStation(StL,true) - else - self:STR1("Style:") - self:STR1(Metrostroi.PlayingStyles[Style],true) - end - end - if State < 8 then - self.Right = false - self.End = false - end - if State == 8 then - local Depeat = self.Train:GetNW2Bool("Announcer:Depeat",false) - - local RouteNumber = self.Train:GetNW2String("Announcer:RouteNumber","00") - - local Line = self.Train:GetNW2Int("Announcer:Line",1) - local StF = self.Train:GetNW2Int("Announcer:FirstStationW",1) - local Stl = self.Train:GetNW2Int("Announcer:LastStationW",1) - local StC = self.Train:GetNW2Int("Announcer:CurrentStation",2) - - local add = Stl > StF and 1 or -1 - local St =Metrostroi.WorkingStations[Line][StC] - --local StN =Metrostroi.WorkingStations[Line][StC+add] - local StL =Metrostroi.WorkingStations[Line][Stl] - - if Depeat then self:STR1("Dep. ") else self:STR1("Arr. ") end - self:DisplayStation(St,true,22) - self:STR1(string.rep(" ",23-#self.STR1r[self.STR1x-1]),true) - --self.Right = Metrostroi.AnnouncerData[St][2] - --if self.Right then self:STR1("*R",true) else self:STR1("*L",true) end - - if self.Train:GetNW2Int("Announcer:Locked",0) > 0 and self.Train:GetNW2Int("Announcer:Locked",0) ~= 2 then - self:STR1("*L",true) - else - self:STR1(" L",true) - end - - if not self.Train:GetNW2Bool("Announcer:Playing1",false) then - if add > 0 then - self:STR1("I ") - else - self:STR1("II ") - end - self:STR1(string.format("%02d ",RouteNumber),true) - end - if self.Train:GetNW2Bool("Announcer:Playing1",false) then - self:STR1("<<< Goes Announce >>>") - --self:DisplayStation(St,true,23) - elseif add > 0 and StC >= Stl or add < 0 and StC <= Stl then - self:STR1("<<>>",true) - self.End = true - else - self:DisplayStation(StL,true,22) - self.End = false - end - self:STR1(string.rep(" ",23-#self.STR1r[self.STR1x-1]),true) - if add > 0 and StC < StL or add < 0 and StC > StL then - if not self.Train:GetNW2Bool("Announcer:Playing1",false) then - --if self.Right then self:STR1("R",true) else self:STR1("L",true) end - --else - --if Metrostroi.AnnouncerData[StL][2] then self:STR1("*R",true) else self:STR1("*L",true) end - if self.Train:GetNW2Int("Announcer:Locked",0) > 1 then - self:STR1("*R",true) - else - self:STR1(" R",true) - end - end - end - end - - if State == 9 then - local Choosed = self.Train:GetNW2Int("Announcer:Choosed",0) - if Choosed == 0 then - self:STR1(">Back") - self:STR1(" Swap paths") - elseif Choosed == 1 then - self:STR1(">Swap paths") - self:STR1(" Reset") - else - self:STR1(" Swap paths") - self:STR1(">Reset") - end - end -end - - -Metrostroi.PlayingStyles = {"Moscow","Kiev"} - -function TRAIN_SYSTEM:ReloadSigns() - if not self.Line or not Metrostroi.EndStations[self.Line] then return end - local StL = Metrostroi.EndStations[self.Line][self.LastStation] - if not StL then return end - self.Train:PrepareSigns() - - - if self.Train.SignsList[StL] then - self.Train.SignsIndex = self.Train.SignsList[StL] or 1 - if self.Train.SignsList[self.Train.SignsIndex] then self.Train:SetNW2String("FrontText",self.Train.SignsList[self.Train.SignsIndex][2]) end - end - - local StF= Metrostroi.EndStations[self.Line][self.FirstStation] - if #self.Train.WagonList <= 1 or not StF then return end - local LastTrain = self.Train.WagonList[#self.Train.WagonList] - LastTrain:PrepareSigns() - if LastTrain.SignsList[StF] then - LastTrain.SignsIndex = self.Train.SignsList[StF] or 1 - if self.Train.SignsList[self.Train.SignsIndex] then LastTrain:SetNW2String("FrontText",self.Train.SignsList[self.Train.SignsIndex][2]) end - end -end - -function TRAIN_SYSTEM:UpdateAnnouncer() - for k,v in pairs(self.Train.WagonList) do - if v.ASNP then - if v ~= self.Train then - if self.Line then v.ASNP.Line = self.Line end - if self.FirstStation then - v.ASNP.LastStation = self.FirstStation - v.ASNP.LastStationW = self.FirstStationW - end - if self.LastStation then - v.ASNP.CurrentStation = self.LastStationW - v.ASNP.FirstStation = self.LastStation - v.ASNP.FirstStationW= self.LastStationW - if Metrostroi.EndStations[self.Line] and Metrostroi.AnnouncerData[Metrostroi.EndStations[self.Line][self.LastStation]] and Metrostroi.AnnouncerData[Metrostroi.EndStations[self.Line][self.LastStation]][9] then - v.ASNP.LastStation = self.LastStation - v.ASNP.LastStationW = self.LastStationW - v.ASNP.CurrentStation = self.FirstStationW - v.ASNP.FirstStation = self.FirstStation - v.ASNP.FirstStationW= self.FirstStationW - end - end - - v.ASNP.State = self.State - v.ASNP.Style = self.Style - v.ASNP.Depeat = true - v.ASNP.RouteNumber = self.RouteNumber - end - end - v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end - self:ReloadSigns() -end - -function TRAIN_SYSTEM:Trigger(name,nosnd) - if self.Train.KV.ReverserPosition == 0 and self.Train.KRU.Position == 0 then return end - if self.State == 1 and name == "Custom3" then self:SetState(2) return end - - if self.State == 2 then - if name == "Custom1" and self.State2Pos < 3 then - local num = tonumber(self.RouteNumber[self.State2Pos]) - 1 - if num < 0 then num = 9 end - self.RouteNumber = string.SetChar(self.RouteNumber,self.State2Pos,num) - self:UpdateAnnouncer() - end - if name == "Custom2" and self.State2Pos < 3 then - local num = tonumber(self.RouteNumber[self.State2Pos]) + 1 - if num > 9 then num = 0 end - self.RouteNumber = string.SetChar(self.RouteNumber,self.State2Pos,num) - self:UpdateAnnouncer() - end - if (name == "Custom1" or name == "Custom2") and self.State2Pos == 3 then - self.State2Pos = 1 - end - if name == "Custom3" then - if self.State2Pos < 3 then - self.State2Pos = self.State2Pos+1 - else - self:SetState(3) - return - end - end - end - - if self.State == 3 then - if name == "Custom1" then - self.Line = self.Line - 1 - if self.Line < 1 then self.Line = #Metrostroi.WorkingStations end - self:UpdateAnnouncer() - end - if name == "Custom2" then - self.Line = self.Line + 1 - if self.Line > #Metrostroi.WorkingStations then self.Line = 1 end - self:UpdateAnnouncer() - end - if name == "Custom3" then - self:SetState(4) - return - end - end - - if self.State == 4 then - if name == "Custom1" then - self.FirstStation = self.FirstStation - 1 - if self.FirstStation < 1 then self.FirstStation = #Metrostroi.EndStations[self.Line] end - self:UpdateAnnouncer() - end - if name == "Custom2" then - self.FirstStation = self.FirstStation + 1 - if self.FirstStation > #Metrostroi.EndStations[self.Line] then self.FirstStation = 1 end - self:UpdateAnnouncer() - end - if name == "Custom3" then - self:SetState(5) - return - end - end - - if self.State == 5 then - if name == "Custom1" then - self.LastStation = self.LastStation - 1 - if self.LastStation < 1 then self.LastStation = #Metrostroi.EndStations[self.Line] end - if self.LastStation == self.FirstStation then self:Trigger("Custom1") return end - self:UpdateAnnouncer() - end - if name == "Custom2" then - self.LastStation = self.LastStation + 1 - if self.LastStation > #Metrostroi.EndStations[self.Line] then self.LastStation = 1 end - if self.LastStation == self.FirstStation then self:Trigger("Custom2") return end - self:UpdateAnnouncer() - end - if name == "Custom3" and self.FirstStation ~= self.LastStation then - self:SetState(6) - return - end - end - - if self.State == 6 then - if name == "Custom1" then - self.Style = self.Style - 1 - if self.Style < 1 then self.Style = #Metrostroi.PlayingStyles end - self:UpdateAnnouncer() - end - if name == "Custom2" then - self.Style = self.Style + 1 - if self.Style > #Metrostroi.PlayingStyles then self.Style = 1 end - self:UpdateAnnouncer() - end - if name == "Custom3" then - self:SetState(7) - return - end - end - - if self.State == 7 then - if name == "Custom1" or name == "Custom2" then - self:SetState(2) - return - end - if name == "Custom3" and (self.Train.KV.ReverserPosition > 0 or self.Train.KRU.Position > 0) then - self:SetState(8) - self.Train.Announcer:MultiQueue(0006,0001,0005) - self.Train.Announcer:MultiQueue(0201,0211,Metrostroi.EndStations[self.Line][self.FirstStation]+1000,Metrostroi.EndStations[self.Line][self.LastStation]+1000) - - self.Train.Announcer:MultiQueue(0006) - return - end - end - if self.State == 8 then - if name == "Custom1" then - if not self.Depeat then - if self.LastStation < self.FirstStation then - self.CurrentStation = math.min(self.FirstStationW,self.CurrentStation + 1) - else - self.CurrentStation = math.max(self.FirstStationW,self.CurrentStation - 1) - end - end - - if self.LastStation < self.FirstStation and self.CurrentStation >= self.FirstStationW or self.LastStation > self.FirstStation and self.CurrentStation <= self.FirstStationW then - if Metrostroi.AnnouncerData[Metrostroi.WorkingStations[self.Line][self.CurrentStation]][9] then - self.CurrentStation = self.FirstStationW - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - self.Depeat = not self.Depeat - else - self.Depeat = true - end - else - self.Depeat = not self.Depeat - end - end - if name == "Custom2" then - if self.Depeat then - if self.LastStation > self.FirstStation then - self.CurrentStation = math.min(self.LastStationW,self.CurrentStation + 1) - else - self.CurrentStation = math.max(self.LastStationW,self.CurrentStation - 1) - end - end - - if self.LastStation < self.FirstStation and self.CurrentStation <= self.LastStationW or self.LastStation > self.FirstStation and self.CurrentStation >= self.LastStationW then - if Metrostroi.AnnouncerData[Metrostroi.WorkingStations[self.Line][self.CurrentStation]][9] then - self.CurrentStation = self.LastStationW - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - self.Depeat = not self.Depeat - else - self.Depeat = false - end - else - self.Depeat = not self.Depeat - end - end - if name == "Custom3" then - self:SetState(9) - return - end - - if name == "R_Program1" and #self.Train.Announcer.Schedule == 0 and (self.Train.CustomC.Value < 0.5 or - self.CurrentStation == math.Clamp(self.CurrentStation,path and self.LastStationW or self.FirstStationW,path and self.FirstStationW or self.LastStationW) and self.Depeat == true) then - self:PlayAnnounce1() - if self.Depeat and self.Train.CustomC.Value < 0.5 then - if self.LastStation > self.FirstStation then - self.CurrentStation = math.min(self.LastStationW,self.CurrentStation + 1) - else - self.CurrentStation = math.max(self.LastStationW,self.CurrentStation - 1) - end - end - - if (self.LastStation < self.FirstStation and self.CurrentStation <= self.LastStationW or self.LastStation > self.FirstStation and self.CurrentStation >= self.LastStationW) and not self.Depeat then - self.Depeat = false - if Metrostroi.AnnouncerData[Metrostroi.WorkingStations[self.Line][self.CurrentStation]][9] then - self.CurrentStation = self.LastStationW - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - self.Depeat = not self.Depeat - else - self.CurrentStation = self.FirstStationW - end - elseif self.Train.CustomC.Value < 0.5 or self.Depeat == true then - self.Depeat = not self.Depeat - end - end - end - - if self.State == 9 then - if name == "Custom1" then - self.Choosed = math.max(0,self.Choosed-1) - end - if name == "Custom2" then - self.Choosed = math.min(2,self.Choosed+1) - end - if name == "Custom3" then - if self.Choosed == 0 then - self.State = 8 - elseif self.Choosed == 1 then - local tmp = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tmp - if self.FirstStation and self.Line and self.FirstStationW ~= self.FirstStation then - self.FirstStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.FirstStation]] - end - if self.LastStation and self.Line and self.LastStationW ~= self.LastStation then - self.LastStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.LastStation]] - end - if Metrostroi.AnnouncerData[Metrostroi.EndStations[self.Line][self.FirstStation]][9] then - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - end - self:SetState(7) - else - self:SetState(7) - end - return - end - end -end - -function TRAIN_SYSTEM:PlayAnnounce1(val) - local add = self.LastStation > self.FirstStation and 1 or -1 - local curr = Metrostroi.WorkingStations[self.Line][self.CurrentStation] - local currt = Metrostroi.AnnouncerData[curr] - local next = Metrostroi.WorkingStations[self.Line][self.CurrentStation + add] - local nextt = Metrostroi.AnnouncerData[next] - --local uvpass = false - self.Train.Announcer:MultiQueue(0006,0001,0005) -- Щелчки и начало - if self.Depeat then -- Отправление - if Metrostroi.AnnouncerData[curr +add] and not Metrostroi.AnnouncerData[curr +add][1] then self.Train.Announcer:MultiQueue(0230,curr+add+1000,0001) end - - self.Train.Announcer:MultiQueue(0218,0219,next+1000) -- ОДЗ СС - if nextt and nextt[2] then self.Train.Announcer:MultiQueue(self.Style == 2 and 0215 or 0231) end -- Платформа справа(или киевский вариант) - --[=[ - if nextt[7] and nextt[7] ~= 0 then - if Metrostroi.AnnouncerData[nextt[7][1]] then - self.Train.Announcer:MultiQueue(0202, 0203,nextt[7][1]) - else - self.Train.Announcer:MultiQueue(0202, nextt[7][1]) - end - end -- Переход - ]=] - if nextt and nextt[5] and self.Style == 3 then self.Train.Announcer:MultiQueue(0213) end -- Прислоняться - if nextt and nextt[3] then - --uvpass = true - if self.Style == 1 then self.Train.Announcer:MultiQueue(0230) end - self.Train.Announcer:MultiQueue(self.Style == 2 and 0214 or 0232) -- Вежливость - end - --if nextt[8] == (add > 0 and 1 or 2) then self.Train.Announcer:MultiQueue(0002,self.Style == 2 and 0210 or 0223,Metrostroi.EndStations[self.Line][self.LastStation]) end -- до станции - else - self.Train.Announcer:MultiQueue(0220,curr+1000) -- Станция - if currt[2] then self.Train.Announcer:MultiQueue(self.Style == 2 and 0215 or 0231) end -- Платформа справа(или киевский вариант) - if currt[7] and currt[7] ~= 0 then - if Metrostroi.AnnouncerData[currt[7][1]] then - self.Train.Announcer:MultiQueue(0202, 0203,currt[7][1]+1000) - else - self.Train.Announcer:MultiQueue(0202, currt[7][1]) - end - end -- Переход - - if self.LastStation < self.FirstStation and self.CurrentStation <= self.LastStationW or self.LastStation > self.FirstStation and self.CurrentStation >= self.LastStationW then - if not currt[9] then - if self.Style == 1 then - self.Train.Announcer:MultiQueue(0224,0002,0230,0226) -- Конечная - else - self.Train.Announcer:MultiQueue(0212) -- Конечная - end - self.Train.Announcer:MultiQueue(0006) -- Конечный щелчок - return - end - end - if currt[4] then - --uvpass = true - if self.Style == 1 then self.Train.Announcer:MultiQueue(0230) end - self.Train.Announcer:MultiQueue(0226+(currt[4] or 0)) -- Вещи - end - if add > 0 and self.LastStationW < #Metrostroi.WorkingStations[self.Line] or add < 0 and self.LastStationW > 1 then - self.Train.Announcer:MultiQueue(0002,self.Style == 2 and 0210 or 0223,Metrostroi.EndStations[self.Line][self.LastStation]+1000) -- Следует до станции - end - if currt[8] == (add > 0 and 1 or 2) then self.Train.Announcer:MultiQueue(0002,self.Style == 2 and 0210 or 0223,Metrostroi.EndStations[self.Line][self.LastStation]+1000) end -- до станции - end - self.Train.Announcer:MultiQueue(0006) -- Конечный щелчок -end - - - -function TRAIN_SYSTEM:GetTimer(val) - return self.TimerMod and (CurTime() - self.Timer) > val -end -function TRAIN_SYSTEM:SetTimer(mod) - if mod then - if self.TimerMod == mod then return end - self.TimerMod = mod - else - self.TimerMod = nil - end - self.Timer = CurTime() -end - -function TRAIN_SYSTEM:SetState(state,state7,noupd) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if state and self.State ~= state then - self.State = state - if state == 1 or state == 1.1 then - self.NextState = add - end - self:SetTimer() - elseif not state then - state = self.NextState - self.State = self.NextState - else - return - end - if state == 0 then - self.LoadTimer = math.random(2,4) - end - if state == 2 then - self.State2Pos = 1 - end - if state == 3 then - self.Line = self.Line or 1 - end - if state == 4 then - self.FirstStation = self.FirstStation or 1 - if self.FirstStation > #Metrostroi.EndStations[self.Line] then self.FirstStation = 1 end - self:UpdateAnnouncer() - end - if state == 5 then - self.LastStation = self.LastStation or self.LastStation ~= self.FirstStation and #Metrostroi.EndStations[self.Line] or 1 - if self.LastStation > #Metrostroi.EndStations[self.Line] then self.LastStation = 1 end - self:UpdateAnnouncer() - end - if state == 6 then - self.Style = self.Style or 1 - end - if state == 8 and (self.Train.KV.ReverserPosition > 0 or self.Train.KRU.Position > 0) then - if self.Train:ReadCell(49170) == 2 and false and self.LastStation > self.FirstStation then - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - end - if self.Train:ReadCell(49170) == 1 and false and self.LastStation < self.FirstStation then - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - end - - if self.FirstStation and self.Line and self.FirstStationW ~= self.FirstStation then - self.FirstStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.FirstStation]] - end - if self.LastStation and self.Line and self.LastStationW ~= self.LastStation then - self.LastStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.LastStation]] - end - local curr = self.FirstStationW - print(curr) - local path = self.LastStation < self.FirstStation - local st = self.Train:ReadCell(49169) > 0 and Metrostroi.WorkingStations[self.Line][self.Train:ReadCell(49169)] or 0 - if st > 0 then - curr = math.Clamp(st,path and self.LastStationW or self.FirstStationW,path and self.FirstStationW or self.LastStationW) - end - self:UpdateAnnouncer() - print(curr) - self.CurrentStation = curr - self.Depeat = true - end - if state < 8 then - self.Train.ASNP31:TriggerInput("Set",0) - self.Train.ASNP32:TriggerInput("Set",0) - end - if state == 9 then - self.Choosed = 0 - end -end - ---States: --- -2 - Loaded in another cab --- -1 - Starting up ---nil - First setUp and get settings from last ---1 - Welcome Screen ---2 - Route Choose ---3 - Choose start station ---4 - Choose end station ---5 - Choose path ---6 - Choose style of playing ---7 - Normal state ---8 - Confim a settings (on last stations) -function TRAIN_SYSTEM:Think() - local Train = self.Train - if Train.VB.Value > 0.5 and Train.Battery.Voltage > 55 and self.State > -1 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - if Train[v].Value > 0.5 then - self:Trigger(v) - end - --print(v,self.Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - if self.Train.R_Radio.Value > 0.5 and self.State == -1 then - self:SetState(0) - end - if self.Train.R_Radio.Value < 0.5 and self.State ~= -1 then - self:SetState(-1) - return - end - if not Metrostroi.AnnouncerData and self.State ~= -2 then - if self.State ~= -2 then self:SetState(-2) end - return - end - - if self.State == 0 then - self:SetTimer(0) - if self:GetTimer(self.LoadTimer) then - self.LoadTimer = nil - self:SetState(1) - end - end - if self.State >= 8 then - local Distance = math.min(3072,self.Train:ReadCell(49165)) - --local st = self.Train:ReadCell(49169) > 0 and Metrostroi.AnnouncerData[self.Train:ReadCell(49169)] or false - local st = self.Train:ReadCell(49169) - local right = st and Metrostroi.AnnouncerData[st] and Metrostroi.AnnouncerData[st][2] - local unlock = Distance > 100 and self.Train.ALS_ARS.Speed <= 2 - local lock = self.Train.ALS_ARS.Speed > 2 - if self.Train.ASNPOn.Value > 0.5 and not unlock then - if right then - if self.Train.ASNP31.Value == 0 then self.Train.ASNP31:TriggerInput("Set",1) end - - --if not lock and - if not lock and self.Train.ASNP32.Value == 1 then self.Train.ASNP32:TriggerInput("Set",0) end - if lock and self.Train.ASNP32.Value == 0 then self.Train.ASNP32:TriggerInput("Set",1) end - else - --if not lock and - if not lock and self.Train.ASNP31.Value == 1 then self.Train.ASNP31:TriggerInput("Set",0) end - if lock and self.Train.ASNP31.Value == 0 then self.Train.ASNP31:TriggerInput("Set",1) end - - if self.Train.ASNP32.Value == 0 then self.Train.ASNP32:TriggerInput("Set",1) end - end - else - if self.Train.ASNP32.Value == 1 then self.Train.ASNP32:TriggerInput("Set",0) end - if self.Train.ASNP31.Value == 1 then self.Train.ASNP31:TriggerInput("Set",0) end - end - end - if self.State == 8 and (self.Train.KV.ReverserPosition > 0 or self.Train.KRU.Position > 0) then - if self.Train.CustomC.Value > 0.5 then - local Distance = math.min(3072,self.Train:ReadCell(49165)) - local st = self.Train:ReadCell(49169) > 0 and Metrostroi.WorkingStations[self.Line][self.Train:ReadCell(49169)] or 0 - if Distance < 25 and self.AutoStation ~= st and self.Train:ReadCell(49169) > 0 and st == math.Clamp(st,path and self.LastStationW or self.FirstStationW,path and self.FirstStationW or self.LastStationW) then - - self.CurrentStation = math.Clamp(st,path and self.LastStationW or self.FirstStationW,path and self.FirstStationW or self.LastStationW) - self.Depeat = false - self:PlayAnnounce1() - self.Depeat = true - self.AutoStation = self.CurrentStation - end - end - end - self.Train:SetNW2Int("Announcer:State",self.State) - self.Train:SetNW2Int("Announcer:Line",self.Line) - self.Train:SetNW2Int("Announcer:FirstStation",self.FirstStation) - self.Train:SetNW2Int("Announcer:LastStation",self.LastStation) - self.Train:SetNW2String("Announcer:RouteNumber",self.RouteNumber) - if self.State == 2 then - self.Train:SetNW2Int("Announcer:State2Pos",self.State2Pos) - end - if self.State == 6 then - self.Train:SetNW2String("Announcer:Style",self.Style) - end - if self.State == 8 then - self.Train:SetNW2Int("Announcer:FirstStationW",self.FirstStationW) - self.Train:SetNW2Int("Announcer:LastStationW",self.LastStationW) - self.Train:SetNW2String("Announcer:CurrentStation",self.CurrentStation) - self.Train:SetNW2Bool("Announcer:Depeat",self.Depeat) - if self.Train.ASNP31.Value == 1 then - if self.Train.ASNP32.Value == 1 then - self.Train:SetNW2Int("Announcer:Locked",3) - else - self.Train:SetNW2Int("Announcer:Locked",1) - end - elseif self.Train.ASNP32.Value == 1 then - self.Train:SetNW2Int("Announcer:Locked",2) - else - self.Train:SetNW2Int("Announcer:Locked",0) - end - - end - if self.State == 9 then - self.Train:SetNW2Int("Announcer:Choosed",self.Choosed) - end - self.Train:SetNW2Bool("Announcer:Playing", self.Train.Announcer.ScheduleAnnouncement > 2) - self.Train:SetNW2Bool("Announcer:Playing1", #self.Train.Announcer.Schedule > 0) - if self.FirstStation and self.Line and self.FirstStationW ~= self.FirstStation then - self.FirstStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.FirstStation]] - end - if self.LastStation and self.Line and self.LastStationW ~= self.LastStation then - self.LastStationW = Metrostroi.WorkingStations[self.Line][Metrostroi.EndStations[self.Line][self.LastStation]] - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_autodrive.lua b/lua/metrostroi/systems/_obsolete/sys_autodrive.lua deleted file mode 100644 index 9b58e48..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_autodrive.lua +++ /dev/null @@ -1,723 +0,0 @@ --------------------------------------------------------------------------------- --- --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Autodrive") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.MU = -0.25 - self.Horlifts = { - [114] = true, - } -end - -function TRAIN_SYSTEM:Outputs() - return {} -end - -function TRAIN_SYSTEM:Inputs() - return {} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end - -TRAIN_SYSTEM.Corrections = { - [0] = { - }, - [1] = { - [108] = -3.23, - [109] = -2.79, - [110] = -3.09, - [111] = -3.17, - [112] = -3.17, - [113] = -3.18, - [114] = -3.21, - [115] = -3.21, - [116] = -3.22, - [117] = -3.21, - [118] = -3.02, - [119] = -3.20, - [121] = -3.17, - [122] = -4.10, - [123] = -1.98, - }, - [2] = { - [123] = -1.98, - [122] = -4.10,-- - [121] = -3.17, - [119] = -3.20, - [118] = -3.02, - [117] = -3.21, - [116] = -3.22, - [115] = -3.21, - [114] = -3.21, - [113] = -3.18, - [112] = -3.17, - [111] = -3.17, - [110] = -3.09, - [109] = -2.79, - [108] = -3.23, - } - } -function TRAIN_SYSTEM:GetStationRK(dX,horlift) - -- Calculate RK position based on distance and autodrive profile - local TargetBrakeRKPosition = 1 - local speed = self.Train.ALS_ARS.Speed - if dX < 160 then TargetBrakeRKPosition = speed > 55 and 3 or 1 end - if dX < 86.25 then TargetBrakeRKPosition = 6 end - if dX < 53.21 + (horlift and 10 or 0) then TargetBrakeRKPosition = 10 end - if dX < 20.13 then TargetBrakeRKPosition = 15 end - if dX < 8 then - TargetBrakeRKPosition = 15 - --if dX < 10 and speed > 15 then TargetBrakeRKPosition = 18 - --else - --else - if dX < 6 then TargetBrakeRKPosition = 16 end - --if dX < 2.64 then TargetBrakeRKPosition = 18 end - if horlift and dX < 4 and speed > 6 then TragetBrakeRKPosition = 17 end - if dX < 3 then TargetBrakeRKPosition = 18 end - --if horlift and dX < 1.5 then TargetBrakeRKPosition = 19 end - --if VZ then TargetBrakeRKPosition = 18 end - end - --if dX < 15 then TargetBrakeRKPosition = 16 end - return TargetBrakeRKPosition -end - -function TRAIN_SYSTEM:Autodrive(StationBraking) - local Train= self.Train - -- Calculate distance to station - local dX = self.Train.UPO.Distance - --local speedLimit = (Train.ALS_ARS.Signal0 or Train.ALS_ARS.RealNoFreq) and 0 or Train.ALS_ARS.Signal40 and 40 or Train.ALS_ARS.Signal60 and 60 or Train.ALS_ARS.Signal70 and 70 or Train.ALS_ARS.Signal80 and 80 or 0 - local speedLimit = 0--(self.Train.ALS_ARS.Signal0 or self.Train.ALS_ARS.RealNoFreq) and 0 or self.Train.ALS_ARS.Signal40 and 40 or self.Train.ALS_ARS.Signal60 and 60 or self.Train.ALS_ARS.Signal70 and 70 or self.Train.ALS_ARS.Signal80 and 80 or 0 - if self.Train.ALS_ARS.AVSpeedLimit and self.Train.ALS_ARS.AVSpeedLimit > 20 then - speedLimit = self.Train.ALS_ARS.AVSpeedLimit - end - local OnStation = dX < (160+35*self.MU - (speedLimit == 40 and 30 or 0)) and not self.StartMoving and Metrostroi.AnnouncerData[self.Train.UPO.Station]and Metrostroi.AnnouncerData[self.Train.UPO.Station][1] - if StationBraking and (dX >= (160+35*self.MU - (speedLimit == 40 and 30 or 0)) or not OnStation) then self.Train.UPO.StationAutodrive = false return end - -- Target and real RK position (0 if not braking) - local TargetBrakeRKPosition = 0 - - local RKPosition = math.floor(Train.RheostatController.Position+0.5) - - -- Calculate next speed limit - - -- Get angle - local Slope = Train:GetAngles().pitch - - -- Check speed constraints - if Train.ALS_ARS.Speed > (speedLimit - 6) then self.NoAcceleration = true end - if Train.ALS_ARS.Speed < (speedLimit - 10) then self.NoAcceleration = false end - - local Brake = false - local Accelerate = false - - local threshold = 1.0 + (Slope > 1 and 1 or 0) - - -- Slow down on slopes - if Train.ALS_ARS.Speed > speedLimit - 5 - (self.NoAcceleration and 4 or 7) then - if Slope > 1 then - if speedLimit == 40 then - TargetBrakeRKPosition = 7 - elseif speedLimit > 40 then - TargetBrakeRKPosition = 1 - Brake = (Train.ALS_ARS.Speed > speedLimit - 4) - end - end - end - - -- Slow down if overspeeding soon - if (Train.ALS_ARS.Speed > (speedLimit - threshold)) then - TargetBrakeRKPosition = 18 - end - - -- How smooth braking should be (higher self.MU = more gentle braking) - -- Full stop command - if Train.ALS_ARS.SpeedLimit < 30 then TargetBrakeRKPosition = 18 Brake = true end - -- Calculate RK position based on distance and autodrive profile - if OnStation then - TargetBrakeRKPosition = self:GetStationRK(dX) - else - if dX > (160+35*self.MU - (speedLimit == 40 and 30 or 0)) then self.StartMoving = nil end - end - - -- Generate commands - local ElectricBrakeActive = FullStop or TargetBrakeRKPosition > 0 - local AcceleratingActive = not ElectricBrakeActive and not self.NoAcceleration and Slope < 1 - - -- Generate brake rheostat rotation - local RheostatBrakeRotating = Brake or RKPosition < TargetBrakeRKPosition - -- Generate accel rheostat rotation - local PP = math.floor(Train.PositionSwitch.Position + 0.5) == 2 - - local AmpNorm = true --Train.Electric.Itotal < (350 - (Train:GetPhysicsObject():GetMass()-30000)/24) * math.floor(Train.PositionSwitch.Position + 0.5) - local RheostatAccelRotating = AcceleratingActive - - if Slope < -2 and (math.floor(Train.PositionSwitch.Position + 0.5) == 2 and RKPosition == 10 and Train.Electric.Itotal > 500) then - --if PP and (8 <= RKPosition and RKPosition <= 12) then - RheostatAccelRotating = false - --end - end - local PneumaticValve1 = ((dX < 1.55) and (Train.ALS_ARS.Speed > 0.1) and OnStation and TargetBrakeRKPosition == 18) or (Train.ALS_ARS.Speed > (Train.ALS_ARS.SpeedLimit - threshold)) - --or (Train:ReadCell(6) > 0 and Train:ReadCell(18) < 1 and Slope > 1) - if dX < 2 and Train.ALS_ARS.Speed < 0.5 then self.AutodriveReset = true end - --Disable autodrive on end of station brake - --local StatID = Metrostroi.WorkingStations[self.Train.UPO.Station] or Metrostroi.WorkingStations[self.Train.UPO.Station + (self.Path == 1 and 1 or -1)] or 0 - - if (TargetBrakeRKPosition == 18 and Train.ALS_ARS.Speed < 0.1 and not self.StartMoving and OnStation) or (self.StartMoving and 10 < dX and dX < 160) then - if (TargetBrakeRKPosition == 18 and Train.ALS_ARS.Speed < 0.1 and not self.StartMoving and OnStation) then - self.Train.UPO.StationAutodrive = false - - -- - --self.VUDOverride = true - --[[ - --local self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) - if self.Train.UPO.Station == 0 then return end - local StatID = Metrostroi.WorkingStations[self.Train.UPO.Station] or Metrostroi.WorkingStations[self.Train.UPO.Station + (self.Path == 1 and 1 or -1)] or 0 - if not StationBraking then--GetConVarNumber("metrostroi_paksd_autoopen",0) > 0 and not StationBraking then - local Curr = Metrostroi.AnnouncerData[self.Train.UPO.Station] - if Curr[2] then - Train:WriteCell(32,1) - else - Train:WriteCell(31,1) - end - timer.Simple(0.1,function() - if not IsValid(Train) then return end - Train:WriteCell(32,0) - Train:WriteCell(31,0) - end) - Train.ADoorDisable:TriggerInput("Set",1) - end - ]] - end - self.AutodriveReset = true - return - end - - -- Enter commands - --Train:WriteCell(1, AcceleratingActive and 1 or 0) --Engage engines - --Train:WriteCell(2, (RheostatAccelRotating or (ElectricBrakeActive and (RheostatBrakeRotating or RKPosition == 18 and not OnStation))) and 1 or 0) --X2/T2 - --Train:WriteCell(3, (Train.ALS_ARS.Speed > 30 and RheostatAccelRotating) and 1 or 0) --X3 - --Train:WriteCell(6, ElectricBrakeActive and 1 or 0) --Engage brakes - --Train:WriteCell(20,(ElectricBrakeActive or not self.NoAcceleration) and 1 or 0) -- Engage power circuits - local KVPos = 0 - if ElectricBrakeActive then - if (RheostatBrakeRotating or RKPosition == 18 and not OnStation) and not Train:GetPackedBool(35) then - KVPos = -3 - else - KVPos = -1 - end - elseif AcceleratingActive then - if Train.ALS_ARS.Speed > 30 and RheostatAccelRotating and not Train:GetPackedBool(35) then - KVPos = 3 - elseif RheostatAccelRotating and not Train:GetPackedBool(35) then - KVPos = 2 - else - KVPos = 1 - end - end - if (KVPos == -1) and Train:GetPackedBool(35) then - if not self.VZTimer1 then self.VZTimer1 = CurTime() + 1 end - else - self.VZTimer1 = nil - end - if self.VZTimer1 and self.VZTimer1 < CurTime() then - PneumaticValve1 = true - end - if OnStation then - self.Train.R25p:TriggerInput("Set",self.OldRheostatBrakeRotating ~= RheostatBrakeRotating) - self.OldRheostatBrakeRotating = RheostatBrakeRotating - end - Train:WriteCell(29, PneumaticValve1 and 1 or 0) -- Engage PN1 - Train:TriggerInput("KVControllerAutodriveSet",KVPos) - --Train:WriteCell(25,(ElectricBrakeActive and self.TargetBrakeRKPosition > 17) and 1 or 0) -- Engage power circuits - self.Brake = ElectricBrakeActive - self.Accelerate = AcceleratingActive - self.Rotating = RheostatBrakeRotating and true or RheostatAccelRotating and false or nil -end - -TRAIN_SYSTEM.Commands = { - { - [108] = { - {9999,2.5}, - }, - [109] = { - {9999,2.5}, - {1366,0}, - {1217,3}, - {981,0}, - {684,3}, - {338,0}, - {259,2.5}, - {152,-6}, - }, - [110] = { - {9999,2.5}, - {1003,0}, - {1016,-1}, - {820,0}, - {136,-6}, - }, - [111] = { - {9999,2.5}, - {860,0}, - {335,-1}, - {233,0}, - {153,-6}, - }, - [112] = { - {9999,2.5}, - {1809,3}, - {1645,0}, - {1446,-4}, - {1402,-4}, - {1286,0}, - {1220,-4}, - {1049,0}, - {541,-5}, - {403,0}, - {138,-6}, - }, - }, - { - [111] = { - {9999,2.5}, - {1651,3}, - {1464,0}, - {1260,2.5}, - {1232,2.5}, - {893,0}, - {847,2.5}, - {712,0}, - {491,-4}, - {288,0}, - {216,2.5}, - {156,0}, - {170,-6}, - }, - [110] = { - {9999,2.5}, - {805,3}, - {770,0}, - {127,-6}, - }, - [109] = { - {9999,3}, - {1043,0}, - {419,2.5}, - {353,3}, - {224,0}, - {176,-6}, - }, - [108] = { - {9999,2.5}, - {1433,0}, - {1345,-1}, - {1339,-2}, - {1167,-1}, - {1075,0}, - {817,-1}, - {650,0}, - {167,-6}, - }, - } -} -function TRAIN_SYSTEM:GetCurrentCommand() - self.Commands = { - { - [108] = { - {9999,2.5}, - }, - [109] = { - {9999,2.5}, - {1366,0}, - {1217,3}, - {981,0}, - {684,3}, - {338,0}, - {259,2.5}, - {152,-6}, - }, - [110] = { - {9999,2.5}, - {1003,0}, - {1016,-1}, - {850,0}, - {150,-6}, - }, - [111] = { - {9999,2.5}, - {860,0}, - {335,-1}, - {233,0}, - {153,-6}, - }, - [112] = { - {9999,2.5}, - {1809,3}, - {1645,0}, - {1446,-4}, - --{1402,-4}, - {1286,0}, - {1220,-4}, - {1018,0}, --1049 - {541,-5}, - {390,0}, - {150,-6}, - }, - [113] = { - {9999,2.5}, - {678,0}, - {294,-1}, - {130,-6}, - }, - [114] = { - {9999,3}, - {540,0}, - {150,-7}, - }, - [115] = { - {9999,2.5}, - {1470,0}, - {1400,-4}, - {1288,0}, - {1207,2.5}, - {1101,3}, - {940,0}, - {896,-5}, - {761,0}, - {180,-6}, - }, - [116] = { - {9999,3}, - {1190,0}, - {684,-5}, - {560,0}, - {140,-6}, - }, - [117] = { - {9999,3}, - {1482,0}, - {974,-5}, - {866,0}, - {140,-6}, - }, - [118] = { - {9999,3}, - {1780,0}, - {1750,-2}, - {1621,0}, - {1490,-4}, - {1273,0}, - {844,-4}, - {637,0}, - {557,-4}, - {416,0}, - {204,2.5}, - {165,0}, - {90,-6}, - }, - [119] = { - {9999,2.5}, - {1650,0}, - {1148,2.5}, - {894,0}, - {630,-5}, - {498,0}, - {380,-2}, - {288,0}, - {222,-6}, - }, - [120] = { - {9999,2.5}, - {1659,0}, - {1489,-5}, - {1405,0}, - {677,-1}, - {442,0}, - {158,-1}, - {80,-2}, - {75,-1}, - {65,-2}, - {60,-1}, - {55,-2}, - {50,-1}, - }, - [121] = { - {9999,0}, - {3040,2.5}, - {2946,3}, - {2703,0}, - {1994,3}, - {1787,0}, - {1440,-5}, - {1311,0}, - {1074,-1}, - {1008,-2}, - {935,0}, - {145,-6}, - }, - [122] = { - {9999,2.5}, - {2054,3}, - {1840,0}, - {1567,-5}, - {1370,0}, - {1154,-5}, - {870,0}, - {634,-5}, - {370,-0}, - {147,-6}, - }, - [123] = { - {9999,3}, - {2855,0}, - {2684,-1}, - {2532,0}, - {1793,-5}, - {1548,0}, - {757,-1}, - {652,0}, - {137,-6}, - } - }, - { - [111] = { - {9999,2.5}, - {1651,3}, - {1464,0}, - {1260,2.5}, - {1232,2.5}, - {893,0}, - {847,2.5}, - {712,0}, - {491,-4}, - {288,0}, - {216,2.5}, - {156,0}, - {170,-6}, - }, - [110] = { - {9999,2.5}, - {805,3}, - {770,0}, - {150,-6}, - }, - [109] = { - {9999,3}, - {1043,0}, - {419,2.5}, - {353,3}, - {224,0}, - {176,-6}, - }, - [108] = { - {9999,2.5}, - {1433,0}, - {1345,-1}, - {1339,-2}, - {1167,-1}, - {1075,0}, - {817,-1}, - {650,0}, - {167,-6}, - }, - } - } - if (Metrostroi.TrainPositions[self.Train] and Metrostroi.TrainPositions[self.Train][1]) then - self.PathID = Metrostroi.TrainPositions[self.Train][1].path.id - end - if not self.Commands[self.PathID] or not self.Commands[self.PathID][self.Train.UPO.Station] then return 2 end - if self.Train:ReadCell(49165) < 20 and not self.OnStation then return 2 end - local max-- = self.Train:ReadCell(49165) - local pos = 0 - for k,v in ipairs(self.Commands[self.PathID][self.Train.UPO.Station]) do - if v[1] > self.Train:ReadCell(49165) then - max = v[1] - pos = v[2] - end - end - local speedLimit = 0--(self.Train.ALS_ARS.Signal0 or self.Train.ALS_ARS.RealNoFreq) and 0 or self.Train.ALS_ARS.Signal40 and 40 or self.Train.ALS_ARS.Signal60 and 60 or self.Train.ALS_ARS.Signal70 and 70 or self.Train.ALS_ARS.Signal80 and 80 or 0 - if self.Train.ALS_ARS.AVSpeedLimit and self.Train.ALS_ARS.AVSpeedLimit > 20 then - speedLimit = self.Train.ALS_ARS.AVSpeedLimit - end - --if self.Train.Speed > speedLimit-1 and pos > 0 then pos = 0 end - local RKPosition = math.floor(self.Train.RheostatController.Position+0.5) - local PP = math.floor(self.Train.PositionSwitch.Position + 0.5) == 2 - if pos == 2.5 then - return (not PP or RKPosition >= 7) and 3 or 1 - elseif pos > -4 then - return pos - elseif pos == -4 then - return not self.Train:GetPackedBool(35) and RKPosition < 7 and -3 or -1 - elseif pos == -5 then - return self.Train.Speed > speedLimit-5 and -2 or -1 - elseif pos == -6 or pos == -7 then - self.OnStation = true - local S = self.Train.UPO.Distance - local RK = self:GetStationRK(S,pos == -7) - - if (RK >= 18 and self.Train.ALS_ARS.Speed < 0.1 and not self.StartMoving and self.OnStation) then - self.Train.UPO.StationAutodrive = false - --self.VUDOverride = true - - --local self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) - if self.Train.UPO.Station == 0 then self.AutodriveReset = true return end - --local StatID = Metrostroi.WorkingStations[self.Train.UPO.Station] or Metrostroi.WorkingStations[self.Train.UPO.Station + (self.Path == 1 and 1 or -1)] or 0 - if not StationBraking then - local Curr = Metrostroi.AnnouncerData[self.Train.UPO.Station] - if Curr[2] then - self.Train:WriteCell(32,1) - else - self.Train:WriteCell(31,1) - end - timer.Simple(0.1,function() - if not IsValid(self.Train) then return end - self.Train:WriteCell(32,0) - self.Train:WriteCell(31,0) - end) - self.Train.ADoorDisable:TriggerInput("Set",1) - end - self.AutodriveReset = true - self.KVPos = 0 - end - return (not self.Train:GetPackedBool(35) and (RK > RKPosition or RK >= 18)) and (RK == 19 and -4 or-3) or -1 - end -end -function TRAIN_SYSTEM:BoardAutodrive() - local Train= self.Train - - -- Calculate distance to station - local dX = self.Train.UPO.Distance - if dX > 160 then self.StartMoving = nil end - local OnStation = dX < 160 and not self.StartMoving and Metrostroi.AnnouncerData[self.Train.UPO.Station]and Metrostroi.AnnouncerData[self.Train.UPO.Station][1] - --if StationBraking and (dX >= (160+35*self.MU - (speedLimit == 40 and 30 or 0)) or not OnStation) then self.Train.UPO.StationAutodrive = false return end - -- Target and real RK position (0 if not braking) - local TargetBrakeRKPosition = 0 - - local Command = self:GetCurrentCommand() - local KVPos = Command - local VZP = self.Train.KSAUP and self.Train.VZP.Value > 0.5 - local Vn2 = KVPos == -4 - if VZP and KVPos > 0 then - KVPos = 0 - elseif ElectricBrakeActive then - if (RheostatBrakeRotating or RKPosition == 18 and not OnStation) and not Train:GetPackedBool(35) then - KVPos = -3 - else - KVPos = -1 - end - elseif AcceleratingActive then - if Train.ALS_ARS.Speed > 30 and RheostatAccelRotating and not Train:GetPackedBool(35) then - KVPos = 3 - elseif RheostatAccelRotating and not Train:GetPackedBool(35) then - KVPos = 2 - else - KVPos = 1 - end - end - if Vn2 then KVPos = 0 end - if OnStation then - self.Train.R25p:TriggerInput("Set",self.OldRheostatBrakeRotating ~= RheostatBrakeRotating) - self.OldRheostatBrakeRotating = RheostatBrakeRotating - end - --Train:WriteCell(29, PneumaticValve1 and 1 or 0) -- Engage PN1 - Train:TriggerInput("KVControllerAutodriveSet",KVPos) - --Train:WriteCell(25,(ElectricBrakeActive and self.TargetBrakeRKPosition > 17) and 1 or 0) -- Engage power circuits - self.Brake = ElectricBrakeActive - self.Accelerate = AcceleratingActive - self.KVPos = KVPos - self.Rotating = RheostatBrakeRotating and true or RheostatAccelRotating and false or nil -end - -function TRAIN_SYSTEM:Enable() - if not self.AutodriveEnabled and not self.AutodriveReset then - self.AutodriveEnabled = true - self.StartMoving = true - end -end -function TRAIN_SYSTEM:Disable() - self.AutodriveReset = true -end -function TRAIN_SYSTEM:Think() - self.TrainCorrections = { - ["Em"] = 0, - ["717"] = 0, - } - local S = self.Train.UPO.Distance - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 and self.Train.A29 and self.Train.A29.Value < 0.5 then - self.Time = CurTime() - --RunConsoleCommand("say",Format("station:%.2f,%.2f\t distance:%.2f",self.Train.UPO.Station,self.Train:ReadCell(49165),S)) - end - if self.Train.KSAUP then return end - if self.Train.VZP then - if self.Train.BCCD and self.Train.BCCD.Value > 0 and self.Train.ADoorDisable.Value > 0 then - self.Train.ADoorDisable:TriggerInput("Set",0) - self.OnStation = false - self.AutodriveEnabled = false - self.ReadyToStart = true - end - --[[if Train:CPPIGetOwner() and Train:CPPIGetOwner():GetName() ~= "glebqip(RUS)" and (self.AutodriveEnabled or not self.AutodriveReset) then - self.AutodriveReset = true - else]] - - if self.AutodriveReset then - self.Train:TriggerInput("KVControllerAutodriveSet",0) - self.NoAcceleration = nil - self.Train:WriteCell(8,0) - self.Train:WriteCell(29,0) - self.AutodriveEnabled = false - self.OnStation = false - end - - if (self.Train.VZP.Value < 0.5 or (self.Train.Blok and self.Train.Blok == 4)) and self.AutodriveReset then - self.AutodriveReset = false - end - --Disable autodrive, if KV pos is not zero, ARS or ALS not enabled, Reverser position is not forward or Driver value pos is > 2 - if self.Train.Blok and self.Train.Blok ~= 1 then - if (self.Train.Pneumatic.BrakeLinePressure < 4.8 or self.Train.Pneumatic.BrakeCylinderPressure > 1.8) and not self.BCTimer then - self.BCTimer = CurTime()+3 - end - if self.Train.Pneumatic.BrakeLinePressure >= 4.8 and self.Train.Pneumatic.BrakeCylinderPressure <= 1.8 then - self.BCTimer = nil - end - if self.BCTimer and CurTime() - self.BCTimer > 0 then - self:Disable() - end - if self.Train.KV.ControllerPosition ~= 0.0 or not self.Train.ALS_ARS.EnableARS or self.Train.KV.ReverserPosition ~= 1.0 or self.Train.Panel.SD < 0.5 then - self:Disable() - end - if self.Train.ALS_ARS["33G"] > 0.5 then - self:Disable() - end - end - --if self.OnStation and self.Train.UPO.StationAutodrive and self.AutodriveWorking and not self.VRD and self.Train.ALS_ARS.EnableARS and self.Train.KV.ReverserPosition == 1.0 and self.Train.Pneumatic.DriverValvePosition <= 2 and self.self.Train.Panel.SD > 0.5 then - --self:Autodrive(true) - --elseif self.Train.UPO.StationAutodrive then - --self.Train.UPO.StationAutodrive = false - --end - if self.AutodriveEnabled then - if self.Train.Blok ~= 1 and not self.KSAUP then - self:Autodrive() - else - self:BoardAutodrive() - end - end - if self.ReadyToStart and self.Train.Panel["SD"] > 0.5 then - self.ReadyToStart = nil - self.AutodriveReset = false - end - if self.Blocks == 2 and self["PA-KSD"].StationAutodrive then - self:Autodrive(true) - end - --end - end - if self.RealControllerPosition ~= self.Train.KV.RealControllerPosition and self.Train.Blok == 1 and self.Train.A5 and self.Train.A5.Value > 0.5 then - local dX = self.Train.UPO.Distance - --RunConsoleCommand("say",self.Train.KV.RealControllerPosition,dX,self.Train.UPO.Station,(Metrostroi.TrainPositions[self.Train] and Metrostroi.TrainPositions[self.Train][1]) and Metrostroi.TrainPositions[self.Train][1].path.id or "unk",math.floor(self.Train.RheostatController.Position+0.5)) - --file.Append("puav.txt",Format("%d\t%s\t%d\t%s\t%d\n",self.Train.KV.RealControllerPosition,dX,self.Train.UPO.Station,(Metrostroi.TrainPositions[self.Train] and Metrostroi.TrainPositions[self.Train][1]) and Metrostroi.TrainPositions[self.Train][1].path.id or "unk",math.floor(self.Train.RheostatController.Position+0.5))) - self.RealControllerPosition = self.Train.KV.RealControllerPosition - end - --self:GetCurrentCommand() -end diff --git a/lua/metrostroi/systems/_obsolete/sys_bars.lua b/lua/metrostroi/systems/_obsolete/sys_bars.lua deleted file mode 100644 index 679f0f0..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_bars.lua +++ /dev/null @@ -1,568 +0,0 @@ --------------------------------------------------------------------------------- --- АРС-АЛС --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("BARS") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("RC2","Relay","Switch", {bass = true,normally_closed = true }) - self.Train:LoadSystem("VAU","Relay","Switch",{ bass = true,normally_closed = true }) - self.Train:LoadSystem("VRD","Relay","Switch",{ bass = true }) - - self.Train:LoadSystem("ALSCoil") - - -- Internal state - self.Speed = 0 - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Ring = false - self.Overspeed = false - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.AttentionPedal = false - - self.KVT = false - - self["33D"] = 1 - self["33Zh"] = 1 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - self["8"] = 0 - self["31"] = 0 - self["32"] = 0 - -- Lamps - self.LKT = false - --self.EPK = {} -end - -function TRAIN_SYSTEM:Outputs() - return { - "2", "8", "20", "29", "33D", "33G", "33Zh", "31", "32", - "NoFreq","F1","F2","F3","F4","F5","F6","LN" - } -end - -function TRAIN_SYSTEM:Inputs() - return { "IgnoreThisARS","AttentionPedal","Ring", "PA-Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local Train = self.Train - if name == "AttentionPedal" then - self.AttentionPedal = value > 0.5 - if Train and Train.PB then - Train.PB:TriggerInput("Set",value) - end - end - if name == "Ring" then - self.ARSRingOverride = value > 0.5 - end - --[[if name == "PA-Ring" then - self.PA_Ring= value > 0.5 - end]] -end - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local PUAV = Train.Blok == 1 - if PUAV then return end - local ALS = Train.ALSCoil - local speed = math.Round(ALS.Speed or 0,1) - - - local power = Train.VB.Value > 0 - -- ALS, ARS state - local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - local RVForward = power and (Train.KV["D4-15"] > 0 or KRUEnabled) - local EnableARS = power and RVForward and Train.A42.Value > 0 and Train.ARS.Value > 0 - local EnableALS = power and Train.A43.Value > 0 and Train.ALS.Value > 0 - - if RVForward and EnableALS ~= (ALS.Enabled==1) then - ALS:TriggerInput("Enable",RVForward and EnableALS and 1 or 0) - end - - local PAKSDM = Train.Blok == 4 - local PAKSD = Train.Blok == 2 - local PAM = Train.Blok == 3 - local KSDType = Train.Blok == 4 and "PA-KSD-M" or Train.Blok == 2 and "PA-KSD" or "PA-M" - --if self.Train.ARSType == 3 and self.Train:EntIndex() ~= 3472 then self.Train.ARSType = 1 end - --[[ - if not OverrideState then - if PAKSD then - EnableARS = EnableARS and (self.Train[KSDType].State > 4 and self.Train[KSDType].State ~= 45 and self.Train[KSDType].State ~= 49) and self.Train.RC1.Value > 0.5 - EnableALS = EnableALS and Train[KSDType].VPA and (self.Train[KSDType].State > 0 or self.Train[KSDType].State == -1 or self.Train[KSDType].State == -9) - elseif PAKSDM then - EnableARS = EnableARS and (self.Train[KSDType].State > 7 or ((self.Train[KSDType].State == 1.1 or self.Train[KSDType].State == 1) and self.Train[KSDType].NextState > 8)) and self.Train.RC1.Value > 0.5 - EnableALS = EnableALS and (self.Train[KSDType].State > 2 or ((self.Train[KSDType].State == 1.1 or self.Train[KSDType].State == 1) and self.Train[KSDType].NextState > 3)) - else - EnableARS = EnableARS and Train.ARS.Value == 1 - EnableALS = EnableALS and Train.ALS.Value == 1 - end - EnableUOS = false--Train[KSDType].UOS--EnableUOS and Train[KSDType].UOS - end]] - self.EnableARS = EnableARS - self.EnableALS = EnableALS - --[[local EPKActivated - if (PAKSD or PAKSDM) then - EPKActivated = EnableARS - else - EPKActivated = Train.EPK.Value > 0.5 and (Train.Pneumatic.ValveType == 2 and Train.DriverValveDisconnect.Value > 0.5 or Train.DriverValveBLDisconnect.Value > 0.5) - end - if not self.EPKActivated and EPKActivated then - self.EPKActivated = EPKActivated - end - if EPKActivated and self.EPKActTimer then - self.EPKActTimer = nil - end - if not EPKActivated and self.EPKActivated and not (PAKSD or PAKSDM) and not self.EPKActTimer then - self.EPKActTimer = CurTime() + 3 - end - if not EPKActivated and self.EPKActivated and (PAKSD or PAKSDM) then - self.EPKActivated = false - --self.EPKBrake = false - for k in pairs(self.EPK) do - self.EPK[k] = nil - end - end - if self.EPKActTimer and CurTime() - self.EPKActTimer > 0 then - self.EPKActivated = false - --self.EPKBrake = false - for k in pairs(self.EPK) do - self.EPK[k] = nil - end - end]] - - -- Pedallocal PB = Train.PB.Value > 0 - if PB and not self.AttentionPedalTimer and not self.Overspeed then - self.AttentionPedalTimer = CurTime() + 1 - end - - if PB and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not PB and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if PB or (Train.KVT) and Train.KVT.Value > 0.5 then self.KVT = true end - if not PB and (Train.KVT) and Train.KVT.Value < 0.5 then self.KVT = false end - - -- Ignore pedal - if self.IgnorePedal and self.KVT then - self.KVT = false - else - self.IgnorePedal = false - end - - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - self.NoFreq = self.NoFreq + (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1)) - - - -- ARS system placeholder logic - if EnableALS --[[or EnableUOS]] then - if (ALS.F1+ALS.F2+ALS.F3+ALS.F4+ALS.F5+ALS.F6+self.NoFreq) == 0 then self.NoFreq = 1 end - local V = math.floor(self.Speed +0.05) - local Vlimit = 0 - if self.F4 > 0 then Vlimit = 40 end - if self.F3 > 0 then Vlimit = 60 end - if self.F2 > 0 then Vlimit = 70 end - if self.F1 > 0 then Vlimit = 80 end - - self.Overspeed = false--[[ - if (PAKSD or PAM or PAKSDM) and self.Train[KSDType].VRD and not self.Signal0 and not self.RealNoFreq then - self.Train[KSDType].VRD = false - end - if self.AttentionPedal then - Vlimit = 0 - end]] - - --if ( self.KVT) and (Vlimit == 0) and self.Train.ARSType and self.Train.ARSType == 3 and not self.Train[KSDType].VRD then self.Overspeed = true end - --self.Ring = self.Overspeed and (self.Speed > 5) - - -- Determine next limit and current limit - self.SpeedLimit = Vlimit - else - local V = math.floor(self.Speed +0.05) - self.SpeedLimit = 0 - self.NextLimit = 0 - end - ------------------ - if self.SpeedLimit > 20 then self.SpeedLimit = self.SpeedLimit - 2 end - if EnableARS then - local SpeedLimit = self.SpeedLimit - if self.ElectricBrake1 and self.ARSBrake and not (self.RealNoFreq and not self.KVT and not self.ARSBrake) then - if self.ARSBrakeTimer == nil then self.ARSBrakeTimer = CurTime() + 5 end - else - self.ARSBrakeTimer = nil - end - - if self.RealNoFreq and (not self.PrevNoFreq) then - self.IgnorePedal = true - end - self.PrevNoFreq = self.RealNoFreq - -- Check overspeed - --if self.Train.Owner:GetName():find("E11") then self.SpeedLimit = 25 end - if SpeedLimit > 20 then - --[[if (PAM or PAKSDM) and self.Train.YAR_13A.Slope == 0 and self.Speed >= self.SpeedLimit and not self.ARSBrake then - self.ElectricBrake1 = true - end]] - if self.Speed >= SpeedLimit + 1 then - if Train:ReadTrainWire(6) == 0 then - self.ElectricBrake = true - --self.PneumaticBrake1 = true - end - self.ElectricBrake1 = true - self.ARSBrake = true - end - end - if self.ElectricBrake then - self.PneumaticBrake1 = self.Train.Electric.I24 > -50 - --print(self.PneumaticBrake1) - end - if self.Overspeed then - self.ARSBrake = true - self.ElectricBrake1 = true - self.ElectricBrake = true - --self.PneumaticBrake1 = true - end - -- Check cancel of overspeed command - if not self.Overspeed and not self.ElectricBrake1 and self.ARSBrake then - self.PneumaticBrake1 = false - - end - if (self.KVT or not self.ARSBrakeTimer) and (self.Speed < self.SpeedLimit - 1 and self.SpeedLimit > 20 or self.SpeedLimit < 20 and not self.Overspeed) and (self.ElectricBrake or self.ARSBrake) then - self.ElectricBrake = false - self.ElectricBrake1 = false - self.ARSBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = false - end - if self.Speed < self.SpeedLimit - 1 and (self.ARSBrake or self.ElectricBrake1) and not self.ElectricBrake then - self.ARSBrake = false - self.ElectricBrake1 = false - end - --print(Train:GetPackedBool(131)) - -- Check use of valve #1 during overspeed - if self.ARSBrake and self.ElectricBrake1 and self.Speed < 0.25 then - self.PneumaticBrake2 = true - end - if (self.Signal0 or self.Special) then - if not self.ZeroTimer then - self.ZeroTimer = CurTime()+30 - self.ZeroTimerState = true - end - if self.ZeroTimerState and self.ZeroTimer and CurTime()-self.ZeroTimer > 7.5 and self.Speed < 0.25 then - self.ZeroTimerState = false - self.ZeroTimer = CurTime()+30 - end - elseif self.ZeroTimer ~= nil then - self.ZeroTimer = nil - end - if self.Speed < 1.25 then - self.PneumaticBrake1 = true - end - -- Parking brake limit - local BPSWorking = Train:ReadTrainWire(5) > 0 and (not (PAKSD or PAM or PAKSDM) or not Train[KSDType].Nakat) - if BPSWorking then - if self.Nakat ~= nil then - self.PneumaticBrake1 = true - self.AntiRolling = self.Nakat and true or nil - self.Nakat = nil - end - if self.Speed*Train.SpeedSign < -0.5 then - if not self.Meters then self.Meters = 0 end - self.Meters = self.Meters + self.Speed/3600*1000*dT - if self.Meters > 0.5 + (Train:ReadTrainWire(1) > 0 and 2.5 or 0) then - self.AntiRolling = true - end - else - if Train.KV.ControllerPosition <= 0 and self.AntiRolling then - self.AntiRolling = false - end - if Train.KV.ControllerPosition > 0 and self.AntiRolling == false then - self.AntiRolling = nil - end - self.Meters = nil - end - else - self.AntiRolling = nil - if (PAKSD or PAM or PAKSDM) and Train[KSDType].Nakat then self.PneumaticBrake1 = false end - end - --if BPSWorking and self.EPKActivated and not Train[KSDType].Stancionniy and Train:ReadTrainWire(5) > 0 and self.Speed*self.Train.SpeedSign < -5 and not self.EPKBrake then - --self.EPKBrake = true - --RunConsoleCommand("say","EPV braking (Driver rolling back)",Train:GetDriverName()) - --end - - --BPS Logic - if not BPSWorking then - self.StoppedOnSlopeByRP = false - self.BPSActive = false - end - --if (Train.BPS == nil or Train.BPS.Value < 0.5) then self.AntiRolling = nil end - -- Check cancel pneumatic brake 1 command - if ((Train:ReadTrainWire(1) > 0) or (Train.RRP and Train.RRP.Value > 0 and not self.ElectricBrake1)) then - if (Train:ReadTrainWire(1) > 0 or (Train.RRP and Train.RRP.Value > 0 and not self.ElectricBrake1)) and self.PneumaticBrake1 and not self.Overspeed then - self.PneumaticBrake1 = false - end - end - if self.Signal0 and not self.Special and not self.RealNoFreq and not self.Signal40 and not self.Signal60 and not self.Signal70 and not self.Signal80 then - if not self.ReadyPeep then self.ReadyPeep = true end - if not self.NonVRD and (not Train[KSDType].VRD and (PAKSD or PAKSDM) or self.Train.VRD.Value < 0.5 and (PAM or PUAV)) then - self.VRDTimer = nil - end - - self.NonVRD = (PAKSD or PAKSDM) and not Train[KSDType].VRD or (PAM or PUAV) and self.Train.VRD.Value < 0.5 - if self.NonVRD and self.Train:ReadTrainWire(6) < 0 then - if self.VRDTimer and CurTime() - self.VRDTimer > 0 then - self.VRDTimer = false - elseif self.VRDTimer ~= false then - if not self.VRDTimer and self.KVT then self.VRDTimer = CurTime() + 1 end - if self.VRDTimer and not self.KVT then self.VRDTimer = nil end - end - elseif self.Train:ReadTrainWire(6) > 0 then - self.VRDTimer = false - else - self.VRDTimer = false - end - else - if self.ReadyPeep then - self.ReadyPeep = nil - self.PeepTimer = CurTime() + 0.1 - end - if self.PeepTimer and self.PeepTimer - CurTime() < 0 then - self.PeepTimer = nil - end - -- self.PeepTimer = nil - --if self.ReadyPeep == nil then - --self.ReadyPeep = true - --end - if self.NonVRD then self.NonVRD = false end - self.VRDTimer = false - end - local VRDoff = (PAKSD or PAKSDM ) and 0 or 1 - if (self.Train:ReadTrainWire(15) < 1.0) and (self.Speed < 1.0) and not Train[KSDType].KD and (PAKSD or PAM or PAKSDM) then - self.KD = true - elseif (PAKSD or PAM or PAKSDM) and Train[KSDType].AutodriveWorking and not self.Train.Autodrive.AutodriveEnabled then - self.KD = true - elseif Train[KSDType].KD or self.Train:ReadTrainWire(15) > 0.0 and (PAKSD or PAM or PAKSDM) then - self.KD = false - end - -- ARS signals - local Ebrake, Abrake, NFBrake, Pbrake1,Pbrake2 = - ((self.ElectricBrake) and 1 or 0), - ((self.ARSBrake) and 1 or 0), - ((self.SpeedLimit < 20 and not self.KVT and not self.ARSBrake) and 1 or 0), - (self.PneumaticBrake1 and 1 or 0), - (self.PneumaticBrake2 and 1 or 0) - local VRDBrake = self.NonVRD or self.VRDTimer ~= false - - -- Apply ARS system commands - self["33D"] = (1 - Abrake) *(1-NFBrake)*((self.KD or self.ElectricBrake1 or VRDBrake or self.AntiRolling ~= nil or Train[KSDType].StopTrain) and 0 or 1) --*(2 - Pbrake2) - self["33G"] = Ebrake + NFBrake*VRDoff + ((VRDBrake) and 1 or 0)*VRDoff - self["33Zh"] = (1 - Abrake)*(1-NFBrake*VRDoff)*((self.KD or VRDBrake or self.ElectricBrake1 or self.AntiRolling ~= nil or Train[KSDType].StopTrain) and 0 or 1)--*(2 - Pbrake2) - --print(self["33Zh"]) - self["2"] = Ebrake + NFBrake*VRDoff + ((VRDBrake) and 1 or 0)*VRDoff - self["20"] = Ebrake + NFBrake*VRDoff + ((VRDBrake) and 1 or 0)*VRDoff - self["29"] = Pbrake1-- + (self.BPSActive and 1 or 0) - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(self.SpeedLimit,self.self.SpeedLimit <= 20 and not self.KVT) end - --if StPetersburg then print(self.Train:EntIndex()) end - self["8"] = Pbrake2 - + (KRUEnabled and 1 or 0)*Ebrake - + ((self.SpeedLimit < 20 and not self.KVT and VRDBrake == 0 or self.Speed > 20 and self.SpeedLimit < 20) and 1 or 0) - + (self.BPSActive and 1 or 0) - + (self.AntiRolling ~= nil and 1 or 0) - + (1 - ((self.EPKActivated and 1 or 0) or 1) - + (Train[KSDType].StopTrain and 1 or 0)) - - ---self.LKT = (self["33G"] > 0.5) or (self["29"] > 0.5) or (Train:ReadTrainWire(35) > 0) - self.LVD = self.LVD or self["33D"] < 0.5 - if Train:ReadTrainWire(6) < 1 and self["33D"] > 0.5 then self.LVD = false end - self.Ring = ((self["33D"] < 0.5 and ((NFBrake < 1 and self.ARSBrakeTimer ~= nil and self.ARSBrakeTimer ~= false) or self.VRDTimer ~= false)) or self.KSZD or (self.PeepTimer and self.PeepTimer-CurTime() > 0)) or math.max(20,self.SpeedLimit-1) < self.Speed and (PAKSDM or PAM) - --self.ZeroTimer = nil - if Train.PUAV.ZeroTimer then - local timer = (CurTime()-Train.PUAV.ZeroTimer) - if timer >= 0 and timer < 3.5 then - self.Ring = true - elseif timer >= 3.5 and timer < 3.5+4 and timer%1 < 0.5 then - self.Ring = true - end - end - if self.ElectricBrake or self.PneumaticBrake2 then - if not self.LKT then - self:EPVBrake("LKT not light-up when ARS stopping") - else - self:EPVDisableBrake("LKT not light-up when ARS stopping") - end - else - self:EPVDisableBrake("LKT not light-up when ARS stopping") - end - if self.KVT and self.ARSBrakeTimer then self.ARSBrakeTimer = false end - if self.EPKActivated and not self.LKT and self.Speed < 0.05 and Train:ReadTrainWire(1) == 0 and (not (PAKSD or PAM or PAKSDM) or not Train[KSDType].Nakat) then -- or (self.AntiRolling ~= nil and Train:ReadTrainWire(1) > 0) then - self:EPVBrake("LKT off when stopped") - else - self:EPVDisableBrake("LKT off when stopped") - end - else - self.AntiRolling = nil - self.ElectricBrake1 = true - self.ElectricBrake = true - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.ARSBrake = true - self.ZeroTimer = nil - self["33D"] = 0 - self["33Zh"] = 1 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - - ---self.LKT = false - self.LVD = false - self.Ring = false - end - -- ARS signalling train wires - if EnableARS then - self.Train:WriteTrainWire(21,self.LVD and 1 or 0)-----self.LKT and 1 or 0) - else--if not EnableUOS then - self.Train:WriteTrainWire(21,0) - end - -- RC1 operation - if self.Train.RC1 and (self.Train.RC1.Value == 0) then - if PAKSD or PAKSDM and not Train[KSDType].UOS then - Train[KSDType].UOS = true - end - --self["33D"] = self.Speed > 55 and 0 or 1 - self["33G"] = 0 - self["33Zh"] = 1 - -- - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - -- - self["31"] = 0 - self["32"] = 0 - --self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33D"] = (self.Speed + 0.5 > 9000 and ((not PAKSD and not PAKSDM) or Train[KSDType].State > 0)) and 0 or 1 - --self["33G"] = (self.Speed + 0.5 > 35) and 1 or KRUEnabled and (1-Train.RPB.Value) or 0 - --self["33Zh"] = 1--(self.Speed + 0.5 > 40) and 0 or KAH - self["8"] = (self.Speed + 0.5 > 9000 and ((not PAKSD and not PAKSDM) or Train[KSDType].State > 0)) and 1 or KRUEnabled and (1-Train.RPB.Value) or 0 - else - if (not self.EPKActivated) then - self["33D"] = 0 - self["33Zh"] = 1 - end - end - - if Train.RV_2 then - Train.RV_2:TriggerInput("Set",EnableARS and 1 or 0) - end - - if self.EPKActivated then - --if self.EPKOffARS then - --self:EPVBrake("Was the emergency brake",true) - --end - --self.EPKOffARS = nil - --if self.EPKTimer then print(self.EPKTimer - CurTime(),self.EPKTimer < CurTime(),self.EPKTimer > CurTime() ) end - if not EnableARS then - self:EPVBrake("ARS disabled") - else - self:EPVDisableBrake("ARS disabled") - end - if self.ARSBrakeTimer then - self:EPVBrake("Braking 3 seconds") - else - self:EPVDisableBrake("Braking 3 seconds") - end - if (PAKSD or PAKSDM) and self.KVT and not self.EPKOffTimer and self.EPKBrake then - self.EPKOffTimer = CurTime() + 1 - --self.EPKBrake = false - end - if self.EPKOffTimer and not self.KVT then - self.EPKOffTimer = nil - self.EPKBrake = true - end - if self.EPKOffTimer and CurTime()-self.EPKOffTimer > 0 then - self.EPKOffTimer = nil - self.EPKBrake = false - end - else - --self.EPKOffTimer = nil - --[[if EnableARS and self.EPKOffARS == nil then - self.EPKOffARS = true - else - self.EPKOffARS = false - end]] - --if self.EPKOffARS then - --self.EPKOffARS = false - --end - if not EnableARS then - self.EPKBrake = false - end - end - --if not EPKActivated then - --if EnableARS and self.EPKOffARS == nil then - --print(self.EPKBrake) - --self.EPKOffARS = self.EPKBrake - --end - --end - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(self.EPKOffARS,EnableARS) end - if not EnableARS then self.EPKOffARS = false end - -- 81-717 autodrive/autostop - if (Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts then - self["33D"] = 0 - self["33Zh"] = 1 - end - - -- 81-717 special VZ1 button - if self.Train.VZ1 then - self["29"] = self["29"] + self.Train.VZ1.Value - end - if Train.UAVAContact and Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve then - self.UAVAContacts = nil - end - self["8"] = self["8"]*(self.Train.A41 and self.Train.A41.Value or 1)*(self.Train.A8 and self.Train.A8.Value or 1) + self.Train.OVT.Value - self["29"] = self["29"]*(self.Train.A8 and self.Train.A8.Value or 1) - self.Ring = self.Ring or (self.Alert and self.Alert - CurTime() > 0) - if Train.Rp8 then Train.Rp8:TriggerInput("Set",self["8"] + ((self.Train.RC1 and (self.Train.RC1.Value == 0)) and (1-self["33D"]) or 0)) end - self.Ring = self.PA_Ring or self.ARSRingOverride or self.Ring - self.Ring = self.Ring or (PUAV and self.Train.PUAV.RingArmed and true) - --[[ - if PAKSD and Train["PA-KSD"].State == 5 then - self["33D"] = 1 - self["33Zh"] = 1 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - self["8"] = 0 - end - if (PAM or PAKSDM) and Train["PA-M"].State == 8 then - self["33D"] = 1 - self["33Zh"] = 1 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - self["8"] = 0 - end - ]] - for k,v in pairs(self.EPK) do - if CurTime() - v > 0 and not self.EPKBrake and (not self.KVT or not (PAKSD or PAKSDM)) then - self.EPKBrake = true - RunConsoleCommand("say","EPV braking ("..k..")",self.Train:GetDriverName()) - end - end - Train.Pneumatic.EmergencyValveEPK = self.EPKBrake and not self.EPKOffTimer and not self.EPKActTimer -end diff --git a/lua/metrostroi/systems/_obsolete/sys_bars_717.lua b/lua/metrostroi/systems/_obsolete/sys_bars_717.lua deleted file mode 100644 index 04aaebc..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_bars_717.lua +++ /dev/null @@ -1,324 +0,0 @@ --------------------------------------------------------------------------------- --- БАРС --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("ARS_BARS_717") -TRAIN_SYSTEM.DontAccelerateSimulation = false - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("VRD","Relay","Switch",{ bass = true }) - - self.Train:LoadSystem("ALSCoil") - --self.Train:LoadSystem("ALSCoil","ALSTest") - - self.Train:LoadSystem("ROT1","Relay") - self.Train:LoadSystem("ROT2","Relay") - self.Train:LoadSystem("EK","Relay") - self.Train:LoadSystem("EK1","Relay",{close_time = 3}) - self.Train:LoadSystem("EPKC","Relay") - - -- Internal state - self.Speed = 0 - self.SpeedLimit = 0 - self.ARSRing = false - self.Overspeed = false - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.AttentionPedal = false - - self.KRT = 0 - self.KRH = 0 - self.K25 = 0 - self.KVT = false - self.LN = 0 - self.Freq = 0 - self.NoFreq = 0 - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.RealF5 = 0 - - -- ARS wires - self["33D"] = 0 - self["33G"] = 0 - self["2"] = 0 - self["6"] = 0 - self["8"] = 0 - self["20"] = 0 - --self["21"] = 0 - self["48"] = 0 - self["31"] = 0 - self["32"] = 0 - - self.Speed = 0 - - -- Lamps - ---self.LKT = false - self.LVD = 0 - self.Ring = 0 -end - -function TRAIN_SYSTEM:Outputs() - return { - "Ring","LVD", - "NoFreq","F1","F2","F3","F4","F5","F6","LN","Speed" - } -end - -function TRAIN_SYSTEM:Inputs() - return { "Confirm", "IgnoreThisARS","AttentionPedal","Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local Train = self.Train - if name == "AttentionPedal" then - self.AttentionPedal = value > 0.5 - if Train and Train.PB then - Train.PB:TriggerInput("Set",value) - end - end - if name == "IgnoreThisARS" then - self.IgnoreThisARS = value > 0.5 - end - if name == "Ring" then - self.ARSRingOverride = value > 0.5 - end - - if name == "Confirm" then self.ConfirmARS = true end -end - - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - if Train.Electric.Type < 2 then return end - local ALS = Train.ALSCoil - local speed = math.Round(ALS.Speed or 0,1/3) - self.SpeedoTimer = self.SpeedoTimer or CurTime() - if CurTime()-self.SpeedoTimer > 0.4 then - local time = (CurTime()-self.SpeedoTimer) - self.Speed = math.max(0,self.Speed+(speed-self.Speed)*(0.4+math.max(0,math.min((self.Speed-5)*0.2,0.4)))) - self.SpeedoTimer = CurTime() - end - - local power = Train.VB.Value > 0 - -- ALS, ARS state - local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - local RVForward = power and (Train.KV["D4-15"] > 0 or KRUEnabled) - local EnableARS = power and RVForward and --[[ (not Train.A42 or Train.A42.Value > 0) and--]] Train.ARS.Value > 0 - local EnableALS = power and --[[ (not Train.A43 or Train.A43.Value > 0) and--]] Train.ALS.Value > 0 - if (RVForward and EnableALS) ~= (ALS.Enabled==1) then - ALS:TriggerInput("Enable",RVForward and EnableALS and 1 or 0) - end - - self.EnableARS = EnableARS - self.EnableALS = EnableALS - - self.Power = self.EnableARS and 1 or 0 - - --local EPKActivated = Train.EPK and Train.EPK.Value > 0.5 and (Train.Pneumatic.ValveType == 2 and Train.DriverValveDisconnect.Value > 0.5 or Train.DriverValveBLDisconnect.Value > 0.5) - -- Pedal state - --if (Train.PB) and Train.PB.Value > 0.5 then self.AttentionPedal = true end - --if (Train.PB) and Train.PB.Value < 0.5 then self.AttentionPedal = false end - local PB = Train.PB.Value > 0 or self.ConfirmARS - if PB and not self.AttentionPedalTimer and not self.Overspeed then - self.AttentionPedalTimer = CurTime() + 1 - end - - if PB and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not PB and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if PB or (Train.KVT) and Train.KVT.Value > 0.5 then self.KVT = true end - if not PB and (Train.KVT) and Train.KVT.Value < 0.5 then self.KVT = false end - - -- Ignore pedal - if self.IgnorePedal and self.KVT then - self.KVT = false - else - self.IgnorePedal = false - end - - local freq = ALS.F1*1+ALS.F2*2+ALS.F3*4+ALS.F4*8+ALS.F5*16+ALS.F6*32+ALS.NoFreq*64 - if freq ~= self.Freq and not self.FreqChangeTimer then self.FreqChangeTimer = CurTime() end - if self.FreqChangeTimer and CurTime()-self.FreqChangeTimer > 0.5 then - self.Freq = freq - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - self.FreqChangeTimer = nil - end - --if EnableARS and self.NoFreq == 0 then self.NoFreq = (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1)) end - - -- ARS system placeholder logic - if EnableALS then - if freq == self.Freq and self.Freq == 0 then self.NoFreq = 1 end - local Vlimit = 0 - if self.F4 > 0 then Vlimit = 40 end - if self.F3 > 0 then Vlimit = 60 end - if self.F2 > 0 then Vlimit = 70 end - if self.F1 > 0 then Vlimit = 80 end - -- Determine next limit and current limit - self.SpeedLimit = Vlimit - else - local V = math.floor(speed +0.05) - self.SpeedLimit = 0 - if self.Freq == 0 then self.NoFreq = 0 end - end - - if EnableARS then - Train.EK:TriggerInput("Close",Train.EK1.Value) - local SpeedLimit = self.SpeedLimit - if SpeedLimit < 20 and self.KVT then SpeedLimit = 20 end - -- Check absolute stop - if self.NoFreq ~= self.PrevNoFreq and self.KRT < 1 then - self.IgnorePedal = self.NoFreq > 0 and self.KRT < 1 - self.PrevNoFreq = self.NoFreq - end - local zero = (self.NoFreq+self.RealF5) > 0 - -- Enable PV1 and disassembly when we overspeed - if speed > SpeedLimit+0.5 and not self.Overspeed then - self.Overspeed = self.KRT > 0 and CurTime()-1 or CurTime() - self.ElectricBrake = true - self.ARSRing = true - end - if self.KVT and self.ARSRing then self.ARSRing = false end - --We can disable brake, if speed < Vdop-3 and electric brake - if not self.ARSRing and speed <= SpeedLimit-2 and self.ElectricBrake then - self.ElectricBrake = false - self.Overspeed = false - self.PneumaticBrake2 = false - end - --We can disable ring if speed < Vdop and not electric brake - if self.KVT and speed <= SpeedLimit and not self.ElectricBrake and self.ARSRing then self.ARSRing = false end - --Engage electric when we overspeed - if self.Overspeed and not self.ElectricBrake and self.Overspeed then - self.ElectricBrake = true - end - --PN2 when we brake to 0 speed - --if self.Overspeed and self.ElectricBrake and speed < 0.25 then self.PneumaticBrake2 = true end - - -- AntiRolling - local Drive = (--[[ Train.KV["10AS-33"] > 0 and--]] self.KRH > 0)-- and Train.KRR.Value > 0) - - if speed > SpeedLimit-1 then self.BlockDrive = true end - if speed < SpeedLimit-2 and not Drive then self.BlockDrive = false end - - -- Engage RO - if speed < 3 and self.RO ~= true and not Drive then self.RO = true end - -- Check RO when we starting - if self.RO and self.RO ~= true and (speed > 5 or CurTime()-self.RO > 6) then - self.RO = nil - self.AntiRolling = self.NoFreq == 0 and speed <= 5 and CurTime() - end - if self.AntiRolling and Drive then self.AntiRolling = CurTime() elseif self.AntiRolling and CurTime()-self.AntiRolling > 3 then self.AntiRolling = false end - -- Disable PN1 and start RO timer - if Drive and self.RO == true then - self.RO = CurTime() - end - - local delay = 3.5 - if 10 < speed and speed < 30 then delay = 5.5 end - --if speed < 3 then delay = 10 end - if (self.ElectricBrake or speed < 0.2) and Train.Panel.KT == 0 or self.ARSRing then - if not self.EPKTimer then self.EPKTimer = CurTime() end - else - self.EPKTimer = nil - end - if self.EPKTimer and CurTime()-self.EPKTimer > delay then Train.EK1:TriggerInput("Open",1) end - -- ARS signals - local zeroBrake = self.Freq == 0 or zero and not self.KVT or self.F5 > 0 and Train.VRD.Value == 0 and self.F6 == 0 - local Ebrake, Abrake, Pbrake1,Pbrake2 = - ((self.ElectricBrake or zeroBrake) and 1 or 0), - ((self.BlockDrive or self.Overspeed or self.ARSRing or self.ElectricBrake or zeroBrake or self.AntiRolling) and 1 or 0), - ((self.Overspeed and CurTime()-self.Overspeed < 1 or self.RO == true or self.AntiRolling) and 1 or 0), - ((self.PneumaticBrake2 or zeroBrake) and 1 or 0) - -- Apply ARS system commands - self["33D"] = (1 - Abrake)*(1 - Pbrake2) - self["33G"] = Ebrake - self["2"] = Ebrake-- + NFBrake - self["20"] = Ebrake-- + NFBrake - self["48"] = Pbrake1-- + (self.BPSActive and 1 or 0) - --print(Train.Speed) - self["8"] = self.K25*-10+Pbrake2 - + (KRUEnabled and 1 or 0)*Ebrake + (self.Overspeed and CurTime()-self.Overspeed >= 1.5 and 1 or 0) - --+ (1 - ((EPKActivated and 1 or 0) or 1)) - ---self.LKT = (self["33G"] > 0.5) or (self["48"] > 0.5) or (Train:ReadTrainWire(35) > 0) - self.LVD = math.min(1,self.LVD + (1-self["33D"])) - if self.KRH < 1 and self["33D"] > 0.5 then self.LVD = 0 end - --self.ARSRing = ((self["33D"] < 0.5) or self.KSZD) - else - Train.EK:TriggerInput("Open",1) - Train.EK1:TriggerInput("Close",1) - self.ElectricBrake = true - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.Overspeed = CurTime() - self.BlockDrive = false - self.RO = true - self.AntiRolling = false - self["33D"] = 0 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["48"] = 0 - - ---self.LKT = false - self.LN = 0 - self.LVD = 0 - self.ARSRing = true - end - -- ARS signalling train wires - self.Train:WriteTrainWire(21,self.LVD and 1 or 0) - if 0*Train.KV["10AK-4"] > 0 then - if not self.BPSArmed then - self.BPSMeter = self.BPSMeter or 0 - self.BPSMeter = self.BPSMeter + math.min(0,Train.Speed*Train.SpeedSign*1000/3600)*dT - if Train.Speed*Train.SpeedSign > 0.1 then - self.BPSMeter = 0 - end - if -self.BPSMeter > 3 then - self.BPSArmed = true - end - end - else - self.BPSArmed = false - self.BPSMeter = 0 - end - if self.BPSArmed then - self["8"] = 1 - self["48"] = 1 - self["33D"] = 0 - end - - --Train.RV_2:TriggerInput("Set",(EnableARS and not self.BPSArmed) and 1 or 0) - - --Train.Rp8:TriggerInput("Set",self["8"] + ((self.Train.RC1 and (self.Train.RC1.Value == 0)) and (1-self["33D"]) or 0)) - --Train.Rp8:TriggerInput("Set",EnableARS and (Train:ReadTrainWire(6)*Train:ReadTrainWire(2)*(1-Train:ReadTrainWire(25))) or 0) - - self.Ring = (self.ARSRingOverride or self.ARSRing and EnableARS) and 1 or 0 - --[[ if Train.PUAV.ZeroTimer then - local timer = (CurTime()-Train.PUAV.ZeroTimer) - if timer >= 0 and timer < 3.5 then - self.Ring = true - elseif timer >= 3.5 and timer < 3.5+4 and timer%1 < 0.5 then - self.Ring = true - end - end - self.Ring = self.Ring or (Train.PUAV.RingArmed and CurTime()-Train.PUAV.RingArmed > 0)--]] - - Train.ROT1:TriggerInput("Set",self["33D"]) - Train.ROT2:TriggerInput("Set",self["33D"]) - if self.ConfirmARS then self.ConfirmARS = false end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_bars_em.lua b/lua/metrostroi/systems/_obsolete/sys_bars_em.lua deleted file mode 100644 index 991e663..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_bars_em.lua +++ /dev/null @@ -1,575 +0,0 @@ --------------------------------------------------------------------------------- --- БАРС для Ем --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("BARS_Em") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("VRD","Relay","Switch", {av = true}) - self.Train:LoadSystem("RC2","Relay","Switch", {bass = true,normally_closed = true }) - -- ALS state - self.Signal80 = false - self.Signal70 = false - self.Signal60 = false - self.Signal40 = false - self.Signal0 = false - self.Special = false - self.NoFreq = true - self.RealNoFreq = true - self.Alarm = false - self.CheckedNF = 2 - - -- Internal state - self.Speed = 0 - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Ring = false - self.Overspeed = false - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.AttentionPedal = false - self.KVT = false - - -- ARS wires - self["33D"] = 0 - self["33G"] = 0 - self["33Zh"] = 1 - self["2"] = 0 - self["6"] = 0 - self["8"] = 0 - self["20"] = 0 - --self["21"] = 0 - self["29"] = 0 - self["31"] = 0 - self["32"] = 0 - - -- Lamps - ---self.LKT = false - self.LVD = false - self.EPK = {} -end - -function TRAIN_SYSTEM:Outputs() - return { "2", "8", "20", "31", "32", "29", "33D", "33G", "33Zh", - "Speed", "Signal80","Signal70","Signal60","Signal40","Signal0","Special","NoFreq","RealNoFreq", - "SpeedLimit", "NextLimit","Ring","KVT","EnableARS","EnableALS","Signal", "UAVA"} -end - -function TRAIN_SYSTEM:Inputs() - return { "AttentionPedal","Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local Train = self.Train - if name == "AttentionPedal" then - self.AttentionPedal = value > 0.5 - if Train and Train.PB then - Train.PB:TriggerInput("Set",value) - end - end - if name == "IgnoreThisARS" then - self.IgnoreThisARS = value > 0.5 - end - if name == "Ring" then - self.RingOverride = value > 0.5 - end -end - -function TRAIN_SYSTEM:EPVBrake(reason,imm) - if not self.EPK[reason] and not self.EPKOffTimer and not self.EPKActTimer then - if imm then - self.EPK[reason] = CurTime() - 1 - else - self.EPK[reason] = CurTime() + ((10 <= self.Speed and self.Speed <= 30) and 5.5 or 3.3) - end - end -end - -function TRAIN_SYSTEM:EPVDisableBrake(reason) - if self.EPK[reason] then - self.EPK[reason] = nil - end -end -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(Train:ReadCell(49165)) end - self.LKT = true - for i,train in ipairs(Train.WagonList) do - --print(i,train.RKTT.Value,self["33G"],train.DKPT.Value) - --if (train.RKTT and train.RKTT.Value < 0.5 and train.DKPT.Value < 0.5 and self["33G"] > 0) or (train.DKPT and train.DKPT.Value < 0.5 and self["33G"] == 0) then - if (train.RKTT and train.RKTT.Value < 0.5 and train.DKPT.Value < 0.5) then-- or (train.DKPT and train.DKPT.Value < 0.5) then - self.LKT = false - end - end - - -- ALS, ARS state - local KRUEnabled = Train.KRU and Train.KRU.Position > 0 - local EnableARS = Train.VB.Value == 1.0 and (Train.KV.ReverserPosition ~= 0.0 or KRUEnabled) and Train.VBA.Value == 1.0 - local EnableALS = Train.VB.Value == 1.0 - - self.EnableARS = EnableARS - self.EnableALS = EnableALS - local EPKActivated = Train.EPK.Value > 0.5 and (Train.Pneumatic.ValveType == 2 and Train.DriverValveDisconnect.Value > 0.5 or Train.DriverValveBLDisconnect.Value > 0.5) - if not self.EPKActivated and EPKActivated then - self.EPKActivated = EPKActivated - end - if EPKActivated and self.EPKActTimer then - self.EPKActTimer = nil - end - if not EPKActivated and self.EPKActivated and not self.EPKActTimer then - self.EPKActTimer = CurTime() + 3 - end - if self.EPKActTimer and CurTime() - self.EPKActTimer > 0 then - self.EPKActivated = false - --self.EPKBrake = false - for k,v in pairs(self.EPK) do - self.EPK[k] = nil - end - end - - local PB = Train.PB and Train.PB.Value > 0.5 - if PB and not self.AttentionPedalTimer and not self.Overspeed then - self.AttentionPedalTimer = CurTime() + 1 - end - - if PB and self.AttentionPedalTimer and (CurTime() - self.AttentionPedalTimer) > 0 then - self.AttentionPedal = true - end - if not PB and (self.AttentionPedalTimer or self.AttentionPedal) then - self.AttentionPedal = false - self.AttentionPedalTimer = nil - end - if PB or (Train.KVT) and Train.KVT.Value > 0.5 then self.KVT = true end - if not PB and (Train.KVT) and Train.KVT.Value < 0.5 then self.KVT = false end - - -- Ignore pedal - if self.IgnorePedal and self.KVT then - self.KVT = false - else - self.IgnorePedal = false - end - - -- Speed check and update speed data - if CurTime() - (self.LastSpeedCheck or 0) > 0.5 then - self.LastSpeedCheck = CurTime() - self.Speed = (Train.Speed or 0) - end - - if (Train.UAVA and Train.SpeedSign and Train.SpeedSign > 0 and self.Speed > 0.25) or EnableALS then - local ars,arsback - self.Timer = self.Timer or CurTime() - if CurTime() - self.Timer > 1.00 then - self.Timer = CurTime() - -- Get train position - local pos = Metrostroi.TrainPositions[Train] --Metrostroi.GetPositionOnTrack(Train:GetPos(),Train:GetAngles()) --(this metod laggy for dir checks) - if pos then pos = pos[1] end - -- Get previous ARS section - if pos then - ars,arsback = Metrostroi.GetARSJoint(pos.node1,pos.x,Metrostroi.TrainDirections[Train], Train) - end - - if Train.UAVA and Train.SpeedSign > 0 then - if IsValid(arsback) then - if arsback == self.AutostopSignal then - Train.Pneumatic.EmergencyValve = not Train.Pneumatic.UAVA - self.UAVAContacts = not Train.Pneumatic.UAVA - self.AutostopSignal = nil - if not Train.Pneumatic.UAVA then - RunConsoleCommand("say","Autostop braking",Train:GetDriverName(),arsback.Name) - end - if not IsValid(Train.FrontTrain) or not IsValid(Train.RearTrain)then - RunConsoleCommand("say","Passed stop signal",Train:GetDriverName(),arsback.Name) - local ply,mode = Train:GetDriverPly() - hook.Run("MetrostroiPassedRed",Train,ply,mode,arsback.Name) - end - end - end - if IsValid(ars) then - if ars.AutoEnabled then - self.AutostopSignal = ars - --print("enty") - elseif self.AutostopSignal == ars then - self.AutostopSignal = nil - --print("entn") - end - end - end - if Train:ReadTrainWire(5) < 1 or self.Train.VU.Value < 0.5 then - ars = nil - self.RealNoFreq = true - self.NoFreq = true - self.CheckedNF = 2 - end - - if IsValid(ars) then - self.CheckedNF = 0 - self.Alert = nil - self.Signal80 = ars:GetARS(8,Train) - self.Signal70 = ars:GetARS(7,Train) - self.Signal60 = ars:GetARS(6,Train) - self.Signal40 = ars:GetARS(4,Train) - self.Signal0 = ars:GetARS(0,Train) or ars:GetARS(2,Train) - self.Special = ars:Get325HzAproove0() and not ars:GetARS(2,Train) - self.NoFreq = ars:GetARS(1,Train) or not (self.Signal80 or self.Signal70 or self.Signal60 or self.Signal40 or self.Signal0) - if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then RunConsoleCommand("say",ars.Name,tostring(arsback and arsback.Name),tostring(ars.NextSignalLink and ars.NextSignalLink.Name or "unknown"),tostring(pos.node1.path.id),tostring(Metrostroi.TrainDirections[Train])) end - self.RealNoFreq = not (self.Signal80 or self.Signal70 or self.Signal60 or self.Signal40 or self.Signal0) - else - if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then RunConsoleCommand("say","LOSE SIGNAL",tostring(pos and pos.node1.path.id or "unknown"),tostring(Metrostroi.TrainDirections[Train])) end - if (self.CheckedNF and self.CheckedNF > 1) or (self.CheckedNF == 0 and self.NoFreq) or self.RealNoFreq then - self.Alert = nil - self.Signal80 = false - self.Signal70 = false - self.Signal60 = false - self.Signal40 = false - self.Signal0 = false - self.Special = false - self.NoFreq = true - self.RealNoFreq = true - self.CheckedNF = 2 - else - if not self.CheckedNF then self.CheckedNF = 0 end - self.CheckedNF = self.CheckedNF + 1 - self.NoFreq = true - self.Alert = CurTime() + 0.5 - end - end - self.Signal = ars - end - end - -- Check ARS signals - if not EnableALS --[[or EnableUOS]] then - self.Signal80 = false - self.Signal70 = false - self.Signal60 = false - self.Signal40 = false - self.Signal0 = false - self.Special = false - self.NoFreq = EnableARS - self.RealNoFreq = EnableARS - self.CheckedNF = 2 - self.Alert = nil - end - - -- ARS system placeholder logic - if EnableALS then - local V = math.floor(self.Speed +0.05) - local Vlimit = 0 - if self.Signal40 then Vlimit = 40 end - if self.Signal60 then Vlimit = 60 end - if self.Signal70 then Vlimit = 70 end - if self.Signal80 then Vlimit = 80 end - - self.Overspeed = false - if self.AttentionPedal then - Vlimit = 0 - end - if ( self.KVT) and (Vlimit ~= 0) and (V > Vlimit) then self.Overspeed = true end - if ( self.KVT) and (Vlimit == 0) and (V > 20) then self.Overspeed = true end - Vlimit = Vlimit + 2 - if (not self.KVT) and (V > Vlimit) and (V > (self.RealNoFreq and 0 or 3)) then self.Overspeed = true end - - -- Determine next limit and current limit - self.SpeedLimit = Vlimit - self.NextLimit = Vlimit - if self.Signal80 then self.NextLimit = 80 end - if self.Signal70 then self.NextLimit = 70 end - if self.Signal60 then self.NextLimit = 60 end - if self.Signal40 then self.NextLimit = 40 end - if self.Signal0 then self.NextLimit = 0 end - - if not EnableARS then - self.ElectricBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = false - end - else - local V = math.floor(self.Speed +0.05) - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Overspeed = false - if not self.KVT and V > 0 then self.Overspeed = true end - if ( self.KVT) and (V > 20) then self.Overspeed = true end - end - ------------------ - if self.SpeedLimit > 20 then self.SpeedLimit = self.SpeedLimit - 2 end - if EnableARS then - if self.ElectricBrake1 and self.ARSBrake and not (self.RealNoFreq and not self.KVT and not self.ARSBrake) then - if self.ARSBrakeTimer == nil then self.ARSBrakeTimer = CurTime() + 5 end - else - self.ARSBrakeTimer = nil - end - - if self.RealNoFreq and (not self.PrevNoFreq) and Train:ReadTrainWire(6) < 1 then - self.IgnorePedal = true - end - self.PrevNoFreq = self.RealNoFreq - -- Check overspeed - if self.SpeedLimit > 20 then - if self.Speed >= self.SpeedLimit + 1 then - if Train:ReadTrainWire(6) == 0 then - self.ElectricBrake = true - self.PneumaticBrake1 = true - end - self.ElectricBrake1 = true - self.ARSBrake = true - end - end - if self.Overspeed then - self.ARSBrake = true - self.ElectricBrake1 = true - self.ElectricBrake = true - self.PneumaticBrake1 = true - end - -- Check cancel of overspeed command - if not self.Overspeed and not self.ElectricBrake1 and self.ARSBrake then - self.PneumaticBrake1 = false - - end - if (self.KVT or not self.ARSBrakeTimer) and (self.Speed < self.SpeedLimit - 1 and self.SpeedLimit > 20 or self.SpeedLimit < 20 and not self.Overspeed) and (self.ElectricBrake or self.ARSBrake) then - self.ElectricBrake = false - self.ElectricBrake1 = false - self.ARSBrake = false - self.PneumaticBrake1 = false - self.PneumaticBrake2 = false - end - if self.Speed < self.SpeedLimit - 1 and (self.ARSBrake or self.ElectricBrake1) and not self.ElectricBrake then - self.ARSBrake = false - self.ElectricBrake1 = false - end - --print(Train:GetPackedBool(131)) - -- Check use of valve #1 during overspeed - if self.ARSBrake and self.ElectricBrake1 and self.Speed < 0.25 then - self.PneumaticBrake2 = true - end - - if self.Speed < 0.25 then - self.PneumaticBrake1 = true - end - -- Parking brake limit - local BPSWorking = Train:ReadTrainWire(5) > 0 - if BPSWorking then - if self.Nakat ~= nil then - self.PneumaticBrake1 = true - self.AntiRolling = self.Nakat and true or nil - self.Nakat = nil - end - if self.Speed*Train.SpeedSign < -0.5 then - if not self.Meters then self.Meters = 0 end - self.Meters = self.Meters + self.Speed/3600*1000*dT - if self.Meters > 0.5 + (Train:ReadTrainWire(1) > 0 and 2.5 or 0) then - self.AntiRolling = true - end - else - if Train.KV.ControllerPosition <= 0 and self.AntiRolling then - self.AntiRolling = false - end - if Train.KV.ControllerPosition > 0 and self.AntiRolling == false then - self.AntiRolling = nil - end - self.Meters = nil - end - else - self.AntiRolling = nil - end - - --BPS Logic - if not BPSWorking then - self.StoppedOnSlopeByRP = false - self.BPSActive = false - end - - -- Check cancel pneumatic brake 1 command - if ((Train:ReadTrainWire(1) > 0) or (Train.RRP and Train.RRP.Value > 0 and not self.ElectricBrake1)) then - if (Train:ReadTrainWire(1) > 0 or (Train.RRP and Train.RRP.Value > 0 and not self.ElectricBrake1)) and self.PneumaticBrake1 and not self.Overspeed then - self.PneumaticBrake1 = false - end - end - if self.Signal0 and not self.Special and not self.RealNoFreq and not self.Signal40 and not self.Signal60 and not self.Signal70 and not self.Signal80 then - if not self.NonVRD and self.Train.VRD.Value < 0.5 then - self.VRDTimer = nil - end - - self.NonVRD = self.Train.VRD.Value < 0.5 - if self.NonVRD then - if self.VRDTimer and CurTime() - self.VRDTimer > 0 then - self.VRDTimer = false - elseif self.VRDTimer ~= false then - if not self.VRDTimer and self.KVT then self.VRDTimer = CurTime() + 1 end - if self.VRDTimer and not self.KVT then self.VRDTimer = nil end - end - else - self.VRDTimer = false - end - else - if self.NonVRD then self.NonVRD = false end - self.VRDTimer = false - end - - -- ARS signals - local Ebrake, Abrake, NFBrake, Pbrake1,Pbrake2 = - ((self.ElectricBrake) and 1 or 0), - ((self.ARSBrake) and 1 or 0), - ((self.SpeedLimit < 20 and not self.KVT and not self.ARSBrake) and 1 or 0), - (self.PneumaticBrake1 and 1 or 0), - (self.PneumaticBrake2 and 1 or 0) - -- Apply ARS system commands - self["33D"] = (1 - Abrake) *(1-NFBrake)*((self.NonVRD or self.VRDTimer ~= false or self.ElectricBrake1 or self.AntiRolling ~= nil) and 0 or 1) --*(2 - Pbrake2) - self["33G"] = Ebrake + NFBrake + ((self.NonVRD or self.VRDTimer ~= false) and 1 or 0) - self["33Zh"] = (1 - Abrake)*(1-NFBrake)*((self.NonVRD or self.VRDTimer ~= false or self.ElectricBrake1 or self.AntiRolling ~= nil) and 0 or 1)--*(2 - Pbrake2) - --print(self["33Zh"]) - self["2"] = Ebrake + NFBrake + ((self.NonVRD or self.VRDTimer ~= false) and 1 or 0) - self["20"] = Ebrake + NFBrake + ((self.NonVRD or self.VRDTimer ~= false) and 1 or 0) - self["29"] = Pbrake1-- + (self.BPSActive and 1 or 0) - --print(Train.Speed) - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(self.SpeedLimit,self.self.SpeedLimit <= 20 and not self.KVT) end - --if StPetersburg then print(self.Train:EntIndex()) end - self["8"] = Pbrake2 - + (KRUEnabled and 1 or 0)*Ebrake - + ((self.SpeedLimit < 20 and not self.KVT or self.Speed > 20 and self.SpeedLimit < 20) and 1 or 0) - + (self.BPSActive and 1 or 0) - + (self.AntiRolling ~= nil and 1 or 0) - + (1 - ((self.EPKActivated and 1 or 0) or 1)) - - ---self.LKT = (self["33G"] > 0.5) or (self["29"] > 0.5) or (Train:ReadTrainWire(35) > 0) - self.LVD = self.LVD or self["33D"] < 0.5 - if Train:ReadTrainWire(6) < 1 and self["33D"] > 0.5 then self.LVD = false end - self.Ring = ((self["33D"] < 0.5 and ((NFBrake < 1 and self.ARSBrakeTimer ~= nil and self.ARSBrakeTimer ~= false) or self.VRDTimer ~= false)) or self.KSZD) - if self.ElectricBrake or self.PneumaticBrake2 then - if not self.LKT then - self:EPVBrake("LKT not light-up when ARS stopping") - else - self:EPVDisableBrake("LKT not light-up when ARS stopping") - end - else - self:EPVDisableBrake("LKT not light-up when ARS stopping") - end - if self.KVT and self.ARSBrakeTimer then self.ARSBrakeTimer = false end - if self.EPKActivated and not self.LKT and self.Speed < 0.05 and Train:ReadTrainWire(1) == 0 then -- or (self.AntiRolling ~= nil and Train:ReadTrainWire(1) > 0) then - self:EPVBrake("LKT off when stopped") - else - self:EPVDisableBrake("LKT off when stopped") - end - else - if (Train.RPB) and not self.AttentionPedal then - --Train.RPB:TriggerInput("Open",1) - end - self.AntiRolling = nil - self.ElectricBrake1 = true - self.ElectricBrake = true - self.PneumaticBrake1 = false - self.PneumaticBrake2 = true - self.ARSBrake = true - self["33D"] = 0 - self["33Zh"] = 1 - self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - - ---self.LKT = false - self.LVD = false - self.Ring = false - end - -- ARS signalling train wires - if EnableARS then - self.Train:WriteTrainWire(21,self.LVD and 1 or 0)-----self.LKT and 1 or 0) - else--if not EnableUOS then - self.Train:WriteTrainWire(21,0) - end - -- RC1 operation - if self.Train.RC1 and (self.Train.RC1.Value == 0) then - local KAH = (Train.KAH ~= nil and Train.KAH.Value > 0.5) and 1 or 0 - --self["33D"] = 1 - self["33G"] = 0 - self["33Zh"] = 1--KAH - -- - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - -- - self["31"] = 0 - self["32"] = 0 - --self["8"] = KRUEnabled and (1-Train.RPB.Value) or 0 - self["33D"] = (self.Speed + 0.5 > 9000) and 0 or 1 - --self["33G"] = (self.Speed + 0.5 > 35) and 1 or KRUEnabled and (1-Train.RPB.Value) or 0 - --self["33Zh"] = 1--(self.Speed + 0.5 > 40) and 0 or KAH - self["8"] = (self.Speed + 0.5 > 9000) and 1 or KRUEnabled and (1-Train.RPB.Value) or 0 - else - if (not self.EPKActivated) then - self["33D"] = 0 - self["33Zh"] = 1 - end - end - - if Train.RV_2 then - Train.RV_2:TriggerInput("Set",EnableARS and 1 or 0) - end - - if self.EPKActivated then - --if self.EPKOffARS then - --self:EPVBrake("Was the emergency brake",true) - --end - --self.EPKOffARS = nil - --if self.EPKTimer then print(self.EPKTimer - CurTime(),self.EPKTimer < CurTime(),self.EPKTimer > CurTime() ) end - if not EnableARS then - self:EPVBrake("ARS disabled") - else - self:EPVDisableBrake("ARS disabled") - end - if self.ARSBrakeTimer then - self:EPVBrake("Braking 3 seconds") - else - self:EPVDisableBrake("Braking 3 seconds") - end - else - --self.EPKOffTimer = nil - --[[if EnableARS and self.EPKOffARS == nil then - self.EPKOffARS = true - else - self.EPKOffARS = false - end]] - --if self.EPKOffARS then - --self.EPKOffARS = false - --end - if not EnableARS then - self.EPKBrake = false - end - end - --if not EPKActivated then - --if EnableARS and self.EPKOffARS == nil then - --print(self.EPKBrake) - --self.EPKOffARS = self.EPKBrake - --end - --end - --if GetConVarNumber("metrostroi_ars_printnext") == Train:EntIndex() then print(self.EPKOffARS,EnableARS) end - if not EnableARS then self.EPKOffARS = false end - -- 81-717 autodrive/autostop - if (Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts then - self["33D"] = 0 - self["33Zh"] = 1 - end - - self["8"] = self["8"]*Train.OVT.Value - self["29"] = self["29"]*Train.OVT.Value - if Train.UAVAContact and Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve then - self.UAVAContacts = nil - end - self.Ring = self.Ring or (self.Alert and self.Alert - CurTime() > 0) - if Train.Rp8 then Train.Rp8:TriggerInput("Set",self["8"] + ((self.Train.RC1 and (self.Train.RC1.Value == 0)) and (1-self["33D"]) or 0)) end - self.Ring = self.RingOverride or self.Ring - - for k,v in pairs(self.EPK) do - if not self.EPKActivated then - if self.EPK[k] then - self.EPK[k] = nil - end - end - if CurTime() - v > 0 and not self.EPKBrake then - self.EPKBrake = true - RunConsoleCommand("say","EPV braking ("..k..")",self.Train:GetDriverName()) - end - end - Train.Pneumatic.EmergencyValveEPK = self.EPKBrake and not self.EPKOffTimer and not self.EPKActTimer -end diff --git a/lua/metrostroi/systems/_obsolete/sys_dip_01k.lua b/lua/metrostroi/systems/_obsolete/sys_dip_01k.lua deleted file mode 100644 index b78e088..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_dip_01k.lua +++ /dev/null @@ -1,78 +0,0 @@ --------------------------------------------------------------------------------- --- "DIP-01K" power supply --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("DIP_01K") - -function TRAIN_SYSTEM:Initialize() - self.XR3 = { - [2] = 0, - [3] = 0, - [4] = 0, - [5] = 0, -- Out only - [6] = 0, - [7] = 0, - } - self.XT3_1 = 0 -- General (battery) output - self.XT3_4 = 0 -- Output for passenger lights - self.XT1_2 = 0 - - self.XT3_1ext = 0 -- External - self.Active = 0 - self.LightsActive = 0 -end - -function TRAIN_SYSTEM:Inputs() - return { "XR3.2", "XR3.3", "XR3.4", "XR3.5", "XR3.6", "XR3.7", "XT3.1" } -end - -function TRAIN_SYSTEM:Outputs() - return { "XT3_1", "XT3_4", "XT1_2" } -end - - -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "XT3.1" then - self.XT3_1ext = value - else - local idx = tonumber(string.sub(name,5,6)) or 0 - if self.XR3[idx] then - if value > 0.5 - then self.XR3[idx] = 1.0 - else self.XR3[idx] = 0.0 - end - end - end -end - -function TRAIN_SYSTEM:Think() - local Train = self.Train - - -- Get high-voltage input - self.XT1_2 = Train.Electric.Aux750V * Train.KPP.Value * 1 -- P4 - -- Get battery input - local XT3_1 = self.XT3_1ext - - -- Check if enable signal is present - if self.XR3[2] > 0 then self.Active = 1 end - if self.XR3[3] > 0 then self.Active = 0 self.LightsActive = 0 end - if self.XR3[4] > 0 then self.LightsActive = 1 end - if self.XR3[6] > 0 then self.Active = 1 end - if self.XR3[7] > 0 then self.LightsActive = 1 end - - -- Undervoltage/overvoltage - local voltage_bat = XT3_1 - if (self.XT1_2 > 550) and (self.XT1_2 < 975) then voltage_bat = 75 end - if voltage_bat < 55 then self.Active = 0 self.LightsActive = 0 end - if voltage_bat > 85 then self.Active = 0 self.LightsActive = 0 end - - local voltage = 0 - if (self.XT1_2 > 550) and (self.XT1_2 < 975) then voltage = 75 end - - -- Generate output - self.XT3_1 = voltage * self.Active - self.XT3_4 = voltage * self.Active - Train.KPP:TriggerInput("Open",1.0 - self.Active) -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_dura.lua b/lua/metrostroi/systems/_obsolete/sys_dura.lua deleted file mode 100644 index 1cccd25..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_dura.lua +++ /dev/null @@ -1,96 +0,0 @@ --------------------------------------------------------------------------------- --- ДУРА (Дополнительная Универсальная Радиоаппаратура) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("DURA") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.SelectAlternate = nil - self.Channel = 1 - self.Signal = 0 - self.Power = 1 -end - -function TRAIN_SYSTEM:Outputs() - return { "Signal" } -end - -function TRAIN_SYSTEM:Inputs() - return { "SelectAlternate", "SelectMain", "SelectChannel", "ToggleChannel", "Power", "PowerToggle" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - if (name == "SelectAlternate") and (value > 0.0) then - self.SelectAlternate = true - self.TimerToggle = true - elseif (name == "SelectMain") and (value > 0.0) then - self.SelectAlternate = false - self.TimerToggle = true - elseif (name == "ToggleChannel") and (value > 0.0) then - if self.Channel == 1 then self.Channel = 2 else self.Channel = 1 end - elseif (name == "SelectChannel") then - self.Channel = math.floor(value) - elseif (name == "PowerToggle") and (value > 0.0) then - self.Power = not self.Power - end -end - -function TRAIN_SYSTEM:Think() - -- Require 54 volts - if self.Train.Battery and (self.Train.Battery.Voltage < 54) then return end - if not self.Power then return end --or self.Train.ARSType == 3 then return end - --self.Train:PlayOnce("dura2","cabin",0.4,100) - -- Check ARS signals - self.Timer = self.Timer or CurTime() - if CurTime() - self.Timer > 2.00 or self.TimerToggle then - self.TimerToggle = nil - self.Timer = CurTime() - - -- Get train position - local pos = Metrostroi.TrainPositions[self.Train] - if pos then pos = pos[1] end - - -- Get all switches in current isolated section - local no_switches = true - local signal = 0 - local Alt1, Alt2 - if pos then - -- Get traffic light in front - local light = Metrostroi.GetNextTrafficLight(pos.node1,pos.x,pos.forward) - local function getSignal(base,chan) - if (chan == 1) and (base == "alt") and light and light:GetInvertChannel1() then return "main" end - if (chan == 2) and (base == "alt") and light and light:GetInvertChannel2() then return "main" end - return base - end - - -- Get switches and trigger them all - local switches = Metrostroi.GetTrackSwitches(pos.node1,pos.x,pos.forward) - for _,switch in pairs(switches) do - Alt1 = Alt1 or (switch:GetChannel() == 1 and switch:GetSignal() > 0) - Alt2 = Alt2 or (switch:GetChannel() == 2 and switch:GetSignal() > 0) - no_switches = false - if self.SelectAlternate == true then - if self.Channel == 1 then switch:SendSignal(getSignal("alt",1),1) end - if self.Channel == 2 then switch:SendSignal(getSignal("alt",2),2) end - elseif self.SelectAlternate == false then - if self.Channel == 1 then switch:SendSignal(getSignal("main",1),1) end - if self.Channel == 2 then switch:SendSignal(getSignal("main",2),2) end - end - signal = math.max(signal,switch:GetSignal()) - end - - -- Reset state selection - end - if signal > 0 then - self.Train:PlayOnce("dura1","cabin",0.30,200) - end - self.Signal = signal - self.Channel1Alternate = Alt1 - self.Channel2Alternate = Alt2 - -- If no switches, reset - if (no_switches or not pos) and (self.SelectAlternate ~= nil) then - self.Train:PlayOnce("dura2","cabin",0.30,220) - end - self.SelectAlternate = nil - end -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_gen_int_710.lua b/lua/metrostroi/systems/_obsolete/sys_gen_int_710.lua deleted file mode 100644 index f7ad796..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_gen_int_710.lua +++ /dev/null @@ -1,757 +0,0 @@ --------------------------------------------------------------------------------- --- Internal systems simulation code --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Gen_Int") - --- Node values -local S = {} --- Converts boolean expression to a number -local function C(x) return x and 1 or 0 end - -local min = math.min -local max = math.max - - -function TRAIN_SYSTEM.SolveEzh3(Train,Triggers) - local P = Train.PositionSwitch.SelectedPosition - local RK = Train.RheostatController.SelectedPosition - local B = (Train.Battery.Voltage > 55) and 1 or 0 - local T = Train.SolverTemporaryVariables - if not T then - T = {} - for i=1,100 do T[i] = 0 end - Train.SolverTemporaryVariables = T - end - - -- Solve all circuits - --T["SDRK_ShortCircuit"] = -10*Train.RheostatController.RKP*(Train.RUT.Value+Train.RRT.Value+(1.0-Train.SR1.Value) ) - T["SDRK_ShortCircuit"] = -10*Train.RheostatController.RKP*(Train.RUT.Value+(1.0-Train.SR1.Value) ) - Triggers["SDRK_Shunt"]( 1.0 - (0.20+0.20*C((RK >= 2) and (RK <= 7))*C(P == 1))*Train.LK2.Value ) - S["33-33Aa"] = Train.KD.Value+Train.VAD.Value - S["U2-20"] = Train.KV["U2-20a"]+Train.KV["U2-20b"] - S["31V'-31V"] = Train.KDL.Value+Train.VDL.Value - S["10AK-VAH1"] = Train.VAH.Value+Train.RPB.Value - S["33B-33AVU"] = Train.AVU.Value+Train.OtklAVU.Value - S["1T-1P"] = Train.NR.Value+Train.RPU.Value - S["2Zh-2A"] = (1.0-Train.KSB1.Value)+(1.0-Train.TR1.Value) - S["2Zh-2A"] = Train.ThyristorBU5_6.Value+S["2Zh-2A"] - --S["2Zh-2A"] = Train.KSB2.Value+S["2Zh-2A"] - S["8A-8Ye"] = C(RK == 1)+(1.0-Train.LK4.Value) - S["15A-15B"] = Train.KV["15A-15B"]+Train.KD.Value - S["10AYa-10E"] = (1.0-Train.LK3.Value)+Train.Rper.Value - S["10AP-10AD"] = Train.LK2.Value+C((P == 3) or (P == 4)) - S["10AE-10B"] = Train.TR1.Value+Train.RV1.Value - S["D1-32V"] = 1*Train.KDP.Value+Train.ALS_ARS["32"] - S["TW[15]-15A"] = Train.KRU["15/2-D8"]*Train.KV["D8-15A"]+1 - S["1E-1Yu"] = Train.KSH2.Value+Train.KSB2.Value*Train.KSB1.Value - S["2V-2G"] = C((RK >= 5) and (RK <= 18))+C((RK >= 2) and (RK <= 4))*Train.KSH1.Value - S["10-8"] = Train.KV["10-8"]+(1.0-Train.VAH.Value)*Train.KV["FR1-10"]*(1.0-Train.RPB.Value) - S["10AG-10AD"] = (1.0-Train.TR1.Value)*C((P == 2) or (P == 3) or (P == 4))*(1.0-Train.TR2.Value)+Train.TR2.Value*Train.TR1.Value*C((P == 1) or (P == 2) or (P == 4)) - S["1G-1Zh"] = Train.LK3.Value+C((P == 1) or (P == 3))*Train.LK5.Value*C(RK == 1)*S["1E-1Yu"] - S["10N-10Zh"] = (1.0-Train.RRT.Value)*(1.0-Train.RUT.Value)*Train.SR1.Value+Train.RheostatController.RKM1 - S["10E-10AG"] = (1.0-Train.LK1.Value)*S["10AP-10AD"]*S["10AG-10AD"]+C(RK == 18)*C((P == 1))*Train.LK3.Value - S["1A-1M"] = C((RK >= 1) and (RK <= 5))+C(RK == 6)*Train.RheostatController.RKM1 - S["2A-2G"] = C((P == 1) or (P == 3))*C((RK >= 1) and (RK <= 17))+C((P == 2) or (P == 4))*S["2V-2G"] - S["D1-31V"] = Train.ALS_ARS["31"]+1*S["31V'-31V"] - S["1A-1R"] = (1.0-Train.RV1.Value)*C((P == 1))+C((P == 2))*S["1A-1M"] - S["10"] = 1*Train:ReadTrainWire(10) - S["FR1/2"] = S["10"]*Train.KV["FR1-10"] - S["15B"] = S["TW[15]-15A"]*S["15A-15B"]*Train:ReadTrainWire(15) - S["10AL"] = S["10"]*Train.VU.Value - S["10ALa"] = S["10AL"]*Train.VU3.Value - S["Sh1-43"] = S["10AL"]*Train.ARS.Value--A45.Value - S["10AS"] = S["10AL"]--*Train.A55.Value - S["10AK"] = S["10AL"]--*Train.A54.Value --Pred:pr24 - S["6P"] = S["10AL"]--*Train.A61.Value - S["6"] = S["6P"]*Train.RVT.Value - S["2-7R-24"] = S["6P"]*(1.0-Train.AVU.Value) - S["29"] = S["2-7R-24"]*(1.0-Train.OtklAVU.Value)+Train.ALS_ARS["29"] - --???? - --23w*PR31+PR14*22 - S["22A"] = Train:ReadTrainWire(23)+T[6]--*Train.KU1.Value --Pred:PR20 --Train.A23.Value*1*Train:ReadTrainWire(23)+T[6]*Train.A22.Value - S["10AN"] = (1.0-Train.RPvozvrat.Value)--*Train.A14.Value*1*1 - S["1-7R-8"] = S["10AS"]*Train.KV["10AS-U4"]*Train.VozvratRP.Value - --S["1A"] = Train.A1.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(1) - --S["3A"] = Train.A3.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(3) - S["1A"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value)*Train:ReadTrainWire(1) - S["3A"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value)*Train:ReadTrainWire(3) - S["33V"] = S["10AK"]*Train.RV2.Value*S["10AK-VAH1"]*1*S["33B-33AVU"] - S["1R"] = S["1A"]*S["1A-1R"] - --S["20B"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*(1.0-Train.RPvozvrat.Value)*Train.A20.Value*Train:ReadTrainWire(20) - S["20B"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value)*(1.0-Train.RPvozvrat.Value)*Train:ReadTrainWire(20) - S["4B"] = (1.0-Train.RKR.Value)*Train:ReadTrainWire(4) - S["5B"] = Train.RKR.Value*Train:ReadTrainWire(5) - S["5V"] = Train.RKR.Value*Train:ReadTrainWire(4)+T[8]*(1.0-Train.RKR.Value) - S["5B'"] = S["5V"]*Train.LK3.Value - S["6A"] = Train:ReadTrainWire(6)--Train.A6.Value*Train:ReadTrainWire(6) - S["B12"] = 1*Train.VB.Value*B - S["8A"] = Train:ReadTrainWire(8) --Pred:PR23 --Train.A8.Value*Train:ReadTrainWire(8) - S["8Zh"] = S["8A"]*C((RK >= 17) and (RK <= 18))+T[10]*1 - S["12A"] = Train:ReadTrainWire(12)--Train.A12.Value*Train:ReadTrainWire(12) - S["1"] = S["10AS"]*Train.R1_5.Value*Train.KV["10AS-33D"]*Train.ALS_ARS["33D"]+(-10*Train.KRU["1/3-ZM31"]) - S["8"] = S["10"]*S["10-8"]+Train.ALS_ARS["8"] - S["16V"] = (1.0-Train.RD.Value)*Train:ReadTrainWire(16) --Train.A16.Value*(1.0-Train.RD.Value)*Train:ReadTrainWire(16) - S["6Yu"] = S["6A"]*C((P == 3) or (P == 4))*C((RK >= 1) and (RK <= 2)) - S["17A"] = Train:ReadTrainWire(17) --Train.A17.Value*Train:ReadTrainWire(17) - S["24V"] = (1.0-Train.LK4.Value)*Train:ReadTrainWire(24) - --S["25A"] = Train.A25.Value*Train:ReadTrainWire(25) - --S["27A"] = Train.A50.Value*Train:ReadTrainWire(27) - --S["28A"] = Train.A51.Value*Train:ReadTrainWire(28) - --S["31A"] = Train.A31.Value*Train:ReadTrainWire(31)+T[3]*1 - --S["32A"] = Train.A32.Value*Train:ReadTrainWire(32)+T[4]*1 - - S["25A"] = Train:ReadTrainWire(25) - S["27A"] = Train:ReadTrainWire(27) - S["28A"] = Train:ReadTrainWire(28) - S["31A"] = Train:ReadTrainWire(31)+T[3]*1 - S["32A"] = Train:ReadTrainWire(32)+T[4]*1 - S["B2"] = 1*Train.VB.Value*B - --S["18A"] = (1.0-Train.RPvozvrat.Value)*Train.A14.Value*1+(-0.5*(1.0-Train.LK4.Value)) - S["18A"] = (1.0-Train.RPvozvrat.Value)+(-0.5*(1.0-Train.LK4.Value)) - S["B8"] = S["B2"]*Train.AV8B.Value - S["B22"] = S["B8"]*Train.VU1.Value - S["B28"] = S["B8"]*Train.KUP.Value - S["36Ya"] = S["B8"]*Train.KVC.Value - S["B13"] = S["B12"]--*Train.A24.Value - S["B3"] = S["B2"]--*Train.A44.Value - S["1-7R-29"] = S["B3"]*Train.RezMK.Value - S["4"] = S["10AK"]*Train.KV["10AK-4"]+(-10*Train.KRU["5/3-ZM31"]*0 + Train.KRU["14/1-B3"]*S["B3"]*(1-Train.KRR.Value)*1) - S["5"] = S["10AK"]*Train.KV["10AK-5"]+(-10*Train.KRU["5/3-ZM31"]*0 + Train.KRU["14/1-B3"]*S["B3"]*(Train.KRR.Value)*1) - S["U2"] = S["10AS"]*Train.KV["U2-10AS"] - S["24"] = S["U2"]*Train.KSN.Value - S["2-7R-21"] = S["U2"]*1+(-1*max(0,Train:ReadTrainWire(18))) - S["2"] = S["10AK"]*Train.KV["10AK-2"]+Train.ALS_ARS["2"]+(-10*Train.KRU["2/3-ZM31"]) - S["3"] = S["U2"]*Train.KV["U2-3"]+(-10*Train.KRU["3/3-ZM31"]) - S["33Aa"] = S["10AS"]*Train.KV["10AS-33"]*S["33-33Aa"] - S["22V"] = S["22A"]*(1.0-Train.TRK.Value) - --S["10/4"] = S["B12"]*Train.VB.Value*Train.A56.Value+(1-Train.VB.Value)*Train:ReadTrainWire(10) - S["10/4"] = S["B12"]*Train.VB.Value+(1-Train.VB.Value)*Train:ReadTrainWire(10) - S["1P"] = S["1A"]*C((P == 1) or (P == 2))*S["1T-1P"]+T[2]*C((P == 3) or (P == 4)) - S["25"] = S["U2"]*Train.KV["U2-25"]*Train.K25.Value - S["1Zh"] = S["1P"]*Train.AVT.Value*(1.0-Train.RPvozvrat.Value)*S["1G-1Zh"] - S["8G"] = S["8A"]*(1.0-Train.RT2.Value)*S["8A-8Ye"] - S["11A"] = S["B2"]*(1.0-Train.RD.Value) - S["1-7R-31"] = S["B3"]*Train.KRU["14/1-B3"]*Train.KRP.Value - S["10AYa"] = S["B2"]--*Train.A80.Value - S["10AE"] = S["B2"]--*Train.A30.Value - S["20"] = S["U2"]*S["U2-20"]+Train.ALS_ARS["20"]+(-10*Train.KRU["20/3-ZM31"]) - S["10I"] = S["10AE"]*Train.RheostatController.RKM2 - S["10AH"] = S["10I"]*(1.0-Train.LK1.Value)+0 - S["10H"] = S["10I"]*Train.LK4.Value - S["10B"] = S["10AE"]*S["10AE-10B"] - S["10/4a"] = S["10/4"]*Train.VB.Value - S["22K"] = S["10/4"]--*Train.A10.Value - S["22E'"] = S["22K"]*Train.KU1.Value*Train.AK.Value*Train.AV8B.Value - S["U0"] = S["10/4"]--*Train.A27.Value - S["U0a"] = S["U0"]*1+(-10*S["10AN"]) - S["s3"] = S["U0"]*Train.DIPon.Value - S["s10"] = S["U0"]*Train.DIPoff.Value - S["F1"] = S["10/4"]*Train.KV["10/4-F1"] - S["D4"] = S["10/4"]*(1.00-Train.KSD.Value) - S["15"] = S["D4"]*Train.KV["D4-15"]+(-10*Train:ReadTrainWire(11)) + Train.KRU["14/1-B3"]*S["B3"]*20 - S["D4/3"] = S["D4"]*1 - --S["D1"] = S["10/4"]*Train.A21.Value*Train.KV["D-D1"]+(1*Train.KRU["11/3-D1/1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["D1"] = S["10/4"]*Train.KV["D-D1"]+(1*Train.KRU["11/3-D1/1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["11B"] = S["10/4"]*Train.KV["10/4-C3"]*(1.0-Train.NR.Value)+T[1]*1 - S["16"] = S["D1"]*Train.VUD1.Value*Train.VUD2.Value - S["F2a"] = S["F1"]--*Train.A7.Value - S["F1a"] = S["F1"]--*Train.A9.Value - S["ST/1+ST/2"] = S["D4/3"]*Train.BPT.Value - S["16V/1+16V/2"] = S["D4/3"]*(1.0-Train.RD.Value) - S["D6/1"] = S["D4/3"]*Train.BD.Value - S["1K"] = S["1Zh"]*C((P == 1) or (P == 2)) - S["1N"] = S["1Zh"]*C((P == 1) or (P == 3)) - S["10N"] = S["10AE"]*S["10N-10Zh"]*1+T["SDRK_ShortCircuit"] - S["31V"] = S["D1"]*S["D1-31V"] - S["10AG"] = S["10AYa"]*S["10E-10AG"]*S["10AYa-10E"] - S["2Ye10AV"] = S["10AYa"]*(1.0-Train.LK3.Value)*C((RK >= 2) and (RK <= 18))*(1.0-Train.LK4.Value)+0 - S["32V"] = S["D1"]*S["D1-32V"] - S["12"] = S["D1"]*Train.KRZD.Value - S["F7"] = S["10"]*Train.KV["F7-10"]+(1*Train.KRU["11/3-FR1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["F7/1"] = S["10"]*Train.KV["F7-10"]+(1*Train.KRU["11/3-FR1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["33G"] = 1*Train.ALS_ARS["33G"]+S["U2"]*Train.KV["U2-33G"] - --S["2Ye"] = Train.A2.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*S["2Zh-2A"]*Train.LK4.Value*S["2A-2G"]*Train:ReadTrainWire(2)+(S["2Ye10AV"]) - S["2Ye"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value)*S["2Zh-2A"]*Train.LK4.Value*S["2A-2G"]*Train:ReadTrainWire(2)+(S["2Ye10AV"]) - S["F13"] = S["F7"]--*Train.A46.Value - S["F10"] = S["F7/1"]*Train.VUS.Value--*Train.A47.Value - - - -- Call all triggers - T[4] = min(1,S["12A"]) - Train.Panel["RedLightRight"] = S["F2a"] - Train.RRP:TriggerInput("Set",Train:ReadTrainWire(14)*(1-Train.Rp8.Value)) - Train.RZ_2:TriggerInput("Set",S["24V"]) - Train.Panel["HeadLights2"] = S["F13"] - Triggers["ReverserForward"](S["5B"]) - Train:WriteTrainWire(2,S["2"]) - Train.Panel["TrainDoors"] = S["16V/1+16V/2"] - Train:WriteTrainWire(14,S["1-7R-31"]) - Train:WriteTrainWire(27,S["s3"]) - Train:WriteTrainWire(9,S["10/4a"]) - Train.RV1:TriggerInput("Set",S["2Ye"]) - Train.TR1:TriggerInput("Set",S["6A"]) - Train.SR1:TriggerInput("Set",S["2Ye"]) - Train.Panel["EmergencyLight"] = S["B12"] - Triggers["XR3.4"](S["36Ya"]) - Train.Panel["AVU"] = S["2-7R-24"] - Train.PneumaticNo2:TriggerInput("Set",S["8G"]) - Triggers["SDRK_Coil"](S["10B"]) - Train.RD:TriggerInput("Set",S["D6/1"]) - Triggers["XR3.6"](S["36Ya"]) - Train:WriteTrainWire(20,S["20"]) - Train:WriteTrainWire(32,S["32V"]) - T[6] = min(1,Train:ReadTrainWire(22)) - Train.KSH1:TriggerInput("Set",S["1R"]) - Train.Panel["KUP"] = S["B28"] - Train:WriteTrainWire(23,S["1-7R-29"]) - Triggers["XR3.7"](S["36Ya"]) - Train.Panel["TrainBrakes"] = S["ST/1+ST/2"] - Train:WriteTrainWire(31,S["31V"]) - Train.LK5:TriggerInput("Set",S["20B"]) - Train.LK1:TriggerInput("Set",S["1K"]) - Train:WriteTrainWire(4,S["4"]) - Train.VDOL:TriggerInput("Set",S["31A"]) - Triggers["SDRK"](S["10N"]) - Train.LK4:TriggerInput("Set",S["5B'"]) - Train:WriteTrainWire(16,S["16"]) - Train.R1_5:TriggerInput("Set",S["33V"]) - Train:WriteTrainWire(10,S["10/4a"]) - Triggers["XR3.2"](S["27A"]) - Train.KVC:TriggerInput("Set",S["B8"]) - T[8] = min(1,Train:ReadTrainWire(5)) - T[7] = min(1,S["5V"]) - Train.RVT:TriggerInput("Set",S["33G"]) - T[10] = min(1,Train:ReadTrainWire(29)) - Train.RPU:TriggerInput("Set",S["27A"]) - T[5] = min(1,S["22A"]) - Train:WriteTrainWire(25,S["25"]) - T[1] = min(1,S["28A"]) - Train.KK:TriggerInput("Set",S["22V"]) - Train:WriteTrainWire(5,S["5"]) - Triggers["RUTpod"](S["10H"]) - Train:WriteTrainWire(29,S["29"]) - Triggers["RRTpod"](S["10AH"]) - Train.Panel["GreenRP"] = S["U0a"] - Triggers["SDPP"](S["10AG"]) - Train.Panel["CabinLight"] = S["10ALa"] - T[2] = min(1,S["6A"]) - Triggers["XT3.1"](S["B13"]) - Triggers["XR3.3"](S["28A"]) - Train.KSB1:TriggerInput("Set",S["6Yu"]) - Triggers["RRTuderzh"](S["25A"]) - Train.Panel["V1"] = S["10/4"] - Train.RR:TriggerInput("Set",S["1N"]) - T[3] = min(1,S["12A"]) - Train:WriteTrainWire(8,S["8"]) - Train:WriteTrainWire(1,S["1"]) - Train.Panel["SD"] = S["15B"] - Train.TR2:TriggerInput("Set",S["6A"]) - Triggers["KPP"](S["27A"]) - Train:WriteTrainWire(24,S["24"]) - T[9] = min(1,S["8Zh"]) - Train:WriteTrainWire(3,S["3"]) - Train:WriteTrainWire(15,S["15"]) - Train.LK3:TriggerInput("Set",S["1Zh"]) - Train.KUP:TriggerInput("Set",S["B22"]) - Train.Rper:TriggerInput("Set",S["3A"]) - Train.Panel["RedRP"] = S["2-7R-21"] - Train:WriteTrainWire(18,S["18A"]) - Triggers["RPvozvrat"](S["17A"]) - Train.VDZ:TriggerInput("Set",S["16V"]) - Train.Panel["RedLightLeft"] = S["F1a"] - Train.KD:TriggerInput("Set",S["15B"]) - Train.LK2:TriggerInput("Set",S["20B"]) - Train.KSH2:TriggerInput("Set",S["1R"]) - Train.PneumaticNo1:TriggerInput("Set",S["8Zh"]) - Train.K25:TriggerInput("Set",Train.ALS_ARS["33Zh"]) - Train.KSB2:TriggerInput("Set",S["6Yu"]) - Train.RUP:TriggerInput("Set",S["6Yu"]) - Train:WriteTrainWire(17,S["1-7R-8"]) - Train.Panel["TrainRP"] = S["2-7R-21"] - Train.Panel["Ring"] = S["11B"] - Train:WriteTrainWire(28,S["s10"]) - Triggers["ReverserBackward"](S["4B"]) - Train.RV2:TriggerInput("Set",S["33Aa"]) - Train.Panel["HeadLights1"] = S["F10"] - Train:WriteTrainWire(11,S["11A"]) - Train.Panel["HeadLights3"] = S["F13"] - Train:WriteTrainWire(22,S["22E'"]) - Train.VDOP:TriggerInput("Set",S["32A"]) - Train:WriteTrainWire(6,S["6"]) - Train:WriteTrainWire(12,S["12"]) - return S -end - -function TRAIN_SYSTEM.SolveEzh3RU1(Train,Triggers) - local P = Train.PositionSwitch.SelectedPosition - local RK = Train.RheostatController.SelectedPosition - local B = (Train.Battery.Voltage > 55) and 1 or 0 - local T = Train.SolverTemporaryVariables - if not T then - T = {} - for i=1,100 do T[i] = 0 end - Train.SolverTemporaryVariables = T - end - - -- Solve all circuits - T["SDRK_ShortCircuit"] = -10*Train.RheostatController.RKP*(Train.RUT.Value+Train.RRT.Value+(1.0-Train.SR1.Value) ) - Triggers["SDRK_Shunt"]( 1.0 - (0.20+0.20*C((RK >= 2) and (RK <= 7))*C(P == 1))*Train.LK2.Value ) - S["33-33Aa"] = Train.KD.Value+Train.VAD.Value - S["U2-20"] = Train.KV["U2-20a"]+Train.KV["U2-20b"] - S["31V'-31V"] = (Train.KDL.Value+Train.VDL.Value)*(1-Train.ASNP31.Value) - S["10AK-VAH1"] = Train.VAH.Value+Train.RPB.Value - S["33B-33AVU"] = Train.AVU.Value+Train.OtklAVU.Value - S["1T-1P"] = Train.NR.Value+Train.RPU.Value - S["2Zh-2A"] = (1.0-Train.KSB1.Value)+(1.0-Train.TR1.Value) - S["2Zh-2A"] = Train.ThyristorBU5_6.Value+S["2Zh-2A"] - S["8A-8Ye"] = C(RK == 1)+(1.0-Train.LK4.Value) - S["15A-15B"] = Train.KV["15A-15B"]+Train.KD.Value - S["10AYa-10E"] = (1.0-Train.LK3.Value)+Train.Rper.Value - S["10AP-10AD"] = Train.LK2.Value+C((P == 3) or (P == 4)) - S["10AE-10B"] = Train.TR1.Value+Train.RV1.Value - S["D1-32V"] = (1*Train.KDP.Value+Train.ALS_ARS["32"])*(1-Train.ASNP32.Value) - S["TW[15]-15A"] = Train.KRU["15/2-D8"]*Train.KV["D8-15A"]+1 - S["1E-1Yu"] = Train.KSH2.Value+Train.KSB2.Value*Train.KSB1.Value - S["2V-2G"] = C((RK >= 5) and (RK <= 18))+C((RK >= 2) and (RK <= 4))*Train.KSH1.Value - S["10-8"] = Train.KV["10-8"]+(1.0-Train.VAH.Value)*Train.KV["FR1-10"]*(1.0-Train.RPB.Value) - S["10AG-10AD"] = (1.0-Train.TR1.Value)*C((P == 2) or (P == 3) or (P == 4))*(1.0-Train.TR2.Value)+Train.TR2.Value*Train.TR1.Value*C((P == 1) or (P == 2) or (P == 4)) - S["1G-1Zh"] = Train.LK3.Value+C((P == 1) or (P == 3))*Train.LK5.Value*C(RK == 1)*S["1E-1Yu"] - S["10N-10Zh"] = (1.0-Train.RRT.Value)*(1.0-Train.RUT.Value)*Train.SR1.Value+Train.RheostatController.RKM1 - S["10E-10AG"] = (1.0-Train.LK1.Value)*S["10AP-10AD"]*S["10AG-10AD"]+C(RK == 18)*C((P == 1))*Train.LK3.Value - S["1A-1M"] = C((RK >= 1) and (RK <= 5))+C(RK == 6)*Train.RheostatController.RKM1 - S["2A-2G"] = C((P == 1) or (P == 3))*C((RK >= 1) and (RK <= 17))+C((P == 2) or (P == 4))*S["2V-2G"] - S["D1-31V"] = (Train.ALS_ARS["31"]+1*S["31V'-31V"]) - S["1A-1R"] = (1.0-Train.RV1.Value)*C((P == 1))+C((P == 2))*S["1A-1M"] - S["10"] = 1*Train:ReadTrainWire(10) - S["FR1/2"] = S["10"]*Train.KV["FR1-10"] - S["15B"] = S["TW[15]-15A"]*S["15A-15B"]*Train:ReadTrainWire(15) - S["10AL"] = S["10"]*Train.VU.Value - Train.VU:TriggerInput("Check",S["10AL"]) if Train.VU.Value < 0.5 then S["10AL"] = 0 end - S["10ALa"] = S["10AL"]*Train.A64.Value - --Train.A64.TriggerInput("Check",S["10ALa"]) if Train.A64.Value < 0.5 then S["10ALa"] = 0 end --if Train.A.Value < 0.5 then S[""] = 0 end - S["Sh1-43"] = S["10AL"]*Train.A45.Value - --Train.A45.TriggerInput("Check",S["Sh1-43"]) if Train.A45.Value < 0.5 then S["Sh1-43"] = 0 end - S["10AS"] = S["10AL"]*Train.A55.Value - --Train.A55.TriggerInput("Check",S["10AS"]) if Train.A55.Value < 0.5 then S["10AS"] = 0 end - S["10AK"] = S["10AL"]*Train.A54.Value - --Train.A54.TriggerInput("Check",S["10AK"]) if Train.A54.Value < 0.5 then S["10AK"] = 0 end - S["6P"] = S["10AL"]*Train.A61.Value - --Train.A61.TriggerInput("Check",S["6P"]) if Train.A61.Value < 0.5 then S["6P"] = 0 end - S["6"] = S["6P"]*Train.RVT.Value - S["2-7R-24"] = S["6P"]*(1.0-Train.AVU.Value) - S["29"] = S["2-7R-24"]*(1.0-Train.OtklAVU.Value)+Train.ALS_ARS["29"] - S["22A"] = Train.A23.Value*1*Train:ReadTrainWire(23)+T[6]*Train.A22.Value - --Train.A22.TriggerInput("Check",S["22A"]) if Train.A22.Value < 0.5 then S["22A"] = 0 end - --Train.A23.TriggerInput("Check",S["22A"]) if Train.A23.Value < 0.5 then S["22A"] = 0 end - S["10AN"] = (1.0-Train.RPvozvrat.Value)*Train.A14.Value*1*1 - --Train.A14.TriggerInput("Check",S["10AN"]) if Train.A14.Value < 0.5 then S["10AN"] = 0 end - S["1-7R-8"] = S["10AS"]*Train.KV["10AS-U4"]*Train.VozvratRP.Value - S["1A"] = Train.A1.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(1) - --Train.A1.TriggerInput("Check",S["1A"]) if Train.A1.Value < 0.5 then S["1A"] = 0 end - --Train.A39.TriggerInput("Check",S["1A"]) if Train.A39.Value < 0.5 then S["1A"] = 0 end - S["3A"] = Train.A3.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(3) - --Train.A1.TriggerInput("Check",S["3A"]) if Train.A1.Value < 0.5 then S["3A"] = 0 end - --Train.A39.TriggerInput("Check",S["3A"]) if Train.A39.Value < 0.5 then S["3A"] = 0 end - S["33V"] = S["10AK"]*Train.RV2.Value*S["10AK-VAH1"]*1*S["33B-33AVU"] - S["1R"] = S["1A"]*S["1A-1R"] - S["20B"] = (1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*(1.0-Train.RPvozvrat.Value)*Train.A20.Value*Train:ReadTrainWire(20) - --Train.A39.TriggerInput("Check",S["20B"]) if Train.A39.Value < 0.5 then S["20B"] = 0 end - --Train.A20.TriggerInput("Check",S["20B"]) if Train.A20.Value < 0.5 then S["20B"] = 0 end - S["4B"] = (1.0-Train.RKR.Value)*Train:ReadTrainWire(4) - S["5B"] = Train.RKR.Value*Train:ReadTrainWire(5) - S["5V"] = Train.RKR.Value*Train:ReadTrainWire(4)+T[8]*(1.0-Train.RKR.Value) - S["5B'"] = S["5V"]*Train.LK3.Value - S["6A"] = Train.A6.Value*Train:ReadTrainWire(6) - --Train.A6.TriggerInput("Check",S["6A"]) if Train.A6.Value < 0.5 then S["6A"] = 0 end - S["B12"] = 1*Train.VB.Value*B - S["8A"] = Train.A8.Value*Train:ReadTrainWire(8) - --Train.A8.TriggerInput("Check",S["8A"]) if Train.A8.Value < 0.5 then S["8A"] = 0 end - S["8Zh"] = S["8A"]*C((RK >= 17) and (RK <= 18))+T[10]*1 - S["12A"] = Train.A12.Value*Train:ReadTrainWire(12) - --Train.A12.TriggerInput("Check",S["12A"]) if Train.A12.Value < 0.5 then S["12A"] = 0 end - S["1"] = S["10AS"]*Train.R1_5.Value*Train.KV["10AS-33D"]*Train.ALS_ARS["33D"]+(-10*Train.KRU["1/3-ZM31"]) - S["8"] = S["10"]*S["10-8"]+Train.ALS_ARS["8"] - S["16V"] = Train.A16.Value*(1.0-Train.RD.Value)*Train:ReadTrainWire(16) - --Train.A16.TriggerInput("Check",S["16V"]) if Train.A16.Value < 0.5 then S["16V"] = 0 end - S["6Yu"] = S["6A"]*C((P == 3) or (P == 4))*C((RK >= 1) and (RK <= 2)) - S["17A"] = Train.A17.Value*Train:ReadTrainWire(17) - --Train.A17.TriggerInput("Check",S["17A"]) if Train.A17.Value < 0.5 then S["17A"] = 0 end - S["24V"] = (1.0-Train.LK4.Value)*Train:ReadTrainWire(24) - --Train.A24.TriggerInput("Check",S["24V"]) if Train.A24.Value < 0.5 then S["24V"] = 0 end - S["25A"] = Train.A25.Value*Train:ReadTrainWire(25) - --Train.A25.TriggerInput("Check",S["25A"]) if Train.A25.Value < 0.5 then S["25A"] = 0 end - S["27A"] = Train.A50.Value*Train:ReadTrainWire(27) - --Train.A50.TriggerInput("Check",S["27A"]) if Train.A50.Value < 0.5 then S["27A"] = 0 end - S["28A"] = Train.A51.Value*Train:ReadTrainWire(28) - --Train.A51.TriggerInput("Check",S["28A"]) if Train.A51.Value < 0.5 then S["28A"] = 0 end - S["31A"] = Train.A31.Value*Train:ReadTrainWire(31)+T[3]*1 - --Train.A31.TriggerInput("Check",S["31A"]) if Train.A31.Value < 0.5 then S["31A"] = 0 end - S["32A"] = Train.A32.Value*Train:ReadTrainWire(32)+T[4]*1 - --Train.A32.TriggerInput("Check",S["32A"]) if Train.A32.Value < 0.5 then S["32A"] = 0 end - S["B2"] = 1*Train.VB.Value*B - S["18A"] = (1.0-Train.RPvozvrat.Value)*Train.A14.Value*1+(-0.5*(1.0-Train.LK4.Value)) - --Train.A14.TriggerInput("Check",S["18A"]) if Train.A14.Value < 0.5 then S["18A"] = 0 end - S["B8"] = S["B2"]*Train.A53.Value - --Train.A53.TriggerInput("Check",S["B8"]) if Train.A53.Value < 0.5 then S["B8"] = 0 end - S["B22"] = S["B8"]*Train.A75.Value - --Train.A75.TriggerInput("Check",S["B22"]) if Train.A75.Value < 0.5 then S["B22"] = 0 end - S["B28"] = S["B8"]*Train.KUP.Value - S["36Ya"] = S["B8"]*Train.KVC.Value - S["B13"] = S["B12"]*Train.A24.Value - --Train.A24.TriggerInput("Check",S["B13"]) if Train.A24.Value < 0.5 then S["B13"] = 0 end - S["B3"] = S["B2"]*Train.A44.Value - --Train.A44.TriggerInput("Check",S["B3"]) if Train.A44.Value < 0.5 then S["B3"] = 0 end - S["1-7R-29"] = S["B3"]*Train.RezMK.Value - S["4"] = S["10AK"]*Train.KV["10AK-4"] - S["5"] = S["10AK"]*Train.KV["10AK-5"]+(-10*Train.KRU["5/3-ZM31"]*0 + Train.KRU["14/1-B3"]*S["B3"]*1) - S["U2"] = S["10AS"]*Train.KV["U2-10AS"] - S["24"] = S["U2"]*Train.KSN.Value - S["2-7R-21"] = S["U2"]*1+(-1*max(0,Train:ReadTrainWire(18))) - S["2"] = S["10AK"]*Train.KV["10AK-2"]+Train.ALS_ARS["2"]+(-10*Train.KRU["2/3-ZM31"]) - S["3"] = S["U2"]*Train.KV["U2-3"]+(-10*Train.KRU["3/3-ZM31"]) - S["33Aa"] = S["10AS"]*Train.KV["10AS-33"]*S["33-33Aa"] - S["22V"] = S["22A"]*(1.0-Train.TRK.Value) - S["10/4"] = S["B12"]*Train.VB.Value*Train.A56.Value+(1-Train.VB.Value)*Train:ReadTrainWire(10) - --Train.A56.TriggerInput("Check",S["10/4"]) if Train.A56.Value < 0.5 then S["10/4"] = 0 end - S["1P"] = S["1A"]*C((P == 1) or (P == 2))*S["1T-1P"]+T[2]*C((P == 3) or (P == 4)) - S["25"] = S["U2"]*Train.KV["U2-25"]*Train.K25.Value - S["1Zh"] = S["1P"]*Train.AVT.Value*(1.0-Train.RPvozvrat.Value)*S["1G-1Zh"] - S["8G"] = S["8A"]*(1.0-Train.RT2.Value)*S["8A-8Ye"] - S["11A"] = S["B2"]*(1.0-Train.RD.Value) - S["1-7R-31"] = S["B3"]*Train.KRU["14/1-B3"]*Train.KRP.Value - S["10AYa"] = S["B2"]*Train.A80.Value - --Train.A80.TriggerInput("Check",S["10AYa"]) if Train.A80.Value < 0.5 then S["10AYa"] = 0 end - S["10AE"] = S["B2"]*Train.A30.Value - --Train.A30.TriggerInput("Check",S["10AE"]) if Train.A30.Value < 0.5 then S["10AE"] = 0 end - S["20"] = S["U2"]*S["U2-20"]+Train.ALS_ARS["20"]+(-10*Train.KRU["20/3-ZM31"]) - S["10I"] = S["10AE"]*Train.RheostatController.RKM2 - S["10AH"] = S["10I"]*(1.0-Train.LK1.Value)+0 - S["10H"] = S["10I"]*Train.LK4.Value - S["10B"] = S["10AE"]*S["10AE-10B"] - S["10/4a"] = S["10/4"]*Train.VB.Value - S["22K"] = S["10/4"]*Train.A10.Value - --Train.A10.TriggerInput("Check",S["22K"]) if Train.A10.Value < 0.5 then S["22K"] = 0 end - S["22E'"] = S["22K"]*Train.VMK.Value*Train.AK.Value - S["U0"] = S["10/4"]*Train.A27.Value - --Train.A27.TriggerInput("Check",S["U0"]) if Train.A27.Value < 0.5 then S["U0"] = 0 end - S["U0a"] = S["U0"]*1+(-10*S["10AN"]) - S["s3"] = S["U0"]*Train.DIPon.Value - S["s10"] = S["U0"]*Train.DIPoff.Value - S["F1"] = S["10/4"]*Train.KV["10/4-F1"] - S["D4"] = S["10/4"]*Train.A13.Value - --Train.A13.TriggerInput("Check",S["D4"]) if Train.A13.Value < 0.5 then S["D4"] = 0 end - S["15"] = S["D4"]*Train.KV["D4-15"]+(-10*Train:ReadTrainWire(11)) + Train.KRU["14/1-B3"]*S["B3"]*20 - S["D4/3"] = S["D4"]*1 - S["D1"] = S["10/4"]*Train.A21.Value*Train.KV["D-D1"]+(1*Train.KRU["11/3-D1/1"]*Train.KRU["14/1-B3"]*S["B3"]) - --Train.A21.TriggerInput("Check",S["D1"]) if Train.A21.Value < 0.5 then S["D1"] = 0 end - S["11B"] = S["10/4"]*Train.KV["10/4-C3"]*(1.0-Train.NR.Value)+T[1]*1 - S["16"] = S["D1"]*Train.VUD1.Value*Train.VUD2.Value - S["F2a"] = S["F1"]*Train.A7.Value - --Train.A7.TriggerInput("Check",S["F2a"]) if Train.A7.Value < 0.5 then S["F2a"] = 0 end - S["F1a"] = S["F1"]*Train.A9.Value - --Train.A9.TriggerInput("Check",S["F1a"]) if Train.A9.Value < 0.5 then S["F1a"] = 0 end - S["ST/1+ST/2"] = S["D4/3"]*Train.BPT.Value - S["16V/1+16V/2"] = S["D4/3"]*(1.0-Train.RD.Value) - S["D6/1"] = S["D4/3"]*Train.BD.Value - S["1K"] = S["1Zh"]*C((P == 1) or (P == 2)) - S["1N"] = S["1Zh"]*C((P == 1) or (P == 3)) - S["10N"] = S["10AE"]*S["10N-10Zh"]*1+T["SDRK_ShortCircuit"] - S["31V"] = S["D1"]*S["D1-31V"] - S["10AG"] = S["10AYa"]*S["10E-10AG"]*S["10AYa-10E"] - S["2Ye10AV"] = S["10AYa"]*(1.0-Train.LK3.Value)*C((RK >= 2) and (RK <= 18))*(1.0-Train.LK4.Value)+0 - S["32V"] = S["D1"]*S["D1-32V"] - S["12"] = S["D1"]*Train.KRZD.Value - S["F7"] = S["10"]*Train.KV["F7-10"]+(1*Train.KRU["11/3-FR1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["F7/1"] = S["10"]*Train.KV["F7-10"]+(1*Train.KRU["11/3-FR1"]*Train.KRU["14/1-B3"]*S["B3"]) - S["33G"] = 1*Train.ALS_ARS["33G"]+S["U2"]*Train.KV["U2-33G"] - S["2Ye"] = Train.A2.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*S["2Zh-2A"]*Train.LK4.Value*S["2A-2G"]*Train:ReadTrainWire(2)+(S["2Ye10AV"]) - --Train.A2.TriggerInput("Check",S["2Ye"]) if Train.A2.Value < 0.5 then S["2Ye"] = 0 end - --Train.A39.TriggerInput("Check",S["2Ye"]) if Train.A39.Value < 0.5 then S["2Ye"] = 0 end - S["F13"] = S["F7"]*Train.A46.Value - --Train.A46.TriggerInput("Check",S["F13"]) if Train.A46.Value < 0.5 then S["F13"] = 0 end - S["F10"] = S["F7/1"]*Train.VUS.Value*Train.A47.Value - --Train.A47.TriggerInput("Check",S["F10"]) if Train.A47.Value < 0.5 then S["F10"] = 0 end - --Train.A.TriggerInput("Check",S[""]) - - -- Call all triggers - T[4] = min(1,S["12A"]) - Train.Panel["RedLightRight"] = S["F2a"] - Train.RRP:TriggerInput("Set",Train:ReadTrainWire(14)*(1-Train.Rp8.Value)) - Train.RZ_2:TriggerInput("Set",S["24V"]) - Train.Panel["HeadLights2"] = S["F13"] - Triggers["ReverserForward"](S["5B"]) - Train:WriteTrainWire(2,S["2"]) - Train.Panel["TrainDoors"] = S["16V/1+16V/2"] - Train:WriteTrainWire(14,S["1-7R-31"]) - Train:WriteTrainWire(27,S["s3"]) - Train:WriteTrainWire(9,S["10/4a"]) - Train.RV1:TriggerInput("Set",S["2Ye"]) - Train.TR1:TriggerInput("Set",S["6A"]) - Train.SR1:TriggerInput("Set",S["2Ye"]) - Train.Panel["EmergencyLight"] = S["B12"] - Triggers["XR3.4"](S["36Ya"]) - Train.Panel["AVU"] = S["2-7R-24"] - Train.PneumaticNo2:TriggerInput("Set",S["8G"]) - Triggers["SDRK_Coil"](S["10B"]) - Train.RD:TriggerInput("Set",S["D6/1"]) - Triggers["XR3.6"](S["36Ya"]) - Train:WriteTrainWire(20,S["20"]) - Train:WriteTrainWire(32,S["32V"]) - T[6] = min(1,Train:ReadTrainWire(22)) - Train.KSH1:TriggerInput("Set",S["1R"]) - Train.Panel["KUP"] = S["B28"] - Train:WriteTrainWire(23,S["1-7R-29"]) - Triggers["XR3.7"](S["36Ya"]) - Train.Panel["TrainBrakes"] = S["ST/1+ST/2"] - Train:WriteTrainWire(31,S["31V"]) - Train.LK5:TriggerInput("Set",S["20B"]) - Train.LK1:TriggerInput("Set",S["1K"]) - Train:WriteTrainWire(4,S["4"]) - Train.VDOL:TriggerInput("Set",S["31A"]) - Triggers["SDRK"](S["10N"]) - Train.LK4:TriggerInput("Set",S["5B'"]) - Train:WriteTrainWire(16,S["16"]) - Train.R1_5:TriggerInput("Set",S["33V"]) - Train:WriteTrainWire(10,S["10/4a"]) - Triggers["XR3.2"](S["27A"]) - Train.KVC:TriggerInput("Set",S["B8"]) - T[8] = min(1,Train:ReadTrainWire(5)) - T[7] = min(1,S["5V"]) - Train.RVT:TriggerInput("Set",S["33G"]) - T[10] = min(1,Train:ReadTrainWire(29)) - Train.RPU:TriggerInput("Set",S["27A"]) - T[5] = min(1,S["22A"]) - Train:WriteTrainWire(25,S["25"]) - T[1] = min(1,S["27A"]) - Train.KK:TriggerInput("Set",S["22V"]) - Train:WriteTrainWire(5,S["5"]) - Triggers["RUTpod"](S["10H"]) - Train:WriteTrainWire(29,S["29"]) - Triggers["RRTpod"](S["10AH"]) - Train.Panel["GreenRP"] = S["U0a"] - Triggers["SDPP"](S["10AG"]) - Train.Panel["CabinLight"] = S["10ALa"] - T[2] = min(1,S["6A"]) - Triggers["XT3.1"](S["B13"]) - Triggers["XR3.3"](S["28A"]) - Train.KSB1:TriggerInput("Set",S["6Yu"]) - Triggers["RRTuderzh"](S["25A"]) - Train.Panel["V1"] = S["10/4"] - Train.RR:TriggerInput("Set",S["1N"]) - T[3] = min(1,S["12A"]) - Train:WriteTrainWire(8,S["8"]) - Train:WriteTrainWire(1,S["1"]) - Train.Panel["SD"] = S["15B"] - Train.TR2:TriggerInput("Set",S["6A"]) - Triggers["KPP"](S["27A"]) - Train:WriteTrainWire(24,S["24"]) - T[9] = min(1,S["8Zh"]) - Train:WriteTrainWire(3,S["3"]) - Train:WriteTrainWire(15,S["15"]) - Train.LK3:TriggerInput("Set",S["1Zh"]) - Train.KUP:TriggerInput("Set",S["B22"]) - Train.Rper:TriggerInput("Set",S["3A"]) - Train.Panel["RedRP"] = S["2-7R-21"] - Train:WriteTrainWire(18,S["18A"]) - Triggers["RPvozvrat"](S["17A"]) - Train.VDZ:TriggerInput("Set",S["16V"]) - Train.Panel["RedLightLeft"] = S["F1a"] - Train.KD:TriggerInput("Set",S["15B"]) - Train.LK2:TriggerInput("Set",S["20B"]) - Train.KSH2:TriggerInput("Set",S["1R"]) - Train.PneumaticNo1:TriggerInput("Set",S["8Zh"]) - Train.K25:TriggerInput("Set",Train.ALS_ARS["33Zh"]) - Train.KSB2:TriggerInput("Set",S["6Yu"]) - Train.RUP:TriggerInput("Set",S["6Yu"]) - Train:WriteTrainWire(17,S["1-7R-8"]) - Train.Panel["TrainRP"] = S["2-7R-21"] - Train.Panel["Ring"] = S["11B"] - Train:WriteTrainWire(28,S["s10"]) - Triggers["ReverserBackward"](S["4B"]) - Train.RV2:TriggerInput("Set",S["33Aa"]) - Train.Panel["HeadLights1"] = S["F10"] - Train:WriteTrainWire(11,S["11A"]) - Train.Panel["HeadLights3"] = S["F13"] - Train:WriteTrainWire(22,S["22E'"]) - Train.VDOP:TriggerInput("Set",S["32A"]) - Train:WriteTrainWire(6,S["6"]) - Train:WriteTrainWire(12,S["12"]) - return S -end - -function TRAIN_SYSTEM.SolveEma508(Train,Triggers) - local P = Train.PositionSwitch.SelectedPosition - local RK = Train.RheostatController.SelectedPosition - local B = (Train.Battery.Voltage > 55) and 1 or 0 - local T = Train.SolverTemporaryVariables - if not T then - T = {} - for i=1,100 do T[i] = 0 end - Train.SolverTemporaryVariables = T - end - - -- Solve all circuits - T["SDRK_ShortCircuit"] = -10*Train.RheostatController.RKP*(Train.RUT.Value+Train.RRT.Value+(1.0-Train.SR1.Value) ) - Triggers["SDRK_Shunt"]( 1.0 - (0.20+0.20*C((RK >= 2) and (RK <= 7))*C(P == 1))*Train.LK2.Value ) - S["1T-1P"] = Train.NR.Value+Train.RPU.Value - S["2Zh-2A"] = (1.0-Train.KSB1.Value)+(1.0-Train.TR1.Value) - S["2Zh-2A"] = Train.ThyristorBU5_6.Value+S["2Zh-2A"] - S["8A-8Ye"] = C(RK == 1)+(1.0-Train.LK4.Value) - S["10AYa-10E"] = (1.0-Train.LK3.Value)+Train.Rper.Value - S["10AP-10AD"] = Train.LK2.Value+C((P == 3) or (P == 4)) - S["10AE-10B"] = Train.TR1.Value+Train.RV1.Value - S["2V-2G"] = C((RK >= 5) and (RK <= 18))+C((RK >= 2) and (RK <= 4))*Train.KSH1.Value - S["1E-1Yu"] = Train.KSH2.Value+Train.KSB2.Value*Train.KSB1.Value - S["10Zh-10N"] = Train.RheostatController.RKM1+(1.0-Train.RUT.Value)*Train.SR1.Value*(1.0-Train.RRT.Value) - S["1G-1Zh"] = Train.LK3.Value+C((P == 1) or (P == 3))*Train.LK5.Value*C(RK == 1)*S["1E-1Yu"] - S["10AG-10AD"] = C((P == 2) or (P == 3) or (P == 4))*(1.0-Train.TR2.Value)*(1.0-Train.TR1.Value)+Train.TR2.Value*Train.TR1.Value*C((P == 1) or (P == 2) or (P == 4)) - S["1A-1M"] = C((RK >= 1) and (RK <= 5))+C(RK == 6)*Train.RheostatController.RKM1 - S["10E-10AG"] = Train.LK3.Value*C(RK == 18)*C((P == 1))+S["10AG-10AD"]*S["10AP-10AD"]*(1.0-Train.LK1.Value) - S["1A-1R"] = (1.0-Train.RV1.Value)*C((P == 1))+C((P == 2))*S["1A-1M"] - S["2A-2G"] = C((P == 2) or (P == 4))*S["2V-2G"]+C((P == 1) or (P == 3))*C((RK >= 1) and (RK <= 17)) - S["10"] = 1*Train:ReadTrainWire(10) - S["3A"] = Train.A3.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(3) - S["4B"] = (1.0-Train.RKR.Value)*Train:ReadTrainWire(4) - S["5B"] = Train.RKR.Value*Train:ReadTrainWire(5) - S["5V"] = Train.RKR.Value*Train:ReadTrainWire(4)+T[37]*(1.0-Train.RKR.Value) - S["5B'"] = S["5V"]*Train.LK3.Value - S["6A"] = Train.A6.Value*Train:ReadTrainWire(6) - S["8A"] = Train.A8.Value*Train:ReadTrainWire(8) - S["8Zh"] = S["8A"]*C((RK >= 17) and (RK <= 18))+T[39]*1 - S["12A"] = Train.A12.Value*Train:ReadTrainWire(12) - S["10AN"] = 1*(1.0-Train.RPvozvrat.Value)*Train.A14.Value*1 - S["16V"] = Train.A16.Value*(1.0-Train.RD.Value)*Train:ReadTrainWire(16) - S["1A"] = Train.A1.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*Train:ReadTrainWire(1) - S["17A"] = Train.A17.Value*Train:ReadTrainWire(17) - S["6Yu"] = S["6A"]*C((P == 3) or (P == 4))*C((RK >= 1) and (RK <= 2)) - S["24V"] = (1.0-Train.LK4.Value)*Train:ReadTrainWire(24) - S["25A"] = Train.A25.Value*Train:ReadTrainWire(25) - S["27A"] = Train.A50.Value*Train:ReadTrainWire(27) - S["28A"] = Train.A51.Value*Train:ReadTrainWire(28) - S["31A"] = Train.A31.Value*Train:ReadTrainWire(31)+T[32]*1 - S["32A"] = Train.A32.Value*Train:ReadTrainWire(32)+T[33]*1 - S["18A"] = (1.0-Train.RPvozvrat.Value)*Train.A14.Value*1+(-0.5*(1.0-Train.LK4.Value)) - S["B2"] = 1*Train.VB.Value*B - S["8G"] = S["8A"]*(1.0-Train.RT2.Value)*S["8A-8Ye"] - S["22A"] = Train.A23.Value*1*Train:ReadTrainWire(23)+T[35]*Train.A22.Value - S["B12"] = 1*Train.VB.Value*B - S["20B"] = Train.A20.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*(1.0-Train.RPvozvrat.Value)*Train:ReadTrainWire(20) - S["B8"] = S["B2"]*Train.A53.Value - S["B22"] = S["B8"]*Train.A75.Value - S["B28"] = S["B8"]*Train.KUP.Value - S["36Ya"] = S["B8"]*Train.KVC.Value - S["B13"] = S["B12"]*Train.A24.Value - S["1R"] = S["1A"]*S["1A-1R"] - S["22V"] = S["22A"]*(1.0-Train.TRK.Value) - S["1P"] = S["1A"]*C((P == 1) or (P == 2))*S["1T-1P"]+T[31]*C((P == 3) or (P == 4)) - S["11A"] = S["B2"]*(1.0-Train.RD.Value) - S["10/4"] = S["B12"]*Train.VB.Value*Train.A56.Value - S["10AYa"] = S["B2"]*Train.A80.Value - S["10AE"] = S["B2"]*Train.A30.Value - S["10I"] = S["10AE"]*Train.RheostatController.RKM2 - S["10AH"] = S["10I"]*(1.0-Train.LK1.Value) - S["10H"] = S["10I"]*Train.LK4.Value - S["10B"] = S["10AE"]*S["10AE-10B"] - S["22K"] = S["10/4"]*Train.A10.Value - S["22E'"] = S["22K"]*Train.VMK.Value*Train.AK.Value - S["1Zh"] = S["1P"]*Train.AVT.Value*(1.0-Train.RPvozvrat.Value)*S["1G-1Zh"] - S["D4/3"] = S["10/4"]*Train.A13.Value*1 - S["2Ye10AV"] = S["10AYa"]*(1.0-Train.LK4.Value)*(1.0-Train.LK3.Value)*C((RK >= 2) and (RK <= 18))+0 - S["10/4a"] = S["10/4"]*Train.VB.Value - S["D"] = S["10/4"]*Train.A21.Value - S["10AK"] = S["10/4"]*Train.A54.Value - S["1/1p"] = S["10AK"]*Train.PMP["3-4"] - S["20/1p"] = S["10AK"]*Train.PMP["9-10"] - S["10AKl"] = S["10AK"]*Train.KRP.Value - S["4/1p"] = S["10AKl"]*Train.PMP["5-6"] - S["5/1p"] = S["10AKl"]*Train.PMP["7-8"] - S["10N"] = S["10AE"]*1*S["10Zh-10N"]+T["SDRK_ShortCircuit"] - S["ST/1+ST/2"] = S["D4/3"]*Train.BPT.Value - S["16V/1+16V/2"] = S["D4/3"]*(1.0-Train.RD.Value) - S["D6/1"] = S["D4/3"]*Train.BD.Value - S["U0"] = S["10/4"]*Train.A27.Value - S["U0a"] = S["U0"]*1+(-10*S["10AN"]) - S["s3"] = S["U0"]*Train.BPSNon.Value*(1-Train:ReadTrainWire(35)) - S["1K"] = S["1Zh"]*C((P == 1) or (P == 2)) - S["1N"] = S["1Zh"]*C((P == 1) or (P == 3)) - S["10AG"] = S["10AYa"]*S["10E-10AG"]*S["10AYa-10E"] - S["1-7R-29"] = S["U0"]*Train.A23.Value*Train.RezMK.Value - S["17/1p"] = S["10AK"]*(1.0-Train.KRP.Value)*Train.VozvratRP.Value - S["2Ye"] = S["2A-2G"]*Train.LK4.Value*Train.A2.Value*(1-2*Train.RRP.Value)*((1-Train.RRP.Value) + Train.RRP.Value*Train.A39.Value)*S["2Zh-2A"]*Train:ReadTrainWire(2)+(S["2Ye10AV"]) - - -- Call all triggers - Train.RRP:TriggerInput("Set",Train:ReadTrainWire(14)) - Train.RZ_2:TriggerInput("Set",S["24V"]) - Triggers["ReverserForward"](S["5B"]) - Train.Panel["TrainDoors"] = S["16V/1+16V/2"] - Train.PneumaticNo1:TriggerInput("Set",S["8Zh"]) - Train:WriteTrainWire(27,S["s3"]) - Train:WriteTrainWire(9,S["10/4a"]) - Train.RV1:TriggerInput("Set",S["2Ye"]) - T[37] = min(1,Train:ReadTrainWire(5)) - Train.TR1:TriggerInput("Set",S["6A"]) - Train.SR1:TriggerInput("Set",S["2Ye"]) - T[34] = min(1,S["22A"]) - Train.Panel["EmergencyLight"] = S["B12"] - Triggers["XR3.4"](S["36Ya"]) - Train.PneumaticNo2:TriggerInput("Set",S["8G"]) - Triggers["SDRK_Coil"](S["10B"]) - Triggers["RPvozvrat"](S["17A"]) - Triggers["XR3.6"](S["36Ya"]) - Train:WriteTrainWire(20,S["20/1p"]) - Triggers["XR3.2"](S["27A"]) - Train.KSH1:TriggerInput("Set",S["1R"]) - Train.Panel["KUP"] = S["B28"] - Train:WriteTrainWire(23,S["1-7R-29"]) - Triggers["XR3.7"](S["36Ya"]) - Train.Panel["TrainBrakes"] = S["ST/1+ST/2"] - Train.LK5:TriggerInput("Set",S["20B"]) - Train.LK1:TriggerInput("Set",S["1K"]) - Train:WriteTrainWire(4,S["4/1p"]) - Train.VDOL:TriggerInput("Set",S["31A"]) - Triggers["SDRK"](S["10N"]) - Train.LK4:TriggerInput("Set",S["5B'"]) - Train.KVC:TriggerInput("Set",S["B8"]) - Train.KSB2:TriggerInput("Set",S["6Yu"]) - Train.RPU:TriggerInput("Set",S["27A"]) - Train:WriteTrainWire(5,S["5/1p"]) - Train.Panel["GreenRP"] = S["U0a"] - Triggers["SDPP"](S["10AG"]) - Triggers["XT3.1"](S["B13"]) - Train.KSB1:TriggerInput("Set",S["6Yu"]) - Triggers["RRTuderzh"](S["25A"]) - Train.RR:TriggerInput("Set",S["1N"]) - T[39] = min(1,Train:ReadTrainWire(29)) - Train:WriteTrainWire(22,S["22E'"]) - Train:WriteTrainWire(1,S["1/1p"]) - T[38] = min(1,S["8Zh"]) - Train.TR2:TriggerInput("Set",S["6A"]) - Triggers["KPP"](S["27A"]) - Train.RUP:TriggerInput("Set",S["6Yu"]) - Train.LK3:TriggerInput("Set",S["1Zh"]) - Train.KUP:TriggerInput("Set",S["B22"]) - Train.Rper:TriggerInput("Set",S["3A"]) - Train:WriteTrainWire(10,S["10/4a"]) - Triggers["XR3.3"](S["28A"]) - Train.LK2:TriggerInput("Set",S["20B"]) - Train:WriteTrainWire(18,S["18A"]) - T[35] = min(1,Train:ReadTrainWire(22)) - T[33] = min(1,S["12A"]) - Train:WriteTrainWire(17,S["17/1p"]) - T[32] = min(1,S["12A"]) - T[31] = min(1,S["6A"]) - Triggers["RUTpod"](S["10H"]) - Triggers["ReverserBackward"](S["4B"]) - Train.KK:TriggerInput("Set",S["22V"]) - Triggers["RRTpod"](S["10AH"]) - Train:WriteTrainWire(11,S["11A"]) - T[36] = min(1,S["5V"]) - Train.KSH2:TriggerInput("Set",S["1R"]) - Train.VDOP:TriggerInput("Set",S["32A"]) - Train.RD:TriggerInput("Set",S["D6/1"]) - Train.VDZ:TriggerInput("Set",S["16V"]) - return S -end diff --git a/lua/metrostroi/systems/_obsolete/sys_gen_res_717_5m.lua b/lua/metrostroi/systems/_obsolete/sys_gen_res_717_5m.lua deleted file mode 100644 index b91751c..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_gen_res_717_5m.lua +++ /dev/null @@ -1,202 +0,0 @@ --------------------------------------------------------------------------------- --- Resistor arrays calculations --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- ---[[ -Rxx PS PP1 PP2 PT PS1 PS2 PT1 PT2 S1 S2 -R01 = 4.176 0.000 0.000 1.329 3.267 0.909 1.329 -R02 = 4.176 0.000 0.000 1.329 3.267 0.909 1.329 -R03 = 3.048 0.000 0.000 1.189 2.139 0.909 1.189 -R04 = 2.310 0.000 0.000 1.057 1.401 0.909 1.057 -R05 = 1.818 0.000 0.000 0.941 0.909 0.909 0.941 -R06 = 1.669 0.000 0.000 0.899 0.760 0.909 0.899 -R07 = 1.520 0.149 0.000 0.854 0.760 0.760 0.854 -R08 = 1.331 0.149 0.149 0.791 0.760 0.571 0.791 -R09 = 1.142 0.149 0.338 0.720 0.571 0.571 0.720 -R10 = 0.896 0.338 0.338 0.614 0.325 0.571 0.614 -R11 = 0.650 0.584 0.338 0.488 0.325 0.325 0.488 -R12 = 0.451 0.584 0.584 0.366 0.325 0.126 0.366 -R13 = 0.252 0.584 0.783 0.223 0.126 0.126 0.223 -R14 = 0.126 0.783 0.783 0.118 0.000 0.126 0.118 -R15 = 0.000 0.909 0.783 0.000 0.000 0.000 0.000 -R16 = 0.000 0.909 0.909 0.000 0.000 0.000 0.000 -R17 = 0.000 0.909 0.909 0.000 0.000 0.000 0.000 -R18 = 0.000 0.909 0.909 0.000 0.000 0.000 0.000 -]]-- - --------------------------------------------------------------------------------- --- Resistor arrays calculations - auto-generated by gen.lua --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Gen_Res_717_5m") - -local R = {} - -local P13_11 -local P11_12 -local P12_9 -local P9_8 -local P8_7 -local P1_7 -local P4_1 -local P3_4 -local P17_20 -local P20_25 -local P25_21 -local P21_22 -local P22_23 -local P10_42 - -local P29_P28 -local P30_P29 -local P31_P30 -local L76_P31 - -local P35_L18 -local P36_P35 -local P37_P36 -local L74_P37 --- - -function TRAIN_SYSTEM.InitializeResistances_81_717(Train) - P13_11 = Train.KF_47A["P13_11"] - P11_12 = Train.KF_47A["P11_12"] - P12_9 = Train.KF_47A["P12_9"] - P9_8 = Train.KF_47A["P9_8"] - P8_7 = Train.KF_47A["P8_7"] - P1_7 = Train.KF_47A["P1_7"] - P4_1 = Train.KF_47A["P4_1"] - P3_4 = Train.KF_47A["P3_4"] - - P17_20 = Train.KF_47A["P17_20"] - P20_25 = Train.KF_47A["P20_25"] - P25_21 = Train.KF_47A["P25_21"] - P21_22 = Train.KF_47A["P21_22"] - P22_23 = Train.KF_47A["P22_23"] - - P10_42 = Train.KF_47A["P10_42"] - - P29_P28 = Train.KF_50A["P29-P28"] - P30_P29 = Train.KF_50A["P30-P29"] - P31_P30 = Train.KF_50A["P31-P30"] - L76_P31 = Train.KF_50A["L76-P31"] - - P35_L18 = Train.KF_50A["P35-L18"] - P36_P35 = Train.KF_50A["P36-P35"] - P37_P36 = Train.KF_50A["P37-P36"] - L74_P37 = Train.KF_50A["L74-P37"] -end - -function TRAIN_SYSTEM.R1C1(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((RK[17])^-1 + (P12_9)^-1)^-1 - R[2] = ((RK[18])^-1 + (P11_12+R[1])^-1)^-1 - R[3] = ((RK[19])^-1 + (P13_11+R[2])^-1)^-1 - R[4] = ((RK[5])^-1 + (RK[3]+P3_4)^-1)^-1 - R[5] = ((RK[7])^-1 + (P4_1+R[4])^-1)^-1 - R[6] = ((RK[9])^-1 + (R[5]+P1_7)^-1)^-1 - R[7] = ((RK[11])^-1 + (R[6]+P8_7)^-1)^-1 - R[8] = ((RK[13])^-1 + (R[7]+P9_8)^-1)^-1 - return R[8]+R[3] -end - -function TRAIN_SYSTEM.R1C2(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((RK[17])^-1 + (P12_9)^-1)^-1 - R[2] = ((RK[18])^-1 + (RK[19]+P13_11)^-1)^-1 - R[3] = ((P11_12+R[1])^-1 + (R[2])^-1)^-1 - R[4] = ((RK[7])*(P1_7)+(RK[7])*(P4_1)+(P1_7)*(P4_1))/(RK[7]) - R[5] = ((RK[7])*(P1_7)+(RK[7])*(P4_1)+(P1_7)*(P4_1))/(P1_7) - R[6] = ((RK[7])*(P1_7)+(RK[7])*(P4_1)+(P1_7)*(P4_1))/(P4_1) - R[7] = ((RK[9])^-1 + (R[6])^-1)^-1 - R[8] = ((RK[5])^-1 + (R[5])^-1)^-1 - R[9] = ((R[8])*(R[4])+(R[8])*(P3_4)+(R[4])*(P3_4))/(R[8]) - R[10] = ((R[8])*(R[4])+(R[8])*(P3_4)+(R[4])*(P3_4))/(R[4]) - R[11] = ((R[8])*(R[4])+(R[8])*(P3_4)+(R[4])*(P3_4))/(P3_4) - R[12] = ((R[11])^-1 + (R[7])^-1)^-1 - R[13] = ((R[10])^-1 + (RK[3])^-1)^-1 - R[14] = ((R[9])*(R[12])+(R[9])*(P8_7)+(R[12])*(P8_7))/(R[9]) - R[15] = ((R[9])*(R[12])+(R[9])*(P8_7)+(R[12])*(P8_7))/(R[12]) - R[16] = ((R[9])*(R[12])+(R[9])*(P8_7)+(R[12])*(P8_7))/(P8_7) - R[17] = ((RK[11])^-1 + (R[14])^-1)^-1 - R[18] = ((R[16])^-1 + (R[13])^-1)^-1 - R[19] = ((RK[13])*(P9_8)+(RK[13])*(R[3])+(P9_8)*(R[3]))/(RK[13]) - R[20] = ((RK[13])*(P9_8)+(RK[13])*(R[3])+(P9_8)*(R[3]))/(P9_8) - R[21] = ((RK[13])*(P9_8)+(RK[13])*(R[3])+(P9_8)*(R[3]))/(R[3]) - R[22] = ((R[17])^-1 + (R[21])^-1)^-1 - R[23] = ((R[22])^-1 + (R[20]+R[19])^-1)^-1 - R[24] = ((R[23]+R[15])^-1 + (R[18])^-1)^-1 - return R[24] -end - -function TRAIN_SYSTEM.R2C1(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((RK[6])^-1 + (RK[4]+P17_20)^-1)^-1 - R[2] = ((RK[8])^-1 + (P20_25+R[1])^-1)^-1 - R[3] = ((RK[10])^-1 + (P25_21+R[2])^-1)^-1 - R[4] = ((RK[12])^-1 + (P21_22+R[3])^-1)^-1 - R[5] = ((RK[14])^-1 + (R[4]+P22_23)^-1)^-1 - return R[5] -end - -function TRAIN_SYSTEM.R2C2(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((RK[12])^-1 + (RK[14]+P22_23)^-1)^-1 - R[2] = ((RK[10])^-1 + (P21_22+R[1])^-1)^-1 - R[3] = ((RK[8])^-1 + (R[2]+P25_21)^-1)^-1 - R[4] = ((R[3]+P20_25)^-1 + (RK[6])^-1)^-1 - R[5] = ((R[4]+P17_20)^-1 + (RK[4])^-1)^-1 - return R[5] -end - -function TRAIN_SYSTEM.R3(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((RK[17])^-1 + (P12_9)^-1)^-1 - R[2] = ((RK[18])^-1 + (P11_12+R[1])^-1)^-1 - R[3] = ((RK[19])^-1 + (P13_11+R[2])^-1)^-1 - R[4] = ((RK[5])^-1 + (RK[3]+P3_4)^-1)^-1 - R[5] = ((RK[7])^-1 + (P4_1+R[4])^-1)^-1 - R[6] = ((RK[9])^-1 + (P1_7+R[5])^-1)^-1 - R[7] = ((RK[11])^-1 + (P8_7+R[6])^-1)^-1 - R[8] = ((RK[13])^-1 + (P9_8+R[7])^-1)^-1 - R[9] = ((RK[6])^-1 + (RK[4]+P17_20)^-1)^-1 - R[10] = ((RK[8])^-1 + (P20_25+R[9])^-1)^-1 - R[11] = ((RK[10])^-1 + (P25_21+R[10])^-1)^-1 - R[12] = ((RK[12])^-1 + (P21_22+R[11])^-1)^-1 - R[13] = ((RK[14])^-1 + (P22_23+R[12])^-1)^-1 - R[14] = ((P10_42)^-1 + (P10_42)^-1)^-1 - R[15] = ((PT+PT+R[14])^-1 + (R[13]+R[3]+R[8])^-1)^-1 - return R[15] -end - -function TRAIN_SYSTEM.S1(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((L76_P31)^-1 + (RK[21])^-1)^-1 - R[2] = ((RK[23])^-1 + (P31_P30+R[1])^-1)^-1 - R[3] = ((P30_P29+R[2])^-1 + (RK[25])^-1)^-1 - return P29_P28+R[3] -end - -function TRAIN_SYSTEM.S2(Train) - local RK = Train.RheostatController - local PM = Train.PositionSwitch.RPM - local PT = Train.PositionSwitch.RPT - R[1] = ((L74_P37)^-1 + (RK[22])^-1)^-1 - R[2] = ((RK[24])^-1 + (P37_P36+R[1])^-1)^-1 - R[3] = ((P36_P35+R[2])^-1 + (RK[26])^-1)^-1 - return P35_L18+R[3] -end - diff --git a/lua/metrostroi/systems/_obsolete/sys_kf_47a6.lua b/lua/metrostroi/systems/_obsolete/sys_kf_47a6.lua deleted file mode 100644 index b1f325c..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_kf_47a6.lua +++ /dev/null @@ -1,96 +0,0 @@ --------------------------------------------------------------------------------- --- HV Rheostats (KF-47A6) --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("KF_47A6") - -function TRAIN_SYSTEM:Initialize() - self.Resistors = { - ["L12-L13"] = 1.730, - - ["P3-P4"] = 0.144, - ["P4-P5"] = 0.220, --["P4-P5"] = 0.223, - ["P5-P6"] = 0.190, --["P5-P6"] = 0.190, - ["P6-P7"] = 0.230, --["P6-P7"] = 0.223, - ["P7-P8"] = 0.219, --["P7-P8"] = 0.223, - ["P8-P9"] = 0.180, --["P8-P9"] = 0.190, - ["P9-P10"] = 0.144, - ["P10-P11"] = 0.144, - ["P11-P12"] = 1.000, --1.070 - ["P12-P13"] = 0.570, --["P12-P13"] = 0.485, - ["P1-P3"] = 0.715, - ["P3-P14"] = 1.620, - ["P13-P42"] = 0.285, - - ["P16-P17"] = 0.360, -- ["P16-P17"] = 0.485, - ["P17-P18"] = 0.120, - ["P18-P19"] = 0.224, --["P18-P19"] = 0.223, - ["P19-P20"] = 0.183, --["P19-P20"] = 0.190, - ["P20-P21"] = 0.223, - ["P21-P22"] = 0.223, - ["P22-P23"] = 0.190, -- ["P22-P23"] = 0.190, - ["P23-P24"] = 0.130, --["P23-P24"] = 0.144, - ["P24-P25"] = 0.130, --["P24-P25"] = 0.144, - ["P25-P26"] = 0.790, --["P25-P26"] = 0.716, - ["P17-P76"] = 0.246, - ["P76-P27"] = 1.710, - - ["L2-L4"] = 1.140, - ["L24-L39"] = 1.000, - ["L40-L63"] = 1.000, - - } - self.ResistorTemperatures = { - ["P3-P4"] = 1, - ["P4-P5"] = 1, - ["P5-P6"] = 1, - ["P6-P7"] = 1, - ["P7-P8"] = 1, - ["P8-P9"] = 1, - ["P9-P10"] = 1, - ["P10-P11"] = 1, - ["P11-P12"] = 1, - ["P12-P13"] = 1, - ["P1-P3"] = 1, - ["P3-P14"] = 1, - ["P13-P42"] = 1, - - ["P16-P17"] = 2, - ["P17-P18"] = 2, - ["P18-P19"] = 2, - ["P19-P20"] = 2, - ["P20-P21"] = 2, - ["P21-P22"] = 2, - ["P22-P23"] = 2, - ["P23-P24"] = 2, - ["P24-P25"] = 2, - ["P25-P26"] = 2, - ["P17-P76"] = 2, - ["P76-P27"] = 2, - } - self.Overheating = {} - - for k,v in pairs(self.Resistors) do - self[k] = v - self.Overheating[k] = 0 - end -end - -function TRAIN_SYSTEM:Think(dT) - -- Temperature coefficient - local a = 0.0001 - - -- Update resistances - if self.Train.Electric then - for k,v in pairs(self.ResistorTemperatures) do - -- Get temperature - local T = self.Train.Electric["T"..v] or 25 - local O = self.Train.Electric["Overheat"..v] or 0 - - -- Calculate new resistance - self[k] = self.Resistors[k]*(1.0 + a*(T-25) - math.log(1-O)) - end - end -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_kf_47a7.lua b/lua/metrostroi/systems/_obsolete/sys_kf_47a7.lua deleted file mode 100644 index 4678f60..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_kf_47a7.lua +++ /dev/null @@ -1,96 +0,0 @@ --------------------------------------------------------------------------------- --- HV Rheostats (KF-47A7) --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("KF_47A7") - -function TRAIN_SYSTEM:Initialize() - self.Resistors = { - ["L12-L13"] = 1.730, - - ["P3-P4"] = 0.144, - ["P4-P5"] = 0.220, --["P4-P5"] = 0.223, - ["P5-P6"] = 0.190, --["P5-P6"] = 0.190, - ["P6-P7"] = 0.230, --["P6-P7"] = 0.223, - ["P7-P8"] = 0.219, --["P7-P8"] = 0.223, - ["P8-P9"] = 0.180, --["P8-P9"] = 0.190, - ["P9-P10"] = 0.144, - ["P10-P11"] = 0.144, - ["P11-P12"] = 1.000, --1.070 - ["P12-P13"] = 0.570, --["P12-P13"] = 0.485, - ["P1-P3"] = 0.715, - ["P3-P14"] = 1.620, - ["P13-P42"] = 0.285, - - ["P16-P17"] = 0.360, -- ["P16-P17"] = 0.485, - ["P17-P18"] = 0.120, - ["P18-P19"] = 0.224, --["P18-P19"] = 0.223, - ["P19-P20"] = 0.183, --["P19-P20"] = 0.190, - ["P20-P21"] = 0.223, - ["P21-P22"] = 0.223, - ["P22-P23"] = 0.190, -- ["P22-P23"] = 0.190, - ["P23-P24"] = 0.130, --["P23-P24"] = 0.144, - ["P24-P25"] = 0.130, --["P24-P25"] = 0.144, - ["P25-P26"] = 0.790, --["P25-P26"] = 0.716, - ["P17-P76"] = 0.246, - ["P76-P27"] = 1.710, - - ["L2-L4"] = 1.140, - ["L24-L39"] = 1.000, - ["L40-L63"] = 1.000, - - } - self.ResistorTemperatures = { - ["P3-P4"] = 1, - ["P4-P5"] = 1, - ["P5-P6"] = 1, - ["P6-P7"] = 1, - ["P7-P8"] = 1, - ["P8-P9"] = 1, - ["P9-P10"] = 1, - ["P10-P11"] = 1, - ["P11-P12"] = 1, - ["P12-P13"] = 1, - ["P1-P3"] = 1, - ["P3-P14"] = 1, - ["P13-P42"] = 1, - - ["P16-P17"] = 2, - ["P17-P18"] = 2, - ["P18-P19"] = 2, - ["P19-P20"] = 2, - ["P20-P21"] = 2, - ["P21-P22"] = 2, - ["P22-P23"] = 2, - ["P23-P24"] = 2, - ["P24-P25"] = 2, - ["P25-P26"] = 2, - ["P17-P76"] = 2, - ["P76-P27"] = 2, - } - self.Overheating = {} - - for k,v in pairs(self.Resistors) do - self[k] = v - self.Overheating[k] = 0 - end -end - -function TRAIN_SYSTEM:Think(dT) - -- Temperature coefficient - local a = 0.0001 - - -- Update resistances - if self.Train.Electric then - for k,v in pairs(self.ResistorTemperatures) do - -- Get temperature - local T = self.Train.Electric["T"..v] or 25 - local O = self.Train.Electric["Overheat"..v] or 0 - - -- Calculate new resistance - self[k] = self.Resistors[k]*(1.0 + a*(T-25) - math.log(1-O)) - end - end -end \ No newline at end of file diff --git a/lua/metrostroi/systems/_obsolete/sys_kv_70_lite.lua b/lua/metrostroi/systems/_obsolete/sys_kv_70_lite.lua deleted file mode 100644 index d4909be..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_kv_70_lite.lua +++ /dev/null @@ -1,196 +0,0 @@ --------------------------------------------------------------------------------- --- Кулачковый контроллер КВ-70 (урезанный) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("KV_70_lite") - -function TRAIN_SYSTEM:Initialize() - self.Enabled = 1 - self.ControllerPosition = 0 - self.ReverserPosition = 0 - self.RealControllerPosition = 0 - self.Type = 1 - self.ChangeSpeed = 0.10 - - self.ReverserMatrix = { - {"D", "D1" }, - { 1, 0, 1 }, - {"10/4", "C3" }, - { 0, 0, 1 }, - {"10/4", "F1" }, - { 1, 1, 0 }, - {"D4", "15" }, - { 1, 0, 1 }, - {"D8", "15A" }, - { 0, 1, 0 }, - {"3M35", "4" }, - { 0, 0, 1 }, - {"10AK", "4" }, - { 1, 0, 0 }, - {"10AK", "5" }, - { 0, 0, 1 }, - {"FR1", "10" }, - { 1, 0, 1 }, - {"F7", "10" }, - { 1, 0, 1 }, - } - self.ControllerMatrix = { - {"10", "8" }, - { 1, 0, 0, 0, 0}, - {"U2", "10AS"}, - { 1, 1, 1, 0, 1}, - {"0", "0" }, - { 0, 0, 0, 1, 0}, - {"10AK", "2" }, - { 1, 1, 0, 0, 0}, - {"U2", "3" }, - { 0, 0, 0, 0, 0}, - {"0", "0" }, - { 0, 0, 0, 1, 1}, - {"10AS", "33"}, - { 0, 0, 0, 0, 1}, - {"10AS", "33D"}, - { 0, 0, 0, 1, 1}, - {"U2", "33G"}, - { 1, 1, 1, 0, 0}, - {"U2", "20a"}, - { 0, 0, 0, 0, 1}, - {"U2", "25"}, - { 0, 1, 0, 0, 0}, - {"10AS", "U4"}, - { 0, 0, 0, 1, 0}, - {"15A", "15B"}, - { 1, 1, 1, 1, 0}, - {"U2", "20b"}, - { 1, 1, 1, 0, 0}, - } - - -- Initialize contacts values - for i=1,#self.ReverserMatrix/2 do - local v = self.ReverserMatrix[i*2-1] - self[v[1].."-"..v[2]] = 0 - end - for i=1,#self.ControllerMatrix/2 do - local v = self.ControllerMatrix[i*2-1] - self[v[1].."-"..v[2]] = 0 - end -end - -function TRAIN_SYSTEM:Inputs() - return { "Enabled", "ControllerSet", "ReverserSet","Type", - "ControllerUp","ControllerDown","ReverserUp","ReverserDown", - "SetX1", "Set0", "Set0Fast", "SetT1", "SetT1A", "SetT2" } -end - -function TRAIN_SYSTEM:Outputs() - return { "ControllerPosition","RealControllerPosition", "ReverserPosition" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - local prevReverserPosition = self.ReverserPosition - -- Change position - if name == "Type" then - self.Type = math.floor(value) - elseif name == "Enabled" then - self.Enabled = math.floor(value) - elseif name == "ControllerSet" then - if (self.Enabled ~= 0) and (self.ReverserPosition ~= 0) and (math.floor(value) ~= self.ControllerPosition) then - local prevControllerPosition = self.ControllerPosition - self.ControllerPosition = math.floor(value) - - -- Limit motion - if self.ControllerPosition > 1 then self.ControllerPosition = 1 end - if self.ControllerPosition < -3 then self.ControllerPosition = -3 end - end - elseif name == "ReverserSet" then - if (self.Enabled ~= 0) and (math.floor(value) ~= self.ReverserPosition) and self.ControllerPosition == 0 then - local prevReverserPosition = self.ReverserPosition - self.ReverserPosition = math.floor(value) - if self.ReverserPosition > 1 then self.ReverserPosition = 1 end - if self.ReverserPosition < -1 then self.ReverserPosition = -1 end - if prevReverserPosition ~= self.ReverserPosition then - if self.ReverserPosition == -1 then self.Train:PlayOnce("revers_b","cabin",0.7) end - if self.ReverserPosition == 0 then self.Train:PlayOnce("revers_0","cabin",0.7) end - if self.ReverserPosition == 1 then self.Train:PlayOnce("revers_f","cabin",0.7) end - end - end - elseif (name == "ControllerUp") and (value > 0.5) then - self:TriggerInput("ControllerSet",self.ControllerPosition+1) - elseif (name == "ControllerDown") and (value > 0.5) then - self:TriggerInput("ControllerSet",self.ControllerPosition-1) - elseif (name == "ReverserUp") and (value > 0.5) then - self:TriggerInput("ReverserSet",self.ReverserPosition+1) - elseif (name == "ReverserDown") and (value > 0.5) then - self:TriggerInput("ReverserSet",self.ReverserPosition-1) - elseif (name == "SetX1") and (value > 0.5) then - self:TriggerInput("ControllerSet",1) - elseif (name == "Set0") and (value > 0.5) then - self:TriggerInput("ControllerSet",0) - elseif (name == "Set0Fast") and (value > 0.5) then - self:TriggerInput("ControllerSet",0) - self.ChangeSpeed = 0.05 - elseif (name == "SetT1") and (value > 0.5) then - self:TriggerInput("ControllerSet",-1) - elseif (name == "SetT1A") and (value > 0.5) then - self:TriggerInput("ControllerSet",-2) - elseif (name == "SetT2") and (value > 0.5) then - self:TriggerInput("ControllerSet",-3) - end -end - - -function TRAIN_SYSTEM:Think() - local Train = self.Train - - if (self.Enabled == 0) and (self.ReverserPosition ~= 0) then - self.ReverserPosition = 0 - self.ControllerPosition = 0 - end - if (self.ReverserPosition == 0) and (self.ControllerPosition ~= 0) then - self.ReverserPosition = 0 - self.ControllerPosition = 0 - end - - -- Move controller - self.Timer = self.Timer or CurTime() - if ((CurTime() - self.Timer > self.ChangeSpeed) and (self.ControllerPosition > self.RealControllerPosition)) then - local previousPosition = self.RealControllerPosition - self.Timer = CurTime() - self.RealControllerPosition = self.RealControllerPosition + 1 - - local A,B = previousPosition,self.RealControllerPosition - - if (A == -3) and (B == -2) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_t2_t1a", "cabin",0.8) end - if (A == -2) and (B == -1) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_t1a_t1", "cabin",0.8) end - if (A == -1) and (B == 0) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_t1_0", "cabin",0.8) end - - if (A == 0) and (B == 1) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_0_x1", "cabin",0.9) end - --if (A == 1) and (B == 2) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_x1_x2", "cabin",0.9) end - --if (A == 2) and (B == 3) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_x2_x3", "cabin",0.9) end - end - if ((CurTime() - self.Timer > self.ChangeSpeed) and (self.ControllerPosition < self.RealControllerPosition)) then - local previousPosition = self.RealControllerPosition - self.Timer = CurTime() - self.RealControllerPosition = self.RealControllerPosition - 1 - - local A,B = previousPosition,self.RealControllerPosition - --if (A == 3) and (B == 2) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_x3_x2", "cabin",0.9) end - --if (A == 2) and (B == 1) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_x2_x1", "cabin",0.9) end - if (A == 1) and (B == 0) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_x1_0", "cabin",0.9) end - - if (A == 0) and (B == -1) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_0_t1", "cabin",0.8) end - if (A == -1) and (B == -2) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_t1_t1a", "cabin",0.8) end - if (A == -2) and (B == -3) then self.Train:PlayOnce((self.Type == 1 and "ezh_" or "").."kv_t1a_t2", "cabin",0.8) end - end - if self.RealControllerPosition == 0 then self.ChangeSpeed = 0.10 end - -- Update contacts - for i=1,#self.ReverserMatrix/2 do - local v = self.ReverserMatrix[i*2-1] - local d = self.ReverserMatrix[i*2] - self[v[1].."-"..v[2]] = d[self.ReverserPosition+2] - end - for i=1,#self.ControllerMatrix/2 do - local v = self.ControllerMatrix[i*2-1] - local d = self.ControllerMatrix[i*2] - self[v[1].."-"..v[2]] = d[(self.RealControllerPosition)+4] - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_motorola.lua b/lua/metrostroi/systems/_obsolete/sys_motorola.lua deleted file mode 100644 index 0890348..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_motorola.lua +++ /dev/null @@ -1,516 +0,0 @@ --------------------------------------------------------------------------------- --- Радиостанция типа "Моторола" --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("Motorola") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("MotorolaF1","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaMenu","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaF2","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("MotorolaOff","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaUp","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaDown","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaLeft","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaRight","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaOn","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("Motorola1","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola2","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola3","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("Motorola4","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola5","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola6","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("Motorola7","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola8","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola9","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("Motorola*","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola0","Relay","Switch",{bass = true}) - self.Train:LoadSystem("Motorola#","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("MotorolaF4","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaF5","Relay","Switch",{bass = true}) - self.Train:LoadSystem("MotorolaF6","Relay","Switch",{bass = true}) - - self.TriggerNames = { - "MotorolaF1", - "MotorolaMenu", - "MotorolaF2", - - "MotorolaOff", - "MotorolaUp", - "MotorolaDown", - "MotorolaLeft", - "MotorolaRight", - "MotorolaOn", - - "Motorola1", - "Motorola2", - "Motorola3", - - "Motorola4", - "Motorola5", - "Motorola6", - - "Motorola7", - "Motorola8", - "Motorola9", - - "Motorola*", - "Motorola0", - "Motorola#", - - "MotorolaF4", - "MotorolaF5", - "MotorolaF6", - } - self.Enabled = true - self.Triggers = {} - self.Timer = CurTime() - self.State = 0 - self.RealState = 99 - self.RouteNumber = "" - self.FirstStation = "" - self.LastStation = "" - self.Bright = 1 - self.MenuChoosed = 0 - self.AnnMenuChoosed = 0 - self.Mode = 0 - self.Mode1 = 0 - -end -function TRAIN_SYSTEM:ClientInitialize() -end - -if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { "Press" } -end - -if CLIENT then - local gr_up = Material("vgui/gradient-d") - function TRAIN_SYSTEM:Motorola(train) - surface.SetAlphaMultiplier(1) - draw.NoTexture() - - if train:GetNW2Int("Motorola:State",-1) >= 0 then - surface.SetDrawColor(Color(20,20,20)) - surface.DrawRect(0,0,140,107) - else - surface.SetDrawColor(Color(0,0,0)) - surface.DrawRect(0,0,140,107) - end - --surface.SetAlphaMultiplier(train:GetNW2Int("Motorola:Bright",1)) - if train:GetNW2Int("Motorola:State",-1) == 1 then - surface.SetDrawColor(Color(255,255,255)) - surface.DrawRect(0,0,94,107) - surface.SetDrawColor(Color(139,200,235)) - surface.DrawRect(94,0,46,107) - Metrostroi.DrawLine(7, 2, 10, 5,Color(0,0,0),1) - Metrostroi.DrawLine(10, 1, 10, 9,Color(0,0,0),1) - Metrostroi.DrawLine(13, 2, 10, 5,Color(0,0,0),1) - - Metrostroi.DrawLine(16, 8, 16, 9,Color(060,240,106),1) - Metrostroi.DrawLine(18, 6, 18, 9,Color(060,240,106),1) - Metrostroi.DrawLine(20, 4, 20, 9,Color(060,240,106),1) - Metrostroi.DrawLine(22, 2, 22, 9,Color(060,240,106),1) - if not train:GetNW2Bool("Motorola:Menu",false) and train:GetNW2Int("Motorola:Mode",0) == 0 then - local RouteNumber = train:GetNW2Int("Motorola:RouteNumber",-1) > -1 and tostring(train:GetNW2Int("Motorola:RouteNumber")) or "N/A" - draw.SimpleText(train:GetWagonNumber().."/"..RouteNumber,"Metrostroi_PAM1_20",47, 30,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("Folder 1","Metrostroi_PAM1_20",47, 48,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("TRL "..(train:GetNW2Int("Motorola:Line",0) > 0 and train:GetNW2Int("Motorola:Line") or "N/A"),"Metrostroi_PAM1_20",47, 66,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(os.date("!%d-%m-%y %H.%M",os.time()),"Metrostroi_PAM15",47, 82,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("DURA","Metrostroi_PAM15",117, 23,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(94, 47, 140, 47,Color(89,150,175),1) - draw.SimpleText("Menu","Metrostroi_PAM15",117, 53,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - draw.SimpleText("Annou-","Metrostroi_PAM15",117, 77,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("nces ","Metrostroi_PAM15",117, 89,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(94, 61, 140, 61,Color(89,150,175),1) - elseif train:GetNW2Int("Motorola:Mode",0) == 0 then - Metrostroi.DrawRectOL(1,13*1, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Main Menu","Metrostroi_PAM15",46, 6+13*1,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --surface.DrawRect(0,13*1,94,13) - surface.SetDrawColor(Color(255,255,255)) - surface.DrawRect(94,47,46,14) - draw.SimpleText("Back","Metrostroi_PAM15",117, 23,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("Select","Metrostroi_PAM15",117, 83,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(103,178,209)) - surface.DrawRect(11,1+13*(2+train:GetNW2Int("Motorola:MenuChoosed",0)) , 83, 13) - - draw.SimpleText("UPO","Metrostroi_PAM15",13, 7+13*2,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Route number","Metrostroi_PAM15",13, 7+13*3,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Announces","Metrostroi_PAM15",13, 7+13*4,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("DURA","Metrostroi_PAM15",13, 7+13*5,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - surface.SetDrawColor(Color(255,255,255)) - if train:GetNW2Int("Motorola:Mode",0) == 2 then surface.DrawRect(94,47,46,60) else surface.DrawRect(94,47,46,14) end - draw.SimpleText("Back","Metrostroi_PAM15",117, 23,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Int("Motorola:Mode",0) == 1 then draw.SimpleText("OK","Metrostroi_PAM15",117, 83,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - if train:GetNW2Int("Motorola:Mode",0) == 1 then - local Line = train:GetNW2Int("Motorola:Line",-1) > -1 and tostring(train:GetNW2Int("Motorola:Line")) or "" - local FirstStation = train:GetNW2Int("Motorola:FirstStation",-1) > -1 and tostring(train:GetNW2Int("Motorola:FirstStation")) or "" - local LastStation = train:GetNW2Int("Motorola:LastStation",-1) > -1 and tostring(train:GetNW2Int("Motorola:LastStation")) or "" - - Metrostroi.DrawRectOL(1,13 + 32*0, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Line","Metrostroi_PAM15",46, 19+32*0,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Line,"Metrostroi_PAM1_20",5, 35 + 32*0,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Int("Motorola:Mode1",0) == 0 and CurTime()%0.5>0.25 then Metrostroi.DrawLine(5 +9*#Line, 40 + 32*0, 15+9*#Line, 40 + 32*0,Color(0,0,0),2) end - - Metrostroi.DrawRectOL(1,13 + 32*1, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("First station","Metrostroi_PAM15",46, 19+32*1,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(FirstStation,"Metrostroi_PAM1_20",5, 35 + 32*1,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Int("Motorola:Mode1",0) == 1 and CurTime()%0.5>0.25 then Metrostroi.DrawLine(5 +9*#FirstStation, 40 + 32*1, 15+9*#FirstStation, 40 + 32*1,Color(0,0,0),2) end - - Metrostroi.DrawRectOL(1,13 + 32*2, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Last station","Metrostroi_PAM15",46, 19+32*2,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(LastStation,"Metrostroi_PAM1_20",5, 35 + 32*2,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Int("Motorola:Mode1",0) == 2 and CurTime()%0.5>0.25 then Metrostroi.DrawLine(5 +9*#LastStation, 40 + 32*2, 15+9*#LastStation, 40 + 32*2,Color(0,0,0),2) end - end - - if train:GetNW2Int("Motorola:Mode",0) == 2 then - Metrostroi.DrawRectOL(1,13*1, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Route number","Metrostroi_PAM15",46, 6+13*1,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - local RouteNumber = train:GetNW2Int("Motorola:RouteNumber",-1) > -1 and tostring(train:GetNW2Int("Motorola:RouteNumber")) or "" - draw.SimpleText(RouteNumber,"Metrostroi_PAM1_20",5, 35,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if CurTime()%0.5>0.25 then Metrostroi.DrawLine(5 +9*#RouteNumber, 40, 15+9*#RouteNumber, 40,Color(0,0,0),2) end - end - if train:GetNW2Int("Motorola:Mode",0) == 3 then - Metrostroi.DrawRectOL(1,13*1, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Announces","Metrostroi_PAM15",46, 6+13*1,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --surface.DrawRect(0,13*1,94,13) - surface.SetDrawColor(Color(255,255,255)) - surface.DrawRect(94,47,46,14) - draw.SimpleText("Back","Metrostroi_PAM15",117, 23,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("Play","Metrostroi_PAM15",117, 83,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(103,178,209)) - surface.DrawRect(3,1+13*(2+train:GetNW2Int("Motorola:AnnMenuChoosed",0)) , 88, 13) - - draw.SimpleText("Go out from tr..","Metrostroi_PAM15",5, 7+13*2,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Go faster","Metrostroi_PAM15",5, 7+13*3,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Release doors","Metrostroi_PAM15",5, 7+13*4,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Train dep. soon","Metrostroi_PAM15",5, 7+13*5,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("Motorola:Mode",0) == 4 then - Metrostroi.DrawRectOL(1,13*1, 93, 13,Color(89,150,175),1,Color(139,200,235)) - draw.SimpleText("Dura control","Metrostroi_PAM15",46, 6+13*1,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --surface.DrawRect(0,13*1,94,13) - surface.SetDrawColor(Color(255,255,255)) - surface.DrawRect(94,47,46,14) - draw.SimpleText("Back","Metrostroi_PAM15",117, 23,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("Send","Metrostroi_PAM15",117, 78,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - local Sel = train:GetNW2Bool("Motorola:DURAs", false) - local DURA1 = train:GetNW2Bool("Motorola:DURA1", false) - local DURA2 = train:GetNW2Bool("Motorola:DURA2", false) - - if not Sel and DURA1 or Sel and DURA2 then - draw.SimpleText("Main","Metrostroi_PAM15",117, 88,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText("Alter","Metrostroi_PAM15",117, 88,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - draw.SimpleText("1","Metrostroi_PAM1_20",22, 40,Color(0,not Sel and 200 or 0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if not Sel and CurTime()%0.5>0.25 then Metrostroi.DrawLine(18, 47, 28, 47,Color(0,0,0),2) end - Metrostroi.DrawLine(15,50, 15, 70,Color(DURA1 and 0 or 200,0,0),2) - Metrostroi.DrawLine(15,71, 29, 50,Color(DURA1 and 200 or 0,0,0),2) - Metrostroi.DrawLine(15,70, 15, 90,Color(200,0,0),2) - - draw.SimpleText("2","Metrostroi_PAM1_20",67, 40,Color(0,Sel and 200 or 0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if Sel and CurTime()%0.5>0.25 then Metrostroi.DrawLine(63, 47, 73, 47,Color(0,0,0),2) end - Metrostroi.DrawLine(60,50, 60, 70,Color(DURA2 and 0 or 200,0,0),2) - Metrostroi.DrawLine(60,71, 74, 50,Color(DURA2 and 200 or 0,0,0),2) - Metrostroi.DrawLine(60,70, 60, 90,Color(200,0,0),2) - end - - end - end - surface.SetAlphaMultiplier(1-train:GetNW2Int("Motorola:Bright",1)) - surface.SetDrawColor(Color(20,20,20)) - surface.DrawRect(0,0,145,110) - surface.SetAlphaMultiplier(1) - end - function TRAIN_SYSTEM:ClientThink() - end -end - -function TRAIN_SYSTEM:UpdateUPO() - for k,v in pairs(self.Train.WagonList) do - if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,v == self.Train) end - v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end -end - -function TRAIN_SYSTEM:Trigger(name) - if self.Mode == 0 then - if self.Menu then - if name == "MotorolaF1" then - self.Menu = false - end - if name == "MotorolaUp" then - self.MenuChoosed = math.max(0,self.MenuChoosed - 1) - end - if name == "MotorolaDown" then - self.MenuChoosed = math.min(3,self.MenuChoosed + 1) - end - if name == "MotorolaF2" then - self.Mode = self.MenuChoosed + 1 - - if self.Mode == 3 then - self.AnnChoosed = 0 - end - end - local Char = tonumber(name:sub(9,9)) - if Char and Char > 0 and Char < 5 then - self.Mode = Char - end - else - if name == "MotorolaF2" then - self.Mode = 3 - self.AnnChoosed = 0 - end - if name == "MotorolaF1" then - self.Mode = 4 - end - if name == "MotorolaMenu" then - self.Menu = true - self.MenuChoosed = 0 - end - end - else - if self.Mode == 1 then - if name == "MotorolaUp" then - self.Mode1 = math.max(0,self.Mode1 - 1) - end - if name == "MotorolaDown" then - self.Mode1 = math.min(2,self.Mode1 + 1) - end - if name == "MotorolaLeft" then - if self.Mode1 == 1 then - self.FirstStation= self.FirstStation:sub(1,-2) - end - if self.Mode1 == 2 then - self.LastStation= self.LastStation:sub(1,-2) - end - self:UpdateUPO() - end - - local Char = tonumber(name:sub(9,9)) - if Char then - if self.Mode1 == 0 then - self.Line = Char - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = tostring(Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.WorkingStations[self.Line][Routelength]) - end - end - if self.Mode1 == 1 and #self.FirstStation < 3 and (Char ~= 0 or #self.FirstStation > 0) then - self.FirstStation= self.FirstStation..tostring(Char) - end - if self.Mode1 == 2 and #self.LastStation < 3 and (Char ~= 0 or #self.LastStation > 0) then - self.LastStation= self.LastStation..tostring(Char) - end - self:UpdateUPO() - end - if name == "MotorolaF2" then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] then - self.Error = not self.Error - else - if not self.Error then self.Mode = 0 else self.Error = false end - end - end - --[[ - if name == "MotorolaLeft" then - self.RouteNumber= self.RouteNumber:sub(1,-2) - self.Train:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end - local Char = tonumber(name:sub(9,9)) - if Char and self.RouteNumber and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - self.Train:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end]] - end - if self.Mode == 2 then - if name == "MotorolaLeft" then - self.RouteNumber= self.RouteNumber:sub(1,-2) - self.Train:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end - local Char = tonumber(name:sub(9,9)) - if Char and self.RouteNumber and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - self.Train:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end - end - - if self.Mode == 3 then - if name == "MotorolaUp" then - self.AnnMenuChoosed = math.max(0,self.AnnMenuChoosed - 1) - end - if name == "MotorolaDown" then - self.AnnMenuChoosed = math.min(3,self.AnnMenuChoosed + 1) - end - if name == "MotorolaF2" then - self.Mode = 0 - - self.Train.UPO:II(self.AnnMenuChoosed+1) - end - local Char = tonumber(name:sub(9,9)) - if Char and Char > 0 and Char < 5 and self.Train.R_UPO.Value > 0 then - self.Mode = 0 - self.Train.UPO:II(Char) - self.AnnChoosed = 0 - end - end - - if self.Mode == 4 then - if name == "MotorolaLeft" then - self.Train.DURA:TriggerInput("SelectChannel",1) - end - if name == "MotorolaRight" then - self.Train.DURA:TriggerInput("SelectChannel",2) - end - local Char = tonumber(name:sub(9,9)) - if Char and Char > 0 and Char < 3 then - self.Train.DURA:TriggerInput("SelectChannel",Char) - if self.Train.DURA.Channel == 1 then if self.Train.DURA.Channel1Alternate then self.Train.DURA:TriggerInput("SelectMain",1) else self.Train.DURA:TriggerInput("SelectAlternate",1) end end - if self.Train.DURA.Channel == 2 then if self.Train.DURA.Channel2Alternate then self.Train.DURA:TriggerInput("SelectMain",1) else self.Train.DURA:TriggerInput("SelectAlternate",1) end end - end - if name == "MotorolaF2" then - if self.Train.DURA.Channel == 1 then if self.Train.DURA.Channel1Alternate then self.Train.DURA:TriggerInput("SelectMain",1) else self.Train.DURA:TriggerInput("SelectAlternate",1) end end - if self.Train.DURA.Channel == 2 then if self.Train.DURA.Channel2Alternate then self.Train.DURA:TriggerInput("SelectMain",1) else self.Train.DURA:TriggerInput("SelectAlternate",1) end end - - end - end - - if name == "MotorolaF1" then - if not self.Error then self.Mode = 0 else self.Error = false end - end - end - if name == "MotorolaF6" then - self.Bright = self.Bright + 0.25 - if self.Bright > 1 then self.Bright = 0 end - end -end -function TRAIN_SYSTEM:GetTimer(val) - return self.TimerMod and (CurTime() - self.Timer) > val -end -function TRAIN_SYSTEM:SetTimer(mod) - if mod then - if self.TimerMod == mod then return end - self.TimerMod = mod - else - self.TimerMod = nil - end - self.Timer = CurTime() -end - -function TRAIN_SYSTEM:SetState(state,add,state9) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if state and self.State ~= state then - self.State = state - if state == 1 or state == 1.1 then - self.NextState = add - end - self:SetTimer() - elseif not state then - state = self.NextState - self.State = self.NextState - else - return - end - - if state == 1 then self.Bright = 1 end -end -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if Train.MotorolaOff.Value >0.5 and not self.OffTimer and not self.OnTimer then --self.VPA and - if self.Enabled then - self.OffTimer = CurTime() + 1 - else - self.Enabled = true - end - end - if self.OffTimer and (CurTime() - self.OffTimer) > 0 then - self.Enabled = false - end - if Train.MotorolaOff.Value <0.5 and self.OffTimer then - self.OffTimer = nil - end - if Train.Panel["V1"] < 0.5 or Train.VB.Value < 0.5 then self:SetState(-1) end - if not self.Enabled then self:SetState(-1) end - if self.Enabled and self.State == -1 and Train.Panel["V1"] > 0.5 and Train.VB.Value > 0.5 then self:SetState(0) end - - --self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) - --self.Train.UPO.Path = self.Train:ReadCell(49170) - --self.Train.UPO.Distance = math.min(9999,self.Train:ReadCell(49165) + (Train.Autodrive.Corrections[self.Train.UPO.Station] or 0)) - if Train.VB.Value > 0.5 and Train.Battery.Voltage > 55 and self.State > 0 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - if Train[v].Value > 0.5 then - self:Trigger(v) - end - --print(v,self.Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - - if self.State == 0 then - self:SetTimer(1) - if self:GetTimer(3) then - self:SetState(1) - end - end - if self.State ~= self.RealState then - self.RealState = self.State - self.TimeOverride = true - end - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 or self.TimeOverride then - self.TimeOverride = nil - --print(1) - self.Time = CurTime() - Train:SetNW2Int("Motorola:State",self.State) - Train:SetNW2Int("Motorola:Line",Train.UPO.Line) - Train:SetNW2Int("Motorola:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - Train:SetNW2Int("Motorola:Bright",self.Bright) - Train:SetNW2Bool("Motorola:Menu",self.Menu == true) - Train:SetNW2Int("Motorola:MenuChoosed",self.MenuChoosed) - Train:SetNW2Int("Motorola:Mode",self.Mode) - Train:SetNW2Bool("Motorola:Error",self.Error) - if self.Mode == 1 then - Train:SetNW2Int("Motorola:Mode1",self.Mode1) - Train:SetNW2Int("Motorola:FirstStation",tonumber(self.FirstStation ~= "" and self.FirstStation or -1)) - Train:SetNW2Int("Motorola:LastStation",tonumber(self.LastStation ~= "" and self.LastStation or -1)) - elseif self.Mode == 2 then - elseif self.Mode == 3 then - Train:SetNW2Int("Motorola:AnnMenuChoosed",self.AnnMenuChoosed) - elseif self.Mode == 4 then - Train:SetNW2Int("Motorola:DURAs",self.Train.DURA.Channel == 2) - Train:SetNW2Int("Motorola:DURA1",self.Train.DURA.Channel1Alternate) - Train:SetNW2Int("Motorola:DURA2",self.Train.DURA.Channel2Alternate) - - end - end - self.RouteNumber = string.gsub(Train.RouteNumber or "","^(0+)","") - self.Line = Train.UPO.Line - self.FirstStation = tostring(Train.UPO.FirstStation or "") - self.LastStation = tostring(Train.UPO.LastStation or "") - self.RealState = self.State -end diff --git a/lua/metrostroi/systems/_obsolete/sys_noars.lua b/lua/metrostroi/systems/_obsolete/sys_noars.lua deleted file mode 100644 index 747c8ea..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_noars.lua +++ /dev/null @@ -1,108 +0,0 @@ --------------------------------------------------------------------------------- --- АРС-АЛС --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("NoARS") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - - --self.Train:LoadSystem("UOS","Relay","Switch", {bass = true}) - --self.Train:LoadSystem("BPS","Relay","Switch",{ bass = true,normally_closed = true }) - -- ALS state - self.Signal80 = false - self.Signal70 = false - self.Signal60 = false - self.Signal40 = false - self.Signal0 = false - self.Special = false - self.NoFreq = true - self.RealNoFreq = true - - -- Internal state - self.Speed = 0 - self.SpeedLimit = 0 - self.NextLimit = 0 - self.Ring = false - self.Overspeed = false - - -- ARS wires - self["33D"] = 1 - self["33G"] = 0 - self["33Zh"] = 1--KAH - -- - self["2"] = 0 - self["20"] = 0 - self["29"] = 0 - -- - self["31"] = 0 - self["32"] = 0 - self["8"] =0 - - -- Lamps - ---self.LKT = false - self.LVD = false -end - -function TRAIN_SYSTEM:Outputs() - return { "2", "8", "20", "31", "32", "29", "33D", "33G", "33Zh", - "Speed", "Signal80","Signal70","Signal60","Signal40","Signal0","Special","NoFreq","RealNoFreq", - "SpeedLimit", "NextLimit","Ring","KVT","EnableARS","EnableALS","Signal", "UAVA"} -end - -function TRAIN_SYSTEM:Inputs() - return { "IgnoreThisARS","AttentionPedal","Ring" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end - -function TRAIN_SYSTEM:Think() - - if self.Train.RV_2.Value < 1 then self.Train.RV_2:TriggerInput("Set",1) - end - - - local Train = self.Train - local tbl = Train.SubwayTrain and Train.SubwayTrain.ALS - local haveautostop = tbl and tbl.HaveAutostop - local autostop = haveautostop and Train.SpeedSign > 0 and Train.Speed > 0.1 - if autostop then - local ars,arsback - self.Timer = self.Timer or CurTime() - if CurTime() - self.Timer > 1.00 then - self.Timer = CurTime() - -- Get train position - local pos = Metrostroi.TrainPositions[Train] --Metrostroi.GetPositionOnTrack(Train:GetPos(),Train:GetAngles()) --(this metod laggy for dir checks) - if pos then pos = pos[1] end - -- Get previous ARS section - if pos then - ars,arsback = Metrostroi.GetARSJoint(pos.node1,pos.x,Metrostroi.TrainDirections[Train], Train) - end - - if autostop then - if IsValid(arsback) then - if arsback == self.AutostopSignal then - local ply,mode = Train:GetDriverPly() - local nomsg = hook.Run("MetrostroiPassedRed",Train,ply,mode,arsback) - Train.Pneumatic:TriggerInput("Autostop",nomsg and 0 or 1) - if not nomsg and (not IsValid(Train.FrontTrain) or not IsValid(Train.RearTrain)) then - RunConsoleCommand("say",Format("%s Passed stop %s signal [%s]",Train:GetDriverName(),arsback.InvationSignal and "InvationSignal" or "",arsback.Name)) - end - self.AutostopSignal = nil - end - end - if IsValid(ars) then - if ars.AutoEnabled then - self.AutostopSignal = ars - elseif self.AutostopSignal == ars then - self.AutostopSignal = nil - end - end - end - end - end - self["33D"] = ((Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts) and 0 or 1 - if Train.UAVAContact and Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve then - self.UAVAContacts = nil - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_pa-ksd-m.lua b/lua/metrostroi/systems/_obsolete/sys_pa-ksd-m.lua deleted file mode 100644 index a0835c6..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_pa-ksd-m.lua +++ /dev/null @@ -1,2282 +0,0 @@ --------------------------------------------------------------------------------- --- ПА-КСД-М Поездная Аппаратура - Комплексная Система Движения - Модифицированная --- PA-KSD-M Train Equipment - Integrated Traffic System - Modified --------------------------------------------------------------------------------- --- Коды ошибок: --- 0x0000 - норма --- 0x0001 - --- Error codes: --- 0x0000 - Normal --- 0x0001 - Rear PA Unit Loading --- 0x9999 - Rear PA Unit Not Present --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PA-KSD-M") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.TriggerNames = { - "B7", - "B8", - "B9", - "BLeft", - "BRight", - "B4", - "B5", - "B6", - "BUp", - "B1", - "B2", - "B3", - "BDown", - "B0", - "BMinus", - "BPlus", - "BEnter", - "BEsc", - "BF", - "BM", - "BP", - } - self.Triggers = {} - self.Pass = "777" - self.EnteredPass = "" - self.Timer = CurTime() - self.Line = 1 - self.State = 0 - self.RealState = 99 - self.RouteNumber = "" - self.FirstStation = "" - self.LastStation = "" - self.AutodriveEnabled = false - self.KSZD = false - self.AutoTimer = false - self.MenuChoosed = 1 - self.State75 = 1 - self.Corrections = { - [110] = 1.50, - [111] = -0.10, - [113] = -0.05, - --[114] = -0.05, - [114] = -0.25, - [117] = -0.15, - [118] = 1.40, - [121] = -0.10, - [122] = -0.10, - [123] = 3.00, - [322] = 3.00, - } -end -function TRAIN_SYSTEM:ClientInitialize() - self.STR1r = {} - self.STR2r = {} - self.STR1x = 1 - self.STR2x = 1 - self.Positions = { - [-3] = "T2", - [-2] = "T1a", - [-1] = "T1", - [0] = "0", - [1] = "X1", - [2] = "X2", - [3] = "X3", - --[4] = "RR0", - [5] = "0ХТ", - [6] = "T2", - } - self.TypesRussian = { - [0] = "ЭП", - [1] = "КС", - [2] = "ОД", - [3] = "КВ", - [4] = "УА", - [5] = "ОС", - } - self.TypesEnglish = { - [0] = "EP", - [1] = "KS", - [2] = "OD", - [3] = "KV", - [4] = "UA", - [5] = "OS", - } - self.QuestionsRussian = { - [01] = "Подтверди проверку наката?", - [05] = "Подтверди движение с Vф=0?", - [06] = {"Подтверди изменение","станции оборота"}, - [07] = {"Подтверди режим","фиксации станции"}, - [08] = {"Следи за графиком","Ты будешь виноват в задержке"}, - [11] = "Перейти в режим АВ?", - [12] = "Перейти в режим КС?", - [13] = "Перейти в режим ОД?", - } - self.QuestionsEnglish = { - [01] = "Confirm overrun check?", - [05] = "Confirm drive if Vf=0?", - [06] = {"Confirm change", "station rotation"}, - [07] = {"Confirm lock", "station mode"}, - [08] = {"Mind the schedule", "Delays are your fault"}, - [11] = "Enter the AV mode?", - [12] = "Enter the KS mode?", - [13] = "Enter the OD mode?", - } - - local translate = file.Read("metrostroi_data/language/paksdm_en.json") - if translate then - self.i18n = util.JSONToTable(translate) - end - self.T = function (source) - if self.i18n and self.BlokEN and self.i18n[source] ~= nil then - return self.i18n[source] - else - if self.i18n and self.BlokEN then print("Need translation for \""..source.."\"") end - return source - end - end - self.BlokEN=false - self.Types=self.TypesRussian - self.Questions=self.QuestionsRussian - self.AutodriveEnabled = false - self.KSZD = false - self.AutoTimer = false -end - -if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { "Press" } -end - -if CLIENT then - local gr_up = Material("vgui/gradient-d") - function TRAIN_SYSTEM:PAKSDM(train) - local Announcer = self.Train.Announcer - surface.SetAlphaMultiplier(1) - draw.NoTexture() - - if self.BlokEN ~= train:GetNW2Bool("BlokEN") then - self.BlokEN = train:GetNW2Bool("BlokEN") - if self.BlokEN then - self.Types=self.TypesEnglish - self.Questions=self.QuestionsEnglish - else - self.Types=self.TypesRussian - self.Questions=self.QuestionsRussian - end - end - - if train:GetNW2Int("PAKSDM:State",-1) ~= -1 then - surface.SetDrawColor(Color(20,20,20)) - surface.DrawRect(0,0,512,425) - end - if train:GetNW2Int("PAKSDM:State",-1) == -2 then - if not self.BSODTimer then self.BSODTimer = CurTime() end - surface.SetDrawColor(Color(0,0,172)) - surface.DrawRect(0,0,512,425) - - if CurTime() - self.BSODTimer > 1/32*1 then draw.SimpleText("A problem has been detected and PA-KSD-M has been shut down to prevent damage","Metrostroi_PAMBSOD",5, 25,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 2/32*1 then draw.SimpleText("to your train.","Metrostroi_PAMBSOD",5, 35,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 4/32*1 then draw.SimpleText("The problem seems to be caused by the following file: CORE.SYS","Metrostroi_PAMBSOD",5, 55,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 6/32*1 then draw.SimpleText("VISITED_BY_KEK_POLICE_ERROR","Metrostroi_PAMBSOD",5, 75,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 7/32*1 then draw.SimpleText("If this is the first time you've seen this Stop error screen","Metrostroi_PAMBSOD",5, 95,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 8/32*1 then draw.SimpleText("restart your computer. If this screen appears again, follow","Metrostroi_PAMBSOD",5, 105,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 9/32*1 then draw.SimpleText("these steps:","Metrostroi_PAMBSOD",5, 115,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 11/32*1 then draw.SimpleText("Check to make sure any new hardware or software is properly installed.","Metrostroi_PAMBSOD",5, 135,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 12/32*1 then draw.SimpleText("If this is a new installation, ask your hardware or software manufacturer","Metrostroi_PAMBSOD",5, 145,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 13/32*1 then draw.SimpleText("for any Windows updates you might need.","Metrostroi_PAMBSOD",5, 155,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 15/32*1 then draw.SimpleText("If problems continue, disable or remove any newly installed hardware","Metrostroi_PAMBSOD",5, 175,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 16/32*1 then draw.SimpleText("or software. Disable BIOS memory options such as caching or shadowing.","Metrostroi_PAMBSOD",5, 185,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 17/32*1 then draw.SimpleText("If you need to use Safe Mode to remove or disable components, restart","Metrostroi_PAMBSOD",5, 195,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 18/32*1 then draw.SimpleText("your computer, press F8 to select Advanced Startup Options, and then","Metrostroi_PAMBSOD",5, 205,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 19/32*1 then draw.SimpleText("select Safe Mode.","Metrostroi_PAMBSOD",5, 215,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 21/32*1 then draw.SimpleText("Technical information:","Metrostroi_PAMBSOD",5, 235,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 22/32*1 then draw.SimpleText("*** STOP: 0x0000000A (0x0000000C, 0x00000002, 0x00000000, 3311BACE)","Metrostroi_PAMBSOD",5, 255,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - - if CurTime() - self.BSODTimer > 25/32*1 then draw.SimpleText("*** autodrive.sys - Address 3311BACE base at 5721DAC7, Date Stamp 533acb25","Metrostroi_PAMBSOD",5, 285,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 27/32*1 then draw.SimpleText("Beginning dump of physical memory.","Metrostroi_PAMBSOD",5, 305,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 28/32*1 then draw.SimpleText("Physical memory dump complete.","Metrostroi_PAMBSOD",5, 315,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 29/32*1 then draw.SimpleText("Contact your system administrator or technical support group for further","Metrostroi_PAMBSOD",5, 325,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 30/32*1 then draw.SimpleText("assistance.","Metrostroi_PAMBSOD",5, 335,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - else - if self.BSODTimer then self.BSODTimer = nil end - end - if train:GetNW2Int("PAKSDM:State",-1) == 0 then - if CurTime()%0.4 > 0.2 then draw.SimpleText("_","Metrostroi_PAM30",5, 0,Color(150,150,150,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_BOTTOM) end - end - if train:GetNW2Int("PAKSDM:State",-1) == 2 then - surface.SetDrawColor(Color(0,0,255)) - surface.SetMaterial( Material("vgui/gradient_down")) - surface.DrawTexturedRect(0,0,512,427) - - surface.SetDrawColor(Color(255,255,255)) - surface.SetMaterial( Material("vgui/gradient-d")) - surface.DrawTexturedRect(0,200,512,50) - surface.SetMaterial( Material("vgui/gradient-u")) - surface.DrawTexturedRect(0,250,512,50) - - surface.SetDrawColor(Color(0,255,0)) - surface.SetMaterial( Material("vgui/gradient-d")) - surface.DrawTexturedRect(0,200,512,227) - - draw.SimpleText(self.T("НИИ Фабрики SENT"),"Metrostroi_PAM30",256, 100,Color(0,155,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Терминал машиниста (ПА-КСД-М)"),"Metrostroi_PAM30",256, 130,Color(0,155,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - if train:GetNW2Int("PAKSDM:State",-1) == 3 then - self.ErrorCodes = { - [0x9999] = {"",self.T("Терминал машиниста (ПА-КСД-М)")}, - [0x0001] = {"",self.T("Хвостовая ПА загружается")}, - [0x0002] = {"",self.T("Хвостовая ПА в режиме настройки")}, - } - local ErrorCode = train:GetNW2Int("PAKSDM:ErrorCode",0) - local BackErrorCode = train:GetNW2Int("PAKSDM:BErrorCode",0) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(0,0,512,425) - - draw.SimpleText(self.T("НАЧАЛЬНЫЙ ТЕСТ ЗАКОНЧЕН"),"Metrostroi_PAM30",256, 30,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawRectOutline(10, 80, 492, 210,Color(20,20,20),3 ) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(17,70,180,20) - draw.SimpleText(self.T("РЕЗУЛЬТАТЫ"),"Metrostroi_PAM30",22, 80,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(self.T("Начальный тест"),"Metrostroi_PAM30",20, 125,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("норма"),"Metrostroi_PAM30",497, 125,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Начальная установка"),"Metrostroi_PAM30",20, 165,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("норма"),"Metrostroi_PAM30",497, 165,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Состояние \"хвостовой\" ПА"),"Metrostroi_PAM30",20, 205,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - if not train:GetNW2Bool("PAKSDM:BackPA") or BackErrorCode == 0x9999 then - draw.SimpleText(self.T("не норма"),"Metrostroi_PAM30",497, 205,Color(200,0,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif BackErrorCode == 0x0001 then - draw.SimpleText(self.T("загрузка"),"Metrostroi_PAM30",497, 205,Color(200,100,0),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("норма"),"Metrostroi_PAM30",497, 205,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - draw.SimpleText(self.T("Версия ПО БЦВМ = 0.8"),"Metrostroi_PAM30",80, 245,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if not train:GetNW2Bool("PAKSDM:BackPA") then - draw.SimpleText(self.T("Нет связи с хвостовым БЦВМ"),"Metrostroi_PAM30",256, 350,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - elseif BackErrorCode > 0 then - draw.SimpleText(self.ErrorCodes[BackErrorCode] and self.ErrorCodes[BackErrorCode][2] or (self.T("Код ошибки:")..BackErrorCode),"Metrostroi_PAM30",256, 350,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - elseif not train:GetNW2Bool("PAKSDM:RR",false) then - draw.SimpleText(self.T("ВСТАВЬТЕ РЕВЕРСИВНУЮ РУКОЯТКУ"),"Metrostroi_PAM30",256, 350,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Для перехода в начальное меню нажмите \"Enter\""),"Metrostroi_PAM22",10, 320,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOL(100, 345, 75, 30,Color(20,20,20),3 ,Color(230,230,2300)) - --draw.SimpleText(self.T("нажми Enter"),"Metrostroi_PAM30",10, 360,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER)T_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 340, 80, 40,Color(200,200,200),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 360,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Bool("PAKSDM:BackPAErrorNoAccepted") then - Metrostroi.DrawTextRectOL(102, 155, 308, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(102, 175, 308, 86,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Ошибка задней ПА"),"Metrostroi_PAM25",256, 164,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - draw.SimpleText(self.T("Задняя ПА сообщила об ошибке"),"Metrostroi_PAM22",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(166, 210, 180, 40,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Подтвердить"),"Metrostroi_PAM30",256, 230,train:GetNW2Bool("PAKSDM:NCCanc") and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - --draw.SimpleText(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)].."?","Metrostroi_PAM30",256, 180,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - end - if train:GetNW2Int("PAKSDM:State",-1) == 4 then - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(0,0,512,425) - --elf.Train:GetNW2Int("PAKSDM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAKSDM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 80, 492, 170,Color(20,20,20),3 ) - if train:GetNW2Int("PAKSDM:Pass",0) == -1 then - draw.SimpleText(self.T("ОШИБКА ДОСТУПА"),"Metrostroi_PAM30",256, 160,Color(200,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Введи код доступа в систему"),"Metrostroi_PAM30",256, 130,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Int("PAKSDM:Pass",0) > 0 then - surface.SetDrawColor(Color(240,240,240)) - --surface.DrawTexturedRect(241 - train:GetNW2Int("PAKSDM:Pass",0)*12, 165, 30 + train:GetNW2Int("PAKSDM:Pass",0)*24, 40) - Metrostroi.DrawTextRectOL(241 - train:GetNW2Int("PAKSDM:Pass",0)*12, 165, 30 + train:GetNW2Int("PAKSDM:Pass",0)*24, 40,Color(200,200,200),gr_up,2,Color(110,110,110)) - --Metrostroi.DrawRectOL(241 - train:GetNW2Int("PAKSDM:Pass",0)*12, 165, 30 + train:GetNW2Int("PAKSDM:Pass",0)*24, 40,Color(20,20,20),3,Color(230,230,2300)) - draw.SimpleText(string.rep("*",train:GetNW2Int("PAKSDM:Pass",0)),"Metrostroi_PAM80",256, 200,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - - draw.SimpleText(self.T("Для ввода нажми \"Enter\""),"Metrostroi_PAM30",256, 300,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 320, 80, 40,Color(200,200,200),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 340,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - end - if train:GetNW2Int("PAKSDM:State",-1) == 5 then - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(0,0,512,425) - - Metrostroi.DrawRectOutline(10, 30, 492, 333,Color(20,20,20),3) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(17,15,310,30) - draw.SimpleText(self.T("Депо. Начальное меню."),"Metrostroi_PAM30",20, 30,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --elf.Train:GetNW2Int("PAKSDM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAKSDM:Pass",0)) or "ACCESS ERROR" - - Metrostroi.DrawTextRectOL(40, 140, 432, 40,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(42,58,148) or Color(230,230,230),gr_up,3,Color(110,110,110)) - draw.SimpleText("1","Metrostroi_PAM30",60, 160,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(60,173,75,173,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(255,255,255) or Color(0,0,0),3) - draw.SimpleText(self.T("Выход на линию"),"Metrostroi_PAM30",100, 160,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - if train:GetNW2Bool("PAKSDM:Restart") then - Metrostroi.DrawTextRectOL(40, 190, 432, 40,train:GetNW2Int("PAKSDM:State5",1) == 2 and Color(42,58,148) or Color(230,230,230),gr_up,3,Color(110,110,110)) - draw.SimpleText("2","Metrostroi_PAM30",60, 210,train:GetNW2Int("PAKSDM:State5",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawLine(60,222,75,222,train:GetNW2Int("PAKSDM:State5",1) == 2 and Color(255,255,255) or Color(0,0,0),3) - draw.SimpleText(self.T("Перезапуск"),"Metrostroi_PAM30",100, 210,train:GetNW2Int("PAKSDM:State5",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - Metrostroi.DrawTextRectOL(40, 240, 432, 40,train:GetNW2Int("PAKSDM:State5",1) == 3 and Color(42,58,148) or Color(230,230,230),gr_up,3,Color(110,110,110)) - --draw.SimpleText("1","Metrostroi_PAM30",60, 260,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --Metrostroi.DrawLine(60,273,75,273,train:GetNW2Int("PAKSDM:State5",1) == 1 and Color(255,255,255) or Color(0,0,0),3) - draw.SimpleText(self.T("Назад"),"Metrostroi_PAM30",100, 260,train:GetNW2Int("PAKSDM:State5",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAKSDM:State",-1) == 6 then - local Line = self.Train:GetNW2Int("PAKSDM:Line",0) - local FirstStation = self.Train:GetNW2Int("PAKSDM:FirstStation",-1) - local LastStation = self.Train:GetNW2Int("PAKSDM:LastStation",-1) - local RouteNumber = self.Train:GetNW2Int("PAKSDM:RouteNumber",-1) - local tbl = Metrostroi.WorkingStations - Metrostroi.DrawTextRectOL(40, 40, 432, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(40, 70, 432, 315,Color(110,110,110),1,Color(200,200,200)) - Metrostroi.DrawRectOutline(50, 90, 412, 275,Color(110,110,110),2) - draw.SimpleText(self.T("Начальные данные"),"Metrostroi_PAM25",256, 53,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(170,80,172,20) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM30",256, 90,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM22",60, 130,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 115, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 1 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if Line > -1 then draw.SimpleText(Line,"Metrostroi_PAM30",380,130,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Начальная станция"),"Metrostroi_PAM22",60, 162,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 147, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 2 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if FirstStation > -1 then draw.SimpleText(FirstStation,"Metrostroi_PAM30",380,163,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Конечная станция"),"Metrostroi_PAM22",60, 194,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 179, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 3 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if LastStation > -1 then draw.SimpleText(LastStation,"Metrostroi_PAM30",380,195,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Маршрут"),"Metrostroi_PAM22",60, 226,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 211, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 4 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if RouteNumber > -1 then draw.SimpleText(RouteNumber,"Metrostroi_PAM30",380,225,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - - Metrostroi.DrawTextRectOL(150, 330, 100, 30,Color(230,230,230),gr_up,1,Color(110,110,110)) - draw.SimpleText(self.T("Ввод"),"Metrostroi_PAM30",200, 344,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(260, 330, 100, 30,Color(230,230,230),gr_up,1,Color(110,110,110)) - draw.SimpleText(self.T("Назад"),"Metrostroi_PAM30",310, 344,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Int("PAKSDM:State6",1) == 2 and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(FirstStation) or FirstStation == -1) then - i = i + 1 - if i > 10 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(310, 177, 200, -18 + i*18,Color(110,110,110),1,Color(250,250,250) ) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(FirstStation) or FirstStation == -1) then - if i > 10 then break end - draw.SimpleText(v,"Metrostroi_PAM1_20",311, 167+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1]:sub(1,19),"Metrostroi_PAM1_20",345, 167+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - i = i + 1 - end - end - --Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(20,20,20),3 ) - end - end - if train:GetNW2Int("PAKSDM:State6",1) == 3 and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - i = i + 1 - if i > 10 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(310, 207, 200, -18 + i*18,Color(110,110,110),1,Color(250,250,250) ) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - if i > 10 then break end - draw.SimpleText(v,"Metrostroi_PAM1_20",311, 197+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1]:sub(1,19),"Metrostroi_PAM1_20",345, 197+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - i = i + 1 - end - end - --Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(20,20,20),3 ) - end - end - if train:GetNW2Bool("PAKSDM:State6Error",false) then - Metrostroi.DrawTextRectOL(106, 125, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 145, 300, 136,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Ошибка"),"Metrostroi_PAM25",256, 135,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 160,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 220, 80, 40,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - if train:GetNW2Int("PAKSDM:State",-1) == 7 then - local Line = self.Train:GetNW2Int("PAKSDM:Line",0) - local FirstStation = self.Train:GetNW2Int("PAKSDM:FirstStation",-1) - local LastStation = self.Train:GetNW2Int("PAKSDM:LastStation",-1) - local RouteNumber = self.Train:GetNW2Int("PAKSDM:RouteNumber",-1) - local tbl = Metrostroi.WorkingStations - Metrostroi.DrawTextRectOL(40, 40, 432, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(40, 70, 432, 315,Color(110,110,110),1,Color(200,200,200)) - Metrostroi.DrawRectOutline(50, 90, 412, 275,Color(110,110,110),2) - draw.SimpleText(self.T("Начальные данные"),"Metrostroi_PAM25",256, 53,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(170,80,172,20) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM30",256, 90,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM22",60, 130,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 115, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 1 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if Line > -1 then draw.SimpleText(Line,"Metrostroi_PAM30",380,130,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Конечная станция"),"Metrostroi_PAM22",60, 162,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 147, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 2 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if LastStation > -1 then draw.SimpleText(LastStation,"Metrostroi_PAM30",380,163,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Маршрут"),"Metrostroi_PAM22",60, 194,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(310, 179, 140, 30,train:GetNW2Int("PAKSDM:State6",1) == 3 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if RouteNumber > -1 then draw.SimpleText(RouteNumber,"Metrostroi_PAM30",380,195,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - - Metrostroi.DrawTextRectOL(150, 330, 100, 30,Color(230,230,230),gr_up,1,Color(110,110,110)) - draw.SimpleText(self.T("Ввод"),"Metrostroi_PAM30",200, 344,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(260, 330, 100, 30,Color(230,230,230),gr_up,1,Color(110,110,110)) - draw.SimpleText(self.T("Назад"),"Metrostroi_PAM30",310, 344,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - if train:GetNW2Int("PAKSDM:State6",1) == 2 and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - i = i + 1 - if i > 10 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(310, 177, 200, -18 + i*18,Color(110,110,110),1,Color(250,250,250) ) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - if i > 10 then break end - draw.SimpleText(v,"Metrostroi_PAM1_20",311, 167+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1]:sub(1,19),"Metrostroi_PAM1_20",345, 167+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - i = i + 1 - end - end - --Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(20,20,20),3 ) - end - end - if train:GetNW2Bool("PAKSDM:State6Error",false) then - Metrostroi.DrawTextRectOL(106, 125, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 145, 300, 136,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Ошибка"),"Metrostroi_PAM25",256, 135,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 160,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 220, 80, 40,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - if train:GetNW2Int("PAKSDM:State",-1) == 8 then - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(0,0,512,425) - draw.SimpleText(self.T("Проверка состава разрешена"),"Metrostroi_PAM1_25",256, 180,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Для перехода в рабочий режим нажмите"),"Metrostroi_PAM1_25",256, 210,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 230, 80, 40,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 250,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - end - if train:GetNW2Int("PAKSDM:State",-1) == 9 then - local Line = train:GetNW2Int("PAKSDM:Line",0) - local Path = train:GetNW2Int("PAKSDM:Path",0) - local Station = tonumber(train:GetNW2Int("PAKSDM:Station",0)) - local LastStation = tonumber(train:GetNW2Int("PAKSDM:LastStation",-1)) - local S = Format("%.2f",train:GetNW2Float("PAKSDM:Distance",0)) - local speed = math.floor(self.Train:GetPackedRatio(3)*100.0) - local spd = self.Train:GetNW2Bool("PAKSDM:UOS", false) and 35 or self.Train:GetNW2Bool("PAKSDM:VRD",false) and 20 or self.Train:GetPackedBool(46) and 80 or self.Train:GetPackedBool(45) and 70 or self.Train:GetPackedBool(44) and 60 or self.Train:GetPackedBool(43) and 40 or self.Train:GetPackedBool(42) and 0 or "НЧ" - --Metrostroi.DrawRectOutline(10, 6, 100, 40,Color(110,172,95),3 ) - local date = os.date("!*t",os_time) - draw.SimpleText(Format("%02d.%02d.%04d",date.day,date.month,date.year),"Metrostroi_PAM25",59, 10,Color(200,200,200),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%02d:%02d:%02d",date.hour,date.min,date.sec),"Metrostroi_PAM25",59, 30,Color(200,200,200),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Линия ")..Line,"Metrostroi_PAM25",150, 15,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if Station > 0 and Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(self.T("до ")..Metrostroi.AnnouncerData[LastStation][1],"Metrostroi_PAM20",508, 10,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - if Metrostroi.AnnouncerData[Station] then draw.SimpleText(Metrostroi.AnnouncerData[Station][1],"Metrostroi_PAM20",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) end - elseif Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(self.T("выход на линию"),"Metrostroi_PAM20",508, 13,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[LastStation][1],"Metrostroi_PAM20",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("ошибка в системе ПА"),"Metrostroi_PAM20",508, 13,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тек:")..Station..self.T(", Кон:")..LastStation,"Metrostroi_PAM20",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - if Path and Path > 0 then - draw.SimpleText(self.T("Путь ")..Path,"Metrostroi_PAM25",260, 15,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Путь N/A"),"Metrostroi_PAM25",260, 15,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - Metrostroi.DrawRectOutline(5, 95, 410, 30,Color(40,38,39), 5) - - surface.SetDrawColor(Color(5,30,17)) - surface.DrawRect(9,99,401,21) - - surface.SetDrawColor(Color(110,172,95)) - surface.DrawRect(9,99,401*self.Train:GetPackedRatio(3),21) - - Metrostroi.DrawLine(10 + (spd == "НЧ" and 20 or spd)*4-2, 93, 10 + (spd == "НЧ" and 20 or spd)*4-2, 125,(spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0), 4) - surface.SetDrawColor((spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0)) - - draw.SimpleText((spd == "НЧ" and 20 or spd),"Metrostroi_PAM30",10 + (spd == "НЧ" and 20 or spd)*4, 135,(spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - draw.SimpleText(speed,"Metrostroi_PAM50",480, 85,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(spd,"Metrostroi_PAM50",480, 120,(spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - --Metrostroi.DrawRectOutline(5, 155, 60, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(5, 185, 60, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(5, 215, 60, 30,Color(40,38,39), 1) - --RunConsoleCommand("say",tostring(train:GetPackedBool("PAKSDM:KS"))) - draw.SimpleText(self.T("1 АВ"),"Metrostroi_PAM30",6, 170,train:GetNW2Bool("PAKSDM:AV",false) and Color(38,81,109) or Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("2 КС"),"Metrostroi_PAM30",6, 200,train:GetNW2Bool("PAKSDM:KS",false) and Color(38,81,109) or Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("3 ОС"),"Metrostroi_PAM30",6, 230,train:GetNW2Bool("PAKSDM:OD",false) and Color(38,81,109) or Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - --Metrostroi.DrawRectOutline(429, 155, 80, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(429, 185, 80, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(429, 215, 80, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(429, 245, 80, 30,Color(40,38,39), 1) - --Metrostroi.DrawRectOutline(429, 275, 80, 30,Color(40,38,39), 1) - draw.SimpleText(self.T("4 СтП"),"Metrostroi_PAM30",430, 170,Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("6 Пож"),"Metrostroi_PAM30",430, 200,Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("7 Лин"),"Metrostroi_PAM30",430, 230,Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("8 Отм"),"Metrostroi_PAM30",430, 260,Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("9 ФСт"),"Metrostroi_PAM30",430, 290,Color(200,200,200),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - Metrostroi.DrawLine(10 + (spd == "НЧ" and 20 or spd)*4, 93, 10 + (spd == "НЧ" and 20 or spd)*4, 125,(spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0), 3) - if train:GetNW2Bool("PAKSDM:Arrived",false) then - draw.SimpleText(self.T("Tпр=00:00:00"),"Metrostroi_PAM28",6, 340,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Нагон="),"Metrostroi_PAM28",170, 340,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тост = ")..math.max(-99,train:GetNW2Int("PAKSDM:BoardTime",0)),"Metrostroi_PAM28",290, 340,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("S= ")..S..self.T("м"),"Metrostroi_PAM28",506, 340,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("РЦ= ")..train:GetNW2String("PAKSDM:SName",""),"Metrostroi_PAM30",6, 340,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format(self.T("Уклон= %.2f"),train:GetNW2Int("PAKSDM:Uklon",0)/100),"Metrostroi_PAM30",180, 340,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("S= ")..S..self.T("м"),"Metrostroi_PAM30",506, 340,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - surface.SetDrawColor(Color(38,81,109)) - surface.DrawRect(0,360,120,52) - draw.SimpleText(self.T("F Меню"),"Metrostroi_PAM25",70, 375,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("машиниста"),"Metrostroi_PAM25",60, 395,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - surface.DrawRect(392,360,120,52) - draw.SimpleText(self.T("M Инж-ное"),"Metrostroi_PAM25",452, 375,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("меню"),"Metrostroi_PAM25",452, 395,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - surface.SetDrawColor(Color(180,180,180)) - surface.DrawRect(121,360,100,26) - surface.DrawRect(222,360,57,26) - surface.DrawRect(280,360,60,26) - surface.DrawRect(341,360,50,26) - draw.SimpleText(self.Types[train:GetNW2Int("PAKSDM:Type",1)].."="..self.Positions[train:GetNW2Int("PAKSDM:KV",1)],"Metrostroi_PAM30",171, 371,Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Bool("PAKSDM:VZ1",false) or train:GetNW2Bool("PAKSDM:VZ2",false) then - draw.SimpleText(train:GetNW2Bool("PAKSDM:VZ1",false) and (train:GetNW2Bool("PAKSDM:VZ2",false) and self.T("В1 2") or self.T("В1")) or self.T("В 2"),"Metrostroi_PAM30",224, 371,Color(20,20,20),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - draw.SimpleText(self.T("ЛПТ"),"Metrostroi_PAM30",310, 371,train:GetPackedBool("PN") and Color(20,20,20) or Color(200,200,200),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - -- - draw.SimpleText(self.T("КД"),"Metrostroi_PAM30",366, 371,train:GetPackedBool(40) and Color(20,20,20) or Color(200,200,200),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - surface.DrawRect(121,387,80,26) - surface.DrawRect(321,387,70,26) - draw.SimpleText(self.T("АРС"),"Metrostroi_PAM30",161, 400,train:GetPackedBool(48) and Color(200,0,0) or Color(20,20,20) ,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --[[ - surface.SetDrawColor(Color(200,200,200)) - if not train:GetNW2Bool("PAKSDM:RR",false) then - surface.DrawRect(6,295,490,21) - draw.SimpleText(self.T("Установи РР"),"Metrostroi_PAM30",251, 305,Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - surface.DrawRect(6,320,100,24) surface.DrawRect(171,320,36,24) surface.DrawRect(212,320,54,24) --surface.DrawRect(266,320,40,20) - draw.SimpleText(self.Types[train:GetNW2Bool("PAKSDM:Type",false)].."="..self.Positions[train:GetNW2Bool("PAKSDM:KV",false)],"Metrostroi_PAM30",56, 330,Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Bool("PAKSDM:VZ1",false) or train:GetNW2Bool("PAKSDM:VZ2",false) then - surface.DrawRect(111,320,55,24) - draw.SimpleText(train:GetNW2Bool("PAKSDM:VZ1",false) and (train:GetNW2Bool("PAKSDM:VZ2",false) and "В12" or "В1") or "В2","Metrostroi_PAM30",111 + 55/2, 330,Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - draw.SimpleText(self.T("КД"),"Metrostroi_PAM30",171+35/2, 330,train:GetPackedBool(40) and Color(20,20,20) or Color(200,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("ЛПТ"),"Metrostroi_PAM30",239, 330,train:GetPackedBool("PN") and Color(200,0,0) or Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.DrawRect(6,355,100,21)-- surface.DrawRect(111,355,100,20) surface.DrawRect(215,355,50,20) - draw.SimpleText(self.T("КВ АРС"),"Metrostroi_PAM30",56, 365,train:GetPackedBool(48) and Color(200,0,0) or Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - ]] - --[[ - Metrostroi.DrawRectOutline(370, 320, 130, 60,Color(110,172,95),3 ) - draw.SimpleText(self.T("Тпр. ")..(self.Train:GetPackedRatio(3)*100.0 > 0.25 and math.min(999,math.floor(S/(speed*1000/3600))) or "inf"),"Metrostroi_PAM20",375, 330,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.T("На ="),"Metrostroi_PAM20",375, 347.5,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тост = ")..train:GetNW2Int("PAKSDM:BoardTime",0),"Metrostroi_PAM20",375, 365,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - ]] - if train:GetNW2Bool("PAKSDM:Arrived",false) then - if Station > 0 then - if Metrostroi.AnnouncerData[Station] then - draw.SimpleText(Metrostroi.AnnouncerData[Station][1],"Metrostroi_PAM30",256, 200,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Path .. self.T(" путь"),"Metrostroi_PAM30",256, 225,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - --draw.SimpleText(self.T("S= ")..S..self.T("м"),"Metrostroi_PAM30",256, 200,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.T("S= ")..S..self.T("м"),"Metrostroi_PAM30",256, 250,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAKSDM:Menu",0) > 0 then - Metrostroi.DrawRectOL(10, 140, 492, 180,Color(110,110,110),1,Color(200,200,200)) - Metrostroi.DrawTextRectOL(10, 140, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("1","Metrostroi_PAM30",30, 162,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Проверка"),"Metrostroi_PAM22",92, 154,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("наката"),"Metrostroi_PAM22",92, 170,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(174, 140, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 2 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("2","Metrostroi_PAM30",194, 162,train:GetNW2Int("PAKSDM:Menu",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение"),"Metrostroi_PAM22",256, 154,train:GetNW2Int("PAKSDM:Menu",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(train:GetNW2Bool("PAKSDM:KD") and self.T("с КД") or self.T("без КД"),"Metrostroi_PAM22",256, 170,train:GetNW2Int("PAKSDM:Menu",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(338, 140, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 3 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("3","Metrostroi_PAM30",358, 162,train:GetNW2Int("PAKSDM:Menu",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Смена"),"Metrostroi_PAM22",420, 154,train:GetNW2Int("PAKSDM:Menu",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("настроек"),"Metrostroi_PAM22",420, 170,train:GetNW2Int("PAKSDM:Menu",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(10, 185, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 4 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("4","Metrostroi_PAM30",30, 207,train:GetNW2Int("PAKSDM:Menu",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение"),"Metrostroi_PAM22",92, 199,train:GetNW2Int("PAKSDM:Menu",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("транзитом"),"Metrostroi_PAM22",92, 215,train:GetNW2Int("PAKSDM:Menu",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(174, 185, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 5 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("5","Metrostroi_PAM30",194, 207,train:GetNW2Int("PAKSDM:Menu",1) == 5 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение"),"Metrostroi_PAM22",256, 199,train:GetNW2Int("PAKSDM:Menu",1) == 5 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("при Vф=0"),"Metrostroi_PAM22",256, 215,train:GetNW2Int("PAKSDM:Menu",1) == 5 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(338, 185, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 6 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("6","Metrostroi_PAM30",358, 207,train:GetNW2Int("PAKSDM:Menu",1) == 6 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Зонный"),"Metrostroi_PAM22",420, 199,train:GetNW2Int("PAKSDM:Menu",1) == 6 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("оборот"),"Metrostroi_PAM22",420, 215,train:GetNW2Int("PAKSDM:Menu",1) == 6 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(10, 230, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) ==7 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("7","Metrostroi_PAM30",30, 252,train:GetNW2Int("PAKSDM:Menu",1) == 7 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Фиксация"),"Metrostroi_PAM22",92, 244,train:GetNW2Int("PAKSDM:Menu",1) == 7 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("станции"),"Metrostroi_PAM22",92, 260,train:GetNW2Int("PAKSDM:Menu",1) == 7 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(174, 230, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) ==8 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("8","Metrostroi_PAM30",194, 252,train:GetNW2Int("PAKSDM:Menu",1) == 8 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("ИГРУФКИ"),"Metrostroi_PAM22",256, 252,train:GetNW2Int("PAKSDM:Menu",1) == 8 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --draw.SimpleText(train:GetNW2Bool("PAKSDM:KD") and self.T("с КД") or self.T("без КД"),"Metrostroi_PAM22",256, 170,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --[[ - Metrostroi.DrawTextRectOL(338, 230, 164, 45,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("9","Metrostroi_PAM30",358, 162,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Смена"),"Metrostroi_PAM22",420, 154,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("настроек"),"Metrostroi_PAM22",420, 170,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(10, 275, 164, 45,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("1","Metrostroi_PAM30",30, 162,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Проверка"),"Metrostroi_PAM22",92, 154,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("наката"),"Metrostroi_PAM22",92, 170,train:GetNW2Int("PAKSDM:Menu",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(174, 230, 164, 45,Color(230,230,230),gr_up,2,Color(110,110,110)) - ]] - Metrostroi.DrawTextRectOL(338, 275, 164, 45,train:GetNW2Int("PAKSDM:Menu",1) == 12 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Закрыть"),"Metrostroi_PAM22",420, 297,train:GetNW2Int("PAKSDM:Menu",1) == 12 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --[[ - Metrostroi.DrawRectOutline(50, 150, 385, 24*8,Color(160,160,160), 3) - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(51,151,382,24*8-4) - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(51,127 + train:GetNW2Int("PAKSDM:Menu",0)*24,382,23) - - for i = 1,7 do - Metrostroi.DrawLine(50,150+24*i,435,150+24*i,Color(160,160,160),3) - end - draw.SimpleText(self.T("Проверка наката"),"Metrostroi_PAM22",256, 162,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(train:GetNW2Bool("PAKSDM:KD") and self.T("Движение с КД") or self.T("Движение без КД"),"Metrostroi_PAM22",256, 186,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Смена настроек"),"Metrostroi_PAM22",256, 210,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение транзитом"),"Metrostroi_PAM22",256, 234,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение с Vд = 0"),"Metrostroi_PAM22",256, 258,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Зонный оборот"),"Metrostroi_PAM22",256, 282,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Фиксация станции"),"Metrostroi_PAM22",256, 306,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Station mode"),"Metrostroi_PAM22",256, 330,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - ]] - end - if train:GetNW2Int("PAKSDM:Ann",0) > 0 then - Metrostroi.DrawRectOL(10, 140, 492, 180,Color(110,110,110),1,Color(200,200,200)) - Metrostroi.DrawTextRectOL(10, 140, 164, 45,train:GetNW2Int("PAKSDM:Ann",1) == 1 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("1","Metrostroi_PAM30",30, 162,train:GetNW2Int("PAKSDM:Ann",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Просьба"),"Metrostroi_PAM22",92, 150,train:GetNW2Int("PAKSDM:Ann",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("выйти"),"Metrostroi_PAM22",92, 162,train:GetNW2Int("PAKSDM:Ann",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("из вагонов"),"Metrostroi_PAM22",92, 174,train:GetNW2Int("PAKSDM:Ann",1) == 1 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(174, 140, 164, 45,train:GetNW2Int("PAKSDM:Ann",1) == 2 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("2","Metrostroi_PAM30",194, 162,train:GetNW2Int("PAKSDM:Ann",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Заходите"),"Metrostroi_PAM22",266, 150,train:GetNW2Int("PAKSDM:Ann",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("и выходите"),"Metrostroi_PAM22",266, 162,train:GetNW2Int("PAKSDM:Ann",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("быстрее"),"Metrostroi_PAM22",266, 174,train:GetNW2Int("PAKSDM:Ann",1) == 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(338, 140, 164, 45,train:GetNW2Int("PAKSDM:Ann",1) == 3 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("3","Metrostroi_PAM30",358, 162,train:GetNW2Int("PAKSDM:Ann",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Отпустите"),"Metrostroi_PAM22",440, 150,train:GetNW2Int("PAKSDM:Ann",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("пожалуйста"),"Metrostroi_PAM22",440, 162,train:GetNW2Int("PAKSDM:Ann",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("двери"),"Metrostroi_PAM22",440, 174,train:GetNW2Int("PAKSDM:Ann",1) == 3 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(10, 185, 164, 45,train:GetNW2Int("PAKSDM:Ann",1) == 4 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText("4","Metrostroi_PAM30",30, 207,train:GetNW2Int("PAKSDM:Ann",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Поезд"),"Metrostroi_PAM22",92, 195,train:GetNW2Int("PAKSDM:Ann",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("скоро"),"Metrostroi_PAM22",92, 207,train:GetNW2Int("PAKSDM:Ann",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("отправится"),"Metrostroi_PAM22",92, 219,train:GetNW2Int("PAKSDM:Ann",1) == 4 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawTextRectOL(338, 275, 164, 45,train:GetNW2Int("PAKSDM:Ann",1) == 5 and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Закрыть"),"Metrostroi_PAM22",420, 297,train:GetNW2Int("PAKSDM:Ann",1) == 5 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAKSDM:NeedConfirm",0) > 0 then - Metrostroi.DrawTextRectOL(106, 155, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 175, 300, 86,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Подтверждение"),"Metrostroi_PAM25",256, 164,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - if type(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)]) == "table" then - draw.SimpleText(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)][1],"Metrostroi_PAM22",256, 182,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)][2],"Metrostroi_PAM22",256, 198,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)],"Metrostroi_PAM22",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - --draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(111, 210, 140, 40,train:GetNW2Bool("PAKSDM:NCOk",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Да - Enter"),"Metrostroi_PAM30",181, 230,train:GetNW2Bool("PAKSDM:NCOk",false) and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(261, 210, 140, 40,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Нет - Esc"),"Metrostroi_PAM30",331, 230,train:GetNW2Bool("PAKSDM:NCCanc") and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - --draw.SimpleText(self.Questions[train:GetNW2Int("PAKSDM:NeedConfirm",0)].."?","Metrostroi_PAM30",256, 180,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Bool("PAKSDM:Nakat") then - Metrostroi.DrawTextRectOL(106, 155, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 175, 300, 100,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Проверка наката"),"Metrostroi_PAM25",256, 164,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Расстояние: "),"Metrostroi_PAM30",111, 195,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.2f",self.Train:GetNW2Float("PAKSDM:Meters",0)),"Metrostroi_PAM30",300, 195,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Направление: "),"Metrostroi_PAM30",111, 225,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.Train:GetNW2Bool("PAKSDM:Sign",false) and self.T("Назад") or self.T("Вперёд"),"Metrostroi_PAM30",300, 225,self.Train:GetNW2Bool("PAKSDM:Sign",false) and Color(200,0,0) or Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(190-20, 240, 132+40, 30,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Отмена - Esc"),"Metrostroi_PAM30",256, 255,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Bool("PAKSDM:SetupError",false) then - Metrostroi.DrawTextRectOL(106, 125, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 145, 300, 136,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Критическая ошибка"),"Metrostroi_PAM25",256, 135,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - draw.SimpleText(self.T("Неообходимо"),"Metrostroi_PAM30",256, 160,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("уточнение"),"Metrostroi_PAM30",256, 180,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("данных"),"Metrostroi_PAM30",256, 200,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 220, 80, 40,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - if train:GetNW2Int("PAKSDM:Fix",-1) > -1 or train:GetNW2Int("PAKSDM:Zon",-1) > -1 then - local Line = train:GetNW2Int("PAKSDM:FLine",0) - local Station = train:GetNW2Int("PAKSDM:FStation",0) - local choosed = train:GetNW2Int("PAKSDM:Fix",-1) > -1 and train:GetNW2Int("PAKSDM:Fix",0) or train:GetNW2Int("PAKSDM:Zon",0) - Metrostroi.DrawTextRectOL(40, 140, 432, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(40, 170, 432, 160,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(train:GetNW2Int("PAKSDM:Fix",-1) > -1 and self.T("Фиксация станции") or self.T("Зонный оборот"),"Metrostroi_PAM25",256, 153,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(170,180,172,20) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM22",60, 220,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(280, 215, 170, 20,choosed == 0 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - if Line > -1 then draw.SimpleText(Line,"Metrostroi_PAM1_25",365,225,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - - draw.SimpleText(self.T("Код станции"),"Metrostroi_PAM22",60, 243,Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(280, 237, 170, 20,choosed == 1 and Color(144,255,237) or Color(230,230,230),gr_up,1,Color(110,110,110)) - - local tbl = Metrostroi.WorkingStations - if Station > -1 then - draw.SimpleText(Station,"Metrostroi_PAM22",365,247,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if tbl[Line] and tbl[Line][Station] and Metrostroi.AnnouncerData[Station] then - draw.SimpleText(Metrostroi.AnnouncerData[Station][1],"Metrostroi_PAM22",256,270,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - Metrostroi.DrawTextRectOL(100, 286, 100, 30,train:GetNW2Bool("PAKSDM:NCOk",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Ввод"),"Metrostroi_PAM30",150, 300,train:GetNW2Bool("PAKSDM:NCOk",false) and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(294, 286, 115, 30,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Закрыть"),"Metrostroi_PAM30",349, 300,train:GetNW2Bool("PAKSDM:NCCanc",false) and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if choosed == 1 and tbl[Line] and not Metrostroi.AnnouncerData[Station] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(Station) or Station == -1) then - i = i + 1 - if i > 8 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(280, 257, 200, -18 + i*18,Color(110,110,110),1,Color(250,250,250) ) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(Station) or Station == -1) then - if i > 8 then break end - draw.SimpleText(v,"Metrostroi_PAM1_20",281, 247+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1]:sub(1,19),"Metrostroi_PAM1_20",315, 247+i*18,Color(0,0,0,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - i = i + 1 - end - end - --Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(20,20,20),3 ) - end - end - if train:GetNW2Bool("PAKSDM:State6Error",false) then - Metrostroi.DrawTextRectOL(106, 125, 300, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(106, 145, 300, 136,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("Ошибка"),"Metrostroi_PAM25",256, 135,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(106, 125, 300, 150,Color(20,20,20),3 ) - --surface.SetDrawColor(Color(200,200,200)) - --surface.DrawRect(108, 127, 295, 146 ) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 160,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 190,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --Metrostroi.DrawRectOutline(190, 220, 132, 40,Color(20,20,20),3 ) - --draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawTextRectOL(216, 220, 80, 40,Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Enter"),"Metrostroi_PAM30",256, 240,Color(0,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - end - if train:GetNW2Bool("PAKSDM:2048") then - Metrostroi.DrawTextRectOL(156, 100, 200, 30,Color(42,58,148),gr_up,1,Color(110,110,110)) - Metrostroi.DrawRectOL(156, 130, 200, 200,Color(110,110,110),1,Color(200,200,200)) - draw.SimpleText(self.T("2048 Счёт:")..train:GetNW2Int("PAKSDM:2048Score",0),"Metrostroi_PAM25",166, 113,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - self.g2048col = { - Color(238,228,218), - Color(236,224,200), - Color(242,177,121), - Color(245,149,99), - Color(245,124,95), - Color(246,93,59), - Color(237,206,113), - Color(237,204,97), - Color(236,200,80), - Color(237,197,63), - Color(238,194,46), - } - for i = 0,15 do - local val = train:GetNW2Int("PAKSDM:2048:"..math.floor(i/4+1)..":"..(i%4+1),0) - if val ~= 0 then - surface.SetDrawColor(self.g2048col[val] or Color(174,8,12)) - surface.DrawRect(156 + (i%4)*50,130 + math.floor(i/4)*50,50,50) - draw.SimpleText(2^val,val < 10 and "Metrostroi_PAM25" or i < 13 and "Metrostroi_PAM22" or "Metrostroi_PAM20",181 + (i%4)*50, 155 + math.floor(i/4)*50,val > 2 and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - Metrostroi.DrawLine(156,180,356,180,Color(110,110,110),2) - Metrostroi.DrawLine(156,230,356,230,Color(110,110,110),2) - Metrostroi.DrawLine(156,280,356,280,Color(110,110,110),2) - - Metrostroi.DrawLine(206,130,206,330,Color(110,110,110),2) - Metrostroi.DrawLine(256,130,256,330,Color(110,110,110),2) - Metrostroi.DrawLine(306,130,306,330,Color(110,110,110),2) - Metrostroi.DrawTextRectOL(156, 330, 200, 40,train:GetNW2Bool("PAKSDM:NCCanc") and Color(42,58,148) or Color(230,230,230),gr_up,2,Color(110,110,110)) - draw.SimpleText(self.T("Выход - Esc"),"Metrostroi_PAM30",256, 350,train:GetNW2Bool("PAKSDM:NCCanc") and Color(255,255,255) or Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - surface.SetAlphaMultiplier(1-train:GetNW2Float("Motorola:Bright",1)*0.5) - surface.SetDrawColor(Color(20,20,20)) - surface.DrawRect(0,0,512,512) - surface.SetAlphaMultiplier(1) - end - function TRAIN_SYSTEM:ClientThink() - end -end - -function TRAIN_SYSTEM:FindAimButton(x,y,x1,y1,w,h) - if x < x1 or x > x1+w then return false end - if y < y1 or y > y1+h then return false end - return true -end -function TRAIN_SYSTEM:UpdateUPO() - for k,v in pairs(self.Train.WagonList) do - if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,v == self.Train) end - v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end -end -function TRAIN_SYSTEM:Touch(state,x,y) - local Announcer = self.Train.Announcer - if self.g2048 and self:FindAimButton(x,y,156, 330, 200, 40) then - self.NCCanc = state - if not state then - self.g2048 = nil - end - end - if self.State == 3 and self.BackPAEA and self:FindAimButton(x,y,166, 210, 180, 40) then - self.BackPAEA = nil - return - end - if self.State == 3 and not self.BackPAEA and self.Train.KV.ReverserPosition ~= 0 and self.BackPA and not self.BackErrorCode and not self.ErrorCode and self:FindAimButton(x,y,216, 340, 80, 40) then - self:SetState(1.1,(self.FirstStation ~= "" and self.LastStation ~= "") and 5 or 4) - return - end - if self.State == 4 and self:FindAimButton(x,y,216, 320, 80, 40) then - if self.EnteredPass == "31173" then - self:SetState(1.1,-2) - return - elseif self.Pass ~= self.EnteredPass then - self.EnteredPass = "/" - else - self:SetState(1.1,5) - return - end - end - if self.State == 5 and self:FindAimButton(x,y,40, 140, 432, 40) then - if state then - self.State5Choose = 1 - else - self:SetState(1.1,6) - end - end - if self.State == 5 and self.Train:GetNW2Bool("PAKSDM:Restart") and self:FindAimButton(x,y,40, 190, 432, 40) then - if state then - self.State5Choose = 2 - else - self:SetState(1.1,7) - end - end - if self.State == 5 and self:FindAimButton(x,y,40, 230, 432, 40) then - if state then - self.State5Choose = 3 - else - self:SetState(1.1,3) - end - end - if self.State == 6 and not self.State6Error and self:FindAimButton(x,y,150, 330, 100, 30) then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(1.1,8) - end - end - if self.State == 6 and not self.State6Error and self:FindAimButton(x,y,260, 330, 100, 30) then - self:SetState(1.1,5) - end - if self.State == 6 and self.State6Error and self:FindAimButton(x,y,216, 220, 80, 40) then - self.State6Error = false - end - if self.State == 7 and not self.State6Error and self:FindAimButton(x,y,150, 330, 100, 30) then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(1.1,9) - end - end - if self.State == 7 and not self.State6Error and self:FindAimButton(x,y,260, 330, 100, 30) then - self:SetState(1.1,5) - end - if self.State == 7 and self.State6Error and self:FindAimButton(x,y,216, 220, 80, 40) then - self.State6Error = false - end - if self.State == 8 and self.Check == false and self:FindAimButton(x,y,216, 240, 80, 40) then - self:SetState(1.1,9) - end - if self.State == 9 then - if self.Train:GetNW2Bool("PAKSDM:SetupError",false) then - if self:FindAimButton(x,y,216, 220, 80, 40) then - for k,v in pairs(self.Train.WagonList) do - v["PA-KSD-M"]:SetState(3) - end - end - return - end - if self.Nakat and self:FindAimButton(x,y,106, 175, 300, 100) then - self.NCCanc = state - if not state then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - self.Train.ALS_ARS.Nakat = false - end - end - end - if not self.NeedConfirm or self.NeedConfirm == 0 then - if self.Zon or self.Fix then - if self.Fix then - if self:FindAimButton(x,y,294, 286, 115, 30) then - self.NCCanc = state - if not state then self.Fix = nil end - end - if self:FindAimButton(x,y,100, 286, 100, 30) then - self.NCOk = state - if not state then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.EnteredStation)] or - not Metrostroi.AnnouncerData[tonumber(self.EnteredStation)] or tonumber(self.EnteredStation) == self.FirstStation then - self.State6Error = not self.State6Error - else - self.FirstStation = self.EnteredStation - self.Line = self.FLine - self.Fix = nil - self:UpdateUPO() - end - end - end - else - if self:FindAimButton(x,y,294, 286, 115, 30) then - self.NCCanc = state - if not state then self.Zon = nil end - end - if self:FindAimButton(x,y,100, 286, 100, 30) then - self.NCOk = state - if not state then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.EnteredStation)] or - not Metrostroi.AnnouncerData[tonumber(self.EnteredStation)] then - self.State6Error = not self.State6Error - else - self.LastStation = self.EnteredStation - self:UpdateUPO() - self.Zon = nil - end - end - end - end - if self.State6Error and self:FindAimButton(x,y,216, 220, 80, 40) then - self.State6Error = false - end - return - elseif self.MenuChoosed == 0 and self.AnnChoosed == 0 then - if self:FindAimButton(x,y,0,360,120,52) then - self.MenuChoosed = 1 - end - if not self.AutodriveWorking and self.Train.ALS_ARS["33G"] < 0.5 and self:FindAimButton(x,y,5,155,60,30) then - self.NeedConfirm = 11 - end - if (self.AutodriveWorking or self.VRD or self.UOS) and not self.Trainsit and self:FindAimButton(x,y,5,185,60,30) then - self.NeedConfirm = 12 - end - if not self.UOS and not self.Train.ALS_ARS.EnableARS and self:FindAimButton(x,y,5,215,60,30) then - self.NeedConfirm = 13 - end - if self:FindAimButton(x,y,429, 275, 80, 30) then - self.NeedConfirm = 7 - end - elseif self.AnnChoosed == 0 then - if self:FindAimButton(x,y,10, 140, 164, 45) then - if state then - self.MenuChoosed = 1 - else - if self.MenuChoosed == 1 and self.Train.Speed < 0.5 then - self.NeedConfirm = 1 - else - self.MenuChoosed = 0 - end - end - end - if self:FindAimButton(x,y,174, 140, 164, 45) then - if state then - self.MenuChoosed = 2 - else - self.KD = not self.KD - self.MenuChoosed = 0 - end - end - if self:FindAimButton(x,y,338, 140, 164, 45) then - if state then - self.MenuChoosed = 3 - else - for k,v in pairs(self.Train.WagonList) do - v["PA-KSD-M"]:SetState(3) - end - self.MenuChoosed = 0 - end - end - - if self:FindAimButton(x,y,10, 185, 164, 45) then - if state then - self.MenuChoosed = 4 - else - self.Transit = not self.Transit - self.AutodriveWorking = false - self.MenuChoosed = 0 - end - end - if self:FindAimButton(x,y,174, 185, 164, 45) and not (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80))then - if state then - self.MenuChoosed = 5 - else - self.NeedConfirm = 5 - --self.MenuChoosed = 0 - end - end - if self:FindAimButton(x,y,338, 185, 164, 45) then - if state then - self.MenuChoosed = 6 - else - self.NeedConfirm = 6 - --self.MenuChoosed = 0 - end - end - - if self:FindAimButton(x,y,10, 230, 164, 45) then - if state then - self.MenuChoosed = 7 - else - self.NeedConfirm = 7 - --self.MenuChoosed = 0 - end - end - if self:FindAimButton(x,y,174, 230, 164, 45) then - if state then - self.MenuChoosed = 8 - else - self.NeedConfirm = 8 - --self.MenuChoosed = 0 - end - end - - if self:FindAimButton(x,y,338, 275, 164, 45) then - if state then - self.MenuChoosed = 12 - else - self.MenuChoosed = 0 - end - end - else - if self:FindAimButton(x,y,10, 140, 164, 45) then - if state then - self.AnnChoosed = 1 - else - self.Train.UPO:II(self.AnnChoosed) - self.AnnChoosed = 0 - end - end - if self:FindAimButton(x,y,174, 140, 164, 45) then - if state then - self.AnnChoosed = 2 - else - self.Train.UPO:II(self.AnnChoosed) - self.AnnChoosed = 0 - end - end - if self:FindAimButton(x,y,338, 140, 164, 45) then - if state then - self.AnnChoosed = 3 - else - self.Train.UPO:II(self.AnnChoosed) - self.AnnChoosed = 0 - end - end - if self:FindAimButton(x,y,10, 185, 164, 45) then - if state then - self.AnnChoosed = 4 - else - self.Train.UPO:II(self.AnnChoosed) - self.AnnChoosed = 0 - end - end - if self:FindAimButton(x,y,338, 275, 164, 45) then - if state then - self.AnnChoosed = 5 - else - self.AnnChoosed = 0 - end - end - end - else - if self:FindAimButton(x,y,111, 210, 140, 40) then - self.NCOk = state - if not state then - if self.NeedConfirm == 1 and self.Train.Speed < 0.5 then - self.Nakat = true - end - if (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80) then - self.VRD = true - end - if self.NeedConfirm == 6 then - self.Zon = 1 - self.EnteredStation = "" - self.FLine = self.Line - self.State6Error = false - end - if self.NeedConfirm == 7 then - self.Fix = 0 - self.EnteredStation = "" - self.FLine = nil - self.State6Error = false - end - if self.NeedConfirm == 8 then - self.g2048 = {} - self.g2048s = 0 - self.g2048go = false - self.g2048[math.random(0,15)] = 1 - end - if not self.AutodriveWorking and self.Train.ALS_ARS["33G"] < 0.5 and self.NeedConfirm == 11 then - self.AutodriveWorking = true - self.UOS = false - end - if (self.AutodriveWorking or self.VRD or self.UOS) and not self.Trainsit and self.NeedConfirm == 12 then - self.AutodriveWorking = false - self.UOS = false - end - if not self.UOS and not self.Train.ALS_ARS.EnableARS and self.NeedConfirm == 13 then - self.AutodriveWorking = false - self.UOS = true - end - self.NeedConfirm = 0 - self.MenuChoosed = 0 - end - end - if self:FindAimButton(x,y,261, 210, 140, 40) then - self.NCCanc = state - if not state then - self.NeedConfirm = 0 - end - end - end - --[[ - elseif self.State == 71 then - if name == "BEnter" then - self.AutodriveWorking = true - self.UOS = false - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 72 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = false - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 73 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = true - self:SetState(7,nil,true) - end - ]] - end - --print(x,y) -end -function TRAIN_SYSTEM:Trigger(name,nosnd) - --self.Pass = "A" - --self.State = 0 - local Announcer = self.Train.Announcer - self.Pitches = { - B1 = 166, - B2 = 155 , - B3 = 144, - B4 = 160, - B5 = 150, - B6 = 140, - B7 = 150, - B8 = 145, - B9 = 140, - BEsc = 140, - B0 = 135, - BEnter = 130, - BLeft = 125, - BDown = 120, - BRight = 115, - BF = 130, - BUp = 125, - BM = 120, - } - if not nosnd then self.Train:PlayOnce("paksd","cabin",0.75,self.Pitches[name] or 120.0) end - if self.State == 3 and name == "BEnter" and self.BackPAEA then - self.BackPAEA = nil - return - end - if self.State == 3 and name == "BEnter" and self.Train.KV.ReverserPosition ~= 0 and self.BackPA and not self.ErrorCode and not self.BackErrorCode and not self.BackPAEA then - self:SetState(1.1,(self.FirstStation ~= "" and self.LastStation ~= "") and 5 or 4) - elseif self.State == 4 then - if name == "BEnter" then - if self.EnteredPass == "31173" then - self:SetState(1.1,-2) - elseif self.Pass ~= self.EnteredPass then - self.EnteredPass = "/" - else - self:SetState(1.1,5) - end - else - if self.EnteredPass == "/" then self.EnteredPass = "" end - local Char = tonumber(name:sub(2,2)) - if Char and #self.EnteredPass < 11 then self.EnteredPass = self.EnteredPass..tonumber(name:sub(2,2)) end - end - elseif self.State == 5 then - if name == "BDown" then - self.State5Choose = math.min(3,(self.State5Choose or 1) + 1) - if self.State5Choose == 2 and not self.Train:GetNW2Bool("PAKSDM:Restart") then self.State5Choose = self.State5Choose + 1 end - end - if name == "BUp" then - self.State5Choose = math.max(1,(self.State5Choose or 1) - 1) - if self.State5Choose == 2 and not self.Train:GetNW2Bool("PAKSDM:Restart") then self.State5Choose = self.State5Choose - 1 end - end - if name == "BEnter" then - if self.State5Choose == 1 then - self:SetState(1.1,6) - elseif self.State5Choose == 2 then - self:SetState(1.1,7) - else - self:SetState(1.1,3) - end - end - if name == "B1" then - self:SetState(1.1,6) - end - if name == "B2" and self.Train:GetNW2Bool("PAKSDM:Restart") then - self:SetState(1.1,7) - end - elseif self.State == 6 then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BDown" then - self.State6Choose = math.min(4,(self.State6Choose or 1) + 1) - end - if name == "BUp" then - self.State6Error = false - self.State6Choose = math.max(1,(self.State6Choose or 1) - 1) - end - if name == "BLeft" then - if self.State6Choose == 2 then - self.FirstStation= self.FirstStation:sub(1,-2) - end - if self.State6Choose == 3 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State6Choose == 4 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEsc" then - self:SetState(1.1,5) - end - if name == "BEnter" then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(1.1,8) - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State6Choose == 1 then - self.Line = Char - if Metrostroi.WorkingStations[self.Line] then - --local Routelength = #Metrostroi.WorkingStations[self.Line] - --self.FirstStation = tostring(Metrostroi.WorkingStations[self.Line][1]) - --self.LastStation = tostring(Metrostroi.WorkingStations[self.Line][Routelength]) - end - end - if self.State6Choose == 2 and #self.FirstStation < 3 and (Char ~= 0 or #self.FirstStation > 0) then - self.FirstStation= self.FirstStation..tostring(Char) - end - if self.State6Choose == 3 and #self.LastStation < 3 and (Char ~= 0 or #self.LastStation > 0) then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State6Choose == 4 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 7 then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BDown" then - self.State6Choose = math.min(3,(self.State6Choose or 1) + 1) - end - if name == "BUp" then - self.State6Error = false - self.State6Choose = math.max(1,(self.State6Choose or 1) - 1) - end - if name == "BLeft" then - if self.State6Choose == 2 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State6Choose == 3 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEsc" then - self:SetState(1.1,5) - end - if name == "BEnter" and self.State6Choose == 4 then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(1.1,9) - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-KSD-M"] then - v["PA-KSD-M"]:SetState(9) - end - --if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,false) end - end - --self.Train.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,true) - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State6Choose == 1 then - self.Line = Char - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = self.FirstStation ~= "" and self.FirstStation or tostring(Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.WorkingStations[self.Line][Routelength]) - if tonumber(self.LastStation) < tonumber(self.FirstStation) then - local temp = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = temp - end - end - end - if self.State6Choose == 2 and #self.LastStation < 3 and (Char ~= 0 or #self.LastStation > 0) then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State6Choose == 3 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 8 then - if name == "BEnter" and self.Check == false then - self:SetState(1.1,9) - end - elseif self.State == 9 then - if self.Train:GetNW2Bool("PAKSDM:SetupError",false) then - if name == "BEnter" then - for k,v in pairs(self.Train.WagonList) do - v["PA-KSD-M"]:SetState(3) - end - end - return - end - if self.g2048 then - if name == "BEsc" then - self.g2048 = nil - end - local spawn = false - if name == "BDown" then - for i = 11,0,-1 do - local add - for i1 = 0,2 do - add = 4*(3-math.floor(i/4)) - i1*4 - if not self.g2048[i+add] or self.g2048[i+add] == 0 or self.g2048[i+add] == self.g2048[i] then - break - end - if i1 == 2 then add = 0 end - end - if self.g2048[i] and self.g2048[i] > 0 and add > 0 then - if self.g2048[i+add] and self.g2048[i+add] > 0 then - if self.g2048[i+add] == self.g2048[i] then - self.g2048[i+add] = self.g2048[i] + 1 - self.g2048s = self.g2048s + 2^(self.g2048[i] + 1) - end - else - self.g2048[i+add] = self.g2048[i] - end - self.g2048[i] = 0 - spawn = true - end - end - end - if name == "BUp" then - for i = 3,15 do - local add - for i1 = 0,2 do - add = 4*(math.floor(i/4)) - i1*4 - if not self.g2048[i-add] or self.g2048[i-add] == 0 or self.g2048[i-add] == self.g2048[i] then - break - end - if i1 == 2 then add = 0 end - end - if self.g2048[i] and self.g2048[i] > 0 and add > 0 then - if self.g2048[i-add] and self.g2048[i-add] > 0 then - if self.g2048[i-add] == self.g2048[i] then - self.g2048[i-add] = self.g2048[i] + 1 - self.g2048s = self.g2048s + 2^(self.g2048[i] + 1) - end - else - self.g2048[i-add] = self.g2048[i] - end - self.g2048[i] = 0 - spawn = true - end - end - end - if name == "BLeft" then - for i = 0,15 do - if i%4 ~= 0 then - local add - for i1 = 0,2 do - add = math.floor(i%4) - i1 - if not self.g2048[i-add] or self.g2048[i-add] == 0 or self.g2048[i-add] == self.g2048[i] then - break - end - if i1 == 2 then add = 0 end - end - if self.g2048[i] and self.g2048[i] > 0 and add > 0 then-- and i-add > 0 then - if self.g2048[i-add] and self.g2048[i-add] > 0 then - if self.g2048[i-add] == self.g2048[i] then - self.g2048[i-add] = self.g2048[i] + 1 - self.g2048s = self.g2048s + 2^(self.g2048[i] + 1) - end - else - self.g2048[i-add] = self.g2048[i] - end - self.g2048[i] = 0 - spawn = true - end - end - end - end - if name == "BRight" then - for i = 15,0,-1 do - if i%4 ~= 3 then - local add - for i1 = 0,2 do - add = 3-math.floor(i%4) - i1 - if not self.g2048[i+add] or self.g2048[i+add] == 0 or self.g2048[i+add] == self.g2048[i] then - break - end - if i1 == 2 then add = 0 end - end - if self.g2048[i] and self.g2048[i] > 0 and add > 0 then-- and i-add > 0 then - if self.g2048[i+add] and self.g2048[i+add] > 0 then - if self.g2048[i+add] == self.g2048[i] then - self.g2048[i+add] = self.g2048[i] + 1 - self.g2048s = self.g2048s + 2^(self.g2048[i] + 1) - end - else - self.g2048[i+add] = self.g2048[i] - end - self.g2048[i] = 0 - spawn = true - end - end - end - end - local count = 0 - for i = 0,15 do - if self.g2048[i] and self.g2048[i] > 0 then - count = count + 1 - end - end - if (name == "BDown" or name == "BUp" or name == "BLeft" or name == "BRight") and count < 15 and spawn then - while true do - local choose = math.random(0,15) - if not self.g2048[choose] or self.g2048[choose] == 0 then - self.g2048[choose] = 1 - break - end - - --x = x +1 - end - end - if count >= 15 then self.g2048go = true end - return - end - if self.Fix then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BEsc" then - if self.Fix == 1 and #self.EnteredStation > 0 then - self.EnteredStation = "" - end - end - if name == "BEnter" then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.EnteredStation)] or - not Metrostroi.AnnouncerData[tonumber(self.EnteredStation)] or tonumber(self.EnteredStation) == self.FirstStation then - self.State6Error = not self.State6Error - else - self.FirstStation = self.EnteredStation - self.Line = self.FLine - self:UpdateUPO() - self.Fix = nil - end - end - if name == "BDown" then - self.Fix = math.min(1,self.Fix + 1) - end - if name == "BUp" then - self.State6Error = false - self.Fix = math.max(0,self.Fix - 1) - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.Fix == 0 then - self.FLine = Char - end - if self.Fix == 1 and #self.EnteredStation < 3 and (Char ~= 0 or #self.EnteredStation > 0) then - self.EnteredStation= self.EnteredStation..tostring(Char) - end - end - return - end - if self.Zon then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BEsc" then - if self.Fix == 1 and #self.EnteredStation > 0 then - self.EnteredStation = "" - end - end - if name == "BEnter" then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.EnteredStation)] or - not Metrostroi.AnnouncerData[tonumber(self.EnteredStation)] or tonumber(self.EnteredStation) == self.LastStation then - self.State6Error = not self.State6Error - else - self.LastStation = self.EnteredStation - self:UpdateUPO() - self.Zon = nil - end - end - --if name == "BDown" then - --self.Fix = math.min(1,self.Fix + 1) - --end - --if name == "BUp" then - --self.State6Error = false - --self.Fix = math.max(0,self.Fix - 1) - --end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.Zon == 1 and #self.EnteredStation < 3 and (Char ~= 0 or #self.EnteredStation > 0) then - self.EnteredStation= self.EnteredStation..tostring(Char) - end - end - return - end - if name == "BF" then - if self.MenuChoosed == 0 and self.AnnChoosed == 0 and not self.Zon and not self.Fix then - self.MenuChoosed = 1 - end - end - if self.MenuChoosed == 0 and self.AnnChoosed == 0 then - if name == "B1" and not self.AutodriveWorking and self.Train.ALS_ARS["33G"] < 0.5 and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.NeedConfirm = 11 - end - if name == "B2" and (self.AutodriveWorking or self.VRD or self.UOS) and not self.Trainsit and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.NeedConfirm = 12 - end - if name == "B3" and not self.UOS and not self.Train.ALS_ARS.EnableARS and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.NeedConfirm = 13 - end - elseif self.AnnChoosed == 0 then - local Char = tonumber(name:sub(2,2)) - if Char and Char < 8 and Char > 0 then - self.MenuChoosed = Char - if self.MenuChoosed == 1 and self.Train.Speed < 0.5 then - self.NeedConfirm = 1 - elseif self.MenuChoosed == 2 then - self.KD = not self.KD - elseif self.MenuChoosed == 3 then - for k,v in pairs(self.Train.WagonList) do - v["PA-KSD-M"]:SetState(3) - end - elseif self.MenuChoosed == 4 then - self.Transit = not self.Transit - self.AutodriveWorking = false - elseif self.MenuChoosed == 5 then - self.NeedConfirm = 5 - elseif self.MenuChoosed == 6 then - self.NeedConfirm = 6 - elseif self.MenuChoosed == 7 then - self.NeedConfirm = 7 - elseif self.MenuChoosed == 8 and not self.Arrived then - --self.Arrived = true - --if self.Train.R_UPO.Value > 0 then - -- local tbl = Metrostroi.WorkingStations[self.Line] - --self.UPO:PlayArriving(self.Train.UPO.Station,tbl[tbl[self.Train.UPO.Station] + (self.Train.UPO.Path == 1 and 1 or -1)],self.Train.UPO.Path) - --end - end - if self.NeedConfirm == 0 then self.MenuChoosed = 0 end - end - end - if name == "BDown" then - if self.MenuChoosed ~= 0 and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.MenuChoosed = math.min(7,self.MenuChoosed + 1) - - if self.MenuChoosed == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BDown",true) - elseif self.MenuChoosed == 6 then - if self.LastStation == tostring(self.Train.UPO.Station) then - self:Trigger("BDown",true) - end - elseif self.MenuChoosed == 7 then - if self.FirstStation == tostring(self.Train.UPO.Station) then - self:Trigger("BDown",true) - end - end - end - if self.AnnChoosed ~= 0 and not self.Zon and not self.Fix then - self.AnnChoosed = math.min(4,self.AnnChoosed + 1) - end - end - if name == "BUp" then - if self.MenuChoosed ~= 0 and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.MenuChoosed = math.max(1,self.MenuChoosed - 1) - if self.MenuChoosed == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BUp",true) - end - end - if self.MenuChoosed == 0 and self.AnnChoosed == 0 then - self.AnnChoosed = 1 - end - if self.AnnChoosed ~= 0 then - self.AnnChoosed = math.max(1,self.AnnChoosed - 1) - end - end - if name == "BEsc" then - --if self.MenuChoosed ~= 0 then - if (not self.NeedConfirm or self.NeedConfirm == 0) then self.MenuChoosed = 0 end - self.AnnChoosed = 0 - --end - end - if (self.NeedConfirm and self.NeedConfirm > 0) then - if name == "BEnter" then - if self.NeedConfirm == 1 and self.Train.Speed < 0.5 then - self.Nakat = true - end - if (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80) then - self.VRD = true - end - if self.NeedConfirm == 6 then - self.Zon = 1 - self.EnteredStation = "" - self.FLine = self.Line - self.State6Error = false - end - if self.NeedConfirm == 7 then - self.Fix = 0 - self.EnteredStation = "" - self.FLine = nil - self.State6Error = false - end - if self.NeedConfirm == 8 then - self.g2048 = {} - self.g2048s = 0 - self.g2048go = false - self.g2048[math.random(0,15)] = 1 - end - if not self.AutodriveWorking and self.Train.ALS_ARS["33G"] < 0.5 and self.NeedConfirm == 11 then - self.AutodriveWorking = true - self.UOS = false - end - if (self.AutodriveWorking or self.VRD or self.UOS) and not self.Trainsit and self.NeedConfirm == 12 then - self.AutodriveWorking = false - self.UOS = false - end - if not self.UOS and not self.Train.ALS_ARS.EnableARS and self.NeedConfirm == 13 then - self.AutodriveWorking = false - self.UOS = true - end - self.NeedConfirm = 0 - self.MenuChoosed = 0 - end - if name == "BEsc" then - self.NeedConfirm = 0 - end - end - if self.MenuChoosed ~= 0 and not self.Nakat and not self.Fix and not self.Zon and not self.g2048 then - if name == "BEnter" and (not self.NeedConfirm or self.NeedConfirm == 0) then - if self.MenuChoosed == 1 and self.Train.Speed < 0.5 then - self.NeedConfirm = 1 - elseif self.MenuChoosed == 2 then - self.KD = not self.KD - elseif self.MenuChoosed == 3 then - for k,v in pairs(self.Train.WagonList) do - v["PA-KSD-M"]:SetState(3) - end - elseif self.MenuChoosed == 4 then - self.Transit = not self.Transit - self.AutodriveWorking = false - elseif self.MenuChoosed == 5 then - self.NeedConfirm = 5 - elseif self.MenuChoosed == 6 then - self.NeedConfirm = 6 - elseif self.MenuChoosed == 7 then - self.NeedConfirm = 7 - elseif self.MenuChoosed == 8 and not self.Arrived then - --self.Arrived = true - --if self.Train.R_UPO.Value > 0 then --- local tbl = Metrostroi.WorkingStations[self.Line] - --self.UPO:PlayArriving(self.Train.UPO.Station,tbl[tbl[self.Train.UPO.Station] + (self.Train.UPO.Path == 1 and 1 or -1)],self.Train.UPO.Path) - --end - end - if self.NeedConfirm == 0 then self.MenuChoosed = 0 end - --if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self.State = 7 end - end - end - if self.AnnChoosed ~= 0 and not self.Nakat and not self.Fix and not self.Zon and not self.g2048 then - if name == "BEnter" then - if self.Train.R_UPO.Value > 0 then self.Train.UPO:II(self.AnnChoosed) end - self.AnnChoosed = 0 - end - local Char = tonumber(name:sub(2,2)) - if Char and Char > 0 and Char < 5 and self.Train.R_UPO.Value > 0 then - self.Train.UPO:II(Char) - self.AnnChoosed = 0 - end - end - - if name == "BEsc" and self.Nakat then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - self.Train.ALS_ARS.Nakat = false - end - end - end -end -function TRAIN_SYSTEM:GetTimer(val) - return self.TimerMod and (CurTime() - self.Timer) > val -end -function TRAIN_SYSTEM:SetTimer(mod) - if mod then - if self.TimerMod == mod then return end - self.TimerMod = mod - else - self.TimerMod = nil - end - self.Timer = CurTime() -end - -function TRAIN_SYSTEM:SetState(state,add,state9) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if state and self.State ~= state then - self.State = state - if state == 1 or state == 1.1 then - self.NextState = add - end - self:SetTimer() - elseif not state then - state = self.NextState - self.State = self.NextState - else - return - end - if state == 0 then - self.LoadTimer = math.random(3,9) - end - if state == 2 then - self.LoadTimer = math.random(2,6) - end - if state == 3 then - self.ErrorCode = nil - self.BackErrorCode = nil - end - if state == 4 then - self.EnteredPass = "" - end - if state == 5 then - self.State5Choose = 1 - end - if state == 6 then - self.State6Choose = 1 - self.Line = self.Train.UPO.Line or 1 - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = tostring(self.Train.UPO.FirstStation or self.FirstStation or "")--tostring(self.Train.UPO.Path == 2 and Metrostroi.WorkingStations[self.Line][Routelength] or Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = tostring(self.Train.UPO.LastStation or self.LastStation or "")--tostring(self.Train.UPO.Path == 1 and Metrostroi.WorkingStations[self.Line][Routelength] or Metrostroi.WorkingStations[self.Line][1]) - else - self.FirstStation = "111" - self.LastStation = "123" - end - self:UpdateUPO() - self.State6Error = false - end - if state == 7 then - self.State6Choose = 1 - self.State6Error = false - end - if state == 8 then - self.Check = nil - ARS:TriggerInput("PA-Ring",1) - for k,v in pairs(self.Train.WagonList) do - v.ENDis:TriggerInput("Set",1) - end - if not state9 then - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-KSD-M"] then - v["PA-KSD-M"]:SetState(8,nil,true) - --v["PA-KSD-M"].Line = self.Line - --v["PA-KSD-M"].RouteNumber = self.RouteNumber - --v["PA-KSD-M"].FirstStation = self.FirstStation - --v["PA-KSD-M"].LastStation = self.LastStation - --v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end - --if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,false) end - end - end - self.Train.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,true) - else - for k,v in pairs(self.Train.WagonList) do - v.ENDis:TriggerInput("Set",0) - if v.ALS_ARS then v.ALS_ARS:TriggerInput("PA-Ring",0) end - end - end - if state == 9 then - if not state9 then - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-KSD-M"] then - v["PA-KSD-M"]:SetState(9,nil,true) - v["PA-KSD-M"].Line = self.Line - v["PA-KSD-M"].RouteNumber = self.RouteNumber - v["PA-KSD-M"].FirstStation = self.FirstStation - v["PA-KSD-M"].LastStation = self.LastStation - v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,false) - end - end - self.Train.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,true) - end - self.AnnChoosed = 0 - self.NeedConfirm = 0 - self.MenuChoosed = 0 - self.Fix = nil - self.Zon = nil - Train.UPO.BoardTime = nil - self.ODZ = nil - end - if state == 0 then - self.Train:PlayOnce("paksd","cabin",0.75,200.0) - self.Train.ALS_ARS:TriggerInput("PA-Ring",0) - self.EnteredPass = "" - end - if state == 3 then - if IsValid(self.Train.DriverSeat) then - self.Train.DriverSeat:EmitSound("subway_announcer/00_05.mp3", 73, 100) - end - end -end -function TRAIN_SYSTEM:Think(dT) - if self.Train.Blok ~= 4 then self:SetState(-1) return end - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if self.Train.VPA.Value < 1 and not self.OffTimer then --self.VPA and - self.OffTimer = CurTime() + 1 - self.OnTimer = nil - end - if self.Train.VPA.Value == 1 and self.OffTimer then - self.OffTimer = nil - self.OnTimer = nil - end - if self.Train.VPA.Value > 1 then --not self.VPA and - for k,v in pairs(self.Train.WagonList) do - if v["PA-KSD-M"] then v["PA-KSD-M"].VPA = true end - end - end - if self.OnTimer and (CurTime() - self.OnTimer) > 0 then - end - if self.OffTimer and (CurTime() - self.OffTimer) > 0 then - for k,v in pairs(self.Train.WagonList) do - if v["PA-KSD-M"] then v["PA-KSD-M"].VPA = false end - end - self.OffTimer = nil - end - if Train.Panel["V1"] < 0.5 or Train.VB.Value < 0.5 then self.VPA = false end - if not self.VPA then self:SetState(-1) end - if self.VPA and self.State == -1 and Train.Panel["V1"] > 0.5 then self:SetState(0) end - - --self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) - --self.Train.UPO.Path = self.Train:ReadCell(49170) - --self.Train.UPO.Distance = math.min(9999,self.Train:ReadCell(49165) + (Train.Autodrive.Corrections[self.Train.UPO.Station] or 0)) - if Train.VB.Value > 0.5 and Train.Battery.Voltage > 55 and self.State > -1 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - if Train[v].Value > 0.5 then - self:Trigger(v) - end - --print(v,self.Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - if self.Train.KV.ReverserPosition == 0 and self.State > 3 and self.State < 8 and self.State ~= -9 then self:SetState(3) end - if self.State > 2 then - local Back = self.Train.WagonList[#self.Train.WagonList] - if #self.Train.WagonList > 1 and Back.SubwayTrain and Back.SubwayTrain.Type == "81" and Back.SubwayTrain.Manufacturer == "LVZ" then - self.BackPA = Back["PA-KSD-M"] - else - self.BackPA = nil - end - if self.BackPA then - if self.BackPA.State < 2 then - self.BackErrorCode = 0x9999 - elseif self.BackPA.State == 3 then - self.BackErrorCode = self.BackPA.ErrorCode - elseif self.BackPA.State < 3 then - self.BackErrorCode = 0x0001 - elseif self.BackPA.VPA then - self.BackErrorCode = 0x0002 - end - else - self.BackErrorCode = nil - end - if self.BackErrorCode and self.BackErrorCode ~= 0x0002 and self.State > 3 then - self:SetState(1,3) - self.BackPAEA = true - end - end - if self.State == 0 and self.RealState ~= 0 then - elseif self.State == 0 then - self:SetTimer(0.5) - if self:GetTimer(self.LoadTimer) then - self:SetState(1,2) - end - elseif self.State == 1 then - self:SetTimer(1) - if self:GetTimer(0.4) then - self:SetState() - end - elseif self.State == 1.1 then - self:SetTimer(1) - if self:GetTimer(0.1) then - self:SetState() - end - elseif self.State == 2 then - self:SetTimer(0.5) - if self:GetTimer(self.LoadTimer) then - self:SetState(1,3) - end - elseif self.State == 8 then - --print(ARS.KVT) - if ARS.KVT and self.Check == nil then - self.Check = true - self:SetTimer(4) - end - if not ARS.KVT and self.Check ~= false then - self.Check = nil - self:SetTimer() - end - if ARS.KVT and self:GetTimer(1) then - self.Check = false - ARS:TriggerInput("PA-Ring",0) - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v.ALS_ARS then - v.ALS_ARS:TriggerInput("PA-Ring",0) - end - end - self:SetTimer() - end - elseif self.State == 9 then - if (self.Train.UPO:GetSTNum(self.LastStation) > self.Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 2) or (self.Train.UPO:GetSTNum(self.FirstStation) > self.Train.UPO:GetSTNum(self.LastStation) and self.Train.UPO.Path == 1) then - local old = self.LastStation - self.LastStation = self.FirstStation - self.FirstStation = old - end - if self.VRD and (not ARS.Signal0 or ARS.Signal0 and (ARS.Signal40 or ARS.Signal60 or ARS.Signal70 or ARS.Signal80)) then self.VRD = false end - self.State9 = (Train.UPO:End(self.Train.UPO.Station,self.Train.UPO.Path,true) or Train.UPO:GetSTNum(self.LastStation) > Train.UPO:GetSTNum(self.Train.UPO.Station) and self.Train.UPO.Path == 2 or Train.UPO:GetSTNum(self.Train.UPO.Station) < Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 1) and 0 or 1--self.Arrived ~= nil and 1 or 2 - if self.State9 ~= 0 and self.Train.KV.ReverserPosition ~= 0 then - if not self.Trainsit then - if self.Train.UPO.Distance < 100 and self.Train.Speed > 55 then - self.StopTrain = true - end - if self.Train.UPO.Distance < 10 and self.Train.Speed > 20 then - self.StopTrain = true - end - if self.Train.Speed < 0.5 and self.StopTrain then - self.StopTrain = false - end - if self.StopTrain then - end - elseif self.StopTrain then - self.StopTrain = false - end - - if not self.Transit then - if self.Train.UPO.Distance < 75 and self.Arrived == nil and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] and ARS.Speed <= 1 then - self.Arrived = true - end - end - --[[ - if not self.Transit and 45 < self.Train.UPO.Distance and self.Train.UPO.Distance < 75 and not self.Arrived and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] then - self.Arrived = true - if self.Train.R_UPO.Value > 0 then - local tbl = Metrostroi.WorkingStations[self.Line] - self.UPO:PlayArriving(self.Train.UPO.Station,tbl[tbl[self.Train.UPO.Station] + (self.Train.UPO.Path == 1 and 1 or -1)],self.Train.UPO.Path) - end - end - ]] - if self.Transit then self.Arrived = nil end - if self.Train.UPO.Distance > 75 then - self.Arrived = nil - else - --if self.Train.Panel.SD < 0.5 then self.Arrived = true end - end - --if (self.Ring == nil or self.Ring == 0) and self.Train.Panel.SD < 0.5 then - --self.Ring = false - --end - if self.Arrived then - if Train.UPO.BoardTime and math.floor((Train.UPO.BoardTime or CurTime()) - CurTime()) < (self.Train.Horlift and 15 or 8) and self.Arrived then - self.Arrived = false - end - end - if (self.Train:ReadCell(1) > 0 or ARS.Speed > 1) and self.Arrived == false then self.Arrived = nil end - end - if self.Nakat then - if not self.Meters then self.Meters = 0 end - self.Meters = self.Meters + ARS.Speed*self.Train.SpeedSign/3600*1000*dT - if math.abs(self.Meters) > 2.5 then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - ARS.Nakat = self.Meters < 0 - end - end - else - self.Meters = nil - end - end - if self.State ~= self.RealState then - self.RealState = self.State - self.TimeOverride = true - end - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 or self.TimeOverride then - self.TimeOverride = nil - --print(1) - self.Time = CurTime() - Train:SetNW2Int("PAKSDM:State",self.State) - if self.State == 3 then - Train:SetNW2Bool("PAKSDM:BackPAErrorNoAccepted",self.BackPAEA == true) - Train:SetNW2Bool("PAKSDM:BackPA",self.BackPA ~= nil) - Train:SetNW2Bool("PAKSDM:RR",self.Train.KV.ReverserPosition ~= 0) - Train:SetNW2Int("PAKSDM:ErrorCode",self.ErrorCode or 0x0000) - Train:SetNW2Int("PAKSDM:BErrorCode",self.BackErrorCode or 0x0000) - elseif self.State == 4 then - Train:SetNW2Int("PAKSDM:Pass",self.EnteredPass ~= "/" and #self.EnteredPass or -1) - elseif self.State == 5 then - Train:SetNW2Bool("PAKSDM:Restart",self.FirstStation ~= "" and self.LastStation ~= "") - Train:SetNW2Int("PAKSDM:State5",self.State5Choose) - elseif self.State == 6 then - Train:SetNW2Int("PAKSDM:State6",self.State6Choose) - Train:SetNW2Bool("PAKSDM:State6Error",self.State6Error) - Train:SetNW2Int("PAKSDM:LastStation",tonumber(self.LastStation) or -1) - Train:SetNW2Int("PAKSDM:FirstStation",tonumber(self.FirstStation) or -1) - Train:SetNW2Int("PAKSDM:Line",self.Line) - Train:SetNW2Int("PAKSDM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - elseif self.State == 7 then - Train:SetNW2Int("PAKSDM:State6",self.State6Choose) - Train:SetNW2Bool("PAKSDM:State6Error",self.State6Error) - Train:SetNW2Int("PAKSDM:LastStation",tonumber(self.LastStation) or -1) - Train:SetNW2Int("PAKSDM:Line",self.Line) - Train:SetNW2Int("PAKSDM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - --Train:SetNW2Int("PAKSDM:LastStation",tonumber(self.LastStation) or -1) - --Train:SetNW2Int("PAKSDM:Line",self.Line) - --Train:SetNW2Int("PAKSDM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - elseif self.State == 9 then - Train:SetNW2Bool("PAKSDM:AV", self.AutodriveWorking) - --print(not self.AutodriveWorking and not self.UOS) - Train:SetNW2Bool("PAKSDM:KS", not self.AutodriveWorking and not self.UOS) - Train:SetNW2Bool("PAKSDM:OD",self.UOS) - Train:SetNW2Int("PAKSDM:Line",self.Line) - Train:SetNW2Int("PAKSDM:Path",self.Train.UPO.Path) - Train:SetNW2Int("PAKSDM:Station",self.State9 == 0 and 0 or self.Train.UPO.Station) - Train:SetNW2Int("PAKSDM:LastStation",self.LastStation) - Train:SetNW2Float("PAKSDM:Distance",math.Round(self.Train.UPO.Distance,2)) - Train:SetNW2String("PAKSDM:SName",ARS.Signal and ARS.Signal.RealName or "ERR") - Train:SetNW2Bool("PAKSDM:RR",self.Train.KV.ReverserPosition ~= 0) - Train:SetNW2Int("PAKSDM:Type",(self.Train.Pneumatic.EmergencyValveEPK and 0 or self.Train.ALS_ARS.UAVAContacts and 4 or self.UOS and 5 or self.VRD and 2 or (self.Train.Autodrive.AutodriveEnabled or self.Train.UPO.StationAutodrive) and 1 or 3)) - Train:SetNW2Int("PAKSDM:KV",self.Train.Autodrive.AutodriveEnabled and (self.Rotating and -3 or self.Brake and -1 or self.Accelerate and 3 or 0) or (ARS["33G"] > 0 or (self.UOS and (ARS["8"] + (1-self.Train.RPB.Value)) > 0)) and 5 or self.Train.KV.RealControllerPosition) - Train:SetNW2Bool("PAKSDM:VZ1", self.Train:ReadTrainWire(29) > 0) - Train:SetNW2Bool("PAKSDM:VZ2", self.Train.PneumaticNo2.Value > 0) - Train:SetNW2Int("PAKSDM:Menu", self.MenuChoosed) - Train:SetNW2Int("PAKSDM:Ann",self.AnnChoosed) - Train:SetNW2Int("PAKSDM:NeedConfirm",self.NeedConfirm) - if self.NeedConfirm > 0 then - Train:SetNW2Bool("PAKSDM:NCOk",self.NCOk) - Train:SetNW2Bool("PAKSDM:NCCanc",self.NCCanc) - end - Train:SetNW2Bool("PAKSDM:Arrived", Train.UPO.Arrived ~= nil and Train.UPO.BoardTime ~= nil) - if Train.UPO.Arrived ~= nil and Train.UPO.BoardTime ~= nil then - Train:SetNW2Int("PAKSDM:BoardTime",math.floor((Train.UPO.BoardTime or CurTime()) - CurTime())) - end - Train:SetNW2Bool("PAKSDM:SetupError",Metrostroi.AnnouncerData[tonumber(self.FirstStation)] == nil or Metrostroi.AnnouncerData[tonumber(self.LastStation)] == nil) - Train:SetNW2Bool("PAKSDM:KD",self.KD) - Train:SetNW2Bool("PAKSDM:LPT",self.LPT) - Train:SetNW2Bool("PAKSDM:Nakat",self.Nakat) - Train:SetNW2Int("PAKSDM:Uklon",math.floor(Train:GetAngles().pitch*100)) - if self.Nakat then - Train:SetNW2Float("PAKSDM:Meters",math.Round(math.abs(self.Meters or 0),2)) - Train:SetNW2Bool("PAKSDM:Sign",ARS.Speed > 0.5 and self.Train.SpeedSign < 0) - Train:SetNW2Bool("PAKSDM:NCCanc",self.NCCanc) - end - Train:SetNW2Bool("PAKSDM:2048",self.g2048 ~= nil) - if self.g2048 then - Train:SetNW2Int("PAKSDM:2048Score",self.g2048s) - Train:SetNW2Bool("PAKSDM:2048GG",self.g2048go) - for i = 0,4*4-1 do - Train:SetNW2Int("PAKSDM:2048:"..math.floor(i/4+1)..":"..(i%4+1),self.g2048[i] or 0) - end - Train:SetNW2Bool("PAKSDM:NCCanc",self.NCCanc) - end - self.Train:SetNW2Int("PAKSDM:Fix",self.Fix or -1) - self.Train:SetNW2Int("PAKSDM:Zon",self.Zon or -1) - if self.Fix or self.Zon then - Train:SetNW2Bool("PAKSDM:NCOk",self.NCOk) - Train:SetNW2Bool("PAKSDM:NCCanc",self.NCCanc) - Train:SetNW2Int("PAKSDM:FLine",self.FLine or -1) - Train:SetNW2Int("PAKSDM:FStation",tonumber(self.EnteredStation) or -1) - --Train:SetNW2Int("PAKSDM:FAc",tonumber(self.FStation) or -1) - Train:SetNW2Bool("PAKSDM:State6Error",self.State6Error) - end - - else - end - end - if self.Train.VZP.Value > 0.5 and self.AutodriveWorking then - Train.Autodrive:Enable() - elseif not self.AutodriveWorking then - Train.Autodrive:Disable() - end - self.RouteNumber = string.gsub(self.Train.RouteNumber or "","^(0+)","") - if self.State > 7 then - self.Line = self.Train.UPO.Line - self.FirstStation = tostring(self.Train.UPO.FirstStation or "") - self.LastStation = tostring(self.Train.UPO.LastStation or "") - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_pa-ksd.lua b/lua/metrostroi/systems/_obsolete/sys_pa-ksd.lua deleted file mode 100644 index 47242d5..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_pa-ksd.lua +++ /dev/null @@ -1,1214 +0,0 @@ --------------------------------------------------------------------------------- --- ПА-КСД Поездная Аппаратура-Комплексная Система Движения --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PA-KSD") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("Indicate","Relay","Switch",{bass = true,maxvalue = 3,defaultvalue = 1}) - self.Train:LoadSystem("VPA","Relay","Switch",{bass = true,defaultvalue = 1,maxvalue = 2}) - self.Train:LoadSystem("BCCD","Relay","Switch",{bass = true}) - self.Train:LoadSystem("VZP","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B7","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B8","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B9","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B4","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B5","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B6","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BUp","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B1","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B2","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B3","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BDown","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BLeft","Relay","Switch",{bass = true}) - self.Train:LoadSystem("B0","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BMinus","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BPlus","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BEnter","Relay","Switch",{bass = true}) - - self.Train:LoadSystem("R25p","Relay","KPD-110E", { bass = true }) - - self.TriggerNames = { - "B7", - "B8", - "B9", - "BLeft", - "B4", - "B5", - "B6", - "BUp", - "B1", - "B2", - "B3", - "BDown", - "B0", - "BMinus", - "BPlus", - "BEnter", - } - self.Triggers = {} - self.Pass = "31173" - self.EnteredPass = "" - self.Timer = CurTime() - self.Line = 1 - self.State = 0 - self.RealState = 99 - self.RouteNumber = "" - self.State4Choosed = 1 - self.FirstStation = "" - self.LastStation = "" - self.KSZD = false - self.AutoTimer = false - self.State74 = 1 - self.State75 = 1 -end -function TRAIN_SYSTEM:ClientInitialize() - self.STR1r = {} - self.STR2r = {} - self.STR1x = 1 - self.STR2x = 1 - self.Positions = { - [-3] = "T2", - [-2] = "T1a", - [-1] = "T1", - [0] = "0", - [1] = "X1", - [2] = "X2", - [3] = "X3", - --[4] = "RR0", - [5] = "0XT", - [6] = "T2", - } - self.Positions2 = {"PS","PP","PT",} - self.Types = { - [0] = "EPV", - [1] = "AV", - [2] = "OD", - [3] = "KV", - [4] = "UA", - [5] = "SL", - } - self.StataionData = - { - [0] = "ERR", - [108] = "AV", - [109] = "IND", - [110] = "MOSK", - [111] = "OKT", - [112] = "PLMI", - [113] = "NOV", - [114] = "VOK", - [115] = "KOM", - [116] = "ELE", - [117] = "TEPL", - [118] = "PP", - [119] = "SINE", - [120] = "LES X", - [121] = "MNSK", - [122] = "TSVO", - [123] = "MZHD", - [321] = "MUSK", - [322] = "AVUZ", - [1215] = "LEN", - --ORANGE LINE - [401] = "SLS", - [402] = "LITE", - [403] = "PA", - [404] = "MAST", - [405] = "GFC", - [406] = "UB", - [407] = "VHE", - [408] = "TGM", - [501] = "AERO", - [502] = "SENT", - [503] = "LIT", - } - self.Train.Autodrive.AutodriveEnabled = false - self.KSZD = false - self.AutoTimer = false -end - -if TURBOSTROI then return end -CreateConVar("metrostroi_paksd_autoopen",0,{FCVAR_ARCHIVE},"PA-KSD:Auto open doors") -function TRAIN_SYSTEM:Inputs() - return { "Press" } -end - -function TRAIN_SYSTEM:PAKSD1(train) - --print(self,train,self==train) - if train:GetPackedBool("Indicate3") then return end - if train:GetPackedBool("Indicate2") then return end - for y = 0,#self.STR1r-1 do - local xmin = 0 - local blink = false - local checked = false - for x = 0,math.min(19,#self.STR1r[y+1]-1) do - local char = self.STR1r[y+1][x+1] - if char == "@" then - blink = true - xmin = xmin + 1 - elseif char == "$" then - checked = true - xmin = xmin + 1 - elseif blink then - if CurTime()%1<=0.5 then - surface.SetDrawColor(0,255,127) - surface.DrawRect((x-xmin)*16+1,y*28+5,14,20) - surface.SetDrawColor(0,0,0) - draw.DrawText(char,"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,0,0)) - --xmin = xmin + 1 - else - draw.DrawText(char,"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,255,127)) - --xmin = xmin + 1 - end - elseif checked then - surface.SetDrawColor(0,255,127) - surface.DrawRect((x-xmin)*16+1,y*28+5,14,20) - surface.SetDrawColor(0,0,0) - draw.DrawText(self.STR1r[y+1][x+1],"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,0,0)) - elseif char == "_" then - if CurTime()%0.65<=0.4 then - surface.SetDrawColor(0,255,127) - surface.DrawRect((x-xmin)*16,y*28+5,16,20) - end - elseif char == "#" then - surface.SetDrawColor(0,255,127) - surface.DrawRect(x*16+1,y*28+5,14,20) - elseif self.STR1r[y+1][x+2] == "%" then - if CurTime()%0.5<=0.25 then - surface.SetDrawColor(0,255,127) - surface.DrawRect((x-xmin)*16+1,y*28+5,14,20) - surface.SetDrawColor(0,0,0) - draw.DrawText(self.STR1r[y+1][x+1],"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,0,0)) - xmin = xmin + 1 - else - draw.DrawText(char,"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,255,127)) - xmin = xmin + 1 - end - elseif char ~= "%" then - draw.DrawText(char,"MetrostroiSubway_IGLA",(x-xmin)*16,y*28, Color(0,255,127)) - end - end - end - surface.SetAlphaMultiplier(1) -end -function TRAIN_SYSTEM:PAKSD2(train) - if train:GetPackedBool("Indicate3") then return end - if not train:GetPackedBool("Indicate1") and not train:GetPackedBool("Indicate2") then return end - for y = 0,#self.STR2r-1 do - for x = 0,math.min(19,#self.STR2r[y+1]-1) do - local char = self.STR2r[y+1][x+1] - if char == "_" then - if CurTime()%0.5>0.25 then - char = "" - else - surface.SetDrawColor(0,255,127) - surface.DrawRect(x*16-3,y*40 + 15,16,28) - end - end - draw.DrawText(char,"MetrostroiSubway_IGLA",x*16-3,y*40 + 15, Color(0,255,127)) - end - end - surface.SetAlphaMultiplier(1) -end - -function TRAIN_SYSTEM:STR1(str,notchange) - if SERVER then return end - if str == true then - for i = 1,4 do - self.STR1r[i] = "" - end - self.STR1x = 1 - else - if self.STR1x > 4 then print("STR1:ERR:MAX",str) return end - if notchange then - self.STR1r[self.STR1x-1] = self.STR1r[self.STR1x-1]..str - else - self.STR1r[self.STR1x] = str or "" - self.STR1x = self.STR1x + 1 - end - end -end -function TRAIN_SYSTEM:STR2(str,notchange) - if SERVER then return end - if str == true then - for i = 1,2 do - self.STR2r[i] = "" - end - self.STR2x = 1 - else - if self.STR2x > 2 then print("STR2:ERR:MAX",str) return end - if notchange then - self.STR2r[self.STR2x] = self.STR2r[self.STR2x]..(str or "") - else - self.STR2r[self.STR2x] = str or "" - self.STR2x = self.STR2x + 1 - end - end -end -function TRAIN_SYSTEM:ClientThink() - if not self.Train.Blok or self.Train.Blok ~= 2 then return end - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 then - --print(1) - self.Time = CurTime() - --self.STR1 = string.Explode("\n",self.Train:GetNW2String("PAKSD1")) - --self.STR2 = string.Explode("\n",self.Train:GetNW2String("PAKSD2")) - self:STR1(true) - self:STR2(true) - local State = self.Train:GetNW2Int("PAKSD:State",0) - if State == -1 or State == -9 or State >= 1 and State < 6 then - self:STR2("<*>") - end - local Announcer = self.Train.Announcer - if State == 8 then - self:STR1("<*>") - self:STR2("<*>") - elseif State == -2 then - self:STR2("_") - elseif State == 1 then - self:STR1("+INITIAL TEST") - self:STR1("+INITIAL SETUP") - self:STR1("V 0.3") - self:STR1(" PRESS ENTER") - elseif State == 2 then - self:STR1("ENTER PASSWORD") - self:STR1("TO ENTER SYSTEM>") - self:STR1(self.Train:GetNW2Int("PAKSD:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAKSD:Pass",0)) or "ACCESS ERROR") - elseif State == 3 then - self:STR1(" 1 GO TO LINE") - if self.Train:GetNW2Bool("PAKSD:Restart",false) then self:STR1(" 2 RESTART") end - --if self.FirstStation ~= "" and self.LastStation ~= "" then self:STR1("\n 2 RESTART" end - elseif State == 4 then - local State4Choosed = self.Train:GetNW2Int("PAKSD:State4",1) - if State4Choosed < 4 then - local Line = self.Train:GetNW2Int("PAKSD:Line",0) - local FirstStation = self.Train:GetNW2Int("PAKSD:FirstStation",-1) - local LastStation = self.Train:GetNW2Int("PAKSD:LastStation",-1) - local tbl = Metrostroi.EndStations - self:STR1("LINE "..Line..(State4Choosed == 1 and "_" or " ").." ") - if tbl[Line] then - local Routelength = #Metrostroi.EndStations[Line] - self:STR1("<"..tbl[Line][1].."->"..tbl[Line][Routelength]..">",true) - else - self:STR1("ERR>",true) - end - local st = "" - if tbl[Line] and tbl[Line][FirstStation] and Metrostroi.AnnouncerData[FirstStation] then - st = Metrostroi.AnnouncerData[FirstStation][1]:sub(1,10) - end - self:STR1("FIRST "..(FirstStation ~= -1 and FirstStation or "")..(State4Choosed == 2 and "_" or " ")..st:upper()) - st = "" - if tbl[Line] and tbl[Line][LastStation] and Metrostroi.AnnouncerData[LastStation] then - st = Metrostroi.AnnouncerData[LastStation][1]:sub(1,10) - end - self:STR1("LAST "..(LastStation ~= -1 and LastStation or "")..(State4Choosed == 3 and "_" or " ")..st:upper()) - self:STR1(" VVVV ") - else - local RouteNumber = self.Train:GetNW2Int("PAKSD:RouteNumber",-1) - self:STR1("ROUTEn "..(RouteNumber ~= -1 and RouteNumber or "").."_") - self:STR1("\"ENTER\" FOR CONFIRM") - end - elseif State == 49 then - local State4Choosed = self.Train:GetNW2Int("PAKSD:State4",1) - local Line = self.Train:GetNW2Int("PAKSD:Line",0) - local LastStation = self.Train:GetNW2Int("PAKSD:LastStation",-1) - local RouteNumber = self.Train:GetNW2Int("PAKSD:RouteNumber",-1) - local tbl = Metrostroi.EndStations - self:STR1("LINE "..Line..(State4Choosed == 1 and "_" or " ").." ") - if tbl[Line] then - local Routelength = #Metrostroi.EndStations[Line] - self:STR1("<"..tbl[Line][1].."->"..tbl[Line][Routelength]..">",true) - else - self:STR1("ERR>",true) - end - local st = "" - if tbl[Line] and tbl[Line][LastStation] and Metrostroi.AnnouncerData[LastStation] then - st = Metrostroi.AnnouncerData[LastStation][1]:sub(1,10) - end - self:STR1("LAST "..(LastStation ~= -1 and LastStation or "")..(State4Choosed == 2 and "_" or " ")..st:upper()) - self:STR1("ROUTEn "..(RouteNumber ~= -1 and RouteNumber or "")..(State4Choosed == 3 and "_" or " ")) - self:STR1("\"ENTER\" FOR CONFIRM") - elseif State == 48 or State == 45 then - self:STR1("ERROR WHEN ENTER") - self:STR1("SOURCE DATA") - self:STR1("FOR CONTINUE") - self:STR1("PRESS ENTER") - elseif State == 5 then - self:STR1(" TRAIN CHECK") - self:STR1(" APPROVED") - self:STR1(" WHEN CHECK") - self:STR1(" PRESS ENTER") - elseif State == 6 then - self:STR1("ENTER") - self:STR1("TO WORKING MODE?") - self:STR1("") - self:STR1("YES-\"ENTER\" NO-\"<-\"") - elseif State > 6 then - - local speed = math.floor(self.Train:GetPackedRatio(3)*100.0) - local station = self.Train:GetNW2Int("PAKSD:Station",0) - local spd = self.Train:GetNW2Bool("PAKSD:UOS", false) and 35 or self.Train:GetNW2Bool("PAKSD:VRD",false) and 20 or self.Train:GetPackedBool(46) and 80 or self.Train:GetPackedBool(45) and 70 or self.Train:GetPackedBool(44) and 60 or self.Train:GetPackedBool(43) and 40 or self.Train:GetPackedBool(42) and "00" or "H4" - local VZ = (self.Train:GetNW2Bool("PAKSD:VZ1",false) and "B1" or "").." "..(self.Train:GetNW2Bool("PAKSD:VZ2",false) and "B2" or "") - if self.OldVRD ~= self.Train:GetNW2Bool("PAKSD:VRD",false) then - self.OldVRD = self.Train:GetNW2Bool("PAKSD:VRD",false) - if self.OldVRD then - self.VRDTimer = CurTime() + 7 - end - end - local distance = self.Train:GetNW2Int("PAKSD:Distance",-99) - local pos =self.Positions[self.Train:GetNW2Int("PAKSD:KV",0)] - local typ = self.Types[self.Train:GetNW2Int("PAKSD:Type",0)] - local RK = (self.Positions2[self.Train:GetNW2Int("PAKSD:PPT",1)]).."="..tostring(self.Train:GetNW2Int("PAKSD:RK",0)) - if speed < 10 then - speed = "0"..speed - end - if State == 71 then - self:STR1("CONFIRM") - self:STR1("Autodrive MODE?") - self:STR1() - self:STR1("YES-\"ENTER\" NO-\"<-\"") - elseif State == 72 then - self:STR1("CONFIRM") - self:STR1("SC MODE? ") - self:STR1() - self:STR1("YES-\"ENTER\" NO-\"<-\"") - elseif State == 73 then - self:STR1("CONFIRM") - self:STR1("SL MODE? ") - self:STR1() - self:STR1("YES-\"ENTER\" NO-\"<-\"") - elseif State == 74 then - local State74 = self.Train:GetNW2Int("PAKSD:State74",1) - local SD = self.Train:GetNW2Bool("PAKSD:KD",false) - if State74 < 4 then - self:STR1("1"..(State74 == 1 and "%" or "")..":"..(State74 == 1 and "$" or "").."ROLLING CHECK") - self:STR1("2"..(State74 == 2 and "%" or "")..":"..(State74 == 2 and "$" or "").."DRIVE "..(SD and "WITH" or "WITHOUT").." SD") - self:STR1("3"..(State74 == 3 and "%" or "")..":"..(State74 == 3 and "$" or "").."SETTINGS CHANGE") - self:STR1(" VVVV ") - elseif State74 < 7 then - self:STR1("4"..(State74 == 4 and "%" or "")..":"..(State74 == 4 and "$" or "")..(self.Train:GetNW2Bool("PAKSD:Transit",false) and "DIS " or "").."TRANSIT MODE") - self:STR1("5"..(State74 == 5 and "%" or "")..":"..(State74 == 5 and "$" or "").."DRIVE WITH Vd=0") - self:STR1("6"..(State74 == 6 and "%" or "")..":"..(State74 == 6 and "$" or "").."ZONED TURN") - self:STR1(" VVVV ") - else - self:STR1("7"..(State74 == 7 and "%" or "")..":"..(State74 == 7 and "$" or "").."FIX STATION") - self:STR1("8"..(State74 == 8 and "%" or "")..":"..(State74 == 8 and "$" or "").."STATION MODE") - end - elseif State == 75 then - local State75 = self.Train:GetNW2Int("PAKSD:State75",1) - self:STR1("1"..(State75 == 1 and "%" or "")..":"..(State75 == 1 and "$" or "").."GO OUT FROM TRAIN") - self:STR1("2"..(State75 == 2 and "%" or "")..":"..(State75 == 2 and "$" or "").."ENTRY FASTER") - self:STR1("3"..(State75 == 3 and "%" or "")..":"..(State75 == 3 and "$" or "").."RELEASE DOORS") - self:STR1("4"..(State75 == 4 and "%" or "")..":"..(State75 == 4 and "$" or "").."TRAIN DEPEAT SOON") - elseif State == 76 then - self:STR1("CONTINUE MOVEMENT") - self:STR1("WITH VD=0? ") - self:STR1() - self:STR1("YES-\"ENTER\" NO-\"<-\"") - elseif State == 77 then - self:STR1("ACCEPT") - self:STR1("ROLLING CHECK?") - self:STR1() - self:STR1("YES-\"ENTER\" NO-\"<-\"") - --self:STR1("5:DRIVE WITH Vd = 0") - --self:STR1("6:ZONED TURN") - --[[ - elseif State == 79 then - self:STR1("FOR TRANSIT MODE") - self:STR1("PRESS ENTER") - self:STR1("FOR CANCEL") - self:STR1("PRESS \"-\"") - elseif State == 75 then - self:STR1("FOR ROLL MODE") - self:STR1("PRESS ENTER") - self:STR1("FOR CANCEL") - self:STR1("PRESS \"-\"") - elseif State == 77 then - self:STR1("FOR STATION GO MODE") - self:STR1("PRESS ENTER") - self:STR1("FOR CANCEL") - self:STR1("PRESS \"-\"") - ]] - elseif self.Train:GetNW2Bool("PAKSD:Nakat",false) then - self:STR1("ROLLING CHECK") - self:STR1("DISTANCE:"..Format("%.2f",self.Train:GetNW2Float("PAKSD:Meters",0))) - self:STR1("DIRECTION:"..(self.Train:GetNW2Bool("PAKSD:Sign",false) and "BACKWARD" or "FORWARD")) - self:STR1(typ.."="..pos..string.rep(" ",6-#typ-#pos)..VZ..string.rep(" ",20-5-#VZ-6-1).."Vf="..speed) - else - local State7 = self.Train:GetNW2Int("PAKSD:State7",0) - if State7 == 0 then - self:STR1(" EXIT TO THE LINE") - local date = os.date("!*t",os_time) - self:STR1(" Tm="..Format("%02d:%02d:%02d",date.hour,date.min,date.sec)) - self:STR1() - if self.VRDTimer and CurTime() - self.VRDTimer < 0 then - self:STR1("@ACC MOV WITH Vd=0") - elseif self.Train:GetNW2Bool("PAKSD:Transit",false) then - self:STR1("TRANSIT MODE") - else - self:STR1(typ.."="..pos..string.rep(" ",6-#typ-#pos)..VZ..string.rep(" ",20-5-#VZ-6-1).."Vd="..spd) - self.VRDTimer = nil - end - elseif State7 == 1 and Metrostroi.AnnouncerData then - local path = self.Train:GetNW2Int("PAKSD:Path",0) - local bt = tostring(self.Train:GetNW2Int("PAKSD:BoardTime",0)) - local date = os.date("!*t",os_time) - local tm = Format("%02d:%02d:%02d",date.hour,date.min,date.sec) - self:STR1((Metrostroi.AnnouncerData[station] and Metrostroi.AnnouncerData[station][1]) and Metrostroi.AnnouncerData[station][1]:upper() or "UNK") - self:STR1("TO "..Metrostroi.AnnouncerData[self.Train:GetNW2Int("PAKSD:LastStation",108)][1]:upper()) - self:STR1("ST "..bt..string.rep(" ",20-8-3-#bt)..tm) - if self.VRDTimer and CurTime() - self.VRDTimer < 0 then - self:STR1("@ACC MOV WITH Vd=0") - elseif self.Train:GetNW2Bool("PAKSD:Transit",false) then - self:STR1("TRANSIT MODE") - else - self:STR1(typ.."="..pos..string.rep(" ",6-#typ-#pos)..VZ..string.rep(" ",20-6-4-#VZ)..(path == 1 and "I " or "II" ).."P") - self.VRDTimer = nil - end - else - local name = self.Train:GetNW2String("PAKSD:SName","ERR") - local curr = string.rep("#",speed/4.7-1) - local max = string.rep("-",(spd ~= "H4" and spd or 0)/4.7-1) - self:STR1(curr.."<"..string.rep(" ",20-#curr-3)..speed) - self:STR1(max.."^"..string.rep(" ",20-#max-3)..spd) - self:STR1("TC="..name..string.rep(" ",20-9-#name)..math.min(9999,math.floor(distance)).." m") - if self.VRDTimer and CurTime() - self.VRDTimer < 0 then - self:STR1("@ACC MOV WITH Vd=0") - elseif self.Train:GetNW2Bool("PAKSD:Transit",false) then - self:STR1("TRANSIT MODE") - else - self:STR1(typ.."="..pos..string.rep(" ",6-#typ-#pos)..VZ..string.rep(" ",20-2-6-1-#VZ-math.max(4,#self.StataionData[station])).."<"..self.StataionData[station]..">") - self.VRDTimer = nil - end - end - end - self:STR2("V+= "..speed.." Vd= "..spd.." S= "..(station == 0 and "unk" or math.min(999,math.floor(distance)))) - self:STR2(typ.."= "..pos..string.rep(" ",6-#typ-#pos)..RK..string.rep(" ",20-7-4-3-#RK).."T= "..(self.Train:GetPackedRatio(3)*100.0 > 0.25 and math.min(999,math.floor(distance/(speed*1000/3600))) or "inf")) - end - end -end - -function TRAIN_SYSTEM:UpdateUPO() - for k,v in pairs(self.Train.WagonList) do - if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,v == self.Train) end - v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end -end - -function TRAIN_SYSTEM:Trigger(name,nosnd) - local Announcer = self.Train.Announcer - if self.State == 1 and name == "BEnter" then - self:SetState(2) - elseif self.State == 2 then - if name == "BEnter" then - if self.Pass ~= self.EnteredPass then - self.EnteredPass = "/" - else - self:SetState(3) - end - else - if self.EnteredPass == "/" then self.EnteredPass = "" end - local Char = tonumber(name:sub(2,2)) - if Char and #self.EnteredPass < 6 then self.EnteredPass = self.EnteredPass..tonumber(name:sub(2,2)) end - end - elseif self.State == 3 then - if name == "B1" then - self:SetState(4) - end - if name == "B2" and self.FirstStation ~= "" and self.LastStation ~= "" then - self:SetState(49) - end - elseif self.State == 4 then - --print(name) - if name == "BDown" then - self.State4Choosed = math.min(4,self.State4Choosed + 1) - end - if name == "BUp" then - self.State4Choosed = math.max(1,self.State4Choosed - 1) - end - if name == "BLeft" then - if self.State4Choosed == 2 then - self.FirstStation= self.FirstStation:sub(1,-2) - end - if self.State4Choosed == 3 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State4Choosed == 4 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEnter" then - if not Metrostroi.EndStations[self.Line] or - not Metrostroi.EndStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.EndStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 then - self:SetState(45) - else - self:SetState(5) - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State4Choosed == 1 then - self.Line = Char - if Metrostroi.EndStations[self.Line] then - local Routelength = #Metrostroi.EndStations[self.Line] - self.FirstStation = tostring(Metrostroi.EndStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.EndStations[self.Line][Routelength]) - end - end - if self.State4Choosed == 2 and #self.FirstStation < 3 then - self.FirstStation= self.FirstStation..tostring(Char) - end - if self.State4Choosed == 3 and #self.LastStation < 3 then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State4Choosed == 4 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 49 then - if name == "BDown" then - self.State4Choosed = math.min(3,self.State4Choosed + 1) - end - if name == "BUp" then - self.State4Choosed = math.max(1,self.State4Choosed - 1) - end - if name == "BLeft" then - if self.State4Choosed == 2 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State4Choosed == 3 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEnter" then - if not Metrostroi.EndStations[self.Line] or - not Metrostroi.EndStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 then - self:SetState(48) - else - self:SetState(7) - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State4Choosed == 1 then - self.Line = Char - if Metrostroi.EndStations[self.Line] then - local Routelength = #Metrostroi.EndStations[self.Line] - self.FirstStation = self.FirstStation ~= "" and self.FirstStation or tostring(Metrostroi.EndStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.EndStations[self.Line][Routelength]) - if tonumber(self.LastStation) < tonumber(self.FirstStation) then - local temp = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = temp - end - end - end - if self.State4Choosed == 2 and #self.LastStation < 3 then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State4Choosed == 3 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 45 then - if name == "BEnter" then - self:SetState(4,nil,true) - end - elseif self.State == 48 then - if name == "BEnter" then - self:SetState(49,nil,true) - end - elseif self.State == 5 then - if name == "BEnter" and self.Check == false then - self:SetState(6) - end - elseif self.State == 6 then - if name == "BLeft" then - self:SetState(3) - end - if name == "BEnter" then - self:SetState(7) - end - elseif self.State == 7 and not self.Nakat then - if name == "B1" then - if not self.AutodriveWorking and self.Train.ALS_ARS["33G"] < 0.5 then - self:SetState(71) - end - elseif name == "B2" then - if (self.AutodriveWorking or self.VRD or self.UOS) and not self.Trainsit then - self:SetState(72) - end - elseif name == "B3" then - --print(self.Train.ALS_ARS.Signal0,self.Train.ALS_ARS.RealNoFreq) - if not self.UOS and not self.Train.ALS_ARS.EnableARS then - self:SetState(73) - end - elseif name == "BEnter" then - self:SetState(74) - elseif name == "BPlus" then - self:SetState(75) - end - --[[ - elseif name == "B5" then - if not self.Transit and not self.VRD then - self:SetState(74) - end - elseif name == "B6" then - if not self.Nakat and not self.VRD then - self:SetState(75) - end - elseif name == "B7" then - if not self.Stancionniy and not self.VRD then - self:SetState(77) - end - elseif name == "BUp" then - self:AnnII(4) - elseif name == "BDown" then - self:AnnII(3) - elseif name == "BPlus" then - self:AnnII(2) - elseif name == "BMinus" then - self:AnnII(1) - end - ]] - elseif self.State == 7 and self.Nakat then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - self.Train.ALS_ARS.Nakat = false - end - elseif self.State == 71 then - if name == "BEnter" then - self.AutodriveWorking = true - self.UOS = false - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 72 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = false - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 73 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = true - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 74 then - if name == "BUp" then - self.State74 = math.max(1,self.State74 - 1) - --if self.State74 == 4 and self.Transit then - --self:Trigger("BUp",true) - --else - if self.State74 == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BUp",true) - elseif self.State74 == 6 then - if self.LastStation == tostring(self.Train.UPO.Station) then - self:Trigger("BUp",true) - end - elseif self.State74 == 7 then - if self.FirstStation == tostring(self.Train.UPO.Station) then - self:Trigger("BUp",true) - end - end - end - if name == "BDown" then - self.State74 = math.min(8,self.State74 + 1) - --if self.State74 == 4 and self.Transit then - --self:Trigger("BDown",true) - --else - if self.State74 == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BDown",true) - elseif self.State74 == 6 then - if self.LastStation == tostring(self.Train.UPO.Station) then - self:Trigger("BDown",true) - end - elseif self.State74 == 7 then - if self.FirstStation == tostring(self.Train.UPO.Station) then - self:Trigger("BDown",true) - end - end - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - if name == "BEnter" then - if self.State74 == 1 and self.Train.Speed < 0.5 and self.Train.ALS_ARS.SpeedLimit > 20 then - self:SetState(77) - elseif self.State74 == 2 then - self.KD = not self.KD - elseif self.State74 == 3 then - self:SetState(3) - elseif self.State74 == 4 then - self.Transit = not self.Transit - self.AutodriveWorking = false - elseif self.State74 == 5 then - self:SetState(76) - elseif self.State74 == 6 then - if Metrostroi.EndStations[self.Line][self.Train.UPO.Station] then - self.LastStation = tostring(self.Train.UPO.Station) - end - elseif self.State74 == 7 then - if Metrostroi.EndStations[self.Line][self.Train.UPO.Station] then - self.FirstStation = tostring(self.Train.UPO.Station) - end - elseif self.State74 == 8 and not self.Arrived then - self.Arrived = true - end - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - if self.State74 > 6 then - if name == "B7" then - if Metrostroi.EndStations[self.Line][self.Train.UPO.Station] then - self.FirstStation = tostring(self.Train.UPO.Station) - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - end - if name == "B8" and not self.Arrived == nil then - self.Arrived = true - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - elseif self.State74 > 3 then - if name == "B4" then - self.Transit = not self.Transit - self.AutodriveWorking = false - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - if name == "B5" then - self:SetState(76) - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - if name == "B6" then - if Metrostroi.EndStations[self.Line][self.Train.UPO.Station] then - self.LastStation = tostring(self.Train.UPO.Station) - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - end - else - if name == "B1" and self.Train.Speed < 0.5 and self.Train.ALS_ARS.SpeedLimit > 20 then - self:SetState(77) - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - if name == "B2" then - self.KD = not self.KD - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - if name == "B3" then - self:SetState(3) - if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self:SetState(7,nil,true) end - end - end - elseif self.State == 75 then - if name == "BUp" then - self.State75 = math.max(1,self.State75 - 1) - end - if name == "BDown" then - self.State75 = math.min(4,self.State75 + 1) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - if name == "BEnter" then - self.Train.UPO:II(self.State75) - self:SetState(7,nil,true) - end - local Char = tonumber(name:sub(2,2)) - if Char and Char > 0 and Char < 5 then - self.Train.UPO:II(Char) - self:SetState(7,nil,true) - end - elseif self.State == 76 then - if name == "BEnter" then - self.AutodriveWorking = false - self.VRD = true - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - elseif self.State == 77 then - if name == "BEnter" then - if self.Train.Speed < 0.5 and self.Train.ALS_ARS.SpeedLimit > 20 then - self.AutodriveWorking = false - self.VRD = false - self.Nakat = true - end - self:SetState(7,nil,true) - end - if name == "BLeft" then - self:SetState(7,nil,true) - end - - --[[ - elseif self.State == 74 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = false - self.VRD = false - self.Transit = true - self.Nakat = false - self.Stancionniy = false - self:SetState(7,nil,true) - end - if name == "BMinus" then - self:SetState(7,nil,true) - end - elseif self.State == 75 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = false - self.VRD = false - self.Transit = false - self.Nakat = true - self.Stancionniy = false - self:SetState(7,nil,true) - end - if name == "BMinus" then - self:SetState(7,nil,true) - end - elseif self.State == 77 then - if name == "BEnter" then - self.AutodriveWorking = false - self.UOS = false - self.VRD = false - self.Transit = false - self.Nakat = false - self.Stancionniy = true - self:SetState(7,nil,true) - end - if name == "BMinus" then - self:SetState(7,nil,true) - end - ]] - end -end ---[[ -function TRAIN_SYSTEM:PAKSD1() - surface.SetDrawColor(0,255,127) - for x = 1,20 do - for y = 0,3 do - for x1 = 1,5 do - for y1 = 1,7 do - self.Train:DrawCircle(5+x1*2 + x*12,5+y1*2 + y*16,1) - end - end - end - end -end -function TRAIN_SYSTEM:PAKSD2() - surface.SetDrawColor(0,255,127) - for i = 0,1 do - for x = 1,5 do - for y = 1,7 do - self.Train:DrawCircle(5+x*2,5+y*2 + i*16,1) - end - end - end -end -]] - -function TRAIN_SYSTEM:SetState(state,state7,noupd) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if state and self.State ~= state then - self.State = state - if noupd then return end - self:SetTimer() - if state == -2 then - self.Train:PlayOnce("paksd","cabin",0.75,200.0) - end - if state == 2 then - self.EnteredPass = "" - end - if state == 4 then - self.Line = self.Train.UPO.Line or 1 - self.RouteNumber = "" - self.State4Choosed = 1 - if Metrostroi.EndStations[self.Line] then - self.FirstStation = self.Train.UPO.FirstStation or tostring(self.Train.UPO.Path == 2 and Metrostroi.EndStations[self.Line][#Metrostroi.EndStations[self.Line]] or Metrostroi.EndStations[self.Line][1]) - self.LastStation = self.Train.UPO.LastStation or tostring(self.Train.UPO.Path == 1 and Metrostroi.EndStations[self.Line][#Metrostroi.EndStations[self.Line]] or Metrostroi.EndStations[self.Line][1]) - else - self.FirstStation = "111" - self.LastStation = "123" - end - self:UpdateUPO() - end - if state == 49 then - self.State4Choosed = 1 - end - if state == 5 then - self.Check = nil - else - self.Train.ALS_ARS:TriggerInput("Ring",0) - end - if state == 7 then - if not state7 then - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-KSD"] then - v["PA-KSD"]:SetState(7,true) - end - end - end - end - if state == 74 then - self.State74 = 1 - end - if state == 75 then - self.State75 = 1 - end - end -end - -function TRAIN_SYSTEM:GetTimer(val) - return self.TimerMod and (CurTime() - self.Timer) > val -end -function TRAIN_SYSTEM:SetTimer(mod) - if mod then - if self.TimerMod == mod then return end - self.TimerMod = mod - else - self.TimerMod = nil - end - self.Timer = CurTime() -end - -function TRAIN_SYSTEM:Think(dT) - --print(self.Train.PAKSD_VUD.Value) - if self.Train.Blok ~= 2 then self:SetState(0) return end - if self.VPA and self.Train.VPA.Value < 1 and not self.OffTimer then - self.OffTimer = CurTime() + 1 - self.OnTimer = nil - end - if self.Train.VPA.Value == 1 and self.OffTimer then - self.OffTimer = nil - self.OnTimer = nil - end - if not self.VPA and self.Train.VPA.Value > 1 and not self.OnTimer then - self.OffTimer = nil - self.OnTimer = CurTime() + 1 - end - if self.OnTimer and (CurTime() - self.OnTimer) > 0 then - for k,v in pairs(self.Train.WagonList) do - if v["PA-KSD"] then v["PA-KSD"].VPA = true end - end - self.OnTimer = nil - end - if self.OffTimer and (CurTime() - self.OffTimer) > 0 then - for k,v in pairs(self.Train.WagonList) do - if v["PA-KSD"] then v["PA-KSD"].VPA = false end - end - self.OffTimer = nil - end - if self.Train.VB.Value > 0.5 and self.Train.Battery.Voltage > 55 and self.VPA and self.State >= -1 then - for k,v in pairs(self.TriggerNames) do - if self.Train[v] and (self.Train[v].Value > 0.5) ~= self.Triggers[v] then - if self.Train[v].Value > 0.5 then - self:Trigger(v) - self.Train:PlayOnce("paksd","cabin",0.75,160.0) - end - --print(v,self.Train[v].Value > 0.5) - self.Triggers[v] = self.Train[v].Value > 0.5 - end - end - end - --print(self.Train.Owner) - local ARS = self.Train.ALS_ARS - local Announcer = self.Train.Announcer - --self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) - --self.Train.UPO.Path = Metrostroi.PathConverter[self.Train:ReadCell(65510)] or 0 - --self.Train.UPO.Distance = self.Train:ReadCell(49165) + (self.Train.Autodrive.Corrections[self.Train.UPO.Station] or 0) - --print(self.Train.VB.Value < 0.5 or self.Train.Battery.Voltage < 55) - if self.Train.VB.Value < 0.5 or self.Train.Battery.Voltage < 55 or not self.VPA then self:SetState(0) elseif self.State == 0 then self:SetState(-2) end - --if not ARS.EnableARS and self.State > 6 then self.State = -1 end - if self.Train.KV.ReverserPosition == 0 and self.State > 6 and self.State ~= 8 then self:SetState(8) end - if self.Train.KV.ReverserPosition == 0 and self.State > 0 and self.State < 6 and self.State ~= -9 then self:SetState(-9) end - if self.Train.KV.ReverserPosition ~= 0 and self.State == -9 then self:SetState(1) end - if self.Train.KV.ReverserPosition ~= 0 and self.State == 8 then - self:SetState(7,nil,true) - end - if self.State == -2 then - self:SetTimer(0.5) - if self:GetTimer(5) then - self.State = -1 - return - end - elseif self.State == -1 then - if self.Train.KV.ReverserPosition == 0 then - self:SetState(1) - else - self:SetState(-9) - end - elseif self.State == 5 then - if self.Check == nil then ARS:TriggerInput("Ring",1) end - --print(ARS.KVT) - if ARS.KVT and self.Check == nil then - self.Check = true - self:SetTimer(4) - end - if not ARS.KVT and self.Check ~= false then - self.Check = nil - self:SetTimer() - end - if ARS.KVT and self:GetTimer(1) then - self.Check = false - ARS:TriggerInput("Ring",0) - self:SetTimer() - end - elseif self.State > 6 and self.State ~= 8 and self.State ~= 49 and self.State ~= 45 and self.State ~= 48 then - if self.VRD and (not ARS.Signal0 or ARS.Signal0 and (ARS.Signal40 or ARS.Signal60 or ARS.Signal70 or ARS.Signal80)) then self.VRD = false end - if self.Train.UPO.Distance > 40 and (self.Train.UPO.Distance) < (160+35*self.Train.Autodrive.MU - (ARS.SpeedLimit == 40 and 30 or 0)) then - self.Train.UPO.StationAutodrive = true - end - if (self.Train.UPO:GetSTNum(self.LastStation) > self.Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 2) or (self.Train.UPO:GetSTNum(self.FirstStation) > self.Train.UPO:GetSTNum(self.LastStation) and self.Train.UPO.Path == 1) then - local old = self.LastStation - self.LastStation = self.FirstStation - self.FirstStation = old - self:UpdateUPO() - end - self.State7 = (self.Train.UPO:End(self.Train.UPO.Station,self.Train.UPO.Path,true) or self.Train.UPO:GetSTNum(self.LastStation) > self.Train.UPO:GetSTNum(self.Train.UPO.Station) and self.Train.UPO.Path == 2 or self.Train.UPO:GetSTNum(self.Train.UPO.Station) < self.Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 1) and 0 or self.Arrived ~= nil and 1 or 2 - if self.State7 ~= 0 then - if (self.RealState == 8 or self.RealState == 6 or self.RealState == 49) and not self.Transit then - if self.Train.UPO.Distance < 75 and not self.Arrived and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] and ARS.Speed <= 1 then - self.Arrived = true - end - end - if not self.Transit and 45 < self.Train.UPO.Distance and self.Train.UPO.Distance < 75 and not self.Arrived and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] then - self.Arrived = true - end - if self.Transit then self.Arrived = nil end - if self.Train.UPO.Distance > 75 then - self.Arrived = nil - else - --if self.Train.Panel.SD < 0.5 then self.Arrived = true end - end - if self.Arrived then - if self.Train.UPO.BoardTime and math.floor((self.Train.UPO.BoardTime or CurTime()) - CurTime()) < (self.Train.Horlift and 15 or 8) and self.Arrived then - self.Arrived = false - end - end - if self.Nakat then - if not self.Meters then self.Meters = 0 end - self.Meters = self.Meters + ARS.Speed*self.Train.SpeedSign/3600*1000*dT - if math.abs(self.Meters) > 2.5 then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - ARS.Nakat = true - end - end - else - self.Meters = nil - end - end - end - if self.State ~= self.RealState then - self.RealState = self.State - self.TimeOverride = true - end - - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 or self.TimeOverride then - self.TimeOverride = nil - --print(1) - self.Time = CurTime() - --if self.STR1 ~= self.STR1Real then - --self.Train:SetNW2String("PAKSD1",self.STR1) - --self.STR1 = self.STR1Real - --end - --if self.STR2 ~= self.STR2Real then - --self.Train:SetNW2String("PAKSD2",self.STR2) - --self.STR2 = self.STR2Real - --end - --self.Train:SetNW2String("PAKSD2","V+= 59 VD= 70 self.Train.UPO.Distance= 307\nKB=T1 Tx= -2c") - self.Train:SetNW2Int("PAKSD:State",self.State) - if self.State == 2 then self.Train:SetNW2Int("PAKSD:Pass",self.EnteredPass ~= "/" and #self.EnteredPass or -1) - elseif self.State == 3 then self.Train:SetNW2Bool("PAKSD:Restart",self.FirstStation ~= "" and self.LastStation ~= "") - elseif self.State == 4 then - self.Train:SetNW2Int("PAKSD:State4",self.State4Choosed) - if self.State4Choosed < 4 then - self.Train:SetNW2Int("PAKSD:FirstStation",tonumber(self.FirstStation) or -1) - self.Train:SetNW2Int("PAKSD:LastStation",tonumber(self.LastStation) or -1) - self.Train:SetNW2Int("PAKSD:Line",self.Line) - else - self.Train:SetNW2Int("PAKSD:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - end - elseif self.State == 49 then - self.Train:SetNW2Int("PAKSD:State4",self.State4Choosed) - self.Train:SetNW2Int("PAKSD:LastStation",tonumber(self.LastStation) or -1) - self.Train:SetNW2Int("PAKSD:Line",self.Line) - self.Train:SetNW2Int("PAKSD:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - elseif self.State == 7 then - self.Train:SetNW2Int("PAKSD:LastStation",tonumber(self.LastStation)) - self.Train:SetNW2Int("PAKSD:State7",self.State7) - self.Train:SetNW2Int("PAKSD:Nakat",self.Nakat) - self.Train:SetNW2Bool("PAKSD:VRD",self.VRD) - self.Train:SetNW2Bool("PAKSD:Transit",self.Transit) - self.Train:SetNW2Int("PAKSD:Station",self.Train.UPO.Station) - self.Train:SetNW2Int("PAKSD:Distance",self.Train.UPO.Distance) - self.Train:SetNW2Int("PAKSD:Type",(self.Train.Pneumatic.EmergencyValveEPK and 0 or self.Train.ALS_ARS.UAVAContacts and 4 or self.UOS and 5 or self.VRD and 2 or (self.Train.AutodriveEnabled or self.Train.UPO.StationAutodrive) and 1 or 3)) - self.Train:SetNW2Int("PAKSD:PPT",math.Clamp(math.floor(self.Train.PositionSwitch.Position + 0.5),1,3)) - self.Train:SetNW2Int("PAKSD:RK",math.floor(self.Train.RheostatController.Position+0.5)) - self.Train:SetNW2Int("PAKSD:KV",self.Train.Autodrive.AutodriveEnabled and (self.Rotating and -3 or self.Brake and -1 or self.Accelerate and 3 or 0) or (ARS["33G"] > 0 or (self.UOS and (ARS["8"] + (1-self.Train.RPB.Value)) > 0)) and 5 or self.Train.KV.RealControllerPosition) - self.Train:SetNW2Bool("PAKSD:VZ1", self.Train:ReadTrainWire(29) > 0) - self.Train:SetNW2Bool("PAKSD:VZ2", self.Train.PneumaticNo2.Value > 0) - self.Train:SetNW2Bool("PAKSD:UOS", self.UOS) - - --self.Train:SetNW2Int("PAKSD:ARS",ARS.Signal80 and 80 or ARS.Signal70 and 70 or ARS.Signal60 and 60 or ARS.Signal40 and 40 or ARS.Signal0 and 0 or -1) - --local speed = tostring(math.floor(ARS.Speed)) - - if self.State7 == 1 then - self.Train:SetNW2Int("PAKSD:BoardTime",math.floor((self.Train.UPO.BoardTime or CurTime()) - CurTime())) - self.Train:SetNW2Int("PAKSD:Path",self.Train.UPO.Path) - elseif self.State7 == 2 then - self.Train:SetNW2String("PAKSD:SName",ARS.Signal and ARS.Signal.RealName or "ERR") - end - if self.Nakat then - self.Train:SetNW2Float("PAKSD:Meters",math.Round(math.abs(self.Meters or 0),1)) - self.Train:SetNW2Bool("PAKSD:Sign",ARS.Speed > 0.5 and self.Train.SpeedSign < 0) - end - elseif self.State == 74 then - self.Train:SetNW2Int("PAKSD:State74",self.State74) - self.Train:SetNW2Bool("PAKSD:KD",self.KD) - self.Train:SetNW2Bool("PAKSD:Transit",self.Transit) - elseif self.State == 75 then - self.Train:SetNW2Int("PAKSD:State75",self.State75) - elseif self.State == 8 then - self.Train:SetNW2Bool("PAKSD:VRD",self.VRD) - self.AutodriveWorking = false - self.UOS = false - self.VRD = false - self.Transit = false - self.Nakat = false - self.Stancionniy = false - end - end - if self.Train.VZP.Value > 0.5 and self.AutodriveWorking then - self.Train.Autodrive:Enable() - end - self.RouteNumber = string.gsub(self.Train.RouteNumber or "","^(0+)","") - if self.State > 4 and self.State ~= 49 then - self.Line = self.Train.UPO.Line - self.FirstStation = tostring(self.Train.UPO.FirstStation or "") - self.LastStation = tostring(self.Train.UPO.LastStation or "") - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_pa-m.lua b/lua/metrostroi/systems/_obsolete/sys_pa-m.lua deleted file mode 100644 index c25b76e..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_pa-m.lua +++ /dev/null @@ -1,1550 +0,0 @@ --------------------------------------------------------------------------------- --- ПА-М Поездная Аппаратура Модифицированная --- PA-M Modified Train Equipment --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PA-M") -TRAIN_SYSTEM.DontAccelerateSimulation = true -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("BRight","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BEsc","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BF","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BM","Relay","Switch",{bass = true}) - self.Train:LoadSystem("BP","Relay","Switch",{bass = true}) - - self.TriggerNames = { - "B7", - "B8", - "B9", - "BLeft", - "BRight", - "B4", - "B5", - "B6", - "BUp", - "B1", - "B2", - "B3", - "BDown", - "B0", - "BMinus", - "BPlus", - "BEnter", - "BEsc", - "BF", - "BM", - "BP", - } - self.Triggers = {} - self.Pass = "777" - self.EnteredPass = "" - self.Timer = CurTime() - self.Line = 1 - self.State = 0 - self.RealState = 99 - self.RouteNumber = "" - self.FirstStation = "" - self.LastStation = "" - self.AutoTimer = false - self.Corrections = { - [110] = 1.50, - [111] = -0.10, - [113] = -0.05, - --[114] = -0.05, - [114] = -0.25, - [117] = -0.15, - [118] = 1.40, - [121] = -0.10, - [122] = -0.10, - [123] = 3.00, - [322] = 3.00, - } - self.MenuChoosed = 1 - self.State75 = 1 -end -function TRAIN_SYSTEM:ClientInitialize() - self.STR1r = {} - self.STR2r = {} - self.STR1x = 1 - self.STR2x = 1 - self.Positions = { - [-3] = "T2", - [-2] = "T1a", - [-1] = "T1", - [0] = "0", - [1] = "X1", - [2] = "X2", - [3] = "X3", - --[4] = "RR0", - [5] = "0ХТ", - [6] = "T2", - } - self.TypesRussian = { - [0] = "ЭПВ", - [1] = "КС", - [2] = "ОД", - [3] = "КВ", - [4] = "УА", - [5] = "ОС", - } - self.TypesEnglish = { - [0] = "EPV", - [1] = "KS", - [2] = "OD", - [3] = "KV", - [4] = "UA", - [5] = "OS", - } - self.QuestionsRussian = { - [1] = "проверку наката", - [5] = "движение с Vф=0", - [6] = "изменение станции оборота", - [7] = "режим фиксации станции", - } - self.QuestionsEnglish = { - [1] = "overrun check", - [5] = "drive if Vf=0", - [6] = "change station rotation", - [7] = "lock station mode", - } - - local translate = file.Read("metrostroi_data/language/pam_en.json") - if translate then - self.i18n = util.JSONToTable(translate) - end - self.T = function (source) - if self.i18n and self.BlokEN and self.i18n[source] ~= nil then - return self.i18n[source] - else - if self.i18n and self.BlokEN then print("Need translation for \""..source.."\"") end - return source - end - end - self.BlokEN=false - self.Types=self.TypesRussian - self.Questions=self.QuestionsRussian - self.AutoTimer = false -end - -if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { "Press" } -end - -if CLIENT then - surface.CreateFont("Metrostroi_PAM30", { - font = "Arial", - size = 30, - weight = 700, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM50", { - font = "Arial", - size = 50, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM60", { - font = "Arial", - size = 60, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - - surface.CreateFont("Metrostroi_PAM25", { - font = "Arial", - size = 25, - weight = 400, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM1_25", { - font = "Arial", - size = 25, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM20", { - font = "Arial", - size = 20, - weight = 400, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM1_20", { - font = "Arial", - size = 20, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM15", { - font = "Arial", - size = 15, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM24", { - font = "Arial", - size = 24, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM22", { - font = "Arial", - size = 22, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAM28", { - font = "Arial", - size = 28, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - - surface.CreateFont("Metrostroi_PAM80", { - font = "Arial", - size = 80, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - surface.CreateFont("Metrostroi_PAMBSOD", { - font = "Trebuchet", - size = 13, - weight = 800, - blursize = 0, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - }) - - - function TRAIN_SYSTEM:PAM(train) - local Announcer = self.Train.Announcer - - if self.BlokEN ~= train:GetNW2Bool("BlokEN") then - self.BlokEN = train:GetNW2Bool("BlokEN") - if self.BlokEN then - self.Types=self.TypesEnglish - self.Questions=self.QuestionsEnglish - else - self.Types=self.TypesRussian - self.Questions=self.QuestionsRussian - end - end - - if train:GetNW2Int("PAM:State",-1) ~= -1 then - surface.SetDrawColor(Color(225,225,225,2)) - surface.DrawTexturedRect(0,0,512,427) - end - if train:GetNW2Int("PAM:State",-1) == -2 then - if not self.BSODTimer then self.BSODTimer = CurTime() end - surface.SetDrawColor(Color(0,0,172)) - surface.DrawTexturedRect(0,19,512,389) - - if CurTime() - self.BSODTimer > 1/32*1 then draw.SimpleText("A problem has been detected and PA-M has been shut down to prevent damage","Metrostroi_PAMBSOD",5, 25,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 2/32*1 then draw.SimpleText("to your train.","Metrostroi_PAMBSOD",5, 35,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 4/32*1 then draw.SimpleText("The problem seems to be caused by the following file: CORE.SYS","Metrostroi_PAMBSOD",5, 55,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 6/32*1 then draw.SimpleText("VISITED_BY_KEK_POLICE_ERROR","Metrostroi_PAMBSOD",5, 75,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 7/32*1 then draw.SimpleText("If this is the first time you've seen this Stop error screen","Metrostroi_PAMBSOD",5, 95,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 8/32*1 then draw.SimpleText("restart your computer. If this screen appears again, follow","Metrostroi_PAMBSOD",5, 105,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 9/32*1 then draw.SimpleText("these steps:","Metrostroi_PAMBSOD",5, 115,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 11/32*1 then draw.SimpleText("Check to make sure any new hardware or software is properly installed.","Metrostroi_PAMBSOD",5, 135,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 12/32*1 then draw.SimpleText("If this is a new installation, ask your hardware or software manufacturer","Metrostroi_PAMBSOD",5, 145,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 13/32*1 then draw.SimpleText("for any Windows updates you might need.","Metrostroi_PAMBSOD",5, 155,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 15/32*1 then draw.SimpleText("If problems continue, disable or remove any newly installed hardware","Metrostroi_PAMBSOD",5, 175,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 16/32*1 then draw.SimpleText("or software. Disable BIOS memory options such as caching or shadowing.","Metrostroi_PAMBSOD",5, 185,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 17/32*1 then draw.SimpleText("If you need to use Safe Mode to remove or disable components, restart","Metrostroi_PAMBSOD",5, 195,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 18/32*1 then draw.SimpleText("your computer, press F8 to select Advanced Startup Options, and then","Metrostroi_PAMBSOD",5, 205,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 19/32*1 then draw.SimpleText("select Safe Mode.","Metrostroi_PAMBSOD",5, 215,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 21/32*1 then draw.SimpleText("Technical information:","Metrostroi_PAMBSOD",5, 235,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 22/32*1 then draw.SimpleText("*** STOP: 0x0000000A (0x0000000C, 0x00000002, 0x00000000, 3311BACE)","Metrostroi_PAMBSOD",5, 255,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - - if CurTime() - self.BSODTimer > 25/32*1 then draw.SimpleText("*** autodrive.sys - Address 3311BACE base at 5721DAC7, Date Stamp 533acb25","Metrostroi_PAMBSOD",5, 285,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - if CurTime() - self.BSODTimer > 27/32*1 then draw.SimpleText("Beginning dump of physical memory.","Metrostroi_PAMBSOD",5, 305,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 28/32*1 then draw.SimpleText("Physical memory dump complete.","Metrostroi_PAMBSOD",5, 315,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 29/32*1 then draw.SimpleText("Contact your system administrator or technical support group for further","Metrostroi_PAMBSOD",5, 325,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if CurTime() - self.BSODTimer > 30/32*1 then draw.SimpleText("assistance.","Metrostroi_PAMBSOD",5, 335,Color(255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - - else - if self.BSODTimer then self.BSODTimer = nil end - end - if train:GetNW2Int("PAM:State",-1) == 0 then - if CurTime()%0.4 > 0.2 then draw.SimpleText("_","Metrostroi_PAM30",5, 0,Color(150,150,150,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_BOTTOM) end - end - if train:GetNW2Int("PAM:State",-1) == 2 then - surface.SetDrawColor(Color(0,0,255)) - surface.SetMaterial( Material("vgui/gradient_down")) - surface.DrawTexturedRect(0,0,512,427) - - surface.SetDrawColor(Color(255,255,255)) - surface.SetMaterial( Material("vgui/gradient-d")) - surface.DrawTexturedRect(0,200,512,50) - surface.SetMaterial( Material("vgui/gradient-u")) - surface.DrawTexturedRect(0,250,512,50) - - surface.SetDrawColor(Color(0,255,0)) - surface.SetMaterial( Material("vgui/gradient-d")) - surface.DrawTexturedRect(0,200,512,227) - - draw.SimpleText(self.T("НИИ Фабрики SENT"),"Metrostroi_PAM30",256, 100,Color(0,155,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Терминал машиниста (ПА-М)"),"Metrostroi_PAM30",256, 130,Color(0,155,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - if train:GetNW2Int("PAM:State",-1) == 3 then - - draw.SimpleText(self.T("НАЧАЛЬНЫЙ ТЕСТ ЗАКОНЧЕН"),"Metrostroi_PAM30",256, 30,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawRectOutline(10, 80, 492, 210,Color(110,172,95),3) - - surface.SetDrawColor(Color(2,2,2)) - surface.DrawRect(17,70,180,20) - draw.SimpleText(self.T("РЕЗУЛЬТАТЫ"),"Metrostroi_PAM30",22, 80,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - draw.SimpleText(self.T("Начальный тест"),"Metrostroi_PAM30",60, 125,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("норма"),"Metrostroi_PAM30",480, 125,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Начальная установка"),"Metrostroi_PAM30",60, 165,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("норма"),"Metrostroi_PAM30",480, 165,Color(110,172,95),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Версия ПО БЦВМ = 0.6"),"Metrostroi_PAM30",80, 245,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - if not train:GetNW2Bool("PAM:RR",false) then - draw.SimpleText(self.T("Вставьте реверсивную рукоятку"),"Metrostroi_PAM30",10, 320,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Для ввода кода доступа"),"Metrostroi_PAM30",10, 320,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(100, 345, 75, 30,Color(110,172,95),3 ,Color(230,230,230)) - draw.SimpleText(self.T("нажми Enter"),"Metrostroi_PAM30",10, 360,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - end - if train:GetNW2Int("PAM:State",-1) == 4 then - --elf.Train:GetNW2Int("PAM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 80, 492, 170,Color(110,172,95),3) - if train:GetNW2Int("PAM:Pass",0) == -1 then - draw.SimpleText(self.T("ОШИБКА ДОСТУПА"),"Metrostroi_PAM30",256, 160,Color(200,0,0,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Введи код доступа в систему"),"Metrostroi_PAM30",256, 130,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - if train:GetNW2Int("PAM:Pass",0) > 0 then - Metrostroi.DrawRectOutline(241 - train:GetNW2Int("PAM:Pass",0)*13, 165, 30 + train:GetNW2Int("PAM:Pass",0)*26, 40,Color(110,172,95),3,Color(230,230,230)) - draw.SimpleText(string.rep("*",train:GetNW2Int("PAM:Pass",0)),"Metrostroi_PAM80",256, 200,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - - Metrostroi.DrawRectOutline(190, 330, 135, 40,Color(110,172,95),3,Color(230,230,230) ) - draw.SimpleText(self.T("Для ввода нажми"),"Metrostroi_PAM30",256, 300,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 350,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - end - if train:GetNW2Int("PAM:State",-1) == 5 then - draw.SimpleText(self.T("Депо. Начальное меню."),"Metrostroi_PAM30",256, 30,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --elf.Train:GetNW2Int("PAM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 80, 492, 333,Color(110,172,95),3) - - Metrostroi.DrawRectOL(40, 166 + (not train:GetNW2Bool("PAM:Restart") and 40 or 0), 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State5",1) == 1 and Color(230,230,230) or Color(180,180,180)) - - draw.SimpleText(self.T("Выход на линию"),"Metrostroi_PAM30",60, 186 + (not train:GetNW2Bool("PAM:Restart") and 40 or 0),Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Bool("PAM:Restart") then - Metrostroi.DrawRectOL(40, 216, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State5",1) == 2 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Перезапуск"),"Metrostroi_PAM30",60, 236,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - - end - if train:GetNW2Int("PAM:State",-1) == 6 then - local Line = self.Train:GetNW2Int("PAM:Line",0) - local FirstStation = self.Train:GetNW2Int("PAM:FirstStation",-1) - local LastStation = self.Train:GetNW2Int("PAM:LastStation",-1) - local RouteNumber = self.Train:GetNW2Int("PAM:RouteNumber",-1) - local tbl = Metrostroi.WorkingStations - draw.SimpleText(self.T("Ввод исходных данных"),"Metrostroi_PAM30",256, 30,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --elf.Train:GetNW2Int("PAM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 50, 492, 367,Color(110,172,95),3) - - Metrostroi.DrawRectOL(40, 60, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 1 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM30",45, 80,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Line,"Metrostroi_PAM30",457, 80,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - - Metrostroi.DrawRectOL(40, 110, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 2 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Нач. ст."),"Metrostroi_PAM30",45, 130,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if tbl and tbl[Line] and tbl[Line][FirstStation] and Metrostroi.AnnouncerData[FirstStation] then - draw.SimpleText(Metrostroi.AnnouncerData[FirstStation][1]:sub(1,10).." "..FirstStation,"Metrostroi_PAM30",457, 130,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif FirstStation ~= -1 then - draw.SimpleText(FirstStation,"Metrostroi_PAM30",457, 130,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - Metrostroi.DrawRectOL(40, 160, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 3 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Кон. ст."),"Metrostroi_PAM30",45, 180,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if tbl and tbl[Line] and tbl[Line][LastStation] and Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(Metrostroi.AnnouncerData[LastStation][1]:sub(1,10).." "..LastStation,"Metrostroi_PAM30",457, 180,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif LastStation ~= -1 then - draw.SimpleText(LastStation,"Metrostroi_PAM30",457, 180,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - Metrostroi.DrawRectOL(40, 210, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 4 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Маршрут"),"Metrostroi_PAM30",45, 230,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if RouteNumber > -1 then draw.SimpleText(RouteNumber,"Metrostroi_PAM30",457, 230,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) end - - Metrostroi.DrawRectOL(40, 260, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 5 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM30",45, 280,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Bool("PAM:State6Error",false) then - Metrostroi.DrawRectOL(106, 125, 300, 150,Color(110,172,95),3,Color(180,180,180)) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 150,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 180,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190, 220, 132, 40,Color(2,2,2),3,Color(220,220,220)) - draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - - if train:GetNW2Int("PAM:State6",1) == 2 and tbl and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(FirstStation) or FirstStation == -1) then - i = i + 1 - if i > 10 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(80, 155, 391, -9 + i*22,Color(110,172,95),3,Color(230,230,230)) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(FirstStation) or FirstStation == -1) then - if i < 10 then - draw.SimpleText(v,"Metrostroi_PAM30",86, 150+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1],"Metrostroi_PAM30",465, 150+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("...","Metrostroi_PAM30",86, 150+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("...","Metrostroi_PAM30",465, 150+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - i = i + 1 - if i > 10 then break end - end - end - Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(110,172,95),3) - end - end - if train:GetNW2Int("PAM:State6",1) == 3 and tbl and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - i = i + 1 - if i > 9 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(80, 205, 391, -9 + i*22,Color(110,172,95),3,Color(230,230,230)) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - if i < 9 then - draw.SimpleText(v,"Metrostroi_PAM30",86, 200+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1],"Metrostroi_PAM30",465, 200+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("...","Metrostroi_PAM30",86, 200+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("...","Metrostroi_PAM30",465, 200+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - i = i + 1 - if i > 9 then break end - end - end - Metrostroi.DrawLine(140, 205, 140, 195 + i*22,Color(110,172,95),3) - end - end - end - if train:GetNW2Int("PAM:State",-1) == 7 then - local Line = self.Train:GetNW2Int("PAM:Line",0) - local LastStation = self.Train:GetNW2Int("PAM:LastStation",-1) - local RouteNumber = self.Train:GetNW2Int("PAM:RouteNumber",-1) - local tbl = Metrostroi.WorkingStations - draw.SimpleText(self.T("Перезапуск"),"Metrostroi_PAM30",110, 30,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --elf.Train:GetNW2Int("PAM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 50, 492, 367,Color(110,172,95),3) - - Metrostroi.DrawRectOL(40, 60, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 1 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM30",45, 80,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Line,"Metrostroi_PAM30",457, 80,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - - - Metrostroi.DrawRectOL(40, 110, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 2 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Кон. ст."),"Metrostroi_PAM30",45, 130,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if tbl[Line] and tbl[Line][LastStation] and Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(Metrostroi.AnnouncerData[LastStation][1]:sub(1,10).." "..LastStation,"Metrostroi_PAM30",457, 130,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif LastStation ~= -1 then - draw.SimpleText(LastStation,"Metrostroi_PAM30",457, 130,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - Metrostroi.DrawRectOL(40, 160, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 3 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Маршрут"),"Metrostroi_PAM30",45, 180,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if RouteNumber > -1 then draw.SimpleText(RouteNumber,"Metrostroi_PAM30",457, 180,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) end - - - Metrostroi.DrawRectOL(40, 210, 432, 40,Color(110,172,95),3,train:GetNW2Int("PAM:State6",1) == 4 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM30",45, 230,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if train:GetNW2Bool("PAM:State6Error",false) then - Metrostroi.DrawRectOL(106, 125, 300, 150,Color(110,172,95),3,Color(180,180,180)) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 150,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 180,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190, 220, 132, 40,Color(2,2,2),3,Color(220,220,220)) - draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - - if train:GetNW2Int("PAM:State6",1) == 2 and tbl[Line] then - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - i = i + 1 - if i > 10 then break end - end - end - if i > 1 then - Metrostroi.DrawRectOL(80, 155, 391, -9 + i*22,Color(110,172,95),3,Color(230,230,230) ) - local i = 1 - for k,v in pairs(tbl[Line]) do - if Metrostroi.AnnouncerData[v] and (tostring(v):find(LastStation) or LastStation == -1) then - if i < 10 then - draw.SimpleText(v,"Metrostroi_PAM30",86, 150+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[v][1],"Metrostroi_PAM30",465, 150+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText("...","Metrostroi_PAM30",86, 150+i*22,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("...","Metrostroi_PAM30",465, 150+i*22,Color(2,2,2),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - - i = i + 1 - if i > 10 then break end - end - end - Metrostroi.DrawLine(140, 155, 140, 145 + i*22,Color(110,172,95),3) - end - end - end - if train:GetNW2Int("PAM:State",-1) == 8 then - draw.SimpleText(self.T("Проверка состава"),"Metrostroi_PAM30",10, 30,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("перед выходом на линию"),"Metrostroi_PAM30",10, 70,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --elf.Train:GetNW2Int("PAM:Pass",0) ~= -1 and string.rep("*",self.Train:GetNW2Int("PAM:Pass",0)) or "ACCESS ERROR" - Metrostroi.DrawRectOutline(10, 100, 492, 210,Color(110,172,95),3) - draw.SimpleText(self.T("Для перехода в рабочий режим"),"Metrostroi_PAM30",60, 170,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(240, 225, 100, 30,Color(110,172,95),3,Color(254,237,142)) - draw.SimpleText(self.T("нажми ENTER"),"Metrostroi_PAM30",60, 240,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Проверка состава разрешена"),"Metrostroi_PAM30",256, 365,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - end - if train:GetNW2Int("PAM:State",-1) == 9 then - local Line = train:GetNW2Int("PAM:Line",0) - local Path = train:GetNW2Int("PAM:Path",0) - local Station = tonumber(train:GetNW2Int("PAM:Station",0)) - local LastStation = tonumber(train:GetNW2Int("PAM:LastStation",-1)) - local S = Format("%.2f",train:GetNW2Float("PAM:Distance",0)) - local speed = math.floor(self.Train:GetPackedRatio(3)*100.0) - local spd = self.Train:GetNW2Bool("PAM:UOS", false) and 35 or self.Train:GetNW2Bool("PAM:VRD",false) and 20 or self.Train:GetPackedBool(46) and 80 or self.Train:GetPackedBool(45) and 70 or self.Train:GetPackedBool(44) and 60 or self.Train:GetPackedBool(43) and 40 or self.Train:GetPackedBool(42) and 0 or "НЧ" - Metrostroi.DrawRectOutline(10, 6, 100, 40,Color(110,172,95),3 ) - local date = os.date("!*t",os_time) - draw.SimpleText(Format("%02d:%02d:%02d",date.hour,date.min,date.sec),"Metrostroi_PAM25",59, 30,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Линия ")..Line,"Metrostroi_PAM30",120, 30,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if Station > 0 and Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(self.T("до ")..Metrostroi.AnnouncerData[LastStation][1],"Metrostroi_PAM25",508, 10,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[Station] and Metrostroi.AnnouncerData[Station][1] or "unknown","Metrostroi_PAM25",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - elseif Metrostroi.AnnouncerData[LastStation] then - draw.SimpleText(self.T("выход на линию"),"Metrostroi_PAM25",508, 13,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(Metrostroi.AnnouncerData[LastStation][1],"Metrostroi_PAM25",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("ошибка в системе ПА"),"Metrostroi_PAM25",508, 10,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тек:")..Station..self.T(", Кон:")..LastStation,"Metrostroi_PAM25",508, 30,Color(212,212,212),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER) - end - if Path and Path > 0 then - draw.SimpleText(self.T("Путь ")..Path,"Metrostroi_PAM30",240, 30,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - else - draw.SimpleText(self.T("Путь N/A"),"Metrostroi_PAM30",240, 30,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - Metrostroi.DrawRectOutline(10, 100, 400, 20,Color(40,38,39), 2) - Metrostroi.DrawLine(10, 110, 410, 110,Color(40,38,39), 2) - - surface.SetDrawColor(Color(110,172,95)) - surface.DrawRect(11,101,398*self.Train:GetPackedRatio(3),7) - surface.SetDrawColor((spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0)) - surface.DrawRect(11,111,398*(spd == "НЧ" and 20 or spd)/100,7) - for i = 0,10 do - if i > 0 and i < 10 then - Metrostroi.DrawLine(10 + i*40, 100, 10 + i*40, 120,Color(40,38,39), 2) - end - - if i%2 == 0 or (i == 7 and spd == 70) then - draw.SimpleText(i*10,"Metrostroi_PAM30",10 + i*40, 135,(spd == "НЧ" and 20 or spd) == i*10 and ((spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0)) or Color(74,74,74),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - draw.SimpleText(speed,"Metrostroi_PAM50",480, 85,Color(110,172,95),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(spd,"Metrostroi_PAM50",480, 120,(spd == "НЧ" and 20 or spd) > 20 and Color(254,237,142) or Color(200,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - draw.SimpleText(self.T("S = ")..S,"Metrostroi_PAM30",6, 401,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Рц = ")..train:GetNW2String("PAM:SName",""),"Metrostroi_PAM30",240, 401,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - surface.SetDrawColor(Color(180,180,180)) - if not train:GetNW2Bool("PAM:RR",false) then - surface.DrawRect(6,295,490,21) - draw.SimpleText(self.T("Установи реверсивную рукоятку"),"Metrostroi_PAM30",10, 305,Color(20,20,20),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - surface.DrawRect(6,320,100,24) surface.DrawRect(171,320,36,24) surface.DrawRect(212,320,54,24) --surface.DrawRect(266,320,40,20) - draw.SimpleText(self.Types[train:GetNW2Int("PAM:Type",false)].."="..self.Positions[train:GetNW2Int("PAM:KV",false)],"Metrostroi_PAM30",10, 331,Color(20,20,20),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - surface.DrawRect(111,320,55,24) - if train:GetNW2Bool("PAM:VZ1",false) or train:GetNW2Bool("PAM:VZ2",false) then - draw.SimpleText(train:GetNW2Bool("PAM:VZ1",false) and (train:GetNW2Bool("PAM:VZ2",false) and self.T("В1 2") or self.T("В1")) or self.T("В 2"),"Metrostroi_PAM30",85 + 55/2, 331,Color(20,20,20),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - end - draw.SimpleText(self.T("КД"),"Metrostroi_PAM30",171+35/2, 331,train:GetPackedBool(40) and Color(20,20,20) or Color(200,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("ЛПТ"),"Metrostroi_PAM30",239, 331,train:GetPackedBool("PN") and Color(200,0,0) or Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - surface.DrawRect(6,355,100,21)-- surface.DrawRect(111,355,100,20) surface.DrawRect(215,355,50,20) - draw.SimpleText(self.T("КВ АРС"),"Metrostroi_PAM30",56, 365,train:GetPackedBool(48) and Color(200,0,0) or Color(20,20,20),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - - Metrostroi.DrawRectOutline(370, 320, 130, 60,Color(110,172,95),3 ) - draw.SimpleText(self.T("Т. ")..Format("%02d:%02d:%02d",date.hour,date.min,date.sec),"Metrostroi_PAM20",375, 330,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тпр. ")..(self.Train:GetPackedRatio(3)*100.0 > 0.25 and math.min(999,math.floor(S/(speed*1000/3600))) or "inf"),"Metrostroi_PAM20",375, 347.5,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.T("На ="),"Metrostroi_PAM20",375, 347.5,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Тост = ")..train:GetNW2Int("PAM:BoardTime",0),"Metrostroi_PAM20",375, 365,Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - - if train:GetNW2Int("PAM:Menu",0) > 0 then - Metrostroi.DrawRectOL(50, 150, 385, 24*7+3,Color(160,160,160), 3,Color(180,180,180)) - --surface.SetDrawColor(Color(180,180,180)) - --surface.DrawRect(51,151,382,24*7-4) - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(51,127 + train:GetNW2Int("PAM:Menu",0)*24,382,23) - for i = 1,6 do - Metrostroi.DrawLine(50,150+24*i,435,150+24*i,Color(160,160,160),3) - end - draw.SimpleText(self.T("Проверка наката"),"Metrostroi_PAM22",256, 162,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(train:GetNW2Bool("PAM:KD") and self.T("Движение с КД") or self.T("Движение без КД"),"Metrostroi_PAM22",256, 186,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(train:GetNW2Bool("PAM:LPT") and self.T("Движение с контролем ЛПТ") or self.T("Движение без контроля ЛПТ"),"Metrostroi_PAM22",256, 210,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение транзитом"),"Metrostroi_PAM22",256, 234,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Движение с Vд = 0"),"Metrostroi_PAM22",256, 258,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Зонный оборот"),"Metrostroi_PAM22",256, 282,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Фиксация станции"),"Metrostroi_PAM22",256, 306,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.T("Station mode"),"Metrostroi_PAM22",256, 330,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAM:Ann",0) > 0 then - Metrostroi.DrawRectOutline(50, 150, 385, 24*4,Color(160,160,160), 3) - surface.SetDrawColor(Color(180,180,180)) - surface.DrawRect(51,151,382,24*4-4) - surface.SetDrawColor(Color(200,200,200)) - surface.DrawRect(51,127 + train:GetNW2Int("PAM:Ann",0)*24,382,23) - for i = 1,3 do - Metrostroi.DrawLine(50,150+24*i,435,150+24*i,Color(160,160,160),3) - end - draw.SimpleText(self.T("Просьба выйти из вагонов"),"Metrostroi_PAM22",256, 162,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Заходите и выходите быстрее"),"Metrostroi_PAM22",256, 186,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Отпустите двери"),"Metrostroi_PAM22",256, 210,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Поезд скоро отправится"),"Metrostroi_PAM22",256, 234,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAM:NeedConfirm",0) > 0 then - Metrostroi.DrawRectOL(106-100, 150, 300+200, 100,Color(160,160,160),3,Color(180,180,180)) - draw.SimpleText(self.T("Подтверди ")..self.Questions[train:GetNW2Int("PAM:NeedConfirm",0)].."?","Metrostroi_PAM28",256, 175,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190-90, 195, 132, 40,Color(160,160,160),2,Color(230,230,230)) - draw.SimpleText(self.T("Да - Enter"),"Metrostroi_PAM30",256-90, 215,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190+90, 195, 132, 40,Color(160,160,160),2,Color(230,230,230)) - draw.SimpleText(self.T("Нет - Esc"),"Metrostroi_PAM30",256+90, 215,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Bool("PAM:Nakat") then - Metrostroi.DrawRectOL(106, 150, 300, 125,Color(20,20,20),3,Color(180,180,180)) - draw.SimpleText(self.T("Проверка наката"),"Metrostroi_PAM30",256, 165,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Расстояние: "),"Metrostroi_PAM30",111, 195,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("%.2f",self.Train:GetNW2Float("PAM:Meters",0)),"Metrostroi_PAM30",300, 195,Color(254,237,142),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Направление: "),"Metrostroi_PAM30",111, 225,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText(self.Train:GetNW2Bool("PAM:Sign",false) and self.T("Назад") or self.T("Вперёд"),"Metrostroi_PAM30",300, 225,self.Train:GetNW2Bool("PAM:Sign",false) and Color(200,0,0) or Color(110,172,95),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190-20, 240, 132+40, 30,Color(160,160,160),2,Color(230,230,230)) - draw.SimpleText(self.T("Отмена - Esc"),"Metrostroi_PAM30",256, 255,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - --draw.SimpleText(self.Questions[train:GetNW2Int("PAM:NeedConfirm",0)].."?","Metrostroi_PAM30",256, 180,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - if train:GetNW2Int("PAM:Fix",-1) > -1 or train:GetNW2Int("PAM:Zon",-1) > -1 then - local Line = train:GetNW2Int("PAM:FLine",0) - local StationAc = train:GetNW2Int("PAM:FAc",-1) - local Station = train:GetNW2Int("PAM:FStation",0) - local choosed = train:GetNW2Int("PAM:Fix",-1) > -1 and train:GetNW2Int("PAM:Fix",0) or train:GetNW2Int("PAM:Zon",0) - surface.SetDrawColor(Color(180,180,180)) - surface.DrawRect(10,151,512-20,24*6+3) - --Metrostroi.DrawRectOutline(12,153,512-24,24*8-8,Color(20,20,20), 2) - Metrostroi.DrawRectOL(12,153,512-24,24*1,Color(20,20,20), 2,choosed == 0 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Линия"),"Metrostroi_PAM22",50, 164,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if Line > -1 then draw.SimpleText(Line,"Metrostroi_PAM22",350, 164,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end - Metrostroi.DrawRectOL(12,153 + 24*1-1,512-24,24*1,Color(20,20,20), 2,choosed == 1 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Код станции"),"Metrostroi_PAM22",50, 187,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - local tbl = Metrostroi.WorkingStations - - if Station ~= -1 then - for i = 1,#tostring(Station) do - draw.SimpleText(tostring(Station)[i],"Metrostroi_PAM22",350 + (i-1)*20, 187,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - else - if tbl[Line] and tbl[Line][StationAc] and Metrostroi.AnnouncerData[StationAc] then - draw.SimpleText(Metrostroi.AnnouncerData[StationAc][1].."("..StationAc..")","Metrostroi_PAM22",350, 187,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - elseif StationAc ~= -1 then - draw.SimpleText(StationAc,"Metrostroi_PAM22",350, 187,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - Metrostroi.DrawRectOL(12,153 + 24*2-2,512-24,24*1,Color(20,20,20), 2,choosed == 2 and Color(230,230,230) or Color(180,180,180)) - draw.SimpleText(self.T("Ввод данных"),"Metrostroi_PAM22",50, 210,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(12,153 + 24*3,512-24,24*3,Color(20,20,20), 2,Color(180,180,180)) - local i = 0 - local FLine = train:GetNW2Int("PAM:FLine",-1) - if Metrostroi.WorkingStations[FLine] then - for k,v in pairs(Metrostroi.WorkingStations[FLine]) do - if Metrostroi.AnnouncerData[v] and tostring(v):find(Station ~= -1 and Station or StationAc) then - local name = Metrostroi.AnnouncerData[v][1] - local tbl = string.Explode(" ",name) - if #tbl > 1 then - name = "" - for k,v in pairs(tbl) do - name = name..v[1] - end - end - draw.SimpleText(v .."-".. name:sub(1,2),"Metrostroi_PAM22",30 + math.floor(i/4)*110, 250-15 + i%4*15,Color(2,2,2),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - i = i + 1 - end - end - end - if train:GetNW2Bool("PAM:State6Error",false) then - Metrostroi.DrawRectOL(106, 125, 300, 150,Color(20,20,20),3,Color(180,180,180)) - draw.SimpleText(self.T("Ошибка при"),"Metrostroi_PAM30",256, 150,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("вводе данных"),"Metrostroi_PAM30",256, 180,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190, 220, 132, 40,Color(20,20,20),3,Color(230,230,230)) - draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - - if train:GetNW2Bool("PAM:SetupError",false) then - Metrostroi.DrawRectOL(100, 125, 312, 150,Color(20,20,20),3,Color(180,180,180)) - draw.SimpleText(self.T("Критическая ошибка"),"Metrostroi_PAM30",256, 150,Color(200,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("Необходимо уточнение"),"Metrostroi_PAM30",256, 175,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(self.T("данных"),"Metrostroi_PAM30",256, 200,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOL(190, 220, 132, 40,Color(20,20,20),3,Color(230,230,230)) - draw.SimpleText(self.T("ENTER"),"Metrostroi_PAM30",256, 240,Color(2,2,2),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - surface.SetAlphaMultiplier(1) - end - function TRAIN_SYSTEM:ClientThink() - end -end - -function TRAIN_SYSTEM:UpdateUPO() - for k,v in pairs(self.Train.WagonList) do - if v.UPO then v.UPO:SetStations(self.Line,self.FirstStation,self.LastStation,v == self.Train) end - v:OnButtonPress("RouteNumberUpdate",self.RouteNumber) - end -end - -function TRAIN_SYSTEM:Trigger(name,nosnd) - --self.Pass = "A" - --self.State = 0 - local Announcer = self.Train.Announcer - self.Pitches = { - B1 = 166, - B2 = 155 , - B3 = 144, - B4 = 160, - B5 = 150, - B6 = 140, - B7 = 150, - B8 = 145, - B9 = 140, - BEsc = 140, - B0 = 135, - BEnter = 130, - BLeft = 125, - BDown = 120, - BRight = 115, - BF = 130, - BUp = 125, - BM = 120, - } - if not nosnd then self.Train:PlayOnce("paksd","cabin",0.75,self.Pitches[name] or 120.0) end - if self.State == 3 and name == "BEnter" then - self:SetState(4) - elseif self.State == 4 then - if name == "BEnter" then - if self.EnteredPass == "31173" then - self:SetState(-2) - elseif self.Pass ~= self.EnteredPass then - self.EnteredPass = "/" - else - self:SetState(5) - end - else - if self.EnteredPass == "/" then self.EnteredPass = "" end - local Char = tonumber(name:sub(2,2)) - if Char and #self.EnteredPass < 11 then self.EnteredPass = self.EnteredPass..tonumber(name:sub(2,2)) end - end - elseif self.State == 5 then - if name == "BDown" then - self.State5Choose = math.min(self.Train:GetNW2Bool("PAM:Restart") and 2 or 1,(self.State5Choose or 1) + 1) - end - if name == "BUp" then - self.State5Choose = math.max(1,(self.State5Choose or 1) - 1) - end - if name == "BEnter" then - if self.State5Choose == 1 then - self:SetState(6) - else - self:SetState(7) - end - end - elseif self.State == 6 then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BDown" then - self.State6Choose = math.min(5,(self.State6Choose or 1) + 1) - end - if name == "BUp" then - self.State6Error = false - self.State6Choose = math.max(1,(self.State6Choose or 1) - 1) - end - if name == "BEsc" then - if self.State6Choose == 2 then - self.FirstStation= self.FirstStation:sub(1,-2) - end - if self.State6Choose == 3 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State6Choose == 4 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEnter" and self.State6Choose == 5 then - if not Metrostroi.WorkingStations[self.Line] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.WorkingStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(8) - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State6Choose == 1 then - self.Line = Char - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = tostring(Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.WorkingStations[self.Line][Routelength]) - end - end - if self.State6Choose == 2 and #self.FirstStation < 3 and (Char ~= 0 or #self.FirstStation > 0) then - self.FirstStation= self.FirstStation..tostring(Char) - end - if self.State6Choose == 3 and #self.LastStation < 3 and (Char ~= 0 or #self.LastStation > 0) then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State6Choose == 4 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 7 then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BDown" then - self.State6Choose = math.min(4,(self.State6Choose or 1) + 1) - end - if name == "BUp" then - self.State6Error = false - self.State6Choose = math.max(1,(self.State6Choose or 1) - 1) - end - if name == "BEsc" then - if self.State6Choose == 2 then - self.LastStation= self.LastStation:sub(1,-2) - end - if self.State6Choose == 3 then - self.RouteNumber= self.RouteNumber:sub(1,-2) - end - self:UpdateUPO() - end - if name == "BEnter" and self.State6Choose == 4 then - if not Metrostroi.EndStations[self.Line] or - not Metrostroi.EndStations[self.Line][tonumber(self.FirstStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FirstStation)] or - not Metrostroi.EndStations[self.Line][tonumber(self.LastStation)] or - not Metrostroi.AnnouncerData[tonumber(self.LastStation)] or - #self.RouteNumber < 3 or self.LastStation == self.FirstStation then - self.State6Error = not self.State6Error - else - self:SetState(9) - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-M"] then - v["PA-M"]:SetState(9) - end - end - end - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.State6Choose == 1 then - self.Line = Char - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = self.FirstStation ~= "" and self.FirstStation or tostring(Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = tostring(Metrostroi.WorkingStations[self.Line][Routelength]) - if tonumber(self.LastStation) < tonumber(self.FirstStation) then - local temp = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = temp - end - end - end - if self.State6Choose == 2 and #self.LastStation < 3 and (Char ~= 0 or #self.LastStation > 0) then - self.LastStation= self.LastStation..tostring(Char) - end - if self.State6Choose == 3 and #self.RouteNumber < 3 then - self.RouteNumber= self.RouteNumber..tostring(Char) - end - self:UpdateUPO() - end - elseif self.State == 8 then - if name == "BEnter" and self.Check == false then - self:SetState(9) - end - elseif self.State == 9 then - if self.Train:GetNW2Bool("PAM:SetupError",false) then - if name == "BEnter" then self:SetState(5) end - return - end - if name == "BF" then - if self.MenuChoosed == 0 and self.AnnChoosed == 0 and not self.Zon and not self.Fix then - self.MenuChoosed = 1 - end - end - if name == "BDown" then - if self.MenuChoosed ~= 0 and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.MenuChoosed = math.min(7,self.MenuChoosed + 1) - - if self.MenuChoosed == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BDown",true) - elseif self.MenuChoosed == 6 then - if self.LastStation == tostring(self.Train.UPO.Station) then - self:Trigger("BDown",true) - end - elseif self.MenuChoosed == 7 then - if self.FirstStation == tostring(self.Train.UPO.Station) then - self.MenuChoosed = 4 - end - end - end - if self.AnnChoosed ~= 0 and not self.Zon and not self.Fix then - self.AnnChoosed = math.min(4,self.AnnChoosed + 1) - end - end - if name == "BUp" then - if self.MenuChoosed ~= 0 and (not self.NeedConfirm or self.NeedConfirm == 0) then - self.MenuChoosed = math.max(1,self.MenuChoosed - 1) - if self.MenuChoosed == 5 and (self.VRD or not (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80)) then - self:Trigger("BUp",true) - end - end - if self.MenuChoosed == 0 and self.AnnChoosed == 0 then - self.AnnChoosed = 1 - end - if self.AnnChoosed ~= 0 then - self.AnnChoosed = math.max(1,self.AnnChoosed - 1) - end - end - if name == "BEsc" then - --if self.MenuChoosed ~= 0 then - if (not self.NeedConfirm or self.NeedConfirm == 0) then self.MenuChoosed = 0 end - self.AnnChoosed = 0 - --end - end - if (self.NeedConfirm and self.NeedConfirm > 0) then - if name == "BEnter" then - if self.NeedConfirm == 1 and self.Train.Speed < 0.5 then - self.Nakat = true - end - if (self.Train.ALS_ARS.Signal0 and not self.Train.ALS_ARS.RealNoFreq and not self.Train.ALS_ARS.Signal40 and not self.Train.ALS_ARS.Signal60 and not self.Train.ALS_ARS.Signal70 and not self.Train.ALS_ARS.Signal80) then - self.VRD = true - end - if self.NeedConfirm == 6 then - self.Zon = 1 - self.FStation = "" - self.FLine = self.Line - self.State6Error = false - end - if self.NeedConfirm == 7 then - self.Fix = 0 - self.FStation = "" - self.FLine = nil - self.State6Error = false - end - self.NeedConfirm = 0 - self.MenuChoosed = 0 - end - if name == "BEsc" then - self.NeedConfirm = 0 - end - end - if self.MenuChoosed ~= 0 and not self.Nakat and not self.Fix and not self.Zon then - if name == "BEnter" and (not self.NeedConfirm or self.NeedConfirm == 0) then - if self.MenuChoosed == 1 and self.Train.Speed < 0.5 then - self.NeedConfirm = 1 - elseif self.MenuChoosed == 2 then - self.KD = not self.KD - elseif self.MenuChoosed == 3 then - self.LPT = not self.LPT - elseif self.MenuChoosed == 4 then - self.Transit = not self.Transit - self.AutodriveWorking = false - elseif self.MenuChoosed == 5 then - self.NeedConfirm = 5 - elseif self.MenuChoosed == 6 then - self.NeedConfirm = 6 - elseif self.MenuChoosed == 7 then - self.NeedConfirm = 7 - elseif self.MenuChoosed == 8 and not self.Arrived then - --self.Arrived = true - --if self.Train.R_UPO.Value > 0 then --- local tbl = Metrostroi.WorkingStations[self.Line] - --self.UPO:PlayArriving(self.Train.UPO.Station,tbl[tbl[self.Train.UPO.Station] + (self.Train.UPO.Path == 1 and 1 or -1)],self.Train.UPO.Path) - --end - end - if self.NeedConfirm == 0 then self.MenuChoosed = 0 end - --if self.State > 6 and self.State ~= 76 and self.State ~= 77 then self.State = 7 end - end - end - if self.AnnChoosed ~= 0 and not self.Nakat and not self.Fix and not self.Zon then - if name == "BEnter" then - if self.Train.R_UPO.Value > 0 then self.Train.UPO:II(self.AnnChoosed) end - self.AnnChoosed = 0 - end - local Char = tonumber(name:sub(2,2)) - if Char and Char > 0 and Char < 5 and self.Train.R_UPO.Value > 0 then - self.Train.UPO:II(Char) - self.AnnChoosed = 0 - end - end - - if name == "BEsc" and self.Nakat then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - self.Train.ALS_ARS.Nakat = false - end - end - if self.Fix then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BEsc" then - if self.Fix == 1 and self.EnteredStation then - self.EnteredStation = nil - end - end - if name == "BEnter" and self.Fix == 2 then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.FStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FStation)] or tonumber(self.FStation) == self.FirstStation then - self.State6Error = not self.State6Error - else - self.FirstStation = self.FStation - self.Line = self.FLine - self.Fix = nil - self:UpdateUPO() - end - end - if name == "BEnter" and self.Fix == 1 then - self.FStation = self.EnteredStation - self.EnteredStation = nil - end - if name == "BDown" and not self.EnteredStation then - self.Fix = math.min(2,self.Fix + 1) - end - if name == "BUp" and not self.EnteredStation then - self.State6Error = false - self.Fix = math.max(0,self.Fix - 1) - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.Fix == 0 then - self.FLine = Char - end - if self.Fix == 1 and not self.EnteredStation then - self.EnteredStation = "" - end - if self.Fix == 1 and #self.EnteredStation < 3 and (Char ~= 0 or #self.EnteredStation > 0) then - self.EnteredStation= self.EnteredStation..tostring(Char) - end - end - end - if self.Zon then - if self.State6Error then if name == "BEnter" then self.State6Error = false end return end - if name == "BEsc" then - if self.Zon == 1 and self.EnteredStation then - self.EnteredStation = nil - end - end - if name == "BEnter" and self.Zon == 2 then - if not Metrostroi.WorkingStations[self.FLine] or - not Metrostroi.WorkingStations[self.FLine][tonumber(self.FStation)] or - not Metrostroi.AnnouncerData[tonumber(self.FStation)] or tonumber(self.FStation) == self.LastStation then - self.State6Error = not self.State6Error - else - self.Zon = nil - self.LastStation = self.FStation - self:UpdateUPO() - end - end - if name == "BEnter" and self.Zon == 1 then - self.FStation = self.EnteredStation - self.EnteredStation = nil - end - if name == "BDown" and not self.EnteredStation then - self.Zon = math.min(2,self.Zon + 1) - end - if name == "BUp" and not self.EnteredStation then - self.State6Error = false - self.Zon = math.max(1,self.Zon - 1) - end - local Char = tonumber(name:sub(2,2)) - if Char then - if self.Zon == 0 then - self.FLine = Char - end - if self.Zon == 1 and not self.EnteredStation then - self.EnteredStation = "" - end - if self.Zon == 1 and #self.EnteredStation < 3 and (Char ~= 0 or #self.EnteredStation > 0) then - self.EnteredStation= self.EnteredStation..tostring(Char) - end - end - end - end -end -function TRAIN_SYSTEM:GetTimer(val) - return self.TimerMod and (CurTime() - self.Timer) > val -end -function TRAIN_SYSTEM:SetTimer(mod) - if mod then - if self.TimerMod == mod then return end - self.TimerMod = mod - else - self.TimerMod = nil - end - self.Timer = CurTime() -end - -function TRAIN_SYSTEM:SetState(state,add,state9) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer - if state and self.State ~= state then - self.State = state - if state == 1 then - self.NextState = add - end - self:SetTimer() - elseif not state then - state = self.NextState - self.State = self.NextState - else return end - if state == 4 then - self.EnteredPass = "" - end - if state == 5 then - self.State5Choose = 1 - end - if state == 6 then - self.State6Choose = 1 - self.Line = self.Train.UPO.Line or 1 - if Metrostroi.WorkingStations[self.Line] then - local Routelength = #Metrostroi.WorkingStations[self.Line] - self.FirstStation = self.Train.UPO.FirstStation or self.FirstStation--tostring(self.Train.UPO.Path == 2 and Metrostroi.WorkingStations[self.Line][Routelength] or Metrostroi.WorkingStations[self.Line][1]) - self.LastStation = self.Train.UPO.LastStation or self.LastStation--tostring(self.Train.UPO.Path == 1 and Metrostroi.WorkingStations[self.Line][Routelength] or Metrostroi.WorkingStations[self.Line][1]) - else - --self.FirstStation = "111" - --self.LastStation = "123" - end - self:UpdateUPO() - self.FirstStation = "" - self.LastStation = "" - self.State6Error = false - end - if state == 7 then - self.State6Choose = 1 - self.State6Error = false - end - if state == 8 then - self.Check = nil - ARS:TriggerInput("PA-Ring",1) - for k,v in pairs(self.Train.WagonList) do - v.ENDis:TriggerInput("Set",1) - end - if not state9 then - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-M"] then - v["PA-M"]:SetState(8,nil,true) - end - end - end - else - for k,v in pairs(self.Train.WagonList) do - v.ENDis:TriggerInput("Set",0) - if v.ALS_ARS then v.ALS_ARS:TriggerInput("PA-Ring",0) end - end - end - if state == 9 then - if not state9 then - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v["PA-M"] then - v["PA-M"]:SetState(9,nil,true) - end - end - end - self.AnnChoosed = 0 - self.NeedConfirm = 0 - self.MenuChoosed = 0 - self.Fix = nil - self.Zon = nil - Train.UPO.BoardTime = nil - self.ODZ = nil - end - if state == 0 then - self.Train:PlayOnce("paksd","cabin",0.75,200.0) - self.Train.ALS_ARS:TriggerInput("PA-Ring",0) - self.EnteredPass = "" - end - if state == 3 then - if IsValid(self.Train.DriverSeat) then - self.Train.DriverSeat:EmitSound("subway_announcer/00_05.mp3", 73, 100) - end - end -end -function TRAIN_SYSTEM:Think(dT) - if self.Train.Blok ~= 3 then self:SetState(-1) return end - --print(self.Train.Owner) - local Train = self.Train - local ARS = Train.ALS_ARS - local Announcer = Train.Announcer --- self.Train.UPO.Station = self.Train:ReadCell(49160) > 0 and self.Train:ReadCell(49160) or self.Train:ReadCell(49161) --- self.Train.UPO.Path = Metrostroi.PathConverter[self.Train:ReadCell(65510)] or 0 --- self.Train.UPO.Distance = math.min(9999,self.Train:ReadCell(49165) + (Train.Autodrive.Corrections[self.Train.UPO.Station] or 0)) - if Train.VAU.Value < 0.5 or Train.Panel["V1"] < 0.5 then self:SetState(-1) end - if Train.VAU.Value > 0.5 and self.State == -1 and Train.Panel["V1"] > 0.5 then self:SetState(0) end - if Train.VB.Value > 0.5 and Train.Battery.Voltage > 55 and self.State > -1 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - if Train[v].Value > 0.5 then - self:Trigger(v) - end - --print(v,self.Train[v].Value > 0.5) - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - if self.Train.KV.ReverserPosition == 0 and self.State > 3 and self.State < 8 and self.State ~= -9 then self:SetState(3) end - if self.State == 0 and self.RealState ~= 0 then - elseif self.State == 0 then - self:SetTimer(0.5) - if self:GetTimer(4) then - self:SetState(1,2) - end - elseif self.State == 1 then - self:SetTimer(1) - if self:GetTimer(0.4) then - self:SetState() - end - elseif self.State == 2 then - self:SetTimer(0.5) - if self:GetTimer(6) then - self:SetState(1,3) - end - elseif self.State == 8 then - --print(ARS.KVT) - if ARS.KVT and self.Check == nil then - self.Check = true - self:SetTimer(4) - end - if not ARS.KVT and self.Check ~= false then - self.Check = nil - self:SetTimer() - end - if ARS.KVT and self:GetTimer(1) then - self.Check = false - ARS:TriggerInput("PA-Ring",0) - for k,v in pairs(self.Train.WagonList) do - if v ~= self.Train and v.ALS_ARS then - v.ALS_ARS:TriggerInput("PA-Ring",0) - end - end - self:SetTimer() - end - elseif self.State == 9 then - if (self.Train.UPO:GetSTNum(self.LastStation) > self.Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 2) or (self.Train.UPO:GetSTNum(self.FirstStation) > self.Train.UPO:GetSTNum(self.LastStation) and self.Train.UPO.Path == 1) then - local old = self.LastStation - self.LastStation = self.FirstStation - self.FirstStation = old - end - if self.VRD and (not ARS.Signal0 or ARS.Signal0 and (ARS.Signal40 or ARS.Signal60 or ARS.Signal70 or ARS.Signal80)) then self.VRD = false end - self.State9 = (Train.UPO:End(self.Train.UPO.Station,self.Train.UPO.Path,true) or Train.UPO:GetSTNum(self.LastStation) > Train.UPO:GetSTNum(self.Train.UPO.Station) and self.Train.UPO.Path == 2 or Train.UPO:GetSTNum(self.Train.UPO.Station) < Train.UPO:GetSTNum(self.FirstStation) and self.Train.UPO.Path == 1) and 0 or 1--self.Arrived ~= nil and 1 or 2 - if self.State9 ~= 0 and self.Train.KV.ReverserPosition ~= 0 then - if not self.Trainsit then - if self.Train.UPO.Distance < 100 and self.Train.Speed > 55 then - self.StopTrain = true - end - if self.Train.UPO.Distance < 10 and self.Train.Speed > 20 then - self.StopTrain = true - end - if self.Train.Speed < 0.5 and self.StopTrain then - self.StopTrain = false - end - if self.StopTrain then - end - elseif self.StopTrain then - self.StopTrain = false - end - - if self.RealState == 8 and not self.Transit then - if self.Train.UPO.Distance < 75 and not self.Arrived and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] and ARS.Speed <= 1 then - self.Arrived = true - end - end - --[[ - if not self.Transit and 45 < self.Train.UPO.Distance and self.Train.UPO.Distance < 75 and not self.Arrived and Metrostroi.WorkingStations[self.Line][self.Train.UPO.Station] then - self.Arrived = true - if self.Train.R_UPO.Value > 0 then - local tbl = Metrostroi.WorkingStations[self.Line] - self.UPO:PlayArriving(self.Train.UPO.Station,tbl[tbl[self.Train.UPO.Station] + (self.Train.UPO.Path == 1 and 1 or -1)],self.Train.UPO.Path) - end - end - ]] - if self.Transit then self.Arrived = nil end - if self.Train.UPO.Distance > 75 then - self.Arrived = nil - else - --if self.Train.Panel.SD < 0.5 then self.Arrived = true end - end - --if (self.Ring == nil or self.Ring == 0) and self.Train.Panel.SD < 0.5 then - --self.Ring = false - --end - if self.Arrived then - if Train.UPO.BoardTime and math.floor((Train.UPO.BoardTime or CurTime()) - CurTime()) < (self.Train.Horlift and 15 or 8) and self.Arrived then - self.Arrived = false - end - end - if (self.Train:ReadCell(1) > 0 or ARS.Speed > 1) and self.Arrived == false then self.Arrived = nil end - end - if self.Nakat then - if not self.Meters then self.Meters = 0 end - self.Meters = self.Meters + ARS.Speed*self.Train.SpeedSign/3600*1000*dT - if math.abs(self.Meters) > 2.5 then - self.Nakat = false - if self.Train:ReadTrainWire(1) < 1 then - ARS.Nakat = self.Meters < 0 - end - end - else - self.Meters = nil - end - end - if self.State ~= self.RealState then - self.RealState = self.State - self.TimeOverride = true - end - - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 or self.TimeOverride then - self.TimeOverride = nil - --print(1) - self.Time = CurTime() - Train:SetNW2Int("PAM:State",self.State) - if self.State == 3 then - Train:SetNW2Bool("PAM:RR",self.Train.KV.ReverserPosition ~= 0) - elseif self.State == 4 then - Train:SetNW2Int("PAM:Pass",self.EnteredPass ~= "/" and #self.EnteredPass or -1) - elseif self.State == 5 then - Train:SetNW2Bool("PAM:Restart",self.FirstStation ~= "" and self.LastStation ~= "") - Train:SetNW2Int("PAM:State5",self.State5Choose) - elseif self.State == 6 then - Train:SetNW2Int("PAM:State6",self.State6Choose) - Train:SetNW2Bool("PAM:State6Error",self.State6Error) - Train:SetNW2Int("PAM:LastStation",tonumber(self.LastStation) or -1) - Train:SetNW2Int("PAM:FirstStation",tonumber(self.FirstStation) or -1) - Train:SetNW2Int("PAM:Line",self.Line) - Train:SetNW2Int("PAM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - elseif self.State == 7 then - Train:SetNW2Int("PAM:State6",self.State6Choose) - Train:SetNW2Bool("PAM:State6Error",self.State6Error) - Train:SetNW2Int("PAM:LastStation",tonumber(self.LastStation) or -1) - Train:SetNW2Int("PAM:Line",self.Line) - Train:SetNW2Int("PAM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - --Train:SetNW2Int("PAM:LastStation",tonumber(self.LastStation) or -1) - --Train:SetNW2Int("PAM:Line",self.Line) - --Train:SetNW2Int("PAM:RouteNumber",tonumber(self.RouteNumber ~= "" and self.RouteNumber or -1)) - elseif self.State == 9 then - Train:SetNW2Int("PAM:Line",self.Line) - Train:SetNW2Int("PAM:Path",self.Train.UPO.Path) - Train:SetNW2Int("PAM:Station",self.State9 == 0 and 0 or self.Train.UPO.Station) - Train:SetNW2Int("PAM:LastStation",self.LastStation) - Train:SetNW2Float("PAM:Distance",math.Round(self.Train.UPO.Distance,2)) - Train:SetNW2String("PAM:SName",ARS.Signal and ARS.Signal.RealName or "ERR") - Train:SetNW2Bool("PAM:RR",self.Train.KV.ReverserPosition ~= 0) - Train:SetNW2Int("PAM:Type",(self.Train.Pneumatic.EmergencyValveEPK and 0 or self.Train.ALS_ARS.UAVAContacts and 4 or self.UOS and 5 or self.VRD and 2 or (self.Train.Autodrive.AutodriveEnabled or self.Train.UPO.StationAutodrive) and 1 or 3)) - Train:SetNW2Int("PAM:KV",self.Train.Autodrive.AutodriveEnabled and (self.Rotating and -3 or self.Brake and -1 or self.Accelerate and 3 or 0) or (ARS["33G"] > 0 or (self.UOS and (ARS["8"] + (1-self.Train.RPB.Value)) > 0)) and 5 or self.Train.KV.RealControllerPosition) - Train:SetNW2Bool("PAM:VZ1", self.Train:ReadTrainWire(29) > 0) - Train:SetNW2Bool("PAM:VZ2", self.Train.PneumaticNo2.Value > 0) - Train:SetNW2Int("PAM:Menu", self.MenuChoosed or 0) - Train:SetNW2Int("PAM:Ann",self.AnnChoosed) - Train:SetNW2Int("PAM:NeedConfirm",self.NeedConfirm) - Train:SetNW2Int("PAM:BoardTime",math.floor((Train.UPO.BoardTime or CurTime()) - CurTime())) - Train:SetNW2Bool("PAM:KD",self.KD) - Train:SetNW2Bool("PAM:LPT",self.LPT) - Train:SetNW2Bool("PAM:SetupError",Metrostroi.AnnouncerData[tonumber(self.FirstStation)] == nil or Metrostroi.AnnouncerData[tonumber(self.LastStation)] == nil) - self.Train:SetNW2Bool("PAM:Nakat",self.Nakat) - if self.Nakat then - self.Train:SetNW2Float("PAM:Meters",math.Round(math.abs(self.Meters or 0),2)) - self.Train:SetNW2Bool("PAM:Sign",ARS.Speed > 0.5 and self.Train.SpeedSign < 0) - end - self.Train:SetNW2Int("PAM:Fix",self.Fix or -1) - self.Train:SetNW2Int("PAM:Zon",self.Zon or -1) - if self.Fix or self.Zon then - Train:SetNW2Int("PAM:FLine",self.FLine or -1) - Train:SetNW2Int("PAM:FStation",tonumber(self.EnteredStation) or -1) - Train:SetNW2Int("PAM:FAc",tonumber(self.FStation) or -1) - Train:SetNW2Bool("PAM:State6Error",self.State6Error) - end - - else - end - end - if Train.VZP.Value > 0.5 then - Train.Autodrive:Enable() - end - self.RouteNumber = string.gsub(self.Train.RouteNumber or "","^(0+)","") - if self.State > 7 then - self.Line = self.Train.UPO.Line - self.FirstStation = tostring(self.Train.UPO.FirstStation or "") - self.LastStation = tostring(self.Train.UPO.LastStation or "") - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_pmp.lua b/lua/metrostroi/systems/_obsolete/sys_pmp.lua deleted file mode 100644 index 12d1e21..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_pmp.lua +++ /dev/null @@ -1,92 +0,0 @@ --------------------------------------------------------------------------------- --- Пульт для манверовых передвижений вагонов --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PMP") - -function TRAIN_SYSTEM:Initialize() - self.Position = 0 - self.RealPosition = 0 - - self.Matrix = { - {"3", "4" }, - { 1, 0, 1 }, - {"9", "10"}, - { 1, 0, 1 }, - {"5", "6" }, - { 1, 0, 0 }, - {"7", "8" }, - { 0, 0, 1 }, - } - - -- Initialize contacts values - for i=1,#self.Matrix/2 do - local v = self.Matrix[i*2-1] - self[v[1].."-"..v[2]] = 0 - end -end - -function TRAIN_SYSTEM:Inputs() - return { "Set", "Up", "Down" } -end - -function TRAIN_SYSTEM:Outputs() - return { "Position" } -end - -function TRAIN_SYSTEM:TriggerInput(name,value) - -- Change position - if name == "Set" then - if (self.Enabled ~= 0) and (math.floor(value) ~= self.Position) then - local prevPosition = self.Position - self.Position = math.floor(value) - - -- Limit motion - if self.Position > 1 then self.Position = 1 end - if self.Position < -1 then self.Position = -1 end - - -- Play sounds - if prevPosition < self.Position then - local P,R = prevPosition,self.Position - if P == -1 and R == 0 then self.Train:PlayOnce("kru_0_1", "cabin",0.9) end - if P == 0 and R == 1 then self.Train:PlayOnce("kru_1_2", "cabin",0.9) end - end - - if prevPosition > self.Position then - local P,R = prevPosition,self.Position - if P == 0 and R == -1 then self.Train:PlayOnce("kru_1_0", "cabin",0.9) end - if P == 1 and R == 0 then self.Train:PlayOnce("kru_2_1", "cabin",0.9) end - end - end - elseif (name == "Up") and (value > 0.5) then - self:TriggerInput("Set",self.Position+1) - elseif (name == "Down") and (value > 0.5) then - self:TriggerInput("Set",self.Position-1) - end -end - - -function TRAIN_SYSTEM:Think() - local Train = self.Train - if (self.Enabled == 0) and (self.Position ~= 0) then - self.Position = 0 - self.Train:PlayOnce("kv1","cabin",0.6) - end - - -- Move controller - self.Timer = self.Timer or CurTime() - if ((CurTime() - self.Timer > 0.15) and (self.Position > self.RealPosition)) then - self.Timer = CurTime() - self.RealPosition = self.RealPosition + 1 - end - if ((CurTime() - self.Timer > 0.15) and (self.Position < self.RealPosition)) then - self.Timer = CurTime() - self.RealPosition = self.RealPosition - 1 - end - - -- Update contacts - for i=1,#self.Matrix/2 do - local v = self.Matrix[i*2-1] - local d = self.Matrix[i*2] - self[v[1].."-"..v[2]] = d[self.RealPosition+2] - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_puav.lu b/lua/metrostroi/systems/_obsolete/sys_puav.lu deleted file mode 100644 index 8764d3f..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_puav.lu +++ /dev/null @@ -1,490 +0,0 @@ --------------------------------------------------------------------------------- --- ПУАВ - Поездное Устройство АвтоВедения --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("PUAV") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Train:LoadSystem("IPAV") - - self.Train:LoadSystem("KH","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VAV","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("KSZD","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VZP","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("VAU","Relay","Switch",{ bass = true, normally_closed = true }) - self.Train:LoadSystem("RC2","Relay","Switch",{ bass = true, normally_closed = true }) - - self.Train:LoadSystem("P1","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P2","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P3","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P4","Relay","Switch",{ bass = true }) - self.Train:LoadSystem("P5","Relay","Switch",{ bass = true }) - - self.Selected = true - - - self.LK16 = false - self.LAVT = false - self.LOS = false - self.ARS = false - self.LKI1 = false - self.LKI2 = false - - self.LRSTimer = false - - self["2"] = 0 --Вращение РК - self["3"] = 0 --Ход 3 - self["8"] = 0 --Замещение электрического торможения - self["16"] = 0 --Закрытие дверей - self["17"] = 0 -- Разрешение восстановления реле перегрузки - self["19"] = 0 -- Разрешение замещения электрического торможения - self["20"] = 0 -- Включение двигателей - self["20X"] = 0 -- Разрешение включения двигателей в ходовые режимы - self["025"] = 0 -- Разрешение ручного торможения - self["25"] = 0 -- Ручное торможение - self["31"] = 0 --Разрешение открытия левых дверей - self["31O"] = 0 --Открытие левых дверей - self["32"] = 0 --Разрешение открытия правых дверей - self["32O"] = 0 --Открытие правых дверей - self["33"] = 0 --Включение ходового режима - self["033"] = 0 --Разрешение включения ходового режима - self["33G"] = 0 --Включение режима торможения - self["39"] = 0 --Включение вентиля замещения № 2 - self["48"] = 0 --Включение вентиля замещения № 1 - - - self.KRH = 0 - self.KRT = 0 - self.KGR = 0 - self.KRR1 = 0 - self.KRR2 = 0 - self.KRR3 = 0 - self.KD = 0 - self.KPRK = 0 - self.KOAT = 0 - self.KET = 0 - self.KSOT = 0 - self.KDL = 0 - self.KDP = 0 - self.RK1 = 0 - self.KRU = 0 - - self.KVARS = 0 - self.KTARS = 0 - self.VAB = 0 - self.KH3 = 0 - self.VZP = 0 - self.KSZD = 0 - self.KB = 0 - self.RD = 0 - - - self.Ring = false - - self.State = -1 - - self.Stopped = false - self.DoorsOpen = false - self.Drive = 0 -end - - -if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return { "IPAVCommand" } -end -function TRAIN_SYSTEM:Outputs() - return { "31","32","31C","32C","16C"} -end - -if CLIENT then - local function createFont(name,font,size) - surface.CreateFont("Metrostroi_"..name, { - font = font, - size = size, - weight = 500, - blursize = false, - antialias = true, - underline = false, - italic = false, - strikeout = false, - symbol = false, - rotary = false, - shadow = false, - additive = false, - outline = false, - extended = true, - scanlines = false, - }) - end - createFont("PUAV","Liquid Crystal Display",35,400) - function TRAIN_SYSTEM:ClientThink() - --RunConsoleCommand("say","президент!!!") - if not self.DrawTimer then - render.PushRenderTarget(self.Train.PUAV,0,0,512, 128) - render.Clear(0, 0, 0, 0) - render.PopRenderTarget() - end - if self.DrawTimer and CurTime()-self.DrawTimer < 0.1 then return end - self.DrawTimer = CurTime() - render.PushRenderTarget(self.Train.PUAV,0,0,512, 128) - --render.Clear(0, 0, 0, 0) - cam.Start2D() - self:PUAVScreen(self.Train) - cam.End2D() - render.PopRenderTarget() - end - function TRAIN_SYSTEM:PrintText(x,y,text,inverse) - local str = {utf8.codepoint(text,1,-1)} - for i=1,#str do - local char = utf8.char(str[i]) - if inverse then - draw.SimpleText(string.char(0x7f),"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(char,"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(140,190,0,150),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(char,"Metrostroi_PUAV",(x+i)*27+15,y*50+30,Color(0,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end - end - end - - function TRAIN_SYSTEM:PUAVScreen(Train) - local State = Train:GetNW2Int("PUAV:State",-1) - if State ~= 0 then - surface.SetDrawColor(140*0.7,190*0.7,0,self.Warm and 130 or 255) - self.Warm = true - else - surface.SetDrawColor(20,50,0,230) - self.Warm = false - end - surface.DrawRect(0,0,512,128) - if State == 0 then - return - end - for i=1,6 do - self:PrintText(-2+i*2,0,Format("%02d",i)) - self:PrintText(-2+i*2,1,Format("%02d",math.max(0,Train:GetNW2Int("PUAV:RK"..i,0)))) - end - --self:PrintText(0,0,"010101010101") - --self:PrintText(1,1,Format("РК:%02d",Train:GetNW2Int("PUAV:RK",0))) - --self:PrintText(1,1,"(точнее криво)") - end -end - -function TRAIN_SYSTEM:Trigger(name,nosnd) -end - -function TRAIN_SYSTEM:SetAVPosition(pos) - if self.Train.KV.AutodrivePosition ~= pos then - self.Train.KV:TriggerInput("SetAutodrive",pos) - end -end - -local IgnoreDoors = false -function TRAIN_SYSTEM:Think(dT) - if not self.Selected then return end - - local Train = self.Train - local ALS = Train.ALSCoil - local ARS = Train.ALS_ARS - local EnableARS = ARS.EnableARS - local UOS = not EnableARS and Train.RC1.Value == 0 - local LeftCoil,RightCoil = Train.LeftAutoCoil,Train.RightAutoCoil - - local power = Train.VB.Value > 0.5 and Train.VAU.Value > 0.5 and Train.Panel["V1"] > 0.5 - local KRUEnabled = Train.KRU and Train.KRU["14/1-B3"] > 0 - local RVForward = power and (Train.KV["D4-15"] > 0 or KRUEnabled) - local KVT = Train.PB.Value > 0 or Train.KVT and Train.KVT.Value > 0 - - local speed = math.Round(ALS.Speed or 0,1) - - - if not power and self.State > -1 then self.State = -1 self.State2Timer = nil end - if not RVForward and self.State > 0 then self.State = 0 end - if RVForward and self.State == 0 then self.State = 2 end - if RVForward and self.State == -1 and not self.State2Timer then self.State = 1 self.State2Timer = CurTime() end - if RVForward and self.State == 1 and self.State2Timer and CurTime()-self.State2Timer > 2 then self.State = 2 self.State2Timer = nil end - if self.State > 0 then - self.NoFreq = ALS.NoFreq - self.F1 = ALS.F1*(1-self.NoFreq) - self.F2 = ALS.F2*(1-self.NoFreq) - self.F3 = ALS.F3*(1-self.NoFreq) - self.F4 = ALS.F4*(1-self.NoFreq) - self.F5 = ALS.F5*(1-self.NoFreq) - self.F6 = ALS.F6*(1-self.NoFreq) - self.RealF5 = self.F5*(1-(self.F4+self.F3+self.F2+self.F1)) - self.NoFreq = self.NoFreq + (1-math.min(1,self.F5+self.F4+self.F3+self.F2+self.F1)) - else - self.NoFreq = 0 - self.F1 = 0 - self.F2 = 0 - self.F3 = 0 - self.F4 = 0 - self.F5 = 0 - self.F6 = 0 - self.NoFreq = 0 - end - if self.State == 2 then - --Speed limit - local speedLimit = 20 - if EnableARS and self.F4 > 0 then speedLimit = 40 end - if EnableARS and self.F3 > 0 then speedLimit = 60 end - if EnableARS and self.F2 > 0 then speedLimit = 70 end - if EnableARS and self.F1 > 0 then speedLimit = 80 end - - local ProgrammX = false - local ProgramDoorLeft = IgnoreDoors - local ProgramDoorRight = IgnoreDoors - local ProgrammSBrake = false - self.LastBrakeProgramTimer = self.LastBrakeProgramTimer or CurTime() - self.LastBrakeProgram = self.LastBrakeProgram or false - - local haveCommand = 0 - for k,v in ipairs(LeftCoil.Commands) do - v.Power = true - local command = v.PlateType - ProgramDoorLeft = ProgramDoorLeft or command == METROSTROI_ACOIL_DOOR - ProgrammX = ProgrammX or command == METROSTROI_ACOIL_DRIVE and v.Power and v.Mode - ProgrammSBrake = ProgrammSBrake or command == METROSTROI_ACOIL_SBRAKE and LeftCoil - haveCommand = haveCommand + 1 - end - for k,v in ipairs(RightCoil.Commands) do - v.Power = true - local command = v.PlateType - ProgramDoorRight = ProgramDoorRight or command == METROSTROI_ACOIL_DOOR - ProgrammX = ProgrammX or command == METROSTROI_ACOIL_DRIVE and v.Power and v.Mode - ProgrammSBrake = ProgrammSBrake or command == METROSTROI_ACOIL_SBRAKE and RightCoil - - haveCommand = haveCommand + 1 - end - if self.HaveCommand ~= haveCommand then - self.LRSTimer = CurTime() - self.HaveCommand = haveCommand - end - if self.DoorsOpen == true and (Train.Panel["SD"] <= 0 or Train:ReadTrainWire(16) > 0) then self.DoorsOpen = false end - if Train.VAV.Value > 0 and self.Stopped then - if Train.Panel["SD"] > 0 and not self.SDTimer then self.SDTimer = CurTime() end - if Train.Panel["SD"] <= 0 and self.SDTimer then - self.SDTimer = false - self.Autodrive = false - end - if self.SDTimer and (self.SDTimer == true or CurTime()-self.SDTimer > 0.2) then - self.SDTimer = true - self.Autodrive = self.Autodrive or Train.VZP.Value > 0 - end - else - self.Autodrive = false - self.Stopped = false - end - if Train.VAV.Value > 0 and Train.Panel["SD"] <= 0 and not self.Stopped then self.Stopped = CurTime() end - if Train.VAV.Value > 0 and Train.Panel["SD"] > 0 and (self.Stopped and self.Stopped ~= true and CurTime()-self.Stopped >= 2) then self.Stopped = true end - if self.Stopped and (Train.VAV.Value == 0 or Train.Panel["SD"] > 0 and (self.Stopped ~= true and CurTime()-self.Stopped < 2)) then self.Stopped = false end - if not self.Autodrive then - self.Drive = 0 - self.Brake = false - end - if ProgrammSBrake then - if self.RingArmed == nil then self.RingArmed = CurTime() + math.max(1,math.min(4,5-speed/15)) end - elseif not ProgrammSBrake and self.RingArmed ~= nil then self.RingArmed = nil end - if self.RingArmed and CurTime()-self.RingArmed <= 0 and Train:ReadTrainWire(6) > 0 then self.RingArmed = false end - if self.RingArmed and CurTime()-self.RingArmed > 4 then - self.RingArmed = false - end - local position = 0 - if self.Autodrive and ProgrammSBrake then - if not self.Brake and ProgrammSBrake then self.Brake = 0 end - if self.Brake then position = speed > 55 and -2 or -1 end - - local passed = ProgrammSBrake.BrakeProgrammPassed - local passednow = CurTime()-ProgrammSBrake.LastBrakeProgrammPassed - if self.Brake == 0 and passed < 1e9 then self.Brake = 1 end - if self.Brake == 1 and (passed < METROSTROI_ABRAKE_DIST or (passednow > self.Passed*4 and passednow > METROSTROI_ABRAKE_DIST*4)) then self.Brake = 2 end - if self.Brake == 2 and METROSTROI_ABRAKE_DIST*3 < passed and passed < 1e9 and speed<=25 then self.Brake = 3 end - if self.Brake == 3 and passed < METROSTROI_ABRAKE_DIST then self.Brake = 4 end - --if self.Brake == 2 and speed > 25 or self.Brake == 4 then position = -3 end - if self.Brake == 2 and Train.RheostatController.Position < 12 or self.Brake == 4 then position = -3 end - self.Passed = passed - elseif self.Autodrive then - --print(-1,Train,ProgrammSBrake) - if self.Brake then - position = -3 - elseif ProgrammX and ProgrammX then - --X3 - if ProgrammX == 2 or ProgrammX == 4 then self.Drive = 3 end --X3 - if ProgrammX == 1 or ProgrammX == 3 then self.Drive = 2 end --X2 - if ProgrammX == 5 or ProgrammX == 6 then self.Drive = 0 end --0 - if ProgrammX == 7 then self.Drive = -1 end --T1 - if ProgrammX == 8 then self.Drive = -2 end --T1a - end - if self.Brake and (self.Brake <= 1 or speed < 0.1) then - self.Brake = false - self.Stopped = false - if ProgramDoorLeft or ProgramDoorRight then - self.DoorsOpen = true - end - end - if position == 0 then position = self.Drive or 0 end - end - if position ~= 0 and not self.Starting then self.Starting = CurTime() end - if position == 0 and self.Starting then self.Starting = false end - if (position < -1 or position > 1) and self.Starting and CurTime()-self.Starting < 0.5 then - position = math.Clamp(position,-1,1) - end - if ARS["33D"]*self["33D"] == 0 and position > 0 then position = 0 end - --if Train.RheostatController.Position < 17.2 then print(Train.Electric.I13,Train.RheostatController.Position,speed,Train.Electric.ThyristorState,Train.Electric.ThyristorResistance,Train.ThyristorBU5_6.Value) end - - self:SetAVPosition(position) - - if ProgrammSBrake then ProgrammSBrake.BrakeProgrammPassed = 1e9 end - local zero = (self.NoFreq*(Train.ALS.Value+Train.VRD.Value)) > 0 - - --PUAV ARS logic - if not EnableARS then - self.Ringing = true - self.EBrake = true - end - if self.Ringing and KVT then self.Ringing = false end - if self.EBrake and KVT then self.EBrake = false end - if speed >= speedLimit and not ARS.ElectricBrake and not self.Pneumo then - self.Ringing = true - self.Pneumo = speed == speedLimit - self.EBrake = speed > speedLimit - end - if (speed < speedLimit or ARS.ElectricBrake) and EnableARS then - self.Pneumo = false - self.EBrake = false - end - - local CloseDoors = (not ProgramDoorLeft and not ProgramDoorRight and not zero) or speed > 0.2 or Train.VAV.Value > 0 and Train.KSZD.Value > 0 - local DoorLeftWork = Train:ReadTrainWire(16) == 0 and (ProgramDoorLeft or zero) - local DoorRightWork = Train:ReadTrainWire(16) == 0 and (ProgramDoorRight or zero) - self.LK16 = Train:ReadTrainWire(16) > 0 - self.LAVT = Train.VAV.Value > 0 - self.LOS = UOS - self.LRS = - not ProgramDoorLeft and not ProgramDoorRight and EnableARS - and Train.EK.Value > 0 and Train.EK1.Value > 0 and Train.SOT.Value > 0 and (not self.LRSTimer or CurTime()-self.LRSTimer > 0.2) - self.LKI1 = false - self.LKI2 = false - - self["31"] = DoorLeftWork and self.DoorsOpen and 1 or 0 - self["32"] = DoorRightWork and self.DoorsOpen and 1 or 0 - self["31C"] = DoorLeftWork and 1 or 0 - self["32C"] = DoorRightWork and 1 or 0 - self["16C"] = CloseDoors and 1 or 0 - - --local zbrake = speedLimit <= 20 and not KVT - self["33D"] = (self.EBrake or zbrake) and 0 or 1 - self["33G"] = (self.EBrake or zbrake) and 1 or 0 - self["2"] = self["33G"] - self["20"] = self["33G"] - self["48"] = self.Pneumo and 1 or 0 - self["8"] = self["33G"] - if Train.KV["U2-25"] > 0 or KVT and speedLimit == 20 then - self["8"] = -1 - end - if (Train.KV["7G-33Yu"] > 0 or Train.KSZD.Value > 0) and self.KSZDRing then self.KSZDRing = false end - for i,train in ipairs(Train.WagonList) do - if train.RheostatController then - Train:SetNW2Int("PUAV:RK"..i,math.floor(train.RheostatController.Position+0.5)) - end - end - self.Ring = (self.EBrake or self.Ringing) and CurTime()%2 > 1 or self.KSZDRing - elseif self.State == 1 then - self.LK16 = true - self.LAVT = true - self.LOS = true - self.LRS = true - self.LKI1 = true - self.LKI2 = true - self.Ring = CurTime()-self.State2Timer < 1 - - self.EBrake = true - self.Ringing = true - else - self.LK16 = false - self.LAVT = false - self.LOS = false - self.LRS = false - self.LKI1 = false - self.LKI2 = false - - self["31"] = 0 - self["32"] = 0 - self["31C"] = 1 - self["32C"] = 1 - self["16C"] = 0 - - self["33D"] = 1 - self["33G"] = 0 - self["2"] = 0 - self["20"] = 0 - self["48"] = 0 - self["8"] = 0 - - - self.LRSTimer = false - self.HaveCommand = false - - self.Ring = false - - self.EBrake = true - self.Ringing = true - self.Pneumo = false - self.RingArmed = nil - - self:SetAVPosition(0) - end - if EnableARS then - if (ARS.F5 > 0 or ARS.F6 > 0) then - if not self.ZeroTimer then - self.ZeroTimer = CurTime()+30 - self.ZeroTimerState = true - end - if self.ZeroTimerState and self.ZeroTimer and CurTime()-self.ZeroTimer > 7.5 and Train.ALSCoil.Speed < 0.25 then - self.ZeroTimerState = false - self.ZeroTimer = CurTime()+30 - end - elseif self.ZeroTimer ~= nil then - self.ZeroTimer = nil - end - else - self.ZeroTimer = nil - end - --[[ - if self.Train.VZP.Value > 0.5 then - Train.Autodrive:Enable() - end - if Train.VAV.Value < 0.5 then - Train.Autodrive:Disable() - end - if self.Timer and CurTime() - self.Timer > 0 then - self.Timer = nil - self.Choose = 0 - end - --self.FirstStation = Metrostroi.EndStations[Train.Announcer.AnnMap][self.Line] and Metrostroi.EndStations[Train.Announcer.AnnMap][self.Line][self.ChoosedFStation or 1] or 0 - --self.LastStation = Metrostroi.EndStations[Train.Announcer.AnnMap][self.Line] and Metrostroi.EndStations[Train.Announcer.AnnMap][self.Line][self.ChoosedLStation or 1] or 0 - if self.State ~= self.RealState then - self.RealState = self.State - self.TimeOverride = true - end - - self.Time = self.Time or CurTime() - if (CurTime() - self.Time) > 0.1 or self.TimeOverride then - self.TimeOverride = nil - --print(1) - self.Time = CurTime() - Train:SetNW2Int("PUAV:Choose",self.Choose) - Train:SetNW2Int("PUAV:LastStation",self.LastStation or 1) - Train:SetNW2Int("PUAV:FirstStation",self.FirstStation or 1) - Train:SetNW2Int("PUAV:Line",self.Line or 1) - end - self.RouteNumber = string.gsub(Train.RouteNumber or "","^(0+)","") - self.Line = Train.UPO.Line - self.FirstStation = tostring(Train.UPO.FirstStation or "") - self.LastStation = tostring(Train.UPO.LastStation or "") - local pathID - if (Metrostroi.TrainPositions[self.Train] and Metrostroi.TrainPositions[self.Train][1]) then - PathID = Metrostroi.TrainPositions[self.Train][1].path.id - end - Train:SetPackedBool("LKI",self.Train.Autodrive.Commands[PathID] and self.Train.Autodrive.Commands[PathID][self.Train.UPO.Station] ~= nil)]] -end diff --git a/lua/metrostroi/systems/_obsolete/sys_rri.lua b/lua/metrostroi/systems/_obsolete/sys_rri.lua deleted file mode 100644 index e2b3c57..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_rri.lua +++ /dev/null @@ -1,215 +0,0 @@ --------------------------------------------------------------------------------- --- Радио-релейный информатор --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("RRI") -TRAIN_SYSTEM.DontAccelerateSimulation = true -if TURBOSTROI then return end -function TRAIN_SYSTEM:Inputs() - return {} -end - -function TRAIN_SYSTEM:Outputs() - return {} -end - -Metrostroi.RRIAnnouncments = { - ["arr_108"]={14.063,"subway_announcer_riu/arr_108.mp3"}, - ["arr_109"]={4.466,"subway_announcer_riu/arr_109.mp3"}, - ["arr_110"]={10.703,"subway_announcer_riu/arr_110.mp3"}, - ["arr_111"]={4.502,"subway_announcer_riu/arr_111.mp3"}, - ["arr_112"]={10.586,"subway_announcer_riu/arr_112.mp3"}, - ["arr_113"]={9.536,"subway_announcer_riu/arr_113.mp3"}, - ["arr_114"]={3.661,"subway_announcer_riu/arr_114.mp3"}, - ["arr_115"]={14.681,"subway_announcer_riu/arr_115.mp3"}, - ["arr_116"]={10.077,"subway_announcer_riu/arr_116.mp3"}, - ["arr_117"]={9.804,"subway_announcer_riu/arr_117.mp3"}, - ["arr_118"]={5.911,"subway_announcer_riu/arr_118.mp3"}, - ["arr_119"]={4.404,"subway_announcer_riu/arr_119.mp3"}, - ["arr_121"]={9.337,"subway_announcer_riu/arr_121.mp3"}, - ["arr_122"]={4.619,"subway_announcer_riu/arr_122.mp3"}, - ["arr_123"]={14.355,"subway_announcer_riu/arr_123.mp3"}, - ["arr_321_I"]={5.032,"subway_announcer_riu/arr_321_I.mp3"}, - ["arr_321_II"]={11.413,"subway_announcer_riu/arr_321_II.mp3"}, - ["arr_322"]={15.998,"subway_announcer_riu/arr_322.mp3"}, - ["end_111"]={13.759,"subway_announcer_riu/end_111.mp3"}, - ["end_114"]={13.395,"subway_announcer_riu/end_114.mp3"}, - ["end_121"]={13.973,"subway_announcer_riu/end_121.mp3"}, - ["leave"]={11.283,"subway_announcer_riu/leave.mp3"}, - ["next_108"]={7.334,"subway_announcer_riu/next_108.mp3"}, - ["next_109"]={7.297,"subway_announcer_riu/next_109.mp3"}, - ["next_110"]={18.623,"subway_announcer_riu/next_110.mp3"}, - ["next_111"]={7.221,"subway_announcer_riu/next_111.mp3"}, - ["next_112"]={7.495,"subway_announcer_riu/next_112.mp3"}, - ["next_113"]={17.520,"subway_announcer_riu/next_113.mp3"}, - ["next_113_s"]={23.703,"subway_announcer_riu/next_113_s.mp3"}, - ["next_114"]={7.163,"subway_announcer_riu/next_114.mp3"}, - ["next_115"]={9.323,"subway_announcer_riu/next_115.mp3"}, - ["next_115_s"]={15.323,"subway_announcer_riu/next_115_s.mp3"}, - ["next_116"]={7.476,"subway_announcer_riu/next_116.mp3"}, - ["next_117"]={17.763,"subway_announcer_riu/next_117.mp3"}, - ["next_118"]={9.138,"subway_announcer_riu/next_118.mp3"}, - ["next_119_I"]={7.554,"subway_announcer_riu/next_119_I.mp3"}, - ["next_119_II"]={14.088,"subway_announcer_riu/next_119_II.mp3"}, - ["next_121_I"]={12.953,"subway_announcer_riu/next_121_I.mp3"}, - ["next_121_II"]={6.726,"subway_announcer_riu/next_121_II.mp3"}, - ["next_122_II"]={8.051,"subway_announcer_riu/next_122_II.mp3"}, - ["next_122_I_1"]={14.029,"subway_announcer_riu/next_122_I_1.mp3"}, - ["next_122_I_2"]={15.045,"subway_announcer_riu/next_122_I_3.mp3"}, - ["next_123"]={13.935,"subway_announcer_riu/next_123.mp3"}, - ["next_321_I"]={14.661,"subway_announcer_riu/next_321_I.mp3"}, - ["next_321_II"]={8.509,"subway_announcer_riu/next_321_II.mp3"}, - ["next_322"]={8.929,"subway_announcer_riu/next_322.mp3"}, - ["to_111"]={6.881,"subway_announcer_riu/to_111.mp3"}, - ["to_114"]={6.224,"subway_announcer_riu/to_114.mp3"}, - ["to_121"]={6.698,"subway_announcer_riu/to_121.mp3"}, -} -for k,v in pairs(Metrostroi.RRIAnnouncments) do - v[3] = k -end - ---первая таблица - прибытие, вторая - следующая, если ИД находится в основной таблице - значит станция типа горлифт ---1 - разделение по пути ---2 - разделение по линии ---3 - разделение по пути и линии -TRAIN_SYSTEM.Setup = { - [114] = true, - { - [321] = 1, - }, - { - [119] = 1, - [121] = 1, - [122] = {3,1}, - [321] = 1, - } -} - -function TRAIN_SYSTEM:Initialize() - for _,v in pairs(Metrostroi.RRIAnnouncments) do - util.PrecacheSound(v[2]) - end - self.Path = 1 - self.Line = 1 - self.FirstStation = 1 - self.LastStation = #Metrostroi.WorkingStations[self.Line] - self.CurrentStation = self.FirstStation - self.Depeat = true - self.IgnoreHorlift = true - self.TriggerNames = { - "Custom1", - "Custom2", - "Custom3", - "CustomC", - "R_Program1", - "R_Program2", - } - self.Triggers = {} -end - - -function TRAIN_SYSTEM:Queue(id) - local ann = self.Train.Announcer - if (not Metrostroi.RRIAnnouncments[id]) then return end - if #ann.Schedule < 16 then - local tbl = Metrostroi.RRIAnnouncments[id] - table.insert(ann.Schedule, tbl) - end -end - -function TRAIN_SYSTEM:Inputs() - return {} -end -function TRAIN_SYSTEM:Outputs() - return {} -end - -function TRAIN_SYSTEM:PlaySound(station,arrive) - if arrive == nil then - else - local name = "" - if arrive then - name = name.."next_" - else - name = name.."arr_" - end - name = name..tostring(station) - local spec - local horlift = false - if self.Setup[station] then - spec = self.Setup[station] - horlift = true - else - if self.Setup[station + (self.Path and 1 or -1)] then - horlift = true - end - spec = self.Setup[arrive and 2 or 1][station] - end - if horlift and self.IgnoreHorlift and arrive then - name = name.."_s" - end - if spec then - if type(spec) == "table" then - spec = spec[self.Path and 2 or 1] - end - if spec == 1 then - name = name.."_"..(self.Path and "II" or "I") - elseif spec == 2 then - name = name.."_"..tostring(self.Line) - elseif spec == 3 then - name = name.."_"..(self.Path and "II" or "I").."_"..tostring(self.Line) - end - end - self:Queue(name) - end -end -function TRAIN_SYSTEM:Trigger(name) - --self.CurrentStation = 9 - if name == "Custom3" and #self.Train.Announcer.Schedule == 0 then - if self.Depeat then - if self.LastStation > self.FirstStation then - self.CurrentStation = math.min(self.LastStation+1,self.CurrentStation + 1 + (self.Setup[Metrostroi.WorkingStations[self.Line][self.CurrentStation]+1] and 1 or 0)) - else - self.CurrentStation = math.max(self.LastStation-1,self.CurrentStation - 1 - (self.Setup[Metrostroi.WorkingStations[self.Line][self.CurrentStation]-1] and 1 or 0)) - end - end - if (self.LastStation < self.FirstStation and self.CurrentStation < self.LastStation or self.LastStation > self.FirstStation and self.CurrentStation > self.LastStation) and self.Depeat then - self.Depeat = false - if Metrostroi.AnnouncerData[Metrostroi.WorkingStations[self.Line][self.CurrentStation]] and Metrostroi.AnnouncerData[Metrostroi.WorkingStations[self.Line][self.CurrentStation]][9] then - self.CurrentStation = self.LastStation - local tem = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = tem - self.Depeat = not self.Depeat - else - self.CurrentStation = self.FirstStation - end - else - self.Depeat = not self.Depeat - end - self:PlaySound(Metrostroi.WorkingStations[self.Line][self.CurrentStation],not self.Depeat) - end -end - -function TRAIN_SYSTEM:Think() - self.Train.R_G:TriggerInput("Set",1) - self.Train.R_ZS:TriggerInput("Set",1) - local Train = self.Train - if Train.VB.Value > 0.5 and Train.Battery.Voltage > 55 then - for k,v in pairs(self.TriggerNames) do - if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then - if Train[v].Value > 0.5 then - self:Trigger(v) - end - self.Triggers[v] = Train[v].Value > 0.5 - end - end - end - self.Path = self.Train.CustomC.Value > 0 - if self.FirstStation > self.LastStation and not self.Path or self.FirstStation < self.LastStation and self.Path then - local temp = self.FirstStation - self.FirstStation = self.LastStation - self.LastStation = temp - self.CurrentStation = self.FirstStation - self.Depeat = true - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_tr_7b.lua b/lua/metrostroi/systems/_obsolete/sys_tr_7b.lua deleted file mode 100644 index 6450451..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_tr_7b.lua +++ /dev/null @@ -1,50 +0,0 @@ --------------------------------------------------------------------------------- --- Токоприёмник контактного рельса (ТР-7Б) --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("TR_7B") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - -- Output voltage from contact rail - self.Main750V = 0.0 - - self.ContactState1 = 0 - self.ContactState2 = 0 - self.ContactState3 = 0 - self.ContactState4 = 0 -end - -function TRAIN_SYSTEM:Inputs() - return { } -end - -function TRAIN_SYSTEM:Outputs() - return { "Main750V", "DropByPeople","ContactState1","ContactState2","ContactState3","ContactState4"} -end - - -function TRAIN_SYSTEM:Think(dT) - -- Don't do logic if train is broken - local fB,rB = self.Train.FrontBogey,self.Train.RearBogey - if (not IsValid(fB)) or (not IsValid(rB)) then - return - end - - self.Main750V = 0 - if IsValid(fB) then - self.Main750V = math.max(self.Main750V,fB.Voltage) - self.ContactState1 = fB.NextStates[1] and 1 or 0 - self.ContactState2 = fB.NextStates[2] and 1 or 0 - else - self.ContactState1 = 0 - self.ContactState2 = 0 - end - if IsValid(rB) then - self.Main750V = math.max(self.Main750V,rB.Voltage) - self.ContactState3 = rB.NextStates[1] and 1 or 0 - self.ContactState4 = rB.NextStates[2] and 1 or 0 - else - self.ContactState3 = 0 - self.ContactState4 = 0 - end -end diff --git a/lua/metrostroi/systems/_obsolete/sys_upo.lua b/lua/metrostroi/systems/_obsolete/sys_upo.lua deleted file mode 100644 index c11a564..0000000 --- a/lua/metrostroi/systems/_obsolete/sys_upo.lua +++ /dev/null @@ -1,256 +0,0 @@ --------------------------------------------------------------------------------- --- ��� - �������������� --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("UPO") -TRAIN_SYSTEM.DontAccelerateSimulation = true - -function TRAIN_SYSTEM:Initialize() - self.Bloks = { - "PUAV", - "PA-KSD", - "PA-M", - "PA-KSD-M", - } -end - -function TRAIN_SYSTEM:Outputs() - return {} -end - -function TRAIN_SYSTEM:Inputs() - return {} -end - -function TRAIN_SYSTEM:TriggerInput(name,value) -end - -function TRAIN_SYSTEM:NotLast(path) - local Announcer = self.Train.Announcer - return self:GetSTNum(self.Last) > 1 -end - -function TRAIN_SYSTEM:GetSTNum(station) - local Announcer = self.Train.Announcer - local station = tonumber(station) - if not Metrostroi.WorkingStations then return 0 end - if not Metrostroi.WorkingStations[self.Line] then return 0 end - if not Metrostroi.WorkingStations[self.Line][station] and station ~= 120 then return 0 end - return station == 120 and 12 or Metrostroi.WorkingStations[self.Line][station] -end - -function TRAIN_SYSTEM:End(station,path,next) - if not station or station == 0 or not Metrostroi.AnnouncerData[station] then return true end - if next then - return (not Metrostroi.AnnouncerData[station][9]) - and (((self:GetSTNum(self.LastStation) > self:GetSTNum(station) or self:GetSTNum(station) > self:GetSTNum(self.FirstStation)) and path == 2) - or ((self:GetSTNum(self.FirstStation) < self:GetSTNum(station) and self:GetSTNum(station) > self:GetSTNum(self.LastStation)) and path == 1)),Metrostroi.AnnouncerData[station][9] - else - return (not Metrostroi.AnnouncerData[station][9]) - and (((self:GetSTNum(self.LastStation) >= self:GetSTNum(station) or self:GetSTNum(station) > self:GetSTNum(self.FirstStation)) and path == 2) - or ((self:GetSTNum(self.FirstStation) < self:GetSTNum(station) and self:GetSTNum(station) >= self:GetSTNum(self.LastStation)) and path == 1)) - end -end - -function TRAIN_SYSTEM:PlayArriving(station,next,path) - local Announcer = self.Train.Announcer - Announcer:MultiQueue(0005,0003) - if self:End(station,path) then - Announcer:MultiQueue(0230,0222,0002,0221,station) - if Metrostroi.AnnouncerData[station][2] then - Announcer:MultiQueue(0215) - end - --Announcer:MultiQueue(0006) - self.AnnState = 7 - Announcer:MultiQueue(0006) - return - end - - Announcer:MultiQueue(Metrostroi.AnnouncerData[station][6] and 0220 or nil,station) - if Metrostroi.AnnouncerData[station][2] then - Announcer:MultiQueue(0215) - end - if type(Metrostroi.AnnouncerData[station][7]) == "table" then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[station][7][2]] and 0203 or nil,Metrostroi.AnnouncerData[station][7][2]) - elseif Metrostroi.AnnouncerData[station][7] > 0 then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[station][7]] and 0203 or nil,Metrostroi.AnnouncerData[station][7]) - end - - if Metrostroi.AnnouncerData[station][8] and path == Metrostroi.AnnouncerData[station][8] then - Announcer:MultiQueue(0230,0233,0210,path == 1 and self.LastStation or self.FirstStation) - end - - if nextNonWorkingStation then - Announcer:MultiQueue(0230,nextNonWorkingStation) - end - Announcer:MultiQueue(0002,0219,next) - if Metrostroi.AnnouncerData[next][2] then - Announcer:MultiQueue(0215) - end - - if type(Metrostroi.AnnouncerData[next][7]) == "table" then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[next][7][2]] and 0203 or nil,Metrostroi.AnnouncerData[next][7][2]) - elseif Metrostroi.AnnouncerData[next][7] > 0 then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[next][7]] and 0203 or nil,Metrostroi.AnnouncerData[next][7]) - end - - if Metrostroi.AnnouncerData[next][8] and path == Metrostroi.AnnouncerData[next][8] then - Announcer:MultiQueue(0230,0233,0210,path == 1 and self.LastStation or self.FirstStation) - end - Announcer:MultiQueue(0006) -end - -function TRAIN_SYSTEM:PlayDepeate(station,next,path) - local Announcer = self.Train.Announcer - Announcer:MultiQueue(0005,0003) - if self:NotLast(path) then - Announcer:MultiQueue(0210,path == 1 and self.LastStation or self.FirstStation,0002) - elseif Metrostroi.AnnouncerData[station][8] and path == Metrostroi.AnnouncerData[station][8] then - Announcer:MultiQueue(0230,0233,0210,path == 1 and self.LastStation or self.FirstStation,0002) - end - Announcer:MultiQueue(0218) - - if self.NextNonWorkingStation then - Announcer:MultiQueue(0230,self.NextNonWorkingStation) - end - Announcer:MultiQueue(0219,next) - if Metrostroi.AnnouncerData[next][2] then - Announcer:MultiQueue(0215) - end - - if type(Metrostroi.AnnouncerData[next][7]) == "table" then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[next][7][2]] and 0203 or nil,Metrostroi.AnnouncerData[next][7][2]) - elseif Metrostroi.AnnouncerData[next][7] > 0 then - Announcer:MultiQueue(0202,Metrostroi.AnnouncerData[Metrostroi.AnnouncerData[next][7]] and 0203 or nil,Metrostroi.AnnouncerData[next][7]) - end - - if Metrostroi.AnnouncerData[next][8] and path == Metrostroi.AnnouncerData[next][8] then - Announcer:MultiQueue(0230,0233,0210,path == 1 and self.LastStation or self.FirstStation) - end - Announcer:MultiQueue(0006) -end -function TRAIN_SYSTEM:II(ann) - if self.Train.R_UPO.Value < 0.5 then return end - local Announcer = self.Train.Announcer - Announcer:MultiQueue(0005,0003) - if ann == 1 then - Announcer:MultiQueue(math.random() > 0.5 and 0207 or 0206) - elseif ann == 2 then - Announcer:MultiQueue(math.random() > 0.5 and 0209 or 0208) - elseif ann == 3 then - Announcer:MultiQueue(math.random() > 0.5 and 0204 or 0205) - else - if not self.IIalr then - Announcer:MultiQueue(self.Type == 1 and 0229 or 0217) - self.IIalr = true - else - Announcer:MultiQueue(0228) - self.IIalr = false - end - end - Announcer:MultiQueue(0006) -end - -function TRAIN_SYSTEM:ReloadSigns() - self.Train:PrepareSigns() - if self.Train.SignsList[tonumber(self.LastStation)] then - self.Train.SignsIndex = self.Train.SignsList[tonumber(self.LastStation)] or 1 - if self.Train.SignsList[self.Train.SignsIndex] then self.Train:SetNW2String("FrontText",self.Train.SignsList[self.Train.SignsIndex][2]) end - end - if #self.Train.WagonList > 1 then - local LastTrain = self.Train.WagonList[#self.Train.WagonList] - LastTrain:PrepareSigns() - if LastTrain.SignsList[tonumber(self.FirstStation)] then - LastTrain.SignsIndex = self.Train.SignsList[tonumber(self.FirstStation)] or 1 - if self.Train.SignsList[self.Train.SignsIndex] then LastTrain:SetNW2String("FrontText",self.Train.SignsList[self.Train.SignsIndex][2]) end - end - end -end - -function TRAIN_SYSTEM:SetStations(line,first,last) - self.Line = tonumber(line) - self.FirstStation = tonumber(first) - self.LastStation = tonumber(last) - self:ReloadSigns() -end - -function TRAIN_SYSTEM:Think() - self.Path = self.Train:ReadCell(49170)--Metrostroi.PathConverter[self.Train:ReadCell(65510)] or 0 - self.Station = self.Train:ReadCell(49169) - if self.Train.Autodrive.Corrections[self.Path or 0] then - self.Distance = math.min(3072,self.Train:ReadCell(49165) + (self.Train.Autodrive.Corrections[self.Path or 0][self.Station] or -3.21)) - end - if not self.Train.R_UPO or self.Train.R_UPO.Value < 0.5 or self.Blocks == 2 and self["PA-KSD"].Trainsit or (self.Train.KV.ReverserPosition == 0 and self.Train.KRU.Position == 0) then return end - if (self:GetSTNum(self.LastStation) > self:GetSTNum(self.FirstStation) and self.Path == 2) or (self:GetSTNum(self.FirstStation) > self:GetSTNum(self.LastStation) and self.Path == 1) then - local old = self.LastStation - self.LastStation = self.FirstStation - self.FirstStation = old - self:ReloadSigns() - end - if not self.FirstStation or not self.LastStation or self.FirstStation == 0 or self.LastStation == 0 or self.Station == 0 then return end - if (self:End(self.Station,self.Path,true) or self:GetSTNum(self.LastStation) > self:GetSTNum(self.Station) and self.Path == 2 or self:GetSTNum(self.Station) < self:GetSTNum(self.FirstStation) and self.Path == 1) then return end - if self.Distance < 75 and self.Arrived == nil and Metrostroi.WorkingStations[self.Line][self.Station] then - self.Arrived = true - local tbl = Metrostroi.WorkingStations[self.Line] - self:PlayArriving(self.Station,tbl[tbl[self.Station] + (self.Path == 1 and 1 or -1)],self.Path) - end - if self.Arrived and self.Train.Panel.SD < 0.5 and not self.BoardTime then - self.BoardTime = CurTime() + (self.Train.BoardTime or 0) + (20-(#self.Train.WagonList)*4) + (self.Train.Horlift and 7 or 0) - self.Ring = false - end - if (self.Arrived == nil or self.Train.Panel.SD > 0.5) and self.BoardTime then - self.BoardTime = nil - --self.Ring = nil - end - if self.Arrived and self.BoardTime and math.floor((self.BoardTime or CurTime()) - CurTime()) < (self.Train.Horlift and 15 or 8) and self.Arrived then - if self:End(self.Station,self.Path) then - self.Ring = 2 - else - local tbl = Metrostroi.WorkingStations[self.Line] - self:PlayDepeate(self.Station,tbl[tbl[self.Station] + (self.Path == 1 and 1 or -1)],self.Path) - end - self.ODZ = true - self.Arrived = false - end - if self.Distance > 75 then self.Arrived = nil end - if self.Arrived == nil then - self.Ring = nil - end - if self.Ring == false and self.Train.Panel.SD > 0.5 and self.ODZ == nil then - self.Ring = 1 - end - if self.Ring == false and self.Train.Panel.SD > 0.5 and self.ODZ ~= nil then - self.Ring = 0 - end - if self.Train:ReadCell(48) == 218 then - --self.ODZ = true - end - if self.ODZ and self.BoardTime and self.BoardTime - CurTime() < 0 then - self.ODZ = false - self.Ring = 2 - end - if self.Ring == 2 and self.Train.Panel.SD > 0.5 then - self.Ring = 0 - end - if (self.Ring or self.Ring ~= 0) and self.Train.ALS_ARS.KVT then - self.Ring = 0 - end - if self.Ring == 0 and self.Arrived == nil then - self.Ring = nil - end - if (self.Ring and self.Ring > 0) and not self.Train.ALS_ARS.Ring then - self.Train.ALS_ARS:TriggerInput("Ring",1) - end - if (not self.Ring or self.Ring == 0) and self.Train.ALS_ARS.Ring then - if not self.Train["PA-KSD"].Check and not self.Train["PA-M"].Check and not self.Train["PA-KSD-M"].Check then self.Train.ALS_ARS:TriggerInput("Ring",0) end - end - --[[ - if self.FirstStation and self.LastStation then - if not self:End(self.Station,self.Path) then - if self.Train.R_UPO.Value > 0 then - local tbl = Metrostroi.WorkingStations[self.Line] - self:PlayDepeate(self.Station,tbl[tbl[self.Station] + (self.Path == 1 and 1 or -1)],self.Path) - end - end - end - ]] -end diff --git a/lua/metrostroi/systems/sys_81_501_electric.lua b/lua/metrostroi/systems/sys_81_501_electric.lua index 73390bc..6d216ff 100644 --- a/lua/metrostroi/systems/sys_81_501_electric.lua +++ b/lua/metrostroi/systems/sys_81_501_electric.lua @@ -73,7 +73,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) S["DA"] = S["10AK"]*KV["10AK-DA"] Train:WriteTrainWire(8,T[10]*KV["10-8"]) Train:WriteTrainWire(4,S["10AK"]*KV["10AK-4"]) - Train:WriteTrainWire(5,S["10AK"]*KV["10AK-5"]*(Train.UAVAC.Value+KV["5-5a"])) + Train:WriteTrainWire(5,S["10AK"]*KV["10AK-5"]) Train:WriteTrainWire(1,S["10AK"]*KV["1-10AK"]*Train.RV2.Value+(BO*Train.RO1.Value)) Train:WriteTrainWire(17,S["10AK"]*Train.VozvratRP.Value) @@ -84,7 +84,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]+(BO*Train.RO2.Value)) Train.RVT:TriggerInput("Set",S["U2"]*KV["U2-RVT"]) - Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(1-Train.RVT.Value)) + Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(Train.AVU.Value+Train.KPVU.Value)*(1-Train.RVT.Value)) else S["DA"] = T[10]*KV["10AK-DA"] @@ -101,7 +101,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]+(BO*Train.RO2.Value)) Train.RVT:TriggerInput("Set",S["U2"]*KV["U2-RVT"]) - Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(1-Train.RVT.Value)) + Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(Train.AVU.Value+Train.KPVU.Value)*(1-Train.RVT.Value)) end Panel.UPOPower = BO*KV["10AK-DA"] @@ -143,13 +143,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) S["10I"] = S["10A"]*RheostatController.RKM2 Train["RUTpod"] = S["10I"]*Train.LK4.Value - S["25A"] = T[25]*RUM + S["25A"] = T[25]*RUM Train["RRTpod"] = S["25A"]*min(1,Train["RRTpod"]+S["10I"]) - Train.RRT:TriggerInput("Set",S["25A"]*Train["RRTpod"]) + Train.RRT:TriggerInput("Set",S["25A"]*Train["RRTpod"]) - S["DT"] = BO*Train.BPT.Value - Panel.BrY = S["DT"] - Train:WriteTrainWire(34,S["DT"]) + S["DT"] = BO*Train.BPT.Value + Panel.BrY = S["DT"] + Train:WriteTrainWire(34,S["DT"]) if KVL then S["10B"] = S["10A"]*(Train.RV1.Value+Train.TSH.Value*(1-Train.KSH3.Value)) @@ -214,9 +214,9 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) Train.RO2:TriggerInput("Set",T[9]*Train.RO1.Value) S["20G"] = C(1<=RK and RK<=5 and (P==2 or P==3)) S["20V"] = C((RK==1 or RK==18) and P==1)+S["20G"]*Train.KSH1.Value - S["20D"] = S["10A"]*(S["20G"]+S["20V"]*(1-Train.Rper.Value))*(Train.LK5.Value+Train.LK4.Value) - Train.KSH2:TriggerInput("Set",S["20D"]) - Train.KSH1:TriggerInput("Set",S["20D"])--+S["20V"]*(1-Train.Rper.Value)) + S["20D"] = S["10A"]*(S["20G"]+S["20V"]*(1-Train.Rper.Value))*(Train.LK5.Value+Train.LK4.Value) + Train.KSH2:TriggerInput("Set",S["20D"]) + Train.KSH1:TriggerInput("Set",S["20D"])--+S["20V"]*(1-Train.Rper.Value)) --Вспом цепи низкого напряжения Train:WriteTrainWire(11,T[10]*Train.VU2.Value) @@ -399,10 +399,10 @@ function TRAIN_SYSTEM:Think(dT,iter) local Train = self.Train if not self.ResistorBlocksInit then self.ResistorBlocksInit = true - self.Train.YAR_13A.NoRRT = true + self.Train.YAR_13A.NoRRT = true Train:LoadSystem("ResistorBlocks","Gen_Res_703") + Train.ResistorBlocks.InitializeResistances_81_703(Train) end - if iter == 1 then Train.ResistorBlocks.InitializeResistances_81_703(Train) end ---------------------------------------------------------------------------- -- Voltages from the third rail ---------------------------------------------------------------------------- diff --git a/lua/metrostroi/systems/sys_81_502_ars.lua b/lua/metrostroi/systems/sys_81_502_ars.lua index 6808b7f..410320a 100644 --- a/lua/metrostroi/systems/sys_81_502_ars.lua +++ b/lua/metrostroi/systems/sys_81_502_ars.lua @@ -79,15 +79,16 @@ function TRAIN_SYSTEM:Think(dT) if self.ALS ~= ALS.Enabled then ALS:TriggerInput("Enable",self.ALS) end - self.RPB = self.Power + self.RPB = Power and 1 or 0 self.F6 = ALS.F6 self.F5 = ALS.F5 self.F4 = ALS.F4 self.F3 = ALS.F3 self.F2 = ALS.F2 self.F1 = ALS.F1 - self.NoFreq = (1-math.min(1,(self.F1+self.F2+self.F3+self.F4+self.F5+self.F6)))*math.min(1,self.ALS+self.Power) + self.NoFreq = ALS.NoFreq + if ALS.Enabled == 0 and VRD then self.NoFreq = 1 end --ALS if Power then local Vlimit = -10 diff --git a/lua/metrostroi/systems/sys_81_502_electric.lua b/lua/metrostroi/systems/sys_81_502_electric.lua index af779c1..38958ff 100644 --- a/lua/metrostroi/systems/sys_81_502_electric.lua +++ b/lua/metrostroi/systems/sys_81_502_electric.lua @@ -195,7 +195,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train, dT) Panel.UAVATriggered = BO*(1-Train.UAVAC.Value+Train.PneumaticNo1.Value*C(Train.Pneumatic.BrakeCylinderPressure < 0.6)) end Panel.UPOPower = BO*KV["10AK-DA"] - Train:WriteTrainWire(13,Panel.UPOPower*Train.R_UPO.Value--[[*KV["UPO-13"]]*Train.UPO.LineOut) + Train:WriteTrainWire(13,Panel.UPOPower*Train.R_UPO.Value*KV["UPO-13"]*Train.UPO.LineOut) Train:WriteTrainWire(29,0) local RUM = KV.RCU @@ -685,8 +685,8 @@ function TRAIN_SYSTEM:Think(dT,iter) self.ResistorBlocksInit = true self.Train.YAR_13A.NoRRT = true Train:LoadSystem("ResistorBlocks","Gen_Res_703") + Train.ResistorBlocks.InitializeResistances_81_703(Train) end - if iter == 1 then Train.ResistorBlocks.InitializeResistances_81_703(Train) end ---------------------------------------------------------------------------- -- Voltages from the third rail ---------------------------------------------------------------------------- diff --git a/lua/metrostroi/systems/sys_81_502_ksaup.lua b/lua/metrostroi/systems/sys_81_502_ksaup.lua index 7dc8de9..fba4ca2 100644 --- a/lua/metrostroi/systems/sys_81_502_ksaup.lua +++ b/lua/metrostroi/systems/sys_81_502_ksaup.lua @@ -69,6 +69,52 @@ function TRAIN_SYSTEM:Outputs() end function TRAIN_SYSTEM:TriggerInput(name,value) + --[[ if name == "CommandBrakeElapsed" and self.KRR2 == 0 and self.KRR1 > 0 and value ~= -1 and self.CrossCount then + if self.Stage1 and value > 1 then self.Stage2Prepared = true end + + if self.CrossCount > 10 then self.Station = true end + self.CrossCount = self.CrossCount+1 + if value*1000 < 80+46+2*(8*1.5) then + if not self.Stage1 and self.BrakeProgramm then + self.Stage1 = true + self:SetTargetKPRK(14) + end + if self.Stage2Prepared then + self.Stage2 = true + end + end + --if self.VAV > 0 then print(self.Stage1,self.Stage2Prepared,self.Stage2,value*1000) end + end + if name == "CommandBrake" and self.KRR2 == 0 and self.KRR1 > 0 then + self.BrakeProgramm = self.LAVT > 0 + self.CommandDrive = false + self.DriveCommand = false + + if self.TargetKPRK and self.LastBrakeProgrammLoss and CurTime()-self.LastBrakeProgrammLoss > 0.3 then self:SetTargetKPRK(self.TargetKPRK+1) end + if value<0 then self:SetTargetKPRK(-value) end + self.LastBrakeProgrammLoss = value == 0 and CurTime() + if self.BrakeProgrammLossDistance and self.BrakeProgrammLossDistance>15 then + self.BrakeProgrammCurrentDistance=0 + elseif value == 0 then + self.BrakeProgrammLossDistance = 0 + end + if value ~= 0 then + self.CrossCount = 0 + else + self.CrossCount = nil + end + end + if name == "CommandDrive" then + if value < 0 then + self.CommandDrive = false + self.DriveCommand = false + self.BrakeProgramm = false + elseif value > 0 then + self.CommandDrive = value + else + self.CommandDrive = false + end + end--]] if name == "CommandDoorsLeft" then self.DoorsLeft = value end if name == "CommandDoorsRight" then self.DoorsRight = value end end @@ -114,6 +160,9 @@ function TRAIN_SYSTEM:Think(dT) if ALS.F5 <= 0 and self.F5Ring ~= nil then self.F5Ring = nil end if self.F5Ring and speed < 0.1 then self.F5Ring = false end + --if Vlimit ~= 20 and (ALS.F5 == 0 or self.RD > 0) and self.KVT then Vlimit = 20 end + --if Vlimit < 20 then print("???",self.Vlimit) end + --local zero = (ALS.NoFreq+ALS.RealF5) > 0 -- Enable PV1 and disassembly when we overspeed if speed > Vlimit+0.5 and not self.ElectricBrake then self.ElectricBrake = true @@ -169,6 +218,7 @@ function TRAIN_SYSTEM:Think(dT) if self.BrakeTTimer and CurTime()-self.BrakeTTimer > 2 then self.BrakeT = 1 end self.BrakeT = self.BrakeT or 0 self[1] = self["1"]*Drive + --print(self.Train,2,self[1]) self[2] = self["2"]+self.BrakeT self[3] = Brake if not RR then @@ -196,6 +246,7 @@ function TRAIN_SYSTEM:Think(dT) self["8a"] = self.KRR else self[1] = 0 + --print(self.Train,2,self[1]) self[2] = 0--self["2"] self[3] = 0 self[8] = 0 diff --git a/lua/metrostroi/systems/sys_81_508_panel.lua b/lua/metrostroi/systems/sys_81_508_panel.lua deleted file mode 100644 index 1e49550..0000000 --- a/lua/metrostroi/systems/sys_81_508_panel.lua +++ /dev/null @@ -1,87 +0,0 @@ --------------------------------------------------------------------------------- --- 81-508 controller panel --------------------------------------------------------------------------------- --- Copyright (C) 2013-2019 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_508_Panel") - -function TRAIN_SYSTEM:Initialize() - -- Выключатель батареи (ВБ) - self.Train:LoadSystem("VB","Relay","Switch", {bass = true}) - self.Train:LoadSystem("AV","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("VU","Relay","Switch", {bass = true,normally_closed = true}) - - self.Train:LoadSystem("VU1","Relay","Switch", {bass = true}) --Heater - self.Train:LoadSystem("VU2","Relay","Switch", {bass = true}) --EmergencyLights - self.Train:LoadSystem("VU3","Relay","Switch", {bass = true}) --CabLights - - -- Buttons on the panel - self.Train:LoadSystem("DoorSelect","Relay","Switch", {bass = true, normally_closed = false }) - self.Train:LoadSystem("KU4","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU5","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU9","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU14","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU15","Relay","Switch", {bass = true}) - self.Train:LoadSystem("UV1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU16","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU2","Relay","Switch", {bass = true }) - self.Train:LoadSystem("KU3","Relay","Switch", { normally_closed = true, bass = true }) -- Doors close - self.Train:LoadSystem("KU3L","Relay","Switch", { bass = true }) -- Doors close - self.Train:LoadSystem("KU13","Relay","Switch", {bass = true}) -- Doors left open - self.Train:LoadSystem("KU6","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU7","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU10","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU10R","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU8","Relay","Switch", {bass = true}) - self.Train:LoadSystem("KU11","Relay","Switch", {bass = true}) --Door sig - - self.Train:LoadSystem("KRR","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("R_Program1","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Program1H","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_Program2H","Relay","Switch", {bass = true}) - - self.Train:LoadSystem("RST","Relay","Switch", {bass = true, normally_closed = true}) - self.Train:LoadSystem("50V","Relay","Switch", {bass = true, normally_closed = true}) - self.Train:LoadSystem("HPass","Relay","Switch", {bass = true}) --Door sig - - - - -- Педаль бдительности (ПБ) - self.Train:LoadSystem("KU6K","Relay","Switch", {bass = true, normally_closed = true}) - - self.Train:LoadSystem("PanelLamp","Relay","Switch", {bass = true, normally_closed=true}) - - self.V1 = 0 - self.GRP = 0 - self.RRP = 0 - self.TW18 = 0 - self.SD = 0 - self.UKS = 0 - self.UKSb = 0 - self.Headlights1 = 0 - self.Headlights2 = 0 - self.RedLights = 0 - self.EmergencyLights2 = 0 - self.EmergencyLights1 = 0 - self.MainLights1 = 0 - self.MainLights2 = 0 - self.Ring = 0 - self.AVU = 0 - - self.VPR = 0 - - self.AnnouncerPlaying = 0 - - self.CBKIPower = 0 - self.PCBKPower = 0 -end - -function TRAIN_SYSTEM:Outputs() - return { "V1","GRP","RRP","TW18","SD","UKS","UKSb","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","Ring","AVU","VPR","AnnouncerPlaying","CBKIPower","PCBKPower" } -end diff --git a/lua/metrostroi/systems/sys_81_508_uks.lua b/lua/metrostroi/systems/sys_81_508_uks.lua deleted file mode 100644 index 7a7f90d..0000000 --- a/lua/metrostroi/systems/sys_81_508_uks.lua +++ /dev/null @@ -1,41 +0,0 @@ --------------------------------------------------------------------------------- --- 81-508 UKS system --------------------------------------------------------------------------------- --- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o. --- Contains proprietary code. See license.txt for additional information. --------------------------------------------------------------------------------- -Metrostroi.DefineSystem("81_508_UKS") - -function TRAIN_SYSTEM:Initialize(parameters) - self.UKSEngaged = 0 - self.UKSTriggered = 0 - self.UKSEmerTriggered = 0 - self.Train:LoadSystem("UKSDisconnect","Relay","Switch", {bass = true,normally_closed = true}) -end - -function TRAIN_SYSTEM:Outputs() - return { "UKSEngaged", "UKSTriggered", "UKSEmerTriggered" } -end - -function TRAIN_SYSTEM:Think(dT) - local Train = self.Train - self.UKSEngaged = Train.UAVA.Value*Train.UKSDisconnect.Value - if self.UKSEngaged > 0 then - local speed = Train.ALSCoil.Speed*Train.ALSCoil.SpeedSign - if speed > 34 then - self.UKSTriggered = 1 - if speed > 40 then - self.UKSEmerTriggered = 1 - end - elseif speed < 31 and self.UKSEmerTriggered == 0 then - self.UKSTriggered = 0 - self.UKSEmerTriggered = 0 - elseif speed < 1 then - self.UKSTriggered = 0 - self.UKSEmerTriggered = 0 - end - else - self.UKSTriggered = 0 - self.UKSEmerTriggered = 0 - end -end diff --git a/lua/metrostroi/systems/sys_81_702_electric.lua b/lua/metrostroi/systems/sys_81_702_electric.lua index a45db5d..20555b4 100644 --- a/lua/metrostroi/systems/sys_81_702_electric.lua +++ b/lua/metrostroi/systems/sys_81_702_electric.lua @@ -392,8 +392,8 @@ function TRAIN_SYSTEM:Think(dT,iter) if not self.ResistorBlocksInit then self.ResistorBlocksInit = true Train:LoadSystem("ResistorBlocks","Gen_Res_702c") + Train.ResistorBlocks.InitializeResistances_81_702(Train) end - if iter == 1 then Train.ResistorBlocks.InitializeResistances_81_702(Train) end ---------------------------------------------------------------------------- -- Voltages from the third rail ---------------------------------------------------------------------------- diff --git a/lua/metrostroi/systems/sys_81_702_pneumatic.lua b/lua/metrostroi/systems/sys_81_702_pneumatic.lua index dd75c8a..6e75d5c 100644 --- a/lua/metrostroi/systems/sys_81_702_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_702_pneumatic.lua @@ -62,6 +62,7 @@ function TRAIN_SYSTEM:Initialize(parameters) self.Train:LoadSystem("AirDistributorDisconnect","Relay","Switch") --УАВА self.Train:LoadSystem("UAVA","Relay","Switch",{ bass = true}) + self.Train:LoadSystem("UAVAContact","Relay","Switch") self.Train:LoadSystem("UAVAC","Relay","",{normally_closed=true,bass=true}) -- Isolation valves self.Train:LoadSystem("FrontBrakeLineIsolation","Relay","Switch", { normally_closed = true, bass = true}) @@ -89,8 +90,6 @@ function TRAIN_SYSTEM:Initialize(parameters) self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} local start = math.Rand(0.6,0.8) -- 0.6-1 self.DoorSpeedMain = -math.Rand(start,math.Rand(start+0.1,start+0.2)) @@ -358,12 +357,6 @@ function TRAIN_SYSTEM:Think(dT) if (Train.UAVA.Blocked>0) ~= UAVABlocked then Train.UAVA:TriggerInput("Block",UAVABlocked and 1 or 0) end - - local UAVACBlocked = self.EmergencyValve and not self.EmergencyValveDisable - if (Train.UAVAC.Blocked>0) ~= UAVACBlocked then - Train.UAVAC:TriggerInput("Block",UAVACBlocked and 1 or 0) - end - Train:SetPackedRatio("EmergencyValve_dPdT", -leak/wagc) local leak = 0 @@ -444,6 +437,12 @@ function TRAIN_SYSTEM:Think(dT) self.BePN2 = nil Train:PlayOnce("PN2end","stop") end + + if Train.UAVAContact.Value > 0.5 and Train.UAVAC.Value < 0.5 then + Train.UAVAC:TriggerInput("Set",1) + Train:PlayOnce("uava_reset","bass",1) + end + -- Simulate cross-feed between different wagons self:UpdatePressures(Train,dT) @@ -510,18 +509,6 @@ function TRAIN_SYSTEM:Think(dT) self.VDZ = Train.VDZ.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) end - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false - end Train.LeftDoorsOpen = false @@ -531,9 +518,9 @@ function TRAIN_SYSTEM:Think(dT) for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT/(self.DoorLeft and self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT/(self.DoorRight and self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end if not Train.LeftDoorsOpen and self.LeftDoorState[i] > 0 then Train.LeftDoorsOpen = true @@ -547,14 +534,6 @@ function TRAIN_SYSTEM:Think(dT) end Train:SetPackedRatio("DoorL"..i,self.LeftDoorState[i]) Train:SetPackedRatio("DoorR"..i,self.RightDoorState[i]) - if self.LeftDoorStuck[i] and (self.DoorLeft or type(self.LeftDoorStuck[i]) == "number" and CurTime()-self.LeftDoorStuck[i] > 0) then - self.LeftDoorStuck[i] = false - end - if self.RightDoorStuck[i] and (self.DoorRight or type(self.RightDoorStuck[i]) == "number" and CurTime()-self.RightDoorStuck[i] > 0) then - self.RightDoorStuck[i] = false - end - Train:SetPackedBool("DoorLS"..i,self.LeftDoorStuck[i]) - Train:SetPackedBool("DoorRS"..i,self.RightDoorStuck[i]) end if openL and not self.OpenWaitL then self.OpenWaitL = CurTime() end if openR and not self.OpenWaitR then self.OpenWaitR = CurTime() end diff --git a/lua/metrostroi/systems/sys_81_703_electric.lua b/lua/metrostroi/systems/sys_81_703_electric.lua index a6551d0..0e71d38 100644 --- a/lua/metrostroi/systems/sys_81_703_electric.lua +++ b/lua/metrostroi/systems/sys_81_703_electric.lua @@ -7,7 +7,6 @@ Metrostroi.DefineSystem("81_703_Electric") TRAIN_SYSTEM.E = 1 TRAIN_SYSTEM.Ezh = 2 -TRAIN_SYSTEM.Em = 3 function TRAIN_SYSTEM:Initialize(typ1,typ2) self.RRI = 0 -- Load all functions from base @@ -52,7 +51,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) local isE = elType == 1 local isEzh = elType == 2 - local isEm = elType == 3 local BO = min(1,B * Train.VB.Value+T[10])--B * Train.VB.Value local KV = Train.KV @@ -60,7 +58,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) local Panel = Train.Panel local ARS = Train.ALS_ARS local RC - if isEzh then RC = Train.RC1.Value end + if not isE then RC = Train.RC1.Value end Panel.V1 = BO @@ -74,10 +72,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) S["U2"] = S["10AK"]*KV["U2-10AK"] end - if isEzh then + if not isE then Train:WriteTrainWire(14,(BO*KRU["14/1-B3"]+T[5]*Train.KRR.Value)*(Train.ROT2.Value+Train.KAH.Value)*(Train.UOS.Value+Train.SOT.Value)*Train.KU14.Value) - elseif isEm then - Train:WriteTrainWire(14,(BO*KRU["14/1-B3"]+T[5]*Train.KRR.Value)*Train.KU14.Value) end Panel.RRP = S["U2"]*T[18] if isEzh then @@ -99,27 +95,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) --Train:WriteTrainWire(-13,ASNP_VV.AmplifierPower*Train.PowerSupply.X2_2) --ASNP_VV.CabinSpeakerPower = ASNP_VV.Power*Train.ASNP.LineOut*Train.R_G.Value end - elseif isEm then - Train:WriteTrainWire(4,S["10AK"]*KV["U2-4"]) - Train:WriteTrainWire(5,S["10AK"]*KV["U2-5"]+KRU["5/3-ZM31"]*-10*(1-Train.KRR.Value)+BO*KRU["14/1-B3"]*Train.KRR.Value) - --Panel.Sequence = T[2] - Panel.UKS = BO*Train.UKS.UKSEngaged - Panel.UKSb = BO*Train.UKS.UKSTriggered - if self.RRI> 0 then - local RRI_VV = Train.RRI_VV - RRI_VV.Power = BO*Train["50V"].Value*Train.RRIEnable.Value - RRI_VV.AmplifierPower = BO*Train.RRIAmplifier.Value - Train:WriteTrainWire(13,RRI_VV.AmplifierPower*Train.RRI.LineOut) - --RRI_VV.CabinSpeakerPower = T[13] - else - local ASNP_VV = Train.ASNP_VV - ASNP_VV.Power = BO*Train["50V"].Value*Train.R_ASNPOn.Value - ASNP_VV.AmplifierPower = ASNP_VV.Power*Train.ASNP.LineOut - Train:WriteTrainWire(13,ASNP_VV.AmplifierPower) - Panel.CBKIPower = T[10]*Train["50V"].Value - --Train:WriteTrainWire(-13,ASNP_VV.AmplifierPower*Train.PowerSupply.X2_2) - --ASNP_VV.CabinSpeakerPower = ASNP_VV.Power*Train.ASNP.LineOut*Train.R_G.Value - end else local RRI_VV = Train.RRI_VV RRI_VV.Power = BO*Train.RRIEnable.Value @@ -144,7 +119,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value) Train:WriteTrainWire(8,BO*KV["10-8"]) - elseif isEzh then + else S["10a"] = BO*KV["10a-8"] ARS.ALS = S["10a"]*Train.ALS.Value*RC ARS.GE = S["10a"]*Train.ARS.Value*RC @@ -184,23 +159,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train:WriteTrainWire(8,BO*(KV["10-8"]+KV["10a-8"]*(1-Train.KAH.Value)*(1-Train.RPB.Value))+ARS["8"]*RC) Train.RO:TriggerInput("Set",ARS["48"]) Train:WriteTrainWire(44,BO*Train.RO.Value*RC) - else - S["10a"] = BO*KV["10a-8"] - - Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value+KRU["1/3-ZM31"]*-10) - Train:WriteTrainWire(2,S["U2"]*KV["U2-2"]+KRU["2/3-ZM31"]*-10) - Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]+KRU["3/3-ZM31"]*-10) - --Train:WriteTrainWire(25,S["U2"]*KV["25-6"]*(ARS["25"]*RC+(1-RC))) - Train:WriteTrainWire(25,S["U2"]*KV["25-6"]) - Train:WriteTrainWire(20,S["U2"]*KV["U2-20"]+KRU["20/3-ZM31"]*-10) - Train:WriteTrainWire(6,S["10AK"]*Train.RVT.Value) - - Train.RVT:TriggerInput("Set",S["10AK"]*KV["U2-6"]) - Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(Train.AVU.Value+Train.OtklAVU.Value)*Train.UAVAC.Value*(1-Train.UKS.UKSTriggered)) - Train.R1_5:TriggerInput("Set",S["10AK"]*Train.RV2.Value) - Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value) - Train:WriteTrainWire(8,BO*KV["10-8"]) - Train:WriteTrainWire(44,S["10AK"]*Train.UV1.Value) + --KV["10a-8"] end @@ -232,14 +191,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train.PneumaticNo2:TriggerInput("Set",T[8]*(1-Train.RV3.Value)*(1-Train.LK4.Value)) Train.RS:TriggerInput("Set",T[12]*RUM) Train.RV3:TriggerInput("Set",T[14]*RUM) - Train.Panel.PP1 = T[1] - Train.Panel.PP6 = T[6] else - if isEzh then - Train:WriteTrainWire(48,BO*Train.RO.Value*RC+C(P == 4 and 1 <= RK and RK <= 5)) - else - Train:WriteTrainWire(48,C(P == 4 and 1 <= RK and RK <= 5)+BO*Train.UV1.Value) - end + Train:WriteTrainWire(48,BO*Train.RO.Value*RC+C(P == 4 and 1 <= RK and RK <= 5)) Train.PneumaticNo1:TriggerInput("Set",(T[8]+T[44])*T[48]) Train.PneumaticNo2:TriggerInput("Set",T[8]*(1-Train.LK4.Value)) end @@ -368,15 +321,9 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) S["D1"] = BO*(KV["D-D1"]+KRU["11/3-D1/1"]) S["F7"] = (BO*KV["F-F7"]+KRU["11/3-FR1"]) Train.RRP:TriggerInput("Set",T[14]) - if isEm then - Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)+T[12]+Train.KU10R.Value) - Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value+T[12]+Train.KU10R.Value) - Train:WriteTrainWire(12,S["D1"]*Train.KU10.Value) - else - Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)+T[12]) - Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value+T[12]) - Train:WriteTrainWire(12,S["D1"]*Train.KU10.Value) - end + Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)) + Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value) + Train:WriteTrainWire(12,S["D1"]*Train.KU10.Value) Panel.RedLights = BO*KV["B2-F1"] end Train:WriteTrainWire(16,S["D1"]*Train.KU2.Value*Train.KU3.Value) @@ -387,9 +334,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) if isE then S["11A"] = T[11]*(1-Train.KZ1.Value) Panel.Ring = S["11A"]+T[28] - elseif isEm then - S["11A"] = T[11]*(1-Train.NR.Value) - Panel.Ring = S["11A"]+T[28] else S["11A"] = T[11]*(1-Train.NR.Value) Panel.Ring = ARS.Ring+S["11A"]+T[28] @@ -418,7 +362,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) local BD = 1-Train.BD.Value Train:WriteTrainWire(15,BD*(1-Train.KU11.Value))--Заземление 15 провода Train.Panel.SD = (S["D1"]+BO*Train.KU11.Value)*(T[15]*(1-Train.KU11.Value)+BD) - Train.Panel.SDW = BO*BD Train.VDZ:TriggerInput("Set",T[16]*BD) if isE then @@ -427,11 +370,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) else Train.VDOL:TriggerInput("Set",T[31]+T[12]) Train.VDOP:TriggerInput("Set",T[32]+T[12]) - if isEm then - Panel.PCBKPower = T[10]*Train["50V"].Value - else - Panel.PCBKPower = T[10] - end + Panel.PCBKPower = T[10] end return S end @@ -461,7 +400,7 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train) S["10B"] = S["10A"]*(Train.RV1.Value+Train.TSH.Value) if isE then S["25B"] = (1-Train.TSH.Value)*Train.LK2.Value - S["25A"] = min(1,Train.KSH2.Value + Train.RS.Value) + S["25A"] = (Train.KSH2.Value + Train.RS.Value) Train["RUTreg"] = S["10A"]*(S["25B"]-S["25A"]) S["10I"] = S["10A"]*RheostatController.RKM2 Train["RUTpod"] = S["10I"]*Train.LK4.Value @@ -719,8 +658,8 @@ function TRAIN_SYSTEM:Think(dT,iter) if not self.ResistorBlocksInit then self.ResistorBlocksInit = true Train:LoadSystem("ResistorBlocks","Gen_Res_703") + Train.ResistorBlocks.InitializeResistances_81_703(Train) end - if iter == 1 then Train.ResistorBlocks.InitializeResistances_81_703(Train) end ---------------------------------------------------------------------------- -- Voltages from the third rail ---------------------------------------------------------------------------- diff --git a/lua/metrostroi/systems/sys_81_703_panel.lua b/lua/metrostroi/systems/sys_81_703_panel.lua index 833fa61..c0f27f0 100644 --- a/lua/metrostroi/systems/sys_81_703_panel.lua +++ b/lua/metrostroi/systems/sys_81_703_panel.lua @@ -49,14 +49,10 @@ function TRAIN_SYSTEM:Initialize() self.Train:LoadSystem("PanelLamp","Relay","Switch", {bass = true, normally_closed=true}) self.V1 = 0 - self.TW1 = 0 self.GRP = 0 self.RRP = 0 self.TW18 = 0 self.SD = 0 - self.PP1 = 0 - self.PP6 = 0 - self.SDW = 0 self.Headlights1 = 0 self.Headlights2 = 0 self.RedLights = 0 @@ -73,13 +69,11 @@ function TRAIN_SYSTEM:Initialize() self.AnnouncerPlaying = 0 self.PCBKPower = 0 - - self.BrY = 0 end function TRAIN_SYSTEM:ClientInitialize() end function TRAIN_SYSTEM:Outputs() - return { "V1","GRP","RRP","TW18","SD","PP1","PP6","SDW","BrY","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","CBKIPower","PCBKPower"} + return { "V1","GRP","RRP","TW18","SD","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","CBKIPower","PCBKPower"} end \ No newline at end of file diff --git a/lua/metrostroi/systems/sys_81_703_pneumatic.lua b/lua/metrostroi/systems/sys_81_703_pneumatic.lua index 91cb5ec..a312b12 100644 --- a/lua/metrostroi/systems/sys_81_703_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_703_pneumatic.lua @@ -63,6 +63,7 @@ function TRAIN_SYSTEM:Initialize(parameters) self.Train:LoadSystem("AirDistributorDisconnect","Relay","Switch") --УАВА self.Train:LoadSystem("UAVA","Relay","Switch",{ bass = true}) + self.Train:LoadSystem("UAVAContact","Relay","Switch") self.Train:LoadSystem("UAVAC","Relay","",{normally_closed=true,bass=true}) --ЭПК self.Train:LoadSystem("EPK","Relay","Switch",{ bass = true}) @@ -101,8 +102,6 @@ function TRAIN_SYSTEM:Initialize(parameters) self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} local start = math.Rand(0.6,0.8) -- 0.6-1 self.DoorSpeedMain = -math.Rand(start,math.Rand(start+0.1,start+0.2)) @@ -124,9 +123,6 @@ function TRAIN_SYSTEM:Initialize(parameters) self.OldValuePos = self.DriverValvePosition self.WeightLoadRatio = 0--math.max(0,math.min(1,(self.Train:GetNW2Float("PassengerCount",0)/200))) - - self.HaveUAVA = not self.Train.SubwayTrain or not self.Train.SubwayTrain.ARS or not self.Train.SubwayTrain.ARS.NoUAVA - self.HaveEPK = not self.Train.SubwayTrain or not self.Train.SubwayTrain.ARS or not self.Train.SubwayTrain.ARS.NoEPK end function TRAIN_SYSTEM:Inputs() @@ -150,7 +146,8 @@ function TRAIN_SYSTEM:TriggerInput(name,value) elseif name == "ValveType" then self.ValveType = math.floor(value) elseif name == "Autostop" then - if self.HaveUAVA and self.Train.UAVA.Value == 0 then + local HaveUAVA = not self.Train.SubwayTrain or not self.Train.SubwayTrain.ARS or not self.Train.SubwayTrain.ARS.NoUAVA + if HaveUAVA and self.Train.UAVA.Value == 0 then self.EmergencyValve = true self.Train.UAVAC:TriggerInput("Set",0) if value > 0 then RunConsoleCommand("say","Autostop braking",self.Train:GetDriverName()) end @@ -355,10 +352,11 @@ function TRAIN_SYSTEM:Think(dT) if BLDisconnect then --print(self.BrakeLinePressure_dPdT,self.ReservoirPressure_dPdT,self.TrainLinePressure) end + local HaveEPK = not Train.SubwayTrain or not Train.SubwayTrain.ARS or not Train.SubwayTrain.ARS.NoEPK local leak local pr_speed = 1.25*wagc - if self.HaveEPK and Train.EPKC then + if HaveEPK and Train.EPKC then local leak = 0 local epkDiff = math.abs(self.EPKPressure-self.BrakeLinePressure) if BLDisconnect and Train.EPK.Value>0 then @@ -383,10 +381,6 @@ function TRAIN_SYSTEM:Think(dT) self.EmergencyValveDisable=false self.EmergencyValve=false end - if Train.UKS and Train.UKS.UKSEmerTriggered > 0 and Train.UKSDisconnect.Value > 0 then - self.EmergencyValve=true - end - self.OldBrakeLinePressure = self.BrakeLinePressure if self.EmergencyValve then local leakst = 1.1*(Train:GetWagonCount())*math.Clamp(self.BrakeLinePressure/4,0,1) @@ -400,12 +394,6 @@ function TRAIN_SYSTEM:Think(dT) if (Train.UAVA.Blocked>0) ~= UAVABlocked then Train.UAVA:TriggerInput("Block",UAVABlocked and 1 or 0) end - - local UAVACBlocked = self.EmergencyValve and not self.EmergencyValveDisable - if (Train.UAVAC.Blocked>0) ~= UAVACBlocked then - Train.UAVAC:TriggerInput("Block",UAVACBlocked and 1 or 0) - end - Train:SetPackedRatio("EmergencyValve_dPdT", -leak/wagc) local leak = 0 @@ -483,6 +471,11 @@ function TRAIN_SYSTEM:Think(dT) Train:PlayOnce("PN2end","stop") end + if Train.UAVAContact.Value > 0.5 and Train.UAVAC.Value < 0.5 then + Train.UAVAC:TriggerInput("Set",1) + Train:PlayOnce("uava_reset","bass",1) + end + -- Simulate cross-feed between different wagons self:UpdatePressures(Train,dT) @@ -519,9 +512,11 @@ function TRAIN_SYSTEM:Think(dT) if self.DoorLinePressure > 3.5 then if (Train.VDOL.Value == 1.0) and (Train.VDOP.Value == 0.0) and not self.DoorLeft then self.DoorLeft = true + if self.VDOLLoud then Train:PlayOnce("vdol_loud","cabin",0.8+math.random()*0.2,self.VDOLLoud) end end if (Train.VDOL.Value == 0.0) and (Train.VDOP.Value == 1.0) and not self.DoorRight then self.DoorRight = true + if self.VDORLoud then Train:PlayOnce("vdop_loud","cabin",0.8+math.random()*0.2,self.VDORLoud) end end if (Train.VDZ.Value == 1.0 or Train.VDOL.Value == 1.0 and Train.VDOP.Value == 1.0 or self.RZDTimer) and (self.DoorLeft or self.DoorRight) then if not self.OpenWaitL or CurTime()-self.OpenWaitL < 0.2 then @@ -542,29 +537,14 @@ function TRAIN_SYSTEM:Think(dT) if self.VDOL ~= Train.VDOL.Value then self.VDOL = Train.VDOL.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDOL > 0 and not Train.LeftDoorsOpen then Train:PlayOnce("vdol_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.VDOP ~= Train.VDOP.Value then self.VDOP = Train.VDOP.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDOP > 0 and not Train.RightDoorsOpen then Train:PlayOnce("vdop_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.VDZ ~= Train.VDZ.Value then self.VDZ = Train.VDZ.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDZ > 0 and (Train.RightDoorsOpen or Train.LeftDoorsOpen) then Train:PlayOnce("vzd_loud"..self.VDLoudID,"bass",self.VDLoud) end - end - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false end @@ -575,9 +555,9 @@ function TRAIN_SYSTEM:Think(dT) for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT/(self.DoorLeft and self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT/(self.DoorRight and self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end if not Train.LeftDoorsOpen and self.LeftDoorState[i] > 0 then Train.LeftDoorsOpen = true @@ -591,14 +571,6 @@ function TRAIN_SYSTEM:Think(dT) end Train:SetPackedRatio("DoorL"..i,self.LeftDoorState[i]) Train:SetPackedRatio("DoorR"..i,self.RightDoorState[i]) - if self.LeftDoorStuck[i] and (self.DoorLeft or type(self.LeftDoorStuck[i]) == "number" and CurTime()-self.LeftDoorStuck[i] > 0) then - self.LeftDoorStuck[i] = false - end - if self.RightDoorStuck[i] and (self.DoorRight or type(self.RightDoorStuck[i]) == "number" and CurTime()-self.RightDoorStuck[i] > 0) then - self.RightDoorStuck[i] = false - end - Train:SetPackedBool("DoorLS"..i,self.LeftDoorStuck[i]) - Train:SetPackedBool("DoorRS"..i,self.RightDoorStuck[i]) end if openL and not self.OpenWaitL then self.OpenWaitL = CurTime() end if openR and not self.OpenWaitR then self.OpenWaitR = CurTime() end diff --git a/lua/metrostroi/systems/sys_81_703i_electric.lua b/lua/metrostroi/systems/sys_81_703i_electric.lua index 069aa0f..b553fd7 100644 --- a/lua/metrostroi/systems/sys_81_703i_electric.lua +++ b/lua/metrostroi/systems/sys_81_703i_electric.lua @@ -79,13 +79,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train:WriteTrainWire(5,S["U2"]*KV["U2-5ZH"]*(Train.UAVAC.Value+KV["5ZH-5"])) Panel.AnnouncerPlaying = T[13] Train:WriteTrainWire(24,S["U2"]*Train.KU8.Value) + Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"]) if isKVL then Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value+(BO*Train.RO1.Value)) Train:WriteTrainWire(2,S["U2"]*KV["U2-2"]+(BO*Train.RO1.Value)) Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]+(BO*Train.RO2.Value)) Train:WriteTrainWire(20,S["U2"]*KV["U2-20"]+(BO*Train.RO2.Value)) else - Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"]) Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value) Train:WriteTrainWire(2,S["U2"]*KV["U2-2"]) Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]) @@ -131,9 +131,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train:WriteTrainWire(48,S["48A"]) Train.PneumaticNo1:TriggerInput("Set",(S["2A"]*Train.PR.Value)*(T[48]*RUM+S["48A"])) - S["DT"] = BO*Train.BPT.Value - Panel.BrY = S["DT"] - Train:WriteTrainWire(34,S["DT"]) + Train:WriteTrainWire(34,BO*Train.BPT.Value) elseif isE then Train.PneumaticNo1:TriggerInput("Set",T[8]*C(P == 4 and 1 <= RK and RK <= 5)) Train.PneumaticNo2:TriggerInput("Set",T[8]*(1-Train.RV3.Value)*(1-Train.LK4.Value)) @@ -288,13 +286,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train) Train:WriteTrainWire(12,S["F7"]*Train.KU12.Value) else Train.RRP:TriggerInput("Set",T[14]) - if isKVL then - Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)) - Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value) - else - Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)+T[12]) - Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value+T[12]) - end + Train:WriteTrainWire(31,S["D1"]*(Train.KU6.Value+Train.KU13.Value)) + Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value) Train:WriteTrainWire(12,S["D1"]*Train.KU10.Value) end Train:WriteTrainWire(16,S["D1"]*Train.KU2.Value*Train.KU3.Value) diff --git a/lua/metrostroi/systems/sys_81_710_electric.lua b/lua/metrostroi/systems/sys_81_710_electric.lua index 0b34d28..a976438 100644 --- a/lua/metrostroi/systems/sys_81_710_electric.lua +++ b/lua/metrostroi/systems/sys_81_710_electric.lua @@ -118,8 +118,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.RRP = S["U2"]*T[18] - Train.Panel.Sequence = ARS.GE*Train.BSM_GE.Value*(1-Train.BSM_RNT.Value) - local RCU = KV.RCU S["ZR"] = (1-Train.RRU.Value)+(B*Train.RRU.Value)*-1 @@ -147,7 +145,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) --Train["RUTreg"] = T[9] S["10I"] = S["10A"]*RheostatController.RKM2 - --Train.Panel.Sequence =S["10A"]*RheostatController.RKM1 + Train.Panel.Sequence =S["10A"]*RheostatController.RKM1 Train["RUTpod"] = S["10I"]*Train.LK4.Value Train["RRTpod"] = S["10I"]*(1-Train.LK1.Value) Train.RRT:TriggerInput("Close",Train.RRTuderzh*Train.RRTpod) @@ -232,8 +230,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.Headlights2 = S["F7"]*Train.VU14.Value Panel.RedLights = BO*KV["B2-F1"] S["D1"] = BO*(KV["D-D1"]+KRU["11/3-D1/1"]) - Train:WriteTrainWire(31,S["D1"]*(Train.V6.Value+Train.KU12.Value)+T[12]) - Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value+T[12]) + Train:WriteTrainWire(31,S["D1"]*(Train.V6.Value+Train.KU12.Value)) + Train:WriteTrainWire(32,S["D1"]*Train.KU7.Value) Train:WriteTrainWire(12,S["D1"]*Train.V10.Value) Train:WriteTrainWire(16,S["D1"]*Train.V2.Value*Train.V3.Value) @@ -283,6 +281,7 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train,dT,firstIter) S["10A"] = BO*RCU S["10I"] = S["10A"]*RheostatController.RKM2 + Train.Panel.Sequence =S["10A"]*RheostatController.RKM1 Train["RUTpod"] = S["10I"]*Train.LK4.Value Train["RRTpod"] = S["10I"]*(1-Train.LK1.Value) Train["RRTuderzh"] = T[25] @@ -565,8 +564,8 @@ function TRAIN_SYSTEM:Think(dT,iter) if not self.ResistorBlocksInit then self.ResistorBlocksInit = true self.Train:LoadSystem("ResistorBlocks","Gen_Res_710") + self.Train.ResistorBlocks.InitializeResistances_81_710(self.Train) end - if iter == 1 then Train.ResistorBlocks.InitializeResistances_81_710(Train) end ---------------------------------------------------------------------------- -- Voltages from the third rail ---------------------------------------------------------------------------- diff --git a/lua/metrostroi/systems/sys_81_714_electric.lua b/lua/metrostroi/systems/sys_81_714_electric.lua index 6723fc7..47ef590 100644 --- a/lua/metrostroi/systems/sys_81_714_electric.lua +++ b/lua/metrostroi/systems/sys_81_714_electric.lua @@ -9,7 +9,6 @@ TRAIN_SYSTEM.MVM = 1 TRAIN_SYSTEM.LVZ_1 = 2 TRAIN_SYSTEM.LVZ_2 = 3 TRAIN_SYSTEM.LVZ_3 = 4 -TRAIN_SYSTEM.DOT_2 = 5 function TRAIN_SYSTEM:Initialize(typ1,typ2) self.TrainSolver = "81_717" self.ThyristorController = true @@ -63,7 +62,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) local T = Train.SolverTemporaryVariables local isMVM = self.Type == 1 - local isDot2 = self.Type == 5 local Panel = Train.Panel Panel.V1 = BO @@ -104,10 +102,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train.KSB2:TriggerInput("Set",S["6G2"]) --20-A20-20A-Rp-20B S["20A"] = T[20]*Train.A20.Value*Train.IGLA_PCBK.KVC - --Train.RPL:TriggerInput("Set",--[[ S["20A"]--]] BO*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) - if not isDot2 then - Train.RPL:TriggerInput("Set",S["20A"]*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) - end + Train.RPL:TriggerInput("Set",--[[ S["20A"]--]] BO*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) S["20B"] = S["20A"]*(1-Train.RPvozvrat.Value) S["20K"] = S["20B"]*P.PS Train.LK2:TriggerInput("Set",S["20K"]*S["ZR"]) @@ -134,11 +129,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["5A"] = T[5]*Train.A5.Value Reverser:TriggerInput("VP",S["5A"]*Reverser.NZ*(1-Train.LK1.Value)*S["ZR"]) --Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)) --81-717.5(м) МСК - if isDot2 then - Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*S["ZR"]) --81-717.5 Харько*S["ZR"]в - else - Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*Train.BV.State*S["ZR"]) --81-717.5 Харько*S["ZR"]в - end + Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*Train.BV.State*S["ZR"]) --81-717.5 Харько*S["ZR"]в --+B S["1N"] = C(11<=RK and RK<=18)*(1-Train.LK4.Value) Train.RR:TriggerInput("Set",S["10A"]*S["1N"] + P.PS*Train.LK4.Value) @@ -148,7 +139,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) P:TriggerInput("PM",S["5Zh"]*(1-Train.TR1.Value)*Train.KSH2.Value) P:TriggerInput("PT",S["5Zh"]*(P.PM)*(1-Train.KSH2.Value)) --P:TriggerInput("PP",S["5Zh"]*(P.PM)) - S["2A"] = (T[2]+T[-2])*Train.A2.Value + S["2A"] = T[2]*Train.A2.Value S["2T"] = S["2A"]*Train.TR1.Value Train.RSU:TriggerInput("Set",S["2T"]*Train.ThyristorBU5_6.Value) Train.RU:TriggerInput("Set",S["2T"]) @@ -161,19 +152,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["2U"] = S["10R"]+S["2C"]*S["ZR"] Train.SR1:TriggerInput("Set",S["2U"]) Train.RV1:TriggerInput("Set",S["2U"]) - S["2Zh"] = T[2]*Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18) + S["2Zh"] = S["2A"]*Train.TR1.Value*C(17<=RK and RK<=18) if self.NoRT2 then Train.PneumaticNo1:TriggerInput("Set",S["2Zh"]+T[48]*Train.A72.Value) - Train:WriteTrainWire(-2,Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18)*T[48]*Train.A72.Value) else Train.PneumaticNo1:TriggerInput("Set",S["2Zh"]+T[48]*Train.A72.Value*(1-Train.RT2.Value)) - Train:WriteTrainWire(-2,Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18)*T[48]*Train.A72.Value*(1-Train.RT2.Value)) - end - if isMVM then --UNREALISTIC - S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2r.Value)*(1-Train.RV3.Value) - else - S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2.Value)*(1-Train.RV3.Value) end + S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2.Value)*(1-Train.RV3.Value) Train.PneumaticNo2:TriggerInput("Set",S["8A"]+T[39]*Train.A52.Value) Train.RV3:TriggerInput("Set",T[19]*Train.A19.Value) S["25A"] = T[25]*Train.A25.Value @@ -208,10 +193,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train.RZ_2:TriggerInput("Set",T[24]*(1-Train.LK4.Value)) S["17A"] = T[17]*Train.A18.Value - if not isDot2 then - Train.BV:TriggerInput("Power",BO*Train.A80.Value) - Train.BV:TriggerInput("Enable",S["17A"]) - end + Train.BV:TriggerInput("Power",B*Train.A80.Value) + Train.BV:TriggerInput("Enable",S["17A"]*Train.A81.Value) if isMVM then Train.BV:TriggerInput("Disable",T[71]*Train.A66.Value) end @@ -278,11 +261,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.BrW = S[64] --Вспом цепи приём - if isDot2 then - Panel.EmergencyLights = T[11]*Train.A15.Value*(1-Train.KPP.Value) - else - Panel.EmergencyLights = BO*Train.A49.Value*Train.A15.Value - end + Panel.EmergencyLights = BO*Train.A49.Value*Train.A15.Value Train.RPU:TriggerInput("Set",T[37]*Train.A37.Value) S["D6"] = S["D4"]*Train.BD.Value @@ -294,8 +273,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["32A"] = T[32]*Train.A32.Value Train.VDOL:TriggerInput("Set",S["31A"]+S["12A"]) Train.VDOP:TriggerInput("Set",S["32A"]+S["12A"]) - Train:WriteTrainWire(31,S["12A"]*Train.A31.Value) - Train:WriteTrainWire(32,S["12A"]*Train.A32.Value) S["36A"] = T[36]*Train.A51.Value*Train.RVO.Value--36 Train.KVP:TriggerInput("Set",S["36A"]*Train.KPP.Value) @@ -352,14 +329,14 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train,dT,firstIter) S["1N"] = C(11<=RK and RK<=18)*(1-Train.LK4.Value) Train.RR:TriggerInput("Set",S["10A"]*S["1N"] + P.PS*Train.LK4.Value) - S["2A"] = (T[2]+T[-2])*Train.A2.Value + S["2A"] = T[2]*Train.A2.Value S["2B"] = S["2A"]*((1-Train.KSB1.Value)*(1-Train.KSB2.Value)+(1-Train.TR1.Value)) S["2Ca"] = P.PS*C(1<=RK and RK<=17)*Train.RR.Value --CHECK S["2Cb"] = P.PP*(C(6<=RK and RK<=18)+C(2<=RK and RK<=5)*Train.KSH1.Value)*(1-Train.RR.Value) --CHECK S["2C"] = S["2B"]*(S["2Ca"]+S["2Cb"])*Train.LK4.Value S["10R"] = S["10A"]*(1-Train.LK3.Value)*C(2<=RK and RK<=18)*(1-Train.LK4.Value) - S["2U"] = (S["10R"]+S["2C"])*S["ZR"] + S["2U"] = S["10R"]+S["2C"]*S["ZR"] Train.SR1:TriggerInput("Set",S["2U"]) Train.RV1:TriggerInput("Set",S["2U"]) @@ -386,7 +363,7 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train,dT,firstIter) return S end -local wires = {10,11,1,6,3,20,4,5,-2,2,48,8,39,19,25,13,-13,14,24,17,71,36,-28,37,16,12,31,32,69,27,23,22,23,37,59,60,58,61} +local wires = {10,1,6,3,20,4,5,2,48,8,39,19,25,13,-13,14,24,17,71,36,-28,37,16,12,31,32,69,27,23,22,23,37,59,60,58,61} function TRAIN_SYSTEM:SolveInternalCircuits(Train,dT,firstIter) local T = Train.SolverTemporaryVariables if not T then diff --git a/lua/metrostroi/systems/sys_81_717_electric.lua b/lua/metrostroi/systems/sys_81_717_electric.lua index 9d76d4e..5e4b9c5 100644 --- a/lua/metrostroi/systems/sys_81_717_electric.lua +++ b/lua/metrostroi/systems/sys_81_717_electric.lua @@ -10,7 +10,6 @@ TRAIN_SYSTEM.LVZ_1 = 2 --BARS TRAIN_SYSTEM.LVZ_2 = 3 --PUAV TRAIN_SYSTEM.LVZ_3 = 4 --PAM TRAIN_SYSTEM.LVZ_4 = 5 --PA-KSD -TRAIN_SYSTEM.DOT_2 = 6 --.2 function TRAIN_SYSTEM:Initialize(typ1,typ2) self.TrainSolver = "81_717" self.ThyristorController = true @@ -27,7 +26,7 @@ end if CLIENT then return end function TRAIN_SYSTEM:Inputs(...) - return { "Type", "NoRT2", "HaveRO", "GreenRPRKR","X2PS", "HaveVentilation","OldFLARS" } + return { "Type", "NoRT2", "HaveRO", "GreenRPRKR","X2PS", "HaveVentilation" } end function TRAIN_SYSTEM:Outputs(...) return Metrostroi.BaseSystems["Electric"].Outputs(self,...) @@ -41,7 +40,6 @@ function TRAIN_SYSTEM:TriggerInput(name,value) if name == "GreenRPRKR" then self.GreenRPRKR = value > 0 end if name == "X2PS" then self.X2PS = value > 0 end if name == "HaveVentilation" then self.Vent = value > 0 end - if name == "OldFLARS" then self.OldFLARS = value > 0 end end -- Node values @@ -61,8 +59,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) local T = Train.SolverTemporaryVariables local elType = self.Type local isMVM = elType == 1 - local isDot2 = elType == 6 - local isLVZ = 1 < elType and elType < 6 + local isLVZ = elType ~= 1 local isPUAV = isLVZ and elType < 4 local isPA = isLVZ and not isPUAV local isKSD = isPA and elType==5 @@ -88,60 +85,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["F7"] = S["F"]*KV["F-F7"]+S["14b"]*KRU["11/3-FR1"] Train:WriteTrainWire(5,S["10AK"]*KV["10AK-5"] + KRU["5/3-ZM31"]*-10) - Train:WriteTrainWire(4,S["10AK"]*KV["10AK-4"] + --[[max(0,min(1,T[4])*KV["4-0"]*-10)]]KV["4-0"]*-10) - --Train:WriteTrainWire(4,S["10AK"]*KV["10AK-4"]*(1-T[4]*KV["4-0"]*-10)) + Train:WriteTrainWire(4,S["10AK"]*KV["10AK-4"]*(1-T[4]*KV["4-0"]*-10)) Panel.LST = T[6]*Train.A40.Value - Panel.LhRK = (T[2]+T[-2])*Train.A57.Value + Panel.LhRK = T[2]*Train.A57.Value Panel.LVD = T[1]*Train.A60.Value - if isDot2 then --717.2 wo ARS - Panel.LSN = S["U2"]*T[18] - - S["33Yu"] = S["7G"]*KV["7G-33Yu"] --7G-SOT/UOS-KV - S["33Yu0"] = (Train.KD.Value+Train.VAD.Value) --RVT-RPB/VAH-KD/VAD-0 - Train.RV2:TriggerInput("Set",S["33Yu"]*S["33Yu0"]) - Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value + KRU["1/3-ZM31"]*-10) - Train:WriteTrainWire(2,S["U2"]*KV["U2-2"] + KRU["2/3-ZM31"]*-10) --U2-KV-2 FIXME ARS? - Train:WriteTrainWire(3,S["U2"]*KV["U2-3"]) - Train:WriteTrainWire(6,S["10AK"]*Train.K6.Value) - Train:WriteTrainWire(8,BO*KV["10-8"]*Train.A41.Value)--10-KV-8 FIXME ARS - Train:WriteTrainWire(20,S["U2"]*KV["U2-20a"]+S["U2"]*KV["U2-20b"]+KRU["20/3-ZM31"]*-10) - Train:WriteTrainWire(25,S["U2"]*KV["U2-25"]*Train.A55.Value*Train.K25.Value) - - S["U2a"] = S["U2"]*KV["U2-U2a"] --U2-KV-U2a - S["19B"] = S["10AK"]*KV["10AK-DA"] --DA-19B - Train:WriteTrainWire(19,S["19B"]*KV["19B-19"]*Train.A71.Value) --19B-KV/RO-A71-19 - Train.R1_5:TriggerInput("Set",S["19B"]*Train.RV2.Value*Train.UAVAC.Value*(Train.AVU.Value+Train.OtklAVU.Value)) - Train.RVT:TriggerInput("Set",S["U2a"]) - Train.K25:TriggerInput("Set",S["U2a"]) - Train.K6:TriggerInput("Set",S["10AK"]*Train.RVT.Value) --10AK-K6 - --Train.Rp8:TriggerInput("Set",T[8]) - - - S["U4"] = S["10AK"]*KV["10AK-U4"]*Train.A74.Value--10AK-KV-U4 - Train:WriteTrainWire(17,S["U4"]*Train.VozvratRP.Value) - Train:WriteTrainWire(24,S["U2"]*Train.A73.Value*Train.KSN.Value) - S["V2"] = T[10]*Train.AV1.Value - if self.Vent then - Train:WriteTrainWire(59,S["V2"]*Train.V11.Value) - Train:WriteTrainWire(60,S["V2"]*Train.V12.Value) - Train:WriteTrainWire(58,BO*Train.A49.Value*(1-Train.V11.Value)*(1-Train.V12.Value)*Train.V13.Value) - Panel.L1 = T[57] - end - Panel.M8 = S["V2"]*Train.PVK.Value - - local RRI_VV = Train.RRI_VV - RRI_VV.Power = BO*Train.AS1.Value--*Train.R_ASNPOn.Value - RRI_VV.AmplifierPower = RRI_VV.Power*Train.RRI.LineOut*Train.R_UNch.Value*Train.A26.Value - Train:WriteTrainWire(13,RRI_VV.AmplifierPower) - Train:WriteTrainWire(-13,RRI_VV.AmplifierPower*Train.PowerSupply.X2_2) - RRI_VV.CabinSpeakerPower = RRI_VV.Power*Train.RRI.LineOut*Train.R_G.Value - - Panel.AnnouncerPlaying = T[13] - Panel.AnnouncerBuzz = T[-13]+RRI_VV.CabinSpeakerPower*Train.PowerSupply.X2_2 - Train.Rp8:TriggerInput("Set",T[8]*Train.KRP.Value) - Train:WriteTrainWire(14,S["14a"]*(1-Train.Rp8.Value)*Train.KRP.Value) - elseif isLVZ then + Panel.LUDS = T[10]*Train.AIS.Value + if isLVZ then RC2 = isKSD and RC1 or Train.RC2.Value Panel.LSN = (math.max(0,T[20])+S["14b"])*T[18] @@ -297,19 +247,14 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) AVI["I25"] = S["U2"]*KV["U2-25"]*Train.A55.Value*RC1 AVI["I33G"] = S["U2"]*KV["U2-U2a"]*RC1 AVI["I33"] = min(1,S["33Yu"]*S["33Yu0"]*RC1) - Train.EPKC:TriggerInput("Set",AVO["EPK"]*Train.A43.Value) + Train.EPKC:TriggerInput("Set",AVO["EPK"]) Panel.LKVD = 0 else + Train.EPKC:TriggerInput("Set",S["7Gv"]) S["7Ga"] = Train.A42.Value*Train.ARS.Value*RC1 S["7Gb"] = ((1-RC2) + AVI.Power)*(1-RC1)*Train.PB.Value Train.RPB:TriggerInput("Set",S["14G"]*(S["7Ga"]+S["7Gb"])) - if isPUAV then - Train.EPKC:TriggerInput("Set",S["7Gv"]) - else - Train.EPKC:TriggerInput("Set",ARS.ARSPower*S["7Gv"]+(1-ARS.ARSPower)*AVO["EPK"]*Train.A43.Value) - end - S["33Yu"] = S["7G"]*(Train.SOT.Value*RC1+(1-RC1))*KV["7G-33Yu"]*(AVO["033"]*RC2+(1-RC2)) --7G-SOT/UOS-KV S["33Yu0"] = (Train.RPB.Value+Train.VAH.Value)*(Train.KD.Value+Train.VAD.Value) --RVT-RPB/VAH-KD/VAD-0 Train.RV2:TriggerInput("Set",S["33Yu"]*S["33Yu0"]) @@ -357,7 +302,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) local ASNP_VV = Train.ASNP_VV Panel.UPOPower = BO*(KV["10AK-DA"]+S["14a"]) - ASNP_VV.AmplifierPower = Panel.UPOPower*Train.R_UPO.Value*(max(0,min(1,1-T[1]))+S["14a"])*Train.UPO.LineOut + ASNP_VV.AmplifierPower = Panel.UPOPower*Train.R_UPO.Value*(KV["UPO-13"]+S["14a"])*Train.UPO.LineOut Train:WriteTrainWire(13,ASNP_VV.AmplifierPower) Train:WriteTrainWire(-13,ASNP_VV.AmplifierPower*Train.PowerSupply.X2_2) ASNP_VV.CabinSpeakerPower = ASNP_VV.AmplifierPower*Train.R_G.Value @@ -388,10 +333,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) ARS.KB=T[91]*RC1+(ARS.ALS*(1-Train.BSM_GE.Value)+ARS.GE*Train.BSM_GE.Value)*Train.KVT.Value Train.BSM_KRT:TriggerInput("Set",(max(0,T[6])+max(0,T[8]))*RC1) - ARS.KRH = (max(0,T[1])+T[14])*RC1 - ARS.R11 = T[15] - ARS.R12 = (T[87]+S["7Ga"]*KV["7GA-RC27"]+S["14a"]*Train.A42.Value*(1-Train.KRP.Value)) - Train.BSM_KRO:TriggerInput("Set",ARS.R12*(1-Train.BSM_KRH.Value)) + Train.BSM_KRH:TriggerInput("Set",(max(0,T[1])+T[14])*RC1) + Train.BSM_KRO:TriggerInput("Set",(T[87]+S["7Ga"]*KV["7GA-RC27"]+S["14a"]*Train.A42.Value*(1-Train.KRP.Value))*(1-Train.BSM_KRH.Value)) Panel.LKVD = ARS.GE*(1-Train.BUM_RVD2.Value)+T[87]*(1-Train.ROT2.Value) @@ -465,11 +408,6 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.CBKIPower = BO*Train.A76.Value end - if self.OldFLARS then - Panel.LUDS = ARS.FMM1*Train.AIS.Value - else - Panel.LUDS = T[10]*Train.AIS.Value - end --Вагонная часть S["10A"] = BO*Train.A30.Value @@ -505,10 +443,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) else S["20A"] = T[20]*Train.A20.Value end - --Train.RPL:TriggerInput("Set",--[[ S["20A"]--]] BO*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) - if not isDot2 then - Train.RPL:TriggerInput("Set",S["20A"]*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) - end + Train.RPL:TriggerInput("Set",--[[ S["20A"]--]] BO*(1-Train.RPvozvrat.Value)*(Train.DR1.Value+Train.DR2.Value+(1-Train.BV.State))) S["20B"] = S["20A"]*(1-Train.RPvozvrat.Value) S["20K"] = S["20B"]*P.PS Train.LK2:TriggerInput("Set",S["20K"]*S["ZR"]) @@ -535,11 +470,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["5A"] = T[5]*Train.A5.Value Reverser:TriggerInput("VP",S["5A"]*Reverser.NZ*(1-Train.LK1.Value)*S["ZR"]) --Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)) --81-717.5(м) МСК - if isDot2 then - Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*S["ZR"]) --81-717.2 - else - Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*Train.BV.State*S["ZR"]) --81-717.5 Харьков*S["ZR"] - end + Train.RKR:TriggerInput("Set",(S["4A"]*Reverser.NZ+S["5A"]*Reverser.VP)*Train.BV.State*S["ZR"]) --81-717.5 Харько*S["ZR"]в --+B S["1N"] = C(11<=RK and RK<=18)*(1-Train.LK4.Value) Train.RR:TriggerInput("Set",S["10A"]*S["1N"] + P.PS*Train.LK4.Value) @@ -549,7 +480,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) P:TriggerInput("PM",S["5Zh"]*(1-Train.TR1.Value)*Train.KSH2.Value) P:TriggerInput("PT",S["5Zh"]*(P.PM)*(1-Train.KSH2.Value)) --P:TriggerInput("PP",S["5Zh"]*(P.PM)) - S["2A"] = (T[2]+T[-2])*Train.A2.Value + S["2A"] = T[2]*Train.A2.Value S["2T"] = S["2A"]*Train.TR1.Value Train.RSU:TriggerInput("Set",S["2T"]*Train.ThyristorBU5_6.Value) Train.RU:TriggerInput("Set",S["2T"]) @@ -562,19 +493,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["2U"] = S["10R"]+S["2C"]*S["ZR"] Train.SR1:TriggerInput("Set",S["2U"]) Train.RV1:TriggerInput("Set",S["2U"]) - S["2Zh"] = T[2]*Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18) + S["2Zh"] = S["2A"]*Train.TR1.Value*C(17<=RK and RK<=18) if self.NoRT2 then Train.PneumaticNo1:TriggerInput("Set",S["2Zh"]+T[48]*Train.A72.Value) - Train:WriteTrainWire(-2,Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18)*T[48]*Train.A72.Value) else Train.PneumaticNo1:TriggerInput("Set",S["2Zh"]+T[48]*Train.A72.Value*(1-Train.RT2.Value)) - Train:WriteTrainWire(-2,Train.A2.Value*Train.TR1.Value*C(17<=RK and RK<=18)*T[48]*Train.A72.Value*(1-Train.RT2.Value)) - end - if isMVM then --UNREALISTIC - S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2r.Value)*(1-Train.RV3.Value) - else - S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2.Value)*(1-Train.RV3.Value) end + S["8A"] = T[8]*Train.A8.Value*(1-Train.RV1.Value)*(1-Train.RT2.Value)*(1-Train.RV3.Value) Train.PneumaticNo2:TriggerInput("Set",S["8A"]+T[39]*Train.A52.Value) Train.RV3:TriggerInput("Set",T[19]*Train.A19.Value) S["25A"] = T[25]*Train.A25.Value @@ -609,10 +534,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train.RZ_2:TriggerInput("Set",T[24]*(1-Train.LK4.Value)) S["17A"] = T[17]*Train.A18.Value - if not isDot2 then - Train.BV:TriggerInput("Power",BO*Train.A80.Value) - Train.BV:TriggerInput("Enable",S["17A"]*Train.A81.Value) - end + Train.BV:TriggerInput("Power",B*Train.A80.Value) + Train.BV:TriggerInput("Enable",S["17A"]*Train.A81.Value) if isMVM then Train.BV:TriggerInput("Disable",T[71]*Train.A66.Value) Panel.PCBKPower = T[10] @@ -623,17 +546,15 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train:WriteTrainWire(10,BO*Train.A56.Value) --B->A44->KMMK->23 Train:WriteTrainWire(23,S["B3"]*Train.RezMK.Value) - S["10AT"] = T[10]*Train.A29.Value*(1-Train.AVU.Value) + S["10AT"] = T[10]*(1-Train.AVU.Value) Panel.AVU = S["10AT"] if isKSD then S["48A"] = S["10AT"]*(1-Train.OtklAVU.Value)+BO*Train.A49.Value*Train.VZ1.Value+AVO["48"]*RC2 elseif isLVZ then S["48A"] = S["10AT"]*(1-Train.OtklAVU.Value)+BO*Train.A49.Value*Train.VZ1.Value+ARS["48"]*RC1+AVO["48"]*RC2 - elseif not isDot2 then - S["48A"] = S["10AT"]*(1-Train.OtklAVU.Value)+T[10]*Train.AV1.Value*Train.VZ1.Value+ARS["48"]*RC1 else - S["48A"] = S["10AT"]*(1-Train.OtklAVU.Value)+T[10]*Train.AV1.Value*Train.VZ1.Value + S["48A"] = S["10AT"]*(1-Train.OtklAVU.Value)+T[10]*Train.AV1.Value*Train.VZ1.Value+ARS["48"]*RC1 end if self.NoRT2 then Train:WriteTrainWire(48,S["48A"]+Train.A72.Value*S["2Zh"]) --FIXME ARS @@ -642,23 +563,20 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) end if self.HaveRO then if isKSD then - Train.RO:TriggerInput("Set",(T[48]+AVO["48"]+S["48A"])*RC1) + Train.RO:TriggerInput("Set",(T[48]+AVO["48"])*RC1) elseif isMVM then - Train.RO:TriggerInput("Set",(T[48]+ARS["48"]+S["48A"])*RC1) + Train.RO:TriggerInput("Set",(T[48]+ARS["48"])*RC1) else - Train.RO:TriggerInput("Set",(T[48]+ARS["48"]+S["48A"])*(RC1+RC2)) + Train.RO:TriggerInput("Set",(T[48]+ARS["48"])*(RC1+RC2)) end end - if isDot2 then Train:WriteTrainWire(11,B*Train.VA.Value) end - S["B9"] = B*Train.A53.Value S["22B"] = T[10]*Train.A10.Value*Train.VMK.Value Train:WriteTrainWire(22,(S["22B"]+T[44])*Train.AK.Value) - Train:WriteTrainWire(44,S["22B"]) + Train:WriteTrainWire(44,(S["22B"])*Train.AK.Value) S["UO"] = T[10]*Train.A27.Value Train:WriteTrainWire(27,S["UO"]*Train.L_1.Value) - S["UO"] = S["UO"] + T[27]*Train.L_1.Value S["F1"] = S["B9"]*KV["B9-F1"] if isLVZ then if isKSD then @@ -671,15 +589,9 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.OhrSig = T[71] Train:WriteTrainWire(71,S["UO"]*(1-Train.SQ3.Value)+S["TU"]*Train.OhrSig.Value) else - if not isDot2 then - Train:WriteTrainWire(7,S["UO"]*Train.Ring.Value+ARS.Ring+Train.BZOS.VH2*0.4) - Train.BZOS.Power = T[10]*Train.A27.Value - Train.BZOS.Ring = T[7] - else - Train:WriteTrainWire(7,S["UO"]*Train.Ring.Value) --FIXME Ring buttons - end - Train:WriteTrainWire(72,S["F1"]) - Panel.LEKK = T[72] + Train:WriteTrainWire(7,S["UO"]*Train.Ring.Value+ARS.Ring+Train.BZOS.VH2*0.4) + Train.BZOS.Power = T[10]*Train.A27.Value + Train.BZOS.Ring = T[7] end --[[if isPA then Panel.Ring = T[7]+AVO.Ring -- FIXME ARS @@ -713,15 +625,9 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) S["D4"] = BO*Train.A13.Value S["D1"] = T[10]*Train.A21.Value*KV["D-D1"]+S["14b"]*KRU["11/3-D1/1"] if isLVZ then - if isKSD then - S[16] = S["D1"]*Train.VUD1.Value - else - S[16] = S["D1"]*Train.VUD1.Value*Train.VUD2.Value - end + S[16] = S["D1"]*Train.VUD1.Value*Train.VUD2.Value Train:WriteTrainWire(16,S[16]+AVO["16"]*RC2) - S[68] = S["D1"]*AVO["68"]*Train.VOPD.Value - AVI.OPD = S["D1"]*Train.VOPD.Value - Train:WriteTrainWire(68,AVI.OPD*AVO["68"]) + Train:WriteTrainWire(68,S["D1"]*Train.VOPD.Value) S[31] = S["D1"]*(1-Train.DoorSelect.Value)--*(1-Train.VUD1.Value) S[32] = S["D1"]*Train.DoorSelect.Value--*(1-Train.VUD1.Value) AVI.KDL = S[31]*(Train.KDL.Value+Train.KDLR.Value) @@ -736,18 +642,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train:WriteTrainWire(12,S["D1"]*Train.KRZD.Value) Panel.DoorsLeft = S[31] Panel.DoorsRight = S[32] - - S["12A"] = T[12]*Train.A12.Value if isLVZ then if isPA then AVI.ZD = S[16] end - Train:WriteTrainWire(31,S[31]*(Train.KDL.Value*(1-RC2))+S["D1"]*Train.VDL.Value+AVO["31"]*RC2 + S["12A"]*Train.A31.Value) - Train:WriteTrainWire(32,S[32]*(Train.KDP.Value)*(1-RC2)+AVO["32"]*RC2 + S["12A"]*Train.A32.Value) - elseif not isDot2 then - Train:WriteTrainWire(31,S[31]*(Train.KDL.Value+Train.KDLR.Value+Train.VDL.Value)*(Train.ASNP.K1+(1-Train.VBD.Value)) + S["12A"]*Train.A31.Value) - Train:WriteTrainWire(32,S[32]*Train.KDP.Value*(Train.ASNP.K2+(1-Train.VBD.Value)) + S["12A"]*Train.A32.Value) + Train:WriteTrainWire(31,S[31]*(Train.KDL.Value*(1-RC2)+Train.VDL.Value)+AVO["31"]*RC2) + Train:WriteTrainWire(32,S[32]*(Train.KDP.Value)*(1-RC2)+AVO["32"]*RC2) else - Train:WriteTrainWire(31,S[31]*(Train.KDL.Value+Train.KDLR.Value+Train.VDL.Value) + S["12A"]*Train.A31.Value) - Train:WriteTrainWire(32,S[32]*Train.KDP.Value + S["12A"]*Train.A32.Value) + Train:WriteTrainWire(31,S[31]*(Train.KDL.Value+Train.KDLR.Value+Train.VDL.Value)*(Train.ASNP.K1+(1-Train.VBD.Value))) + Train:WriteTrainWire(32,S[32]*Train.KDP.Value*(Train.ASNP.K2+(1-Train.VBD.Value))) end @@ -783,9 +684,9 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train:WriteTrainWire(-34,S["F1"]) Panel.KT = S["F1"]+T[34]*T[-34] ARS.KT = T[34]*T[-34] - elseif not isDot2 then + else --S["KT"] = ARS.FMM1*(1-Train.BSM_GE.Value) - S["KT"] = S["7D"]*(1-Train.BSM_GE.Value)+S["B3"]*(1-RC1) + S["KT"] = S["7D"]*(1-Train.BSM_GE.Value) Train:WriteTrainWire(-34,S["KT"]) ARS.KT = T[34]*T[-34]*Train.BSM_GE.Value Train.BUM_KPP:TriggerInput("Set",S["KT"]*(1-Train.BSM_GE.Value)+ARS.KT) @@ -809,19 +710,13 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Panel.BrT = T[64] Panel.KVC = S["UO"]*(1-Train.KVC.Value) + Panel.CabLights = S["UO"]*Train.L_2.Value + Panel.EqLights = T[10]*Train.A11.Value Panel.PanelLights = T[10]*Train.L_3.Value --Вспом цепи приём - if isDot2 then - S["11B"] = T[11]*Train.A15.Value*(1-Train.KPP.Value) - Panel.EmergencyLights = S["11B"] - Panel.CabLights = S["UO"]*Train.L_2.Value+S["11B"]*(1-Train.L_2.Value) - else - Panel.EmergencyLights = BO*Train.A49.Value*Train.A15.Value - Panel.CabLights = S["UO"]*Train.L_2.Value - end - Panel.EqLights = T[10]*Train.A11.Value + Panel.EmergencyLights = BO*Train.A49.Value*Train.A15.Value Train.RPU:TriggerInput("Set",T[37]*Train.A37.Value) Train.Schemes = S @@ -829,6 +724,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train,dT,firstIter) Train.RD:TriggerInput("Set",S["D6"]) Panel.DoorsW = S["D4"]*(1-Train.RD.Value) Train.VDZ:TriggerInput("Set",T[16]*Train.A16.Value*(1-Train.RD.Value)) + S["12A"] = T[12]*Train.A12.Value S["31A"] = T[31]*Train.A31.Value S["32A"] = T[32]*Train.A32.Value Train.VDOL:TriggerInput("Set",S["31A"]+S["12A"]) @@ -887,14 +783,14 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train,dT,firstIter) S["1N"] = C(11<=RK and RK<=18)*(1-Train.LK4.Value) Train.RR:TriggerInput("Set",S["10A"]*S["1N"] + P.PS*Train.LK4.Value) - S["2A"] = (T[2]+T[-2])*Train.A2.Value + S["2A"] = T[2]*Train.A2.Value S["2B"] = S["2A"]*((1-Train.KSB1.Value)*(1-Train.KSB2.Value)+(1-Train.TR1.Value)) S["2Ca"] = P.PS*C(1<=RK and RK<=17)*Train.RR.Value --CHECK S["2Cb"] = P.PP*(C(6<=RK and RK<=18)+C(2<=RK and RK<=5)*Train.KSH1.Value)*(1-Train.RR.Value) --CHECK S["2C"] = S["2B"]*(S["2Ca"]+S["2Cb"])*Train.LK4.Value S["10R"] = S["10A"]*(1-Train.LK3.Value)*C(2<=RK and RK<=18)*(1-Train.LK4.Value) - S["2U"] = (S["10R"]+S["2C"])*S["ZR"] + S["2U"] = S["10R"]+S["2C"]*S["ZR"] Train.SR1:TriggerInput("Set",S["2U"]) Train.RV1:TriggerInput("Set",S["2U"]) @@ -921,7 +817,7 @@ function TRAIN_SYSTEM:SolveRKInternalCircuits(Train,dT,firstIter) return S end -local wires = {1,-2,2,3,4,5,6,7,8,10,11,12,14,15,16,17,18,19,20,22,23,24,27,-28,28,25,13,-13,31,32,36,37,39,44,48,53,54,57,59,60,58,57,64,34,36,-34,61,64,66,67,68,69,71,72,87,88,91,92,93,98,99} +local wires = {1,2,3,4,5,6,7,8,10,12,14,15,16,17,18,19,20,22,23,24,27,-28,28,25,13,-13,31,32,36,37,39,44,48,53,54,57,59,60,58,57,64,34,36,-34,61,64,66,67,68,69,71,87,88,91,92,93,98,99} function TRAIN_SYSTEM:SolveInternalCircuits(Train,dT,firstIter) local T = Train.SolverTemporaryVariables if not T then @@ -1024,20 +920,20 @@ function TRAIN_SYSTEM:SolvePowerCircuits(Train,dT) -- Re-calculate total current and simulate infinite resistance in circuit if Train.PositionSwitch.PT > 0 then - self.I13 = self.I13*Train.LK3.Value*Train.LK4.Value*Train.LK2.Value - self.I24 = self.I24*Train.LK4.Value*Train.LK3.Value*Train.LK2.Value + self.I13 = self.I13*Train.LK3.Value*Train.LK4.Value + self.I24 = self.I24*Train.LK4.Value*Train.LK3.Value self.Itotal = self.I13 + self.I24 elseif Train.PositionSwitch.PS > 0 then -- PS - self.I13 = self.I13*Train.LK3.Value*Train.LK4.Value*Train.LK1.Value*Train.LK2.Value - self.I24 = self.I24*Train.LK3.Value*Train.LK4.Value*Train.LK1.Value*Train.LK2.Value + self.I13 = self.I13 * (Train.LK3.Value * Train.LK4.Value * Train.LK1.Value) + self.I24 = self.I24 * (Train.LK3.Value * Train.LK4.Value * Train.LK1.Value) self.I24 = (self.I24 + self.I13)*0.5 self.I13 = self.I24 self.Itotal = self.I24 elseif Train.PositionSwitch.PP > 0 then -- PP - self.I13 = self.I13*Train.LK3.Value*Train.LK1.Value - self.I24 = self.I24*Train.LK4.Value*Train.LK1.Value + self.I13 = self.I13 * Train.LK3.Value * Train.LK1.Value + self.I24 = self.I24 * Train.LK4.Value * Train.LK1.Value self.Itotal = self.I13 + self.I24 end @@ -1161,7 +1057,7 @@ function TRAIN_SYSTEM:SolveThyristorController(Train, dT) self.ThyristorResistance = Resistance + 1e9 * (Active and 0 or 1) end -function TRAIN_SYSTEM:Think(dT,iter) +function TRAIN_SYSTEM:Think(...) if not self.ResistorBlocksInit then self.ResistorBlocksInit = true if false and self.Type ~= 1 then @@ -1169,7 +1065,7 @@ function TRAIN_SYSTEM:Think(dT,iter) else self.Train:LoadSystem("ResistorBlocks","Gen_Res_717") end + self.Train.ResistorBlocks.InitializeResistances_81_717(self.Train) end - if iter == 1 then self.Train.ResistorBlocks.InitializeResistances_81_717(self.Train) end - return Metrostroi.BaseSystems["Electric"].Think(self,dT,iter) + return Metrostroi.BaseSystems["Electric"].Think(self,...) end \ No newline at end of file diff --git a/lua/metrostroi/systems/sys_81_717_pam.lua b/lua/metrostroi/systems/sys_81_717_pam.lua index 0095010..9c56f5f 100644 --- a/lua/metrostroi/systems/sys_81_717_pam.lua +++ b/lua/metrostroi/systems/sys_81_717_pam.lua @@ -140,7 +140,6 @@ function TRAIN_SYSTEM:Initialize() self["3"] = 0 --Ход 3 self["8"] = 0 --Замещение электрического торможения self["16"] = 0 --Закрытие дверей - self["68"] = 0 --Открытие правых дверей хвостового вагона self["17"] = 0 -- Разрешение восстановления реле перегрузки self["19"] = 0 -- Разрешение замещения электрического торможения self["20"] = 0 -- Включение двигателей @@ -175,7 +174,6 @@ function TRAIN_SYSTEM:Initialize() self.Speed = 0 self.SpeedLimit = 0 self.Acceleration = 0 - self.Brightness = 0.6 self.ErrorTimers = {} self.Timers = {} end @@ -187,7 +185,7 @@ function TRAIN_SYSTEM:Inputs() end function TRAIN_SYSTEM:Outputs() return { - "2","3","8","16","68","17","19","20","20X","025","25","31","32","33","033","33G","39","7GA","48","EPK", + "2","3","8","16","17","19","20","20X","025","25","31","32","33","033","33G","39","7GA","48","EPK", "Ring", "NoFreq", "F5", "F4", "F3", "F2", "F1" } end @@ -227,6 +225,7 @@ if CLIENT then createFont("PAM35","Arial",35) createFont("PAM45","Arial",45) createFont("PAM60","Arial",60) + function TRAIN_SYSTEM:ClientThink() if not self.Train:ShouldDrawPanel("PAMScreen") then return end if self.FilterMag then @@ -765,7 +764,7 @@ if CLIENT then "Открой двери станции", "Перейди в КС", "Нет питания на 34 проводе(ЛКТ)", - "Есть питание на 34 проводе", + "Есть притание на 34 проводе", [51]={"Контроль дверей отменён"}, [52]={"Контроль дверей восстановлен"}, @@ -795,7 +794,6 @@ if CLIENT then local state5b = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5b_main") local state5kb = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/state5kb_main") local question = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/question") - local slider = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/buttons/slider") local function State5(Train,isARS) local speed = Train:GetNW2Int("PAM:Vf") local mode = Train:GetNW2Int("PAM:Mode",0) @@ -806,10 +804,10 @@ if CLIENT then local driveMode = Train:GetNW2Int("PAM:DriveMode",0) local KVMode = Train:GetNW2Int("PAM:KVMode",0) - local state = Train:GetNW2Int("PAM:State5",-100) + local state = Train:GetNW2Int("PAM:State5",-1) local stateAcc = Train:GetNW2Int("PAM:State5Accept",0) local sel = Train:GetNW2Int("PAM:Selected",1) - local block = state~=-100 or stateAcc~=0 + local block = state~=-1 or stateAcc~=0 local ksd = Train:GetNW2Bool("PAM:KSD") @@ -872,6 +870,7 @@ if CLIENT then draw.SimpleText(speedLimit,"Metrostroi_PAM24",5+5.42*speedLimit,122, Color(246,242,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) Metrostroi.DrawLine(6+5.42*speedLimit,68,6+5.42*speedLimit,107,Color(246,242,0),3) end + local mess = Train:GetNW2Int("PAM:CurrentMessage",0) if mode == 6 then if mess==0 then mess = 21 end @@ -925,10 +924,10 @@ if CLIENT then if mess>0 then local mess = errors[50+mess] if #mess == 1 or #mess==2 and mess[2]==true then - draw.SimpleText(mess[1],"Metrostroi_PAM35",320,isARS and 280 or 240, mess[2] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText(mess[1],"Metrostroi_PAM35",320,240, mess[2] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) else - draw.SimpleText(mess[1],"Metrostroi_PAM35",320,isARS and 262 or 222, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(mess[2],"Metrostroi_PAM35",320,isARS and 298 or 258, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText(mess[1],"Metrostroi_PAM35",320,222, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText(mess[2],"Metrostroi_PAM35",320,258, mess[3] and Color(238,129,31) or Color(20,239,32),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end end local err = Train:GetNW2Int("PAM:CurrentError",0) @@ -1023,21 +1022,6 @@ if CLIENT then Metrostroi.DrawLine(x+10,y+48,x+24,y+48,color,3) end end - elseif state==-1 then - drawWindow(146,146, 357,201,"Регулировка яркости") - buttonWTextC(161,192,75,34,"<","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyLeft") and button_p or button) - buttonWTextC(413,192,75,34,">","Metrostroi_PAM25",Color(0,0,0),Train:GetNW2Bool("PAM:KeyRight") and button_p or button) - buttonWTextC(277,277,95,50,"Закрыть","Metrostroi_PAM25",Color(0,0,0),(Train:GetNW2Bool("PAM:KeyEsc") or Train:GetNW2Bool("PAM:KeyEnter")) and button_p or button) - Metrostroi.DrawRectOL(246,203,157,4,Color(113,113,113),1,Color(200,200,200)) - for i=0,10 do - Metrostroi.DrawLine(251+i*15,216,251+i*15,220,Color(113,113,113),2) - end - draw.SimpleText("Яркость:","Metrostroi_PAM25",246,251, Color(0,0,0),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - drawTextBox(340,237,63,29,Format("%d%%",Train:GetNW2Float("PAM:Brightness",1)*100),"Metrostroi_PAM25") - surface.SetDrawColor(255,255,255) - surface.SetTexture(slider) - surface.DrawTexturedRect(251-5+Train:GetNW2Float("PAM:Brightness",1)*150,216-17,16,16) - elseif state==8 then drawWindow(0,120, 640,241,"Зонный оборот") local count = Train:GetNW2Int("PAM:ElemCount",0) @@ -1224,34 +1208,6 @@ if CLIENT then local bios_splash = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/bios_splash") local splash = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/splash") local splash_egg = surface.GetTextureID("models/metrostroi_train/81-717/screens/pa/splash_egg") - local snds = { - [-3] = "http://pollitto.ru/other/files/NEW/shit/apdisco.wav", - [-2] = "http://pollitto.ru/other/files/NEW/shit/master_warning.wav", - [-1] = "http://pollitto.ru/other/files/NEW/shit/terrain_n.wav", - [-0.01] = "http://pollitto.ru/other/files/NEW/shit/mini.wav", - [1.02] = "http://pollitto.ru/other/files/NEW/shit/5ft.wav", - [3.05] = "http://pollitto.ru/other/files/NEW/shit/10ft.wav", - [6.10] = "http://pollitto.ru/other/files/NEW/shit/20ft.wav", - [9.14] = "http://pollitto.ru/other/files/NEW/shit/30ft.wav", - [12.19] = "http://pollitto.ru/other/files/NEW/shit/40ft.wav", - [15.24] = "http://pollitto.ru/other/files/NEW/shit/50ft.wav", - [30.48] = "http://pollitto.ru/other/files/NEW/shit/100ft.wav", - [60.96] = "http://pollitto.ru/other/files/NEW/shit/200ft.wav", - [91.44] = "http://pollitto.ru/other/files/NEW/shit/300ft.wav", - [100] = "http://pollitto.ru/other/files/NEW/shit/alt_alert.wav", - [121.92] = "http://pollitto.ru/other/files/NEW/shit/400ft.wav", - [152.40] = "http://pollitto.ru/other/files/NEW/shit/500ft.wav", - [304.80] = "http://pollitto.ru/other/files/NEW/shit/1000ft.wav", - [762] = "http://pollitto.ru/other/files/NEW/shit/2500ft.wav", - ["caution"] = "http://pollitto.ru/other/files/NEW/shit/toconfigwarn.wav", - ["belts"] = "http://pollitto.ru/other/files/NEW/shit/belts.wav", - ["smoking"] = "http://pollitto.ru/other/files/NEW/shit/smoking.wav", - ["pullup"] = "http://pollitto.ru/other/files/NEW/shit/whoopwhoop.wav", - ["tl_flaps"] = "http://pollitto.ru/other/files/NEW/shit/too_low_flaps.wav", - ["tl_terrain"] = "http://pollitto.ru/other/files/NEW/shit/too_low_terrain.wav", - } - - local UPD = 10 function TRAIN_SYSTEM:PAMScreen(Train) --surface.SetTexture(splash_egg) --surface.SetDrawColor(255,255,255) @@ -1281,91 +1237,10 @@ if CLIENT then if state == 3 then State3(Train) end if state == 3.5 then State35(Train) end if state == 4 then State4(Train) end - if state == 5 then - --[[ - if LocalPlayer():GetName() ~= "MrMeowpestMan" then - if not self.Sounds or self.SoundsTemp ~= UPD then - if self.Sounds then for i,snd in pairs(self.Sounds) do snd:Stop() end end - self.Sounds = {} - for i, sndU in pairs(snds) do - sound.PlayURL ( sndU, "3d noplay noblock", function( snd ) - if ( IsValid( snd ) ) then - self.Sounds[i] = snd - print(snd) - else - print("???") - end - end ) - end - self.SoundsTemp = UPD - end - for i,snd in pairs(self.Sounds) do - if IsValid(snd) then - snd:SetPos(self.Train:LocalToWorld(Vector(450,22,0))) - end - end - local sndId - local s = Train:GetNW2Float("PAM:S")--/0.3048 - for i,snd in pairs(self.Sounds) do - if type(i) == "number" and s <= i and (not sndId or sndId > i) then sndId = i end - end - if self.CurrentSound ~= sndId then - if sndId then - print(self.Sounds[sndId]) - self.Sounds[sndId]:SetTime(0) - self.Sounds[sndId]:Play() - end - self.CurrentSound = sndId - end - if self.Sounds.caution and not self.Caution and self.Train:GetNW2Bool("PAM:OXT") then - self.Sounds.caution:SetTime(0) - self.Sounds.caution:Play() - self.Caution = CurTime() - elseif self.Caution and CurTime()-self.Caution > 2 then - self.Caution = false - end - - if self.Sounds.pullup and not self.PullUp and Train:GetNW2Int("PAM:Vf") > 1 then - self.Sounds.pullup:SetTime(0) - self.Sounds.pullup:Play() - self.PullUp = true - elseif self.PullUp and Train:GetNW2Int("PAM:Vf") == 0 then - self.PullUp = false - end - self.SpeedLimitSmoking = self.SpeedLimitSmoking or Train:GetNW2Int("PAM:SpeedLimit") - if self.Sounds.smoking and Train:GetNW2Int("PAM:SpeedLimit") ~= self.SpeedLimitSmoking then - if Train:GetNW2Int("PAM:SpeedLimit") > self.SpeedLimitSmoking then - self.Sounds.smoking:SetTime(0) - self.Sounds.smoking:Play() - else - self.Sounds.belts:SetTime(0) - self.Sounds.belts:Play() - end - self.SpeedLimitSmoking = Train:GetNW2Int("PAM:SpeedLimit") - end - local canPlayTLFlaps = Train:GetNW2Int("PAM:KVMode") >= -1 and Train:GetNW2Int("PAM:Vf") > 0 and not Train:GetNW2Bool("PAM:LPT") - if self.Sounds.tl_flaps and not self.TLFlaps and (50 <= s and s <= 100) and canPlayTLFlaps then - self.Sounds.tl_flaps:SetTime(0) - self.Sounds.tl_flaps:Play() - self.TLFlaps = CurTime() - elseif self.Sounds.tl_terrain and not self.TLFlaps and s < 50 and canPlayTLFlaps then - self.Sounds.tl_terrain:SetTime(0) - self.Sounds.tl_terrain:Play() - self.TLFlaps = CurTime() - elseif self.TLFlaps and CurTime()-self.TLFlaps > 1.5 then - self.TLFlaps = false - end - end - --]] - - State5(Train) - end + if state == 5 then State5(Train) end if state == 6 then State5(Train,true) end - --surface.SetDrawColor(0,0,0,150) - surface.SetAlphaMultiplier(0.9-Train:GetNW2Float("PAM:Brightness",0)*0.5) - surface.SetDrawColor(Color(20,20,20)) + surface.SetDrawColor(0,0,0,150) surface.DrawRect(0,0,640,480,0) - surface.SetAlphaMultiplier(1) end end return @@ -1461,13 +1336,7 @@ end function TRAIN_SYSTEM:Trigger(name,value,press) local Train = self.Train Train:SetNW2Bool("PAM:Key"..name,value) - if name == "F" and value and not self.SoundTimer then self.SoundTimer = CurTime() end - if name == "F" and not value and self.SoundTimer ~= nil then - local oldST = self.SoundTimer - self.SoundTimer = nil - if not oldST then return end - end - if press and value and self.Sound then + if press and value then self.Train:PlayOnce("pa_"..name:lower(),"bass",1) end if name == "KeyB" and not value then self.Keyboard = not self.Keyboard end @@ -1706,10 +1575,6 @@ function TRAIN_SYSTEM:Trigger(name,value,press) end if name == "Esc" and value then self.Selected = 11 end if name == "Esc" and not value and self.Selected == 11 then self.State5 = nil end - elseif self.State5 == -1 then - if name == "Left" and value then self.Brightness = math.max(0,self.Brightness-0.1) end - if name == "Right" and value then self.Brightness = math.min(1,self.Brightness+0.1) end - if (name == "Esc" or name == "Enter") and not value then self.State5 = nil end elseif self.State5 == 1 then if name == "Esc" and not value then self.State5 = nil @@ -1784,7 +1649,7 @@ function TRAIN_SYSTEM:Trigger(name,value,press) end end else - if name == "F" and not value then + if name == "F" and value then self.State5 = 0 self.Selected = 1 end @@ -1792,15 +1657,6 @@ function TRAIN_SYSTEM:Trigger(name,value,press) --if name == "1" and value then self.State5Accept=-1 end if name == "2" and value then self.State5Accept=-2 end if name == "3" and self.PAKSD and value then self.State5Accept=-3 end - if name == "8" and value then self.State5=-8 self.Selected = 0 end - if name == "Left" or name == "Right" and value then - if name == "Right" then - self.Brightness = math.min(1,self.Brightness+0.1) - else - self.Brightness = math.max(0,self.Brightness-0.1) - end - self.State5 = -1 - end if self.State==5 then if name == "P" and value then self.State5 = -5 @@ -1813,6 +1669,7 @@ function TRAIN_SYSTEM:Trigger(name,value,press) if name == "4" and value then self.State5Accept=-4 end if name == "6" and value then self.State5Accept=-6 end --if name == "7" and value then self.State5Accept=-7 end + if name == "8" and value then self.State5=-8 self.Selected = 0 end if name == "9" and value then self.State5=9 self.Selected = 1 @@ -1941,11 +1798,6 @@ function TRAIN_SYSTEM:Touch(value,x,y) end end end - elseif self.State5 == -1 then - if math.InRangeXYR(x,y,161,192,75,34) then self.Touches["Left"] = true return end - if math.InRangeXYR(x,y,413,192,75,34) then self.Touches["Right"] = true return end - if math.InRangeXYR(x,y,277,277,95,50) then self.Touches["Enter"] = true return end - if math.InRangeXYR(x,y,246,196,157,25) then self.Brightness = math.Clamp(math.Round((x-251)/147,2),0,1) return end elseif self.State5==-8 then for i=1,9 do if i==9 then i=11 end @@ -2073,12 +1925,11 @@ function TRAIN_SYSTEM:SetDoorMode(curMode,override) self.DoorMode = curMode end TRAIN_SYSTEM.DoorModes = { - -- 16 31 32 68 - ZD = {1, 0, 0, 0,}, - DL = {0, 1, 0, 0,}, - DP = {0, 0, 1, 0,}, - DB = {0, 0, 0, 1,}, - DO = {0, 0, 0, 0,}, + -- 16 31 32 + ZD = {1, 0, 0,}, + DL = {0, 1, 0,}, + DP = {0, 0, 1,}, + DO = {0, 0, 0,}, } function TRAIN_SYSTEM:SetPneumoMode(curMode,override) if self.CurrentPneumoModePriority==2 and curMode=="V2" then @@ -2284,7 +2135,7 @@ function TRAIN_SYSTEM:SetState(state,time) self.RouteNumberS = self.RouteNumber or self.RouteNumberS self.DriverNumberS = self.DriverNumber or self.DriverNumberS - self.HaveRestart = self.DriverNumber and #self.DriverNumber == 4 and self.RouteNumber and #self.RouteNumber == 3 + self.HaveRestart = #self.DriverNumber == 4 and #self.RouteNumber == 3 and Metrostroi.PAMConfTest[self.LineS] and Metrostroi.PAMConfTest[self.LineS][tonumber(self.PathS)] and Metrostroi.PAMStations[self.LineS][tonumber(self.StationS)] @@ -2301,9 +2152,9 @@ function TRAIN_SYSTEM:SetState(state,time) self:UpdateStationList(self.StationS) self.Train:SetNW2String("PAM:EnterError","") - elseif (state == 4 or state == 5) and self.LineS then - if state == 4 then self.CheckRing = true end - --elseif state == 5 then + elseif state == 4 then + self.CheckRing = true + elseif state == 5 then self.Line = tonumber(self.LineS) self.Station = tonumber(self.StationS) self.Path = tonumber(self.PathS) @@ -2319,13 +2170,11 @@ function TRAIN_SYSTEM:SetState(state,time) self.EPKActive = true self.ControlMode = 2 self.State5 = nil - self.CloseDoors = true elseif state == 6 then self:SetMode(0) self.EPKActive = true self.ControlMode = 2 self.State5 = nil - self.CloseDoors = true end self.State = state if time then self.ChangeTimer = CurTime()+time end @@ -2393,21 +2242,11 @@ function TRAIN_SYSTEM:CANReceive(source,sourceid,target,targetid,textdata,numdat end local back = self.BackPA and self.BackPA.state if back and back.RR and self.State>0 then - local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[back.Line] and Metrostroi.PAMConfTest[back.Line][(back.Path=="2" or back.Path==2) and 1 or 2] - if not tbl then return end - if self.State<4 and back.State==4 then - self.LineS = back.Line - self.PathS = (back.Path=="2" or back.Path==2) and "1" or "2" - self.RouteNumberS = back.RouteNumber - self.DriverNumberS = back.DriverNumber - self.StationS = back.Station - - self:SetState(4) - end + if self.State<4 and back.State==4 then self.State = 4 end if self.State<5 and back.State==5 then self.EPKActive = true self.State = 5 self.ControlMode = 2 end if self.State==5 then self.Line = back.Line - self.Path = (back.Path=="2" or back.Path==2) and "1" or "2" + self.Path = back.Path=="2" and "1" or "2" self.RouteNumber = back.RouteNumber self.DriverNumber = back.DriverNumber self.Deadlock = self.Mode==4 and self.Deadlock or nil @@ -2415,6 +2254,7 @@ function TRAIN_SYSTEM:CANReceive(source,sourceid,target,targetid,textdata,numdat if self.Station ~= back.Station or not self.BackRR or self.BackMode~=back.Mode then local line = self.Line local path = tonumber(self.Path) + local tbl = Metrostroi.PAMConfTest and Metrostroi.PAMConfTest[line] and Metrostroi.PAMConfTest[line][path] for k,v in ipairs(tbl[1].stations) do if v.id == tonumber(back.Station) then self.Station = back.Station @@ -2495,9 +2335,6 @@ function TRAIN_SYSTEM:Think(dT) end self.BackCheckTimer = false self.BackPA = nil - self.Brightness = 0.6 - self.Sound = true - self.SoundTimer = false end if self.State == -0.5 and CurTime()-self.StartTimer > 0.05 then self.State = -1 self.StartTimer = CurTime() end if self.State == -1 and CurTime()-self.StartTimer > 5 then self.State = -2 self.StartTimer = CurTime() self:SetWaitTimer(0.2) end @@ -2519,7 +2356,7 @@ function TRAIN_SYSTEM:Think(dT) end if self.ChangeTimer and CurTime()-self.ChangeTimer > 0 then self.ChangeTimer = nil end - local ALSOn = (self.State>0) and 1 or 0 + local ALSOn = (self.State>0 and RR) and 1 or 0 if self.PAKSD and ALSOn ~= ALS.Enabled then ALS:TriggerInput("Enable",ALSOn) end @@ -2529,7 +2366,7 @@ function TRAIN_SYSTEM:Think(dT) local speedMpS = speed/3600*1000 local speedMpSSigned = speedMpS*ALS.SpeedSign local accel = ALS.Acceleration - if ALSOn>0--[[self.State > 0 or self.State<-3]] then + if self.State > 0 or self.State<-3 then for k,v in pairs(self.TriggerNames) do local name = v:sub(4,-1) local val = Train[v].Value > 0.5 @@ -2537,16 +2374,6 @@ function TRAIN_SYSTEM:Think(dT) self.Triggers[v] = self.Touches[name] or val self:Trigger(name,self.Triggers[v],val == self.Triggers[v]) end - - if self.SoundTimer and self.SoundTimer > 0 and CurTime()-self.SoundTimer > 0.5 then - self.SoundTimer = -CurTime() - self.Sound = not self.Sound - Train:PlayOnce("pa_f","bass",1) - end - if self.SoundTimer and self.SoundTimer < 0 and CurTime()+self.SoundTimer > 0.25 then - self.SoundTimer = false - Train:PlayOnce("pa_f","bass",1) - end end if (not self.BackCheckTimer or CurTime()-self.BackCheckTimer > 1) then self:CANWrite("Check") @@ -2556,7 +2383,7 @@ function TRAIN_SYSTEM:Think(dT) self.BackPA = nil end - local ALSSh = self.PAKSD and 0 or (1-Train.ALS.Value)*Train.VRD.Value --ALS Shunt + local ALSSh = (1-Train.ALS.Value)*Train.VRD.Value --ALS Shunt local Vd = -1 if ALS.F5*(1-ALSSh) > 0 then Vd = 0 end if ALS.F4*(1-ALSSh) > 0 then Vd = 40 end @@ -2599,7 +2426,6 @@ function TRAIN_SYSTEM:Think(dT) self.F1 = 0 end Train:SetNW2Float("PAM:State",self.ChangeTimer and -10 or self.State) - Train:SetNW2Float("PAM:Brightness",self.Brightness) if self.StartTimer then Train:SetNW2Float("PAM:StartTimer",CurTime()-self.StartTimer) end --if self.WorkTimer and CurTime()- self.WorkTimer < 0.1 then return end @@ -2621,7 +2447,6 @@ function TRAIN_SYSTEM:Think(dT) self["16"] = 0 self["31"] = 0 self["32"] = 0 - self["68"] = 0 self["39"] = 0 self["7GA"] = 0 self["48"] = 0 @@ -2720,7 +2545,6 @@ function TRAIN_SYSTEM:Think(dT) local opv = false --Distance count if not self.Distance and self.State == 5 then self.Distance = self.StationTable and self.StationTable.pos or 0 end - if self.Mode~=6 and self.Distance then local pos = Metrostroi.TrainPositions[Train];pos = pos and pos[1] local delta = speedMpS*dT @@ -2735,7 +2559,8 @@ function TRAIN_SYSTEM:Think(dT) end self.Distance = self.Distance + delta end - if self.Mode == 1 or (0 < self.Mode and self.Mode < 6) and not self.StationTable then + + if self.Mode == 1 then stationLast = "выход на линию" if self.StationTable then station = self.StationTable.name end dist = 3072-self.Distance @@ -2828,7 +2653,8 @@ function TRAIN_SYSTEM:Think(dT) elseif self.StationBrakeRing==false or self.StationBrakeRing and CurTime()-self.StationBrakeRing > 0.5 then self.StationBrakeRing = nil end - local CanOpen = not self.CloseDoors and PAM_VV.KRH==0 and (PAM_VV.LPT > 0 or self.NoLPT and PAM_VV.V1>0) + + local CanOpen = PAM_VV.KRH==0 and (PAM_VV.LPT > 0 or self.NoLPT and PAM_VV.V1>0) if ((opv or self.Mode==5) and speed < 0.5 or (self.OpenDoors and speed < 2.5 or not self.GoodSetup)) and CanOpen then self:SetDoorMode((not self.OpenControl and (PAM_VV.ZD>0 or self.DoorMode=="ZD")) and "ZD" or "DO") local err @@ -2848,10 +2674,10 @@ function TRAIN_SYSTEM:Think(dT) --TODO: При нажатии на кнопку>2.5с и не пропадании КД подсказка "Нет контроля открытия дверей elseif self.Mode<=3 then local stationTable = dist>10 and self.PrevStationTable or self.StationTable - local Open = PAM_VV.KDL > 0 or PAM_VV.KDP > 0 or PAM_VV.OPD > 0 - local CanOpen = not self.Transit and (PAM_VV.KDL > 0 and not stationTable.rightDoors or (PAM_VV.KDP > 0 or PAM_VV.OPD > 0) and stationTable.rightDoors) + local Open = PAM_VV.KDL > 0 or PAM_VV.KDP > 0 + local CanOpen = not self.Transit and (PAM_VV.KDL > 0 and not stationTable.rightDoors or PAM_VV.KDP > 0 and stationTable.rightDoors) if PAM_VV.ZD==0 and CanOpen then - self:SetDoorMode(stationTable.rightDoors and (PAM_VV.OPD > 0 and "DB" or "DP")or "DL") + self:SetDoorMode(stationTable.rightDoors and "DP"or "DL") if opv and (stationTable==self.StationTable or self.FireBack) then self:SetMode(3) end @@ -2859,8 +2685,8 @@ function TRAIN_SYSTEM:Think(dT) if not self.OpeningTimer and PAM_VV.KD>0 then self.OpeningTimer = CurTime() end else self.OpeningTimer = false - self:Error(1,Open and not CanOpen and not self.Transit and stationTable.rightDoors and PAM_VV.OPD == 0) - self:Error(2,Open and not CanOpen and not self.Transit and not stationTable.rightDoors and PAM_VV.OPD == 0) + self:Error(1,Open and not CanOpen and not self.Transit and stationTable.rightDoors) + self:Error(2,Open and not CanOpen and not self.Transit and not stationTable.rightDoors) self:Error(23,Open and not CanOpen and self.Transit) end if CanOpen and PAM_VV.ZD>0 and not self.OpenTimer then @@ -2881,10 +2707,6 @@ function TRAIN_SYSTEM:Think(dT) self.OpenTimer = false self.OpeningTimer = false end - if self.CloseDoors then - if self.DoorMode=="ZD" then self.CloseDoors = false end - self:SetDoorMode("ZD") - end if self.OpenControl and self.Mode==3 and self.StationTable.isHorlift and self.SpeedLimit~=0 then if not self.StationDoorsTimer then self.StationDoorsTimer = CurTime() end @@ -2920,9 +2742,9 @@ function TRAIN_SYSTEM:Think(dT) local speedLimit = math.max(21,self.SpeedLimit+1) - --[[if self.SpeedLimit == -1 and (self.Mode == 1 or self.Mode == 5) then + if self.SpeedLimit == -1 and (self.Mode == 1 or self.Mode == 5) then speedLimit = 16 - else]]if self.ControlMode == 1 then + elseif self.ControlMode == 1 then speedLimit = (self.SpeedLimit > 40 and 36 or 21)*PAM_VV.KB elseif PAM_VV.KB>0 then speedLimit=21 @@ -2989,7 +2811,7 @@ function TRAIN_SYSTEM:Think(dT) end if speed < speedLimit-2 and not self.RingArmed then self.STTimer = false end - if (AT or ST) and (accel>-0.7 and PAM_VV.KET == 0) then + if (AT or ST) and accel>-0.7 then if not self.EKTimer then self.EKTimer = CurTime() end elseif self.EKTimer then self.EKTimer = false @@ -3031,7 +2853,7 @@ function TRAIN_SYSTEM:Think(dT) if not self.Stopped then self.V1Stop = nil end self:Error(13,self.Starting and CurTime()-self.Starting>=4.5) - if speedMpSSigned < -0.01 and not self.Rolling and not self.FireBack and self.GoodSetup then self.Rolling = 0 end + if speedMpSSigned < -0.01 and not self.Rolling and not self.FireBack then self.Rolling = 0 end if self.Rolling and self.Rolling < 0 then self.Rolling = false end if self.Rolling then local rolled = -speedMpSSigned*dT @@ -3079,7 +2901,7 @@ function TRAIN_SYSTEM:Think(dT) _SCHTime = ( ( math.Clamp(((18-PAM_VV.KPRK)/17)^1.5*(55-(speed-5))/55,0,1)^1.1 -f )*2.2-math.Clamp(PAM_VV.KPRK-14,0,4)/4*3.3*math.Clamp((16-(speed-3))/16,0,1)^2.2 + )*2.2-math.Clamp(PAM_VV.KPRK-14,0,4)/4*3.3*math.Clamp((16-(speed-3))/16,0,1)^2.2 )*math.Clamp((0.5-currA),0,1) --_SCHTime = ((math.Clamp((PAM_VV.KPRK-1)/17*(55-(10-5))/55,0,1)^1.1)*2.2-math.Clamp(PAM_VV.KPRK-12,0,6)/6*3-3.5*math.Clamp((16-(10-3))/16,0,1)^2.2)*math.Clamp((0.8-currA)/0.8,0.2,1) SchemeEngageDistance = speedMpS*_SCHTime+(_ACCEL*(_SCHTime^2))/2-(2.0)*math.Clamp((7-(speed-3))/7,0,1) @@ -3256,7 +3078,7 @@ f )*2.2-math.Clamp(PAM_VV.KPRK-14,0,4)/4*3.3*math.Cla self:Error(24,false,7,true) - local BlockBack = self.State==6 and self.GoodSetup or not self.FireBack and self.Mode>2 and (not self.StationTable.isHorlift or dist > -.45 or dist < -6 or speed>=3.6) + local BlockBack = self.State==6 or not self.FireBack and self.Mode>2 and (not self.StationTable.isHorlift or dist > -.45 or dist < -6 or speed>=3.6) if (driveModeKV>=0 or PAM_VV.KRU > 0) and ( --TODO аппаратура отменяет ходвоой режим и назначает ВЗ№1 при подезде к рейке not RR or @@ -3396,7 +3218,6 @@ f )*2.2-math.Clamp(PAM_VV.KPRK-14,0,4)/4*3.3*math.Cla self["16"] = self.CurrentDoorMode[1] self["31"] = self.CurrentDoorMode[2] self["32"] = self.CurrentDoorMode[3] - self["68"] = self.CurrentDoorMode[4] end if self.CurrentPneumoMode then self["39"] = self.CurrentPneumoMode[2] diff --git a/lua/metrostroi/systems/sys_81_717_pam_vv.lua b/lua/metrostroi/systems/sys_81_717_pam_vv.lua index e14c272..db0d07e 100644 --- a/lua/metrostroi/systems/sys_81_717_pam_vv.lua +++ b/lua/metrostroi/systems/sys_81_717_pam_vv.lua @@ -22,7 +22,6 @@ function TRAIN_SYSTEM:Initialize() self.KPRK = 0 self.KDL = 0 self.KDP = 0 - self.OPD = 0 self.ZD = 0 self.K16 = 0 @@ -52,7 +51,7 @@ end function TRAIN_SYSTEM:Outputs() return { "Power", - "KGR","KRR","KRR1","KRR2","KRT","KRH","KB","KZP","KET","LPT","KSOT","KSZD","KPRK","KDL","KDP","OPD","ZD","K16","KD","KRU","KVARS","KTARS","VRD", + "KGR","KRR","KRR1","KRR2","KRT","KRH","KB","KZP","KET","LPT","KSOT","KSZD","KPRK","KDL","KDP","ZD","K16","KD","KRU","KVARS","KTARS","VRD", "V1","V2", "I2","I3","I25","I33G","I33" } diff --git a/lua/metrostroi/systems/sys_81_717_panel.lua b/lua/metrostroi/systems/sys_81_717_panel.lua index 736e55d..d211e28 100644 --- a/lua/metrostroi/systems/sys_81_717_panel.lua +++ b/lua/metrostroi/systems/sys_81_717_panel.lua @@ -18,7 +18,6 @@ function TRAIN_SYSTEM:Initialize() self.Train:LoadSystem("OtklBVK","Relay","Switch", {normally_closed=true,bass = true}) self.Train:LoadSystem("RezMK","Relay","Switch", {bass = true}) self.Train:LoadSystem("VMK","Relay","Switch", {bass = true}) - self.Train:LoadSystem("VA","Relay","Switch", {bass = true}) self.Train:LoadSystem("VAH","Relay","Switch", {bass = true}) self.Train:LoadSystem("VAD","Relay","Switch", {bass = true}) self.Train:LoadSystem("VUS","Relay","Switch", {bass = true}) @@ -209,13 +208,11 @@ function TRAIN_SYSTEM:Initialize() self.LhRK = 0 self.KVC = 0 self.SD = 0 - self.LEKK = 0 self.TW18 = 0 self.KT = 0 self.LN = 0 self.RS = 0 - self.OneFreq = 0 self.AR04 = 0 self.AR0 = 0 self.AR40 = 0 @@ -238,8 +235,8 @@ end function TRAIN_SYSTEM:Outputs() - return { "V1","LUDS","RedLight2","RedLight1","Headlights1","Headlights2","EqLights","CabLights","EqLights","PanelLights","CabinLight","EmergencyLights","MainLights","DoorsLeft","DoorsRight","DoorsW","GreenRP","BrW","AVU","LKVP","RZP","KUP","BrT","LSN","Ring","SD","LST","LVD","LhRK","KVC","SD","TW18", "KT","LEKK", - "LKVD","LN","RS","OneFreq","AR04","AR0","AR40","AR60","AR70","AR80","L1","M1_3","M4_7","M8", + return { "V1","LUDS","RedLight2","RedLight1","Headlights1","Headlights2","EqLights","CabLights","EqLights","PanelLights","CabinLight","EmergencyLights","MainLights","DoorsLeft","DoorsRight","DoorsW","GreenRP","BrW","AVU","LKVP","RZP","KUP","BrT","LSN","Ring","SD","LST","LVD","LhRK","KVC","SD","TW18", "KT", + "LKVD","LN","RS","AR04","AR0","AR40","AR60","AR70","AR80","L1","M1_3","M4_7","M8", "AnnouncerPlaying","AnnouncerBuzz","VPR", "CBKIPower","PCBKPower"} end diff --git a/lua/metrostroi/systems/sys_81_717_pneumatic.lua b/lua/metrostroi/systems/sys_81_717_pneumatic.lua index 1ea60af..600884f 100644 --- a/lua/metrostroi/systems/sys_81_717_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_717_pneumatic.lua @@ -75,6 +75,7 @@ function TRAIN_SYSTEM:Initialize(parameters) self.Train:LoadSystem("AirDistributorDisconnect","Relay","Switch") --УАВА self.Train:LoadSystem("UAVA","Relay","Switch",{ bass = true}) + self.Train:LoadSystem("UAVAContact","Relay","Switch") self.Train:LoadSystem("UAVAC","Relay","",{normally_closed=true,bass=true}) --Стояночный тормоз self.Train:LoadSystem("ParkingBrake","Relay","Switch",{bass = true}) @@ -109,8 +110,6 @@ function TRAIN_SYSTEM:Initialize(parameters) self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} local start = math.Rand(0.6,0.8) -- 0.6-1 self.DoorSpeedMain = -math.Rand(start,math.Rand(start+0.1,start+0.2)) @@ -164,6 +163,7 @@ function TRAIN_SYSTEM:TriggerInput(name,value) local HaveUAVA = not self.Train.SubwayTrain or not self.Train.SubwayTrain.ARS or not self.Train.SubwayTrain.ARS.NoUAVA if HaveUAVA and self.Train.UAVA.Value == 0 then self.EmergencyValve = true + self.Train.UAVAC:TriggerInput("Set",0) if value > 0 then RunConsoleCommand("say","Autostop braking",self.Train:GetDriverName()) end end end @@ -399,7 +399,7 @@ function TRAIN_SYSTEM:Think(dT) end -- 013: 7 0.0 Atm - if (self.RealDriverValvePosition == 7) and BLDisconnect then + if (self.RealDriverValvePosition == 7) and BLDisconnect and TLDisconnect then self:equalizePressure(dT,"BrakeLinePressure", 0.0, pr_speed) end trainLineConsumption_dPdT = trainLineConsumption_dPdT + math.max(0,self.BrakeLinePressure_dPdT) @@ -449,17 +449,10 @@ function TRAIN_SYSTEM:Think(dT) end self.Leak = true end - local UAVABlocked = (self.BrakeLinePressure>3.5 and Train.UAVA.Value==0) if (Train.UAVA.Blocked>0) ~= UAVABlocked then Train.UAVA:TriggerInput("Block",UAVABlocked and 1 or 0) end - - local UAVACBlocked = self.EmergencyValve and not self.EmergencyValveDisable - if (Train.UAVAC.Blocked>0) ~= UAVACBlocked then - Train.UAVAC:TriggerInput("Block",UAVACBlocked and 1 or 0) - end - Train:SetPackedRatio("EmergencyValve_dPdT", -leak/wagc) local leak = 0 @@ -473,7 +466,7 @@ function TRAIN_SYSTEM:Think(dT) -- Fill brake cylinders if Train.AirDistributorDisconnect.Value == 0 then -- Valve #1 - self.BrakeCylinderRegulationError = self.BrakeCylinderRegulationError or (math.random()*0.05 - 0.025) + self.BrakeCylinderRegulationError = self.BrakeCylinderRegulationError or (math.random()*0.20 - 0.10) local error = self.BrakeCylinderRegulationError if (Train.PneumaticNo1.Value == 1.0) and (Train.PneumaticNo2.Value == 0.0) then if self.PN1 == 0 then @@ -537,6 +530,11 @@ function TRAIN_SYSTEM:Think(dT) Train:PlayOnce("PN2end","stop") end + if Train.UAVAContact.Value > 0.5 and Train.UAVAC.Value < 0.5 then + Train.UAVAC:TriggerInput("Set",1) + Train:PlayOnce("uava_reset","bass",1) + end + --Parking brake simulation local PBPressure = math.Clamp(self.TrainLinePressure/5,0,1)*2.7 if Train.ParkingBrake.Value == 0 then @@ -583,9 +581,11 @@ function TRAIN_SYSTEM:Think(dT) if self.DoorLinePressure > 3.5 then if (Train.VDOL.Value == 1.0) and (Train.VDOP.Value == 0.0) and not self.DoorLeft then self.DoorLeft = true + if self.VDOLLoud then Train:PlayOnce("vdol_loud","cabin",0.8+math.random()*0.2,self.VDOLLoud) end end if (Train.VDOL.Value == 0.0) and (Train.VDOP.Value == 1.0) and not self.DoorRight then self.DoorRight = true + if self.VDORLoud then Train:PlayOnce("vdop_loud","cabin",0.8+math.random()*0.2,self.VDORLoud) end end if (Train.VDZ.Value == 1.0 or Train.VDOL.Value == 1.0 and Train.VDOP.Value == 1.0 or self.RZDTimer) and (self.DoorLeft or self.DoorRight) then if not self.OpenWaitL or CurTime()-self.OpenWaitL < 0.2 then @@ -606,31 +606,17 @@ function TRAIN_SYSTEM:Think(dT) if self.VDOL ~= Train.VDOL.Value then self.VDOL = Train.VDOL.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDOL > 0 and not Train.LeftDoorsOpen then Train:PlayOnce("vdol_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.VDOP ~= Train.VDOP.Value then self.VDOP = Train.VDOP.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDOP > 0 and not Train.RightDoorsOpen then Train:PlayOnce("vdop_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.VDZ ~= Train.VDZ.Value then self.VDZ = Train.VDZ.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.VDZ > 0 and (Train.RightDoorsOpen or Train.LeftDoorsOpen) then Train:PlayOnce("vzd_loud"..self.VDLoudID,"bass",self.VDLoud) end - end - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false end + Train.LeftDoorsOpen = false Train.RightDoorsOpen = false local openL = true @@ -638,9 +624,9 @@ function TRAIN_SYSTEM:Think(dT) for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT/(self.DoorLeft and self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT/(self.DoorRight and self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end if not Train.LeftDoorsOpen and self.LeftDoorState[i] > 0 then Train.LeftDoorsOpen = true @@ -654,22 +640,12 @@ function TRAIN_SYSTEM:Think(dT) end Train:SetPackedRatio("DoorL"..i,self.LeftDoorState[i]) Train:SetPackedRatio("DoorR"..i,self.RightDoorState[i]) - if self.LeftDoorStuck[i] and (self.DoorLeft or type(self.LeftDoorStuck[i]) == "number" and CurTime()-self.LeftDoorStuck[i] > 0) then - self.LeftDoorStuck[i] = false - end - if self.RightDoorStuck[i] and (self.DoorRight or type(self.RightDoorStuck[i]) == "number" and CurTime()-self.RightDoorStuck[i] > 0) then - self.RightDoorStuck[i] = false - end - Train:SetPackedBool("DoorLS"..i,self.LeftDoorStuck[i]) - Train:SetPackedBool("DoorRS"..i,self.RightDoorStuck[i]) end if openL and not self.OpenWaitL then self.OpenWaitL = CurTime() end if openR and not self.OpenWaitR then self.OpenWaitR = CurTime() end Train:SetPackedBool("DoorL",self.DoorLeft) Train:SetPackedBool("DoorR",self.DoorRight) Train.BD:TriggerInput("Set",not Train.RightDoorsOpen and not Train.LeftDoorsOpen) - Train.LeftDoorsOpening = self.DoorLeft - Train.RightDoorsOpening = self.DoorRight ---------------------------------------------------------------------------- if self.DriverValveDisconnectPrevious ~= Train.DriverValveDisconnect.Value then diff --git a/lua/metrostroi/systems/sys_81_717_puav.lua b/lua/metrostroi/systems/sys_81_717_puav.lua index 67a28ee..7d597cf 100644 --- a/lua/metrostroi/systems/sys_81_717_puav.lua +++ b/lua/metrostroi/systems/sys_81_717_puav.lua @@ -44,7 +44,6 @@ function TRAIN_SYSTEM:Initialize() self["3"] = 0 --Ход 3 self["8"] = 0 --Замещение электрического торможения self["16"] = 0 --Закрытие дверей - self["68"] = 1 --Открытие правых дверей хвостового вагона (у ПУАВ контроля нет) self["17"] = 0 -- Разрешение восстановления реле перегрузки self["19"] = 0 -- Разрешение замещения электрического торможения self["20"] = 0 -- Включение двигателей @@ -550,7 +549,7 @@ function TRAIN_SYSTEM:Think(dT) if self.AntiRolling and (self.AntiRollingCount<-(AntiRollingAccept and 0.35 or 5) or CurTime()-self.AntiRolling > 6) then local time = CurTime()-self.AntiRolling-6 - if self.KGR == 1 and speed < 0.1 and self.KRR3 <= 0 then + if self.KGR == 1 and speed < 0.1 then self.AntiRolling = false self.AntiRollingCount = false end @@ -583,7 +582,7 @@ function TRAIN_SYSTEM:Think(dT) if KD and self.KDTimer and CurTime()-self.KDTimer < 0.3 then KD=false end --print(self.KD)-- ,self.KD>0 , NoFreq == 0 , Vz > 20 , self.KSOT > 0 , self.VZP*self.VAV > 0 , self.KRT == 0 , self.KRR3 == 0) --Autodrive drive commands control - local CanDrive = KD and NoFreq == 0 and Vz > 20 and self.KSOT > 0 and self.VZP*self.VAV > 0 and self.KRT == 0 and self.KRR3 <= 0 and self.KDCycle -- and self.KGR > 0 or speed > 0.1) + local CanDrive = KD and NoFreq == 0 and Vz > 20 and self.KSOT > 0 and self.VZP*self.VAV > 0 and self.KRT == 0 and self.KRR3 == 0 and self.KDCycle -- and self.KGR > 0 or speed > 0.1) local commandDrive = math.max(self.CommandDrive or 0,self.KH3*3--[[ *(Vz > 40 and 3 or 2)--]] ,self.DriveCommand or 0) if self.KH3*self.VAV>0 and self.KDOffTimer then self.CommandDrive = 3--Vz > 40 and 3 or 2 @@ -638,17 +637,17 @@ function TRAIN_SYSTEM:Think(dT) end --if --[[ self.KH3 > 0 or--]] speed < 0.1 and (not self.OpenLeftTimer and not self.OpenLeftTimer) or self.KD < 1 then self.BrakeProgramm = false end --if self.KH3 > 0 then self.Station = false end - if self.K16 > 0 or self.OpenLeftTimer and CurTime()-self.OpenLeftTimer > 1 then self.OpenLeftTimer = false end - if self.K16 > 0 or self.OpenRightTimer and CurTime()-self.OpenRightTimer > 1 then self.OpenRightTimer = false end + if self.OpenLeftTimer and CurTime()-self.OpenLeftTimer > 1 then self.OpenLeftTimer = false end + if self.OpenRightTimer and CurTime()-self.OpenRightTimer > 1 then self.OpenRightTimer = false end if CanOpenLeft or CanOpenRight then self.CanOpen = true end if not CanOpen then self.CanOpen = false end if self.CanOpen then self:SetDoorMode("DO") else self:SetDoorMode("ZD") end - if CanOpenLeft and (self.KDL > 0 or self.OpenLeftTimer) then + if CanOpenLeft and (self.KDL > 0 or self.K16 == 0 and self.OpenLeftTimer) then self:SetDoorMode("DL") end - if CanOpenRight and (self.KDP > 0 or self.OpenRightTimer) then + if CanOpenRight and (self.KDP > 0 or self.K16 == 0 and self.OpenRightTimer) then self:SetDoorMode("DP") end diff --git a/lua/metrostroi/systems/sys_81_717lvz_panel.lua b/lua/metrostroi/systems/sys_81_717lvz_panel.lua index fb85167..3e75617 100644 --- a/lua/metrostroi/systems/sys_81_717lvz_panel.lua +++ b/lua/metrostroi/systems/sys_81_717lvz_panel.lua @@ -42,7 +42,7 @@ function TRAIN_SYSTEM:Initialize() self.Train:LoadSystem("R_ZS","Relay","Switch", {bass = true}) self.Train:LoadSystem("R_G","Relay","Switch", {bass = true}) self.Train:LoadSystem("R_UPO","Relay","Switch", {bass = true}) - self.Train:LoadSystem("R_VPR","Relay","Switch", {bass = true, normally_closed = true}) + self.Train:LoadSystem("R_VPR","Relay","Switch", {bass = true}) self.Train:LoadSystem("RC1","Relay","Switch",{ bass = true,normally_closed = true }) self.Train:LoadSystem("VRD","Relay","Switch",{ bass = true}) diff --git a/lua/metrostroi/systems/sys_81_718_bkbd.lua b/lua/metrostroi/systems/sys_81_718_bkbd.lua index 8bfd059..60d4184 100644 --- a/lua/metrostroi/systems/sys_81_718_bkbd.lua +++ b/lua/metrostroi/systems/sys_81_718_bkbd.lua @@ -18,12 +18,6 @@ function TRAIN_SYSTEM:Initialize() self.Train:LoadSystem("ALSCoil") - self.Train:LoadSystem("BIS_R11","Relay","ARS",{bass=true,bass_separate=true}) - self.Train:LoadSystem("BIS_R12","Relay","ARS",{bass=true,bass_separate=true,open_time=2.7}) - self.R11 = 0 - self.R12 = 0 - self.KRH = 0 - self.Train:LoadSystem("BIS200","ALS_ARS_BIS200") self.Train:LoadSystem("BLPM","ALS_ARS_BLPM") @@ -91,9 +85,7 @@ function TRAIN_SYSTEM:Think(dT) --Train.BIS_R0:TriggerInput("NoOpenTime",Train.BIS_R1.Value+(1-Train.BIS_R0.Value)) Train.BIS_R0:TriggerInput("NoOpenTime",(1-Train.BIS_R0.Value)+Train.BIS_R1.Value) - --Train.BIS_R0:TriggerInput("Set",(self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value))*Train.BIS200.R0) - Train.BIS_R0:TriggerInput("Set",self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value)) - Train.BSM_PR1:TriggerInput("Set",self.GE*Train.BIS_R1.Value) + Train.BIS_R0:TriggerInput("Set",(self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value))*Train.BIS200.R0) S["RVZ1"] = S["RVZ"]*Train.BIS_R0.Value*(1-Train.BIS_R1.Value) S["EK0"] = S["RVZ1"]*(1-Train.BSM_GE.Value) @@ -117,9 +109,6 @@ function TRAIN_SYSTEM:Think(dT) if EnableALS ~= ALS.Enabled then ALS:TriggerInput("Enable",EnableALS) end - Train.BSM_KRH:TriggerInput("Set",self.KRH + self.R11*Train.BIS_R11.Value*Train.BIS_R12.Value) - Train.BIS_R11:TriggerInput("Set",self.R11) - Train.BIS_R12:TriggerInput("Set",self.R12*(1-Train.BIS_R11.Value)) --FreqProtect --SR1,SR2 @@ -278,7 +267,7 @@ function TRAIN_SYSTEM:Think(dT) Train.BUM_EK:TriggerInput("Set",S["EK"]) Train.BUM_EK1:TriggerInput("Set",S["EK"]) Train.BUM_EK:TriggerInput("OpenTime",S["EKt"]) - Train.BUM_EK1:TriggerInput("OpenTime",S["EKt"]) + Train.BUM_EK:TriggerInput("OpenTime",S["EKt"]) self.EPK = self.GE*Train.BUM_EK.Value*Train.BUM_EK1.Value Train.BUM_PEK:TriggerInput("Set",self.EPK) diff --git a/lua/metrostroi/systems/sys_81_718_buv.lua b/lua/metrostroi/systems/sys_81_718_buv.lua index 1f6876e..088bd42 100644 --- a/lua/metrostroi/systems/sys_81_718_buv.lua +++ b/lua/metrostroi/systems/sys_81_718_buv.lua @@ -37,9 +37,6 @@ function TRAIN_SYSTEM:Initialize() self.OTK=0;self.RP=0;self.PROV=0 --МЛУА self.SS = 0 - - self.ISet = 0 - self.PTTIState = 0 end function TRAIN_SYSTEM:Inputs() @@ -119,10 +116,8 @@ function TRAIN_SYSTEM:Think() if self.RP > 0 then self.O75V = 1 end --Управление ЛК и ПТТИ if disableScheme>0 or Train.PTTI.Zero then - if (self.IKX+self.IKT) > 0 and not self.OffTimer then self.OffTimer = CurTime() end - if self.OffTimer and (self.IKX+self.IKT) == 0 and CurTime()-self.OffTimer > 0.3 then self.OffTimer = false end - self.OVP = self.OffTimer and 1 or 0 - self.ONZ = self.OffTimer and 1 or 0 + self.OVP = 0 + self.ONZ = 0 self.OLK = 0 self.OKX = 0 self.OKT = 0 @@ -161,7 +156,6 @@ function TRAIN_SYSTEM:Think() self.PTTIState = 0 elseif self.IKX > 0 and Drive then self.PTTIState = 1 - self.BlockRV = self.IU2 == 0 self.FreqBlock = self.Shunt and 1 or 0--(((self.ITP1+self.ITP2+self.ITP3+self.ITP4) > 0 and not self.Shunt) and 0 or 1) self.ISet = ((self.ITP1+self.ITP2+self.ITP3+self.ITP4) > 0 and self.IM == 0) and 150+self.IU1*(90+loadR/2)+self.IU2*(90+loadR/2) or 150 elseif self.IKX > 0 and DriveEmer then @@ -249,8 +243,6 @@ function TRAIN_SYSTEM:Think() self.ORMT = 0 --805 end else - self.ISet = 0 - self.PTTIState = 0 --Входные сигналы --self.IVP=0;self.INZ=0;self.IVR=0;self.INR=0 diff --git a/lua/metrostroi/systems/sys_81_718_buvs.lua b/lua/metrostroi/systems/sys_81_718_buvs.lua index 22ef05b..7a71eb9 100644 --- a/lua/metrostroi/systems/sys_81_718_buvs.lua +++ b/lua/metrostroi/systems/sys_81_718_buvs.lua @@ -13,7 +13,6 @@ function TRAIN_SYSTEM:Initialize() self.KM4 = 0 --Реле контроля наличия тормозного тока self.KV1 = 0 - self.KV2 = 0 end function TRAIN_SYSTEM:Inputs() @@ -21,7 +20,7 @@ function TRAIN_SYSTEM:Inputs() end function TRAIN_SYSTEM:Outputs() - return { "KV1","KV2" } + return { "KM1","KM2" } end function TRAIN_SYSTEM:TriggerInput(name,value) diff --git a/lua/metrostroi/systems/sys_81_718_electric.lua b/lua/metrostroi/systems/sys_81_718_electric.lua index 74b238e..d091893 100644 --- a/lua/metrostroi/systems/sys_81_718_electric.lua +++ b/lua/metrostroi/systems/sys_81_718_electric.lua @@ -356,7 +356,7 @@ function TRAIN_SYSTEM:SolveControlCircuits(Train,dT) --352-353-354 S[354] =(1-BKVA.KM4) - Train.U1:TriggerInput("Set", T[32]*Train.SF17.Value*S[354]) + Train.U1:TriggerInput("Set", T[32]*S[354]) --8.2.2 --[[ S[533] = S[369]*Train.SB3.Value @@ -509,11 +509,8 @@ function TRAIN_SYSTEM:SolveControlCircuits(Train,dT) Train:WriteTrainWire(1,S[501]) Train.BSM_KRT:TriggerInput("Set",(T[2]+T[12])*RC) - --Train.BSM_KRH:TriggerInput("Set",(T[1]+T[55])*RC) - BKBD.KRH = (T[1]+T[55])*RC - BKBD.R11 = T[35] - BKBD.R12 = (T[45]+T[54])*RC - Train.BSM_KRO:TriggerInput("Set",BKBD.R12)--(T[87]+S["7Ga"]*KV["7GA-RC27"]+S["14a"]*Train.A42.Value*(1-Train.KRP.Value))*(1-Train.BSM_KRH.Value)) + Train.BSM_KRH:TriggerInput("Set",(T[1]+T[55])*RC) + Train.BSM_KRO:TriggerInput("Set",(T[45]+T[54])*RC)--(T[87]+S["7Ga"]*KV["7GA-RC27"]+S["14a"]*Train.A42.Value*(1-Train.KRP.Value))*(1-Train.BSM_KRH.Value)) --S[649] = S[326]*(1-Train.SP2.Value) Panel.AVU = S[326]*(1-Train.SP2.Value)--S[649] @@ -559,8 +556,8 @@ function TRAIN_SYSTEM:SolveControlCircuits(Train,dT) --14.1. Ходовые режимы основного управления. Страница 32-33 Train.KMR1:TriggerInput("Set",BUV.OVP*(1-Train.KMR2.Value)*S[314]) Train.KMR2:TriggerInput("Set",BUV.ONZ*(1-Train.KMR1.Value)*S[314]) - --BUV.IRV = S[314]*Train.KMR1.Value - --BUV.IRN = S[314]*Train.KMR2.Value + BUV.IRV = S[314]*Train.KMR1.Value + BUV.IRN = S[314]*Train.KMR2.Value BUV.IRV = S[314]*Train.KMR1.Value BUV.IRN = S[314]*Train.KMR2.Value diff --git a/lua/metrostroi/systems/sys_81_718_pneumatic.lua b/lua/metrostroi/systems/sys_81_718_pneumatic.lua index e0df08f..b02a48d 100644 --- a/lua/metrostroi/systems/sys_81_718_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_718_pneumatic.lua @@ -90,6 +90,7 @@ function TRAIN_SYSTEM:Initialize(parameters) self.Train:LoadSystem("AirDistributorDisconnect","Relay","Switch") --УАВА self.Train:LoadSystem("UAVA","Relay","Switch",{ bass = true}) + self.Train:LoadSystem("UAVAContact","Relay","Switch") self.Train:LoadSystem("UAVAC","Relay","",{normally_closed=true,bass=true}) --Стояночный тормоз @@ -123,8 +124,6 @@ function TRAIN_SYSTEM:Initialize(parameters) self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} local start = math.Rand(0.6,0.8) -- 0.6-1 self.DoorSpeedMain = -math.Rand(start,math.Rand(start+0.1,start+0.2)) @@ -354,7 +353,7 @@ function TRAIN_SYSTEM:Think(dT) end -- 013: 7 0.0 Atm - if (self.RealDriverValvePosition == 7) and BLDisconnect then + if (self.RealDriverValvePosition == 7) and BLDisconnect and TLDisconnect then self:equalizePressure(dT,"BrakeLinePressure", 0.0, pr_speed) end trainLineConsumption_dPdT = trainLineConsumption_dPdT + math.max(0,self.BrakeLinePressure_dPdT) @@ -399,12 +398,6 @@ function TRAIN_SYSTEM:Think(dT) if (Train.UAVA.Blocked>0) ~= UAVABlocked then Train.UAVA:TriggerInput("Block",UAVABlocked and 1 or 0) end - - local UAVACBlocked = self.EmergencyValve and not self.EmergencyValveDisable - if (Train.UAVAC.Blocked>0) ~= UAVACBlocked then - Train.UAVAC:TriggerInput("Block",UAVACBlocked and 1 or 0) - end - Train:SetPackedRatio("EmergencyValve_dPdT", -leak/wagc) local leak = 0 @@ -482,6 +475,11 @@ function TRAIN_SYSTEM:Think(dT) Train:PlayOnce("PN2end","stop") end + if Train.UAVAContact.Value > 0.5 and Train.UAVAC.Value < 0.5 then + Train.UAVAC:TriggerInput("Set",1) + Train:PlayOnce("uava_reset","bass",1) + end + --Parking brake simulation local PBPressure = math.Clamp(self.TrainLinePressure/5,0,1)*2.7 if Train.ParkingBrake.Value == 0 then @@ -552,29 +550,14 @@ function TRAIN_SYSTEM:Think(dT) if self.U2 ~= Train.U2.Value then self.U2 = Train.U2.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.U2 > 0 and not Train.LeftDoorsOpen then Train:PlayOnce("vdol_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.U3 ~= Train.U3.Value then self.U3 = Train.U3.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.U3 > 0 and not Train.RightDoorsOpen then Train:PlayOnce("vdop_loud"..self.VDLoudID,"bass",self.VDLoud) end end if self.U1 ~= Train.U1.Value then self.U1 = Train.U1.Value self:equalizePressure(dT,"TrainLinePressure", 0.0, 0.3) - if self.VDLoud and self.U1 > 0 and (Train.RightDoorsOpen or Train.LeftDoorsOpen) then Train:PlayOnce("vzd_loud"..self.VDLoudID,"bass",self.VDLoud) end - end - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false end @@ -585,9 +568,9 @@ function TRAIN_SYSTEM:Think(dT) for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT/(self.DoorLeft and self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT/(self.DoorRight and self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + ((self.LeftDoorDir[i]/self.LeftDoorSpeed[i])*dT),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + ((self.RightDoorDir[i]/self.RightDoorSpeed[i])*dT),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end if not Train.LeftDoorsOpen and self.LeftDoorState[i] > 0 then Train.LeftDoorsOpen = true @@ -601,14 +584,6 @@ function TRAIN_SYSTEM:Think(dT) end Train:SetPackedRatio("DoorL"..i,self.LeftDoorState[i]) Train:SetPackedRatio("DoorR"..i,self.RightDoorState[i]) - if self.LeftDoorStuck[i] and (self.DoorLeft or type(self.LeftDoorStuck[i]) == "number" and CurTime()-self.LeftDoorStuck[i] > 0) then - self.LeftDoorStuck[i] = false - end - if self.RightDoorStuck[i] and (self.DoorRight or type(self.RightDoorStuck[i]) == "number" and CurTime()-self.RightDoorStuck[i] > 0) then - self.RightDoorStuck[i] = false - end - Train:SetPackedBool("DoorLS"..i,self.LeftDoorStuck[i]) - Train:SetPackedBool("DoorRS"..i,self.RightDoorStuck[i]) end if openL and not self.OpenWaitL then self.OpenWaitL = CurTime() end if openR and not self.OpenWaitR then self.OpenWaitR = CurTime() end diff --git a/lua/metrostroi/systems/sys_81_718_ptti.lua b/lua/metrostroi/systems/sys_81_718_ptti.lua index 371726b..0c753e5 100644 --- a/lua/metrostroi/systems/sys_81_718_ptti.lua +++ b/lua/metrostroi/systems/sys_81_718_ptti.lua @@ -23,7 +23,6 @@ function TRAIN_SYSTEM:Initialize() self.RNState = 0 self.RNResistance = 1e9 self.RVState = 0.0 - self.BlockRV = false self.RVResistance = 1e9 self.SubIterations = 16 end @@ -86,7 +85,7 @@ function TRAIN_SYSTEM:Think(dT,iter) if BUV.FreqBlock > 0 and T > 0 then self.FreqState = 1/3 self.FreqStart = CurTime() - T = 100 + T = 50 elseif T > 0 and self.FreqStart and self.FreqStart ~= true then self.FreqState = 1/3+(math.max(0,math.floor((CurTime()-self.FreqStart)/2*12)/12))*(2/3) --print(math.floor((CurTime()-self.FreqStart)/1.5*12)) @@ -141,15 +140,18 @@ function TRAIN_SYSTEM:Think(dT,iter) else self.T = self.T+(T*(0.95+math.random()*0.1)-self.T)*dT*1.5--3 end - self:SolveRV(Train,self.T,dT,I,self.State < 0,self.State == 1 and Train.BUV.BlockRV) - self:SolveRN(Train,self.T,dT,I,self.State < 0,self.State == 1 and T <= 150) + --if I > T then print(self.RNState,self.RVState,I,T,self.PrepareElectric) end + + self:SolveRV(Train,self.T,dT,I,self.State < 0) + self:SolveRN(Train,self.T,dT,I,self.State < 0) end -function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) +function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake) -- General state local Active = self.RN > 0--and T > 0 --local I = math.abs(Train.Electric.I13 + Train.Electric.I24)/2 self.RNPrevCurrent = Current + local rnd = 30+math.random()*20 if self.SpeedUp then rnd = brake and 25+((Train.Engines.Speed/80)^4)*100 or 25 @@ -164,9 +166,9 @@ function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) if T == 0 then self.RNState = math.max(0,self.RNState-5*dT*sign) elseif I > T then - self.RNState = math.max(0,math.min(start and 0.1 or 1,self.RNState-dC*1/rnd*dT*sign)) + self.RNState = math.max(0,math.min(1,self.RNState-dC*1/rnd*dT*sign)) else - self.RNState = math.max(0,math.min(start and 0.1 or 1,self.RNState+dC*1/rnd*dT*sign)) + self.RNState = math.max(0,math.min(1,self.RNState+dC*1/rnd*dT*sign)) end if (not brake and self.RNState == 1 or brake and self.RNState == 0) and self.RN > 0 and not self.RV then self.RV = true @@ -175,9 +177,9 @@ function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) end end end -function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) +function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake) -- General state - local Active = self.RV and (not block or self.RVState > 0) + local Active = self.RV --local I = math.abs(Train.Electric.I13 + Train.Electric.I24)/2 self.RNPrevCurrent = Current @@ -194,9 +196,10 @@ function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) if Active then local sign = brake and -1 or 1 -- Generate control signal + local dC = math.min(math.max(math.abs(T-I),1, 300)) if not self.PrepareElectric then - if T == 0 or block then + if T == 0 then self.RVState = math.max(0,self.RVState-5*dT*sign) elseif brake and I T then self.RVState = math.max(0,math.min(1,self.RVState-dC*1/rnd*dT*sign)) @@ -244,6 +247,10 @@ function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) self.RNState = brake and 0.01 or 0.99 end end + --[[ + if Train:EntIndex() == 1275 and iter%4 == 0 then + print(Format("[%04d]RV:% 3.01f/% 3.01f A % 3d%% %.2f+%.2f=%.2f % 3d km\\h F=%.02f",Train:EntIndex(),Current,T,self.RVState*100,A,B,C,Train.Speed,TargetField)) + end]] end -- Set resistance self.RVResistance = Resistance + 1e9 * (Active and 0 or 1) diff --git a/lua/metrostroi/systems/sys_81_718_route_number.lua b/lua/metrostroi/systems/sys_81_718_route_number.lua index 7002644..8d4e818 100644 --- a/lua/metrostroi/systems/sys_81_718_route_number.lua +++ b/lua/metrostroi/systems/sys_81_718_route_number.lua @@ -10,11 +10,7 @@ if TURBOSTROI then return end function TRAIN_SYSTEM:Initialize(parameter) self.Max = parameter or 2 - if not TURBOSTROI then - local num = IsValid(self.Train.Owner) and (tonumber(self.Train.Owner:GetInfo("metrostroi_route_number","61")) or 0) - self.RouteNumber = Format("%03d",num*(10^(3-self.Max))%1000) - self.Train:SetNW2String("RouteNumber",self.RouteNumber) - end + self.RouteNumber = "000" end function TRAIN_SYSTEM:Outputs() @@ -58,8 +54,7 @@ else if not scents["route1"] or self.Reloaded then return end self.Reloaded = true - local rn = Format("%03d",self.RouteNumber) - print(self.RouteNumber) + local rn = Format("%02d",self.RouteNumber) for i=1,2 do if IsValid(scents["route"..i]) then scents["route"..i]:SetSkin(rn[i]) diff --git a/lua/metrostroi/systems/sys_81_71_announcer.lua b/lua/metrostroi/systems/sys_81_71_announcer.lua index e189a0f..e0baeff 100644 --- a/lua/metrostroi/systems/sys_81_71_announcer.lua +++ b/lua/metrostroi/systems/sys_81_71_announcer.lua @@ -38,9 +38,9 @@ if SERVER then if not Metrostroi[self.AnnTable] then return end for k, v in pairs(tbl) do - local tbl = Metrostroi[self.AnnTable][self.Train:GetNW2Int("Announcer", 1)] or Metrostroi[self.AnnTable][1] + local tbl = Metrostroi[self.AnnTable][self.Train:GetNW2Int("Announcer", 1)] if v~=-2 then - table.insert(self.Schedule, tbl and tbl[v] or v) + table.insert(self.Schedule, tbl[v] or v) else self:Reset() end @@ -115,14 +115,13 @@ if SERVER then self.Train.WagonList[i]:SetNW2Int("AnnouncerBuzz", -1) end elseif tbl == "buzz_start" then - local bpsn = self.Train:GetNW2Int("BPSNType",13) for i = 1, #self.Train.WagonList do - self.Train.WagonList[i]:SetNW2Int("AnnouncerBuzz", (bpsn == 1 or bpsn == 2 or bpsn == 8) and 2 or 1) + self.Train.WagonList[i]:SetNW2Bool("AnnouncerBuzz", true) end self.BuzzWork = true elseif tbl == "buzz_end" then for i = 1, #self.Train.WagonList do - self.Train.WagonList[i]:SetNW2Int("AnnouncerBuzz", -1) + self.Train.WagonList[i]:SetNW2Bool("AnnouncerBuzz", false) end self.BuzzWork = false elseif type(tbl) == "table" then @@ -148,10 +147,10 @@ else if train.AnnouncerPositions then for k, v in ipairs(train.AnnouncerPositions) do - train:PlayOnceFromPos("announcer" .. k, snd, train.OnAnnouncer and train:OnAnnouncer(v[3],k) or v[3] or 1, 1, v[2] or 400, 1e9, v[1]) + train:PlayOnceFromPos("announcer" .. k, snd, v[3] or 1, 1, v[2] or 400, 1e9, v[1]) end else - train:PlayOnceFromPos("announcer", snd, train.OnAnnouncer and train:OnAnnouncer(1) or 1, 1, 600, 1e9, Vector(0, 0, 0)) + train:PlayOnceFromPos("announcer", snd, 1, 1, 600, 1e9, Vector(0, 0, 0)) end end) diff --git a/lua/metrostroi/systems/sys_81_71_asnp.lua b/lua/metrostroi/systems/sys_81_71_asnp.lua index d8cb07f..40eb3c5 100644 --- a/lua/metrostroi/systems/sys_81_71_asnp.lua +++ b/lua/metrostroi/systems/sys_81_71_asnp.lua @@ -101,11 +101,6 @@ if CLIENT then render.PopRenderTarget() end function TRAIN_SYSTEM:PrintText(x,y,text,inverse) - if text == "II" then - self:PrintText(x-0.2,y,"I",inverse) - self:PrintText(x+0.2,y,"I",inverse) - return - end local str = {utf8.codepoint(text,1,-1)} for i=1,#str do local char = utf8.char(str[i]) @@ -135,7 +130,7 @@ if CLIENT then if State == -2 then - self:PrintText(0,0,"Map not supported") + self:PrintText(0,0,"Ошибка памяти") self:PrintText(0,1,"Карта не поддерживается") return end @@ -146,7 +141,7 @@ if CLIENT then end if State > 1 and not Metrostroi.ASNPSetup then self:PrintText(0,0,"Client error") - self:PrintText(0,1,"No announcer at client") + self:PrintText(0,1,"ASNPSetup nil") return end if State == 2 then @@ -154,19 +149,29 @@ if CLIENT then local sel = Train:GetNW2Int("ASNP:Selected",0) self:PrintText(0,0,"Номер маршрута:") if sel == 2 then - self:PrintText(4,1,"\"+-\" отм \"MENU\" ввод") + local timer = math.ceil(RealTime()%7.5/1.5) + if timer == 1 then self:PrintText(4,1,"Для подтверждения") + elseif timer == 2 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") + elseif timer == 3 then self:PrintText(6,1,"Для возврата к") + elseif timer == 4 then self:PrintText(5,1,"предыдущей цифре") + elseif timer == 5 then self:PrintText(4,1,"нажмите \"+\" или \"-\"") end else - self:PrintText(4,1,"\"+-\" выб \"MENU\" след") + local timer = math.ceil(RealTime()%7.5/1.5) + if timer == 1 then self:PrintText(5,1,"Для ввода номера") + elseif timer == 2 then self:PrintText(4,1,"нажмите \"+\" или \"-\"") + elseif timer == 3 then self:PrintText(6,1,"Для перехода к") + elseif timer == 4 then self:PrintText(5,1,"следующей цифре") + elseif timer == 5 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") end end - if sel~=0 or RealTime()%1 > 0.5 then self:PrintText(0,1,RouteNumber[1]) end - if sel~=1 or RealTime()%1 > 0.5 then self:PrintText(1,1,RouteNumber[2]) end + self:PrintText(0,1,RouteNumber[1],sel==0 and RealTime()%1 > 0.5) + self:PrintText(1,1,RouteNumber[2],sel==1 and RealTime()%1 > 0.5) end local stbl = Metrostroi.ASNPSetup and Metrostroi.ASNPSetup[Train:GetNW2Int("Announcer",1)] if State > 2 and not stbl then self:PrintText(0,0,"Client error") - self:PrintText(0,1,"No line at client") + self:PrintText(0,1,"ASNPSetup[ann] nil") return end @@ -174,17 +179,13 @@ if CLIENT then local Line = self.Train:GetNW2Int("ASNP:Line",1) local ltbl = stbl[Line] local St,En = ltbl[1],ltbl[#ltbl] - self:PrintText(0,0,ltbl.Loop and "Маршрут (кол)" or "Маршрут") - self:PrintText(20,0,"-") - if RealTime()%0.8 > 0.4 then - self:PrintText(17,0,Format("%03d",St[1])) - self:PrintText(21,0,Format("%03d",En[1])) - end - local timer = math.ceil(RealTime()%6/1.5) + self:PrintText(0,0,"Маршрут"..(ltbl.Loop and " ()" or "")) + local timer = math.ceil(RealTime()%7.5/1.5) if timer == 1 then self:PrintText(0,1,(ltbl.Name or "Нет названия")) - elseif timer == 2 then self:PrintText(0,1,"От:") self:PrintText(3,1,St[2]) - elseif timer == 3 then self:PrintText(0,1,"До:") self:PrintText(3,1,En[2]) - elseif timer == 4 then self:PrintText(0,1,"\"+-\" выбор \"MENU\" ввод") end + elseif timer == 2 then self:PrintText(0,1,"От:");self:PrintText(3,1,St[2]);self:PrintText(21,1,tostring(St[1])) + elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) + elseif timer == 4 then self:PrintText(4,1,"Для подтверждения") + elseif timer == 5 then self:PrintText(6,1,"нажмите \"МЕНЮ\"") end end if State == 4 then @@ -193,18 +194,11 @@ if CLIENT then if ltbl.Loop then local Path = Train:GetNW2Bool("ASNP:Path") self:PrintText(0,0,"Путь") - self:PrintText(0,1,Path and "II" or "I") - self:PrintText(2,1,Path and "(второй)" or "(первый)") - if RealTime()%0.8 > 0.4 then self:PrintText(18,0,Train:GetNW2Bool("ASNP:Path") and "II" or "I") end - self:PrintText(20,0,"-") + self:PrintText(0,1,Path and "II (второй)" or " I (первый)") else local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] - self:PrintText(0,0,"Начальная ст.") + self:PrintText(0,0,"Начальная станция") self:PrintText(0,1,St[1]..":"..St[2]) - self:PrintText(20,0,"-") - if RealTime()%0.8 > 0.4 then - self:PrintText(17,0,Format("%03d",St[1])) - end end end @@ -214,32 +208,16 @@ if CLIENT then if ltbl.Loop then local station = Train:GetNW2Int("ASNP:LastStation",1) local En = ltbl[station] - self:PrintText(0,0,"Конечная ст.") + self:PrintText(0,0,"Конечная станция") if station == 0 then self:PrintText(0,1," ():".."Кольцевой") else self:PrintText(0,1,En[1]..":"..En[2]) end - local Path = Train:GetNW2Bool("ASNP:Path") and "II" or "I" - self:PrintText(18,0,Path) - self:PrintText(20,0,"-") - if RealTime()%0.8 > 0.4 then - if En then - self:PrintText(21,0,Format("%03d",En[1])) - else - self:PrintText(22,0,Path) - end - end else - local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] local En = ltbl[Train:GetNW2Int("ASNP:LastStation",1)] self:PrintText(0,0,"Конечная станция") self:PrintText(0,1,En[1]..":"..En[2]) - self:PrintText(20,0,"-") - self:PrintText(17,0,Format("%03d",St[1])) - if RealTime()%0.8 > 0.4 then - self:PrintText(21,0,Format("%03d",En[1])) - end end end @@ -248,29 +226,36 @@ if CLIENT then local ltbl = stbl[Line] local Path = Train:GetNW2Bool("ASNP:Path") self:PrintText(0,0,"Проверьте данные") - self:PrintText(17,0,Format("%02d",Line)) - self:PrintText(20,0,Format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0))) - self:PrintText(23,0,Path and "II" or "I") + self:PrintText(18,0,Format("%02d",Line)) + self:PrintText(22,0,Path and "II" or "I") + self:PrintText(22,1,Format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0))) if ltbl.Loop then local station = Train:GetNW2Int("ASNP:LastStation",1) local En = ltbl[station] - --self:PrintText(20,0,"()") - local timer = math.ceil(RealTime()%4.5/1.5) - if timer == 1 then self:PrintText(0,1,"(кол) "..(ltbl.Name or "Нет названия")) + self:PrintText(20,0,"()") + local timer = math.ceil(RealTime()%9/1.5) + if timer == 1 then self:PrintText(0,1,"()"..(ltbl.Name or "Нет названия")) elseif timer == 2 and station > 0 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 2 and station == 0 then self:PrintText(0,1,"Без конечной") - elseif timer == 3 then self:PrintText(0,1,"\"+-\" отмена \"MENU\" ок") end + elseif timer == 2 and station == 0 then self:PrintText(0,1,"До:Кольцевой") + --elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) + elseif timer == 3 then self:PrintText(2,1,"Для подтверждения") + elseif timer == 4 then self:PrintText(4,1,"нажмите \"МЕНЮ\"") + elseif timer == 5 then self:PrintText(6,1,"Для отмены") + elseif timer == 6 then self:PrintText(1,1,"нажмите \"+\" или \"-\"") end else local St = ltbl[Train:GetNW2Int("ASNP:FirstStation",1)] local En = ltbl[Train:GetNW2Int("ASNP:LastStation",1)] if Path then local StT = En;En=St;St=StT end - local timer = math.ceil(RealTime()%6/1.5) + local timer = math.ceil(RealTime()%10.5/1.5) if timer == 1 then self:PrintText(0,1,(ltbl.Name or "Нет названия")) elseif timer == 2 then self:PrintText(0,1,"От:");self:PrintText(3,1,St[2]);self:PrintText(21,1,tostring(St[1])) elseif timer == 3 then self:PrintText(0,1,"До:");self:PrintText(3,1,En[2]);self:PrintText(21,1,tostring(En[1])) - elseif timer == 4 then self:PrintText(0,1,"\"+-\" выб \"MENU\" ввод") end + elseif timer == 4 then self:PrintText(2,1,"Для подтверждения") + elseif timer == 5 then self:PrintText(4,1,"нажмите \"МЕНЮ\"") + elseif timer == 6 then self:PrintText(6,1,"Для отмены") + elseif timer == 7 then self:PrintText(1,1,"нажмите \"+\" или \"-\"") end end end if State == 7 then @@ -300,13 +285,7 @@ if CLIENT then -- self:PrintText(0,1,"<<< КОНЕЧАЯ >>>") else --self:PrintText(0,1,string.rep("I",Path and 2 or 1)) - if Path then - self:PrintText(-0.2,1,"I") - self:PrintText( 0.2,1,"I") - else - self:PrintText(0,1,"I") - end - self:PrintText(2,1,string.format("% 2d.",Train:GetNW2Int("ASNP:RouteNumber",0))) + self:PrintText(0,1,string.format("%02d",Train:GetNW2Int("ASNP:RouteNumber",0))) if ltbl.Loop and Train:GetNW2Int("ASNP:LastStation",1) == 0 then self:PrintText(6,1,"Кольцевой") else @@ -432,7 +411,7 @@ function TRAIN_SYSTEM:Play(dep,not_last) self:AnnQueue(message) - --local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line][self.Station] + local stbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line][self.Station] if self.LastStation > 0 and not dep and self.Station ~= last and tbl[last].not_last and (stbl.have_inrerchange or math.abs(last-self.Station) <= 3) then local ltbl = tbl[last] if stbl.not_last_c then @@ -512,16 +491,14 @@ end function TRAIN_SYSTEM:Trigger(name,value) local tbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)] - if (name == "R_Program2" or name == "R_Program2H") and value then + if (name == "R_Program2" or name == "R_Program2H") and value and self.LineOut==0 then if self.State ~= 7 and tbl[self.Line] and tbl[self.Line].spec_last then - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end self:AnnQueue{"click1","buzz_start"} self:AnnQueue(-1) self:AnnQueue(tbl[self.Line].spec_last) self:AnnQueue{"buzz_end","click2"} elseif self.State == 7 then local ltbl = Metrostroi.ASNPSetup[self.Train:GetNW2Int("Announcer",1)][self.Line] - local stbl = ltbl[self.Station] local last,lastst if self.Arrived then if tbl.Loop then @@ -532,26 +509,15 @@ function TRAIN_SYSTEM:Trigger(name,value) lastst = self.Station == last and ltbl[last].arrlast end end - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end if lastst and not ltbl[last].ignorelast then self:AnnQueue{"click1","buzz_start"} self:AnnQueue(-1) - if stbl.spec_last_c then - local patt = stbl.spec_last_c[self.Path and 2 or 1] - self:AnnQueue(ltbl[patt] or ltbl.spec_last) - else - self:AnnQueue(ltbl.spec_last) - end + self:AnnQueue(ltbl.spec_last) self:AnnQueue{"buzz_end","click2"} else self.StopMessage = not self.StopMessage self:AnnQueue{"click1","buzz_start"} - if stbl.spec_wait_c then - local patt = stbl.spec_wait_c[self.Path and 2 or 1] - self:AnnQueue((ltbl[patt] or ltbl.spec_wait)[self.StopMessage and 1 or 2]) - else - self:AnnQueue(ltbl.spec_wait[self.StopMessage and 1 or 2]) - end + self:AnnQueue(ltbl.spec_wait[self.StopMessage and 1 or 2]) self:AnnQueue{"buzz_end","click2"} end end @@ -615,10 +581,8 @@ function TRAIN_SYSTEM:Trigger(name,value) end if name == "R_ASNPMenu" then self.State = 5 - self.LastStation = 1 - while stbl[self.LastStation] and not stbl[self.LastStation].arrlast or self.LastStation == self.FirstStation do - self.LastStation = self.LastStation - 1 - if self.LastStation < 1 then self.LastStation = #stbl end + for i=#stbl,1,-1 do + if i ~= self.FirstStation and stbl[i].arrlast then self.LastStation = i;break end end end elseif self.State == 4 and value and tbl[self.Line].Loop then --Кольцевой @@ -704,11 +668,10 @@ function TRAIN_SYSTEM:Trigger(name,value) end if name == "R_ASNPMenu" then if self.FirstStation ~= 0 then - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end if self.Path then - self:AnnQueue{"click1","buzz_start","announcer_ready",stbl[self.LastStation].arrlast[3],stbl[self.FirstStation].arrlast[3],"buzz_end","click2"} + self.Train.Announcer:Queue{"click1","buzz_start","announcer_ready",stbl[self.LastStation].arrlast[3],stbl[self.FirstStation].arrlast[3],"buzz_end","click2"} else - self:AnnQueue{"click1","buzz_start","announcer_ready",stbl[self.FirstStation].arrlast[3],stbl[self.LastStation].arrlast[3],"buzz_end","click2"} + self.Train.Announcer:Queue{"click1","buzz_start","announcer_ready",stbl[self.FirstStation].arrlast[3],stbl[self.LastStation].arrlast[3],"buzz_end","click2"} end end self.State = 7 @@ -724,8 +687,7 @@ function TRAIN_SYSTEM:Trigger(name,value) end if name == "R_ASNPDown" and value then self:Next() end if name == "R_ASNPUp" and value then self:Prev() end - if (name == "R_Program1" or name == "R_Program1H") and value then - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end + if (name == "R_Program1" or name == "R_Program1H") and value and self.LineOut==0 then if self.Arrived and self.Station == (self.Path and self.FirstStation or self.LastStation) then self:Zero() end @@ -752,10 +714,9 @@ function TRAIN_SYSTEM:Think() local Train = self.Train local VV = Train.ASNP_VV local Power = VV.Power > 0.5 - if not Power and self.State ~= 0 then + if not Power and self.ASNPState ~= 0 then self.State = 0 self.ASNPTimer = nil - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end end if Power and self.State == 0 then self.State = -1 @@ -782,10 +743,7 @@ function TRAIN_SYSTEM:Think() end if self.ReturnTimer and CurTime()-self.ReturnTimer > 0.7 then - if self.State == 7 then - self.State = 6 - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click2"} end - end + if self.State == 7 then self.State = 6 end self.ReturnTimer = nil end Train:SetNW2Int("ASNP:State",self.State) diff --git a/lua/metrostroi/systems/sys_81_71_route_number.lua b/lua/metrostroi/systems/sys_81_71_route_number.lua index 61e0681..8f84892 100644 --- a/lua/metrostroi/systems/sys_81_71_route_number.lua +++ b/lua/metrostroi/systems/sys_81_71_route_number.lua @@ -10,11 +10,7 @@ if TURBOSTROI then return end function TRAIN_SYSTEM:Initialize(parameter) self.Max = parameter or 2 - if not TURBOSTROI then - local num = IsValid(self.Train.Owner) and (tonumber(self.Train.Owner:GetInfo("metrostroi_route_number","61")) or 0) - self.RouteNumber = Format("%03d",num*(10^(3-self.Max))%1000) - self.Train:SetNW2String("RouteNumber",self.RouteNumber) - end + self.RouteNumber = "000" end function TRAIN_SYSTEM:Outputs() diff --git a/lua/metrostroi/systems/sys_81_71_rri.lua b/lua/metrostroi/systems/sys_81_71_rri.lua index 3d49b0b..2d91d7a 100644 --- a/lua/metrostroi/systems/sys_81_71_rri.lua +++ b/lua/metrostroi/systems/sys_81_71_rri.lua @@ -85,17 +85,13 @@ if CLIENT then local selected = Train:GetNW2Int("RRI:Selected",0) draw.SimpleText("▪","Metrostroi_Arial20",5,5+selected*10,Color(100,200,50),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText(Format("Ln [%d] %s %s",line,rriL.NameEn or rriL.Name,rriL.Loop and "Loop" or ""),"Metrostroi_Arial13",10,5,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - if rriL.Loop then - draw.SimpleText(Format("Path: %s",Train:GetNW2Bool("RRI:Path",false) and "II" or "I"),"Metrostroi_Arial13",10,15,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - elseif firststation then + draw.SimpleText(Format("Ln [%d] %s",line,rriL.NameEn or rriL.Name),"Metrostroi_Arial13",10,5,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) + if firststation then draw.SimpleText(Format("FSt[%d] %s",firststation[1],firststation[3] or firststation[2]),"Metrostroi_Arial13",10,15,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) else draw.SimpleText("FSt ERR","Metrostroi_Arial13",10,15,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) end - if Train:GetNW2Int("RRI:LastStation",-1) == 0 then - draw.SimpleText("LSt[()] Loop","Metrostroi_Arial13",10,25,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - elseif laststation then + if laststation then draw.SimpleText(Format("LSt[%d] %s",laststation[1],laststation[3] or laststation[2]),"Metrostroi_Arial13",10,25,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) else draw.SimpleText("LSt ERR","Metrostroi_Arial13",10,25,Color(200,100,50),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) @@ -229,28 +225,23 @@ end function TRAIN_SYSTEM:Play() local message local tbl = self.CurrentTable[self.Line] - if not tbl then error(Format("Line %d not found in announcer %d",self.Line,self.Announcer)) end local stbl = tbl[self.Station] local last = self.LastStation local lastst - local path + local path = self.FirstStation > self.LastStation if tbl.Loop then - path = self.Path lastst = not self.Arrived and self.LastStation > 0 and self.Station == last and tbl[last].arrlast else - path = self.FirstStation > self.LastStation lastst = not self.Arrived and self.Station == last and tbl[last].arrlast end - path = path and 2 or 1 - if self.Arrived then - message = stbl.dep[path] + message = stbl.dep[path and 2 or 1] else if lastst then - message = stbl.arrlast[path] + message = stbl.arrlast[path and 2 or 1] else - message = stbl.arr[path] + message = stbl.arr[path and 2 or 1] end end self:AnnQueue{0.5,"click_start","buzz_start",0.6} @@ -258,13 +249,7 @@ function TRAIN_SYSTEM:Play() self:AnnQueue(message) --local stbl = self.CurrentTable[self.Train:GetNW2Int("Announcer",1)][self.Line][self.Station] if self.LastStation > 0 and not self.Arrived and self.Station ~= last and tbl[last].not_last and (stbl.have_inrerchange or math.abs(last-self.Station) <= 3) then - local ltbl = tbl[last] - if stbl.not_last_c then - local patt = stbl.not_last_c[path] - self:AnnQueue(ltbl[patt] or ltbl.not_last) - else - self:AnnQueue(ltbl.not_last) - end + self:AnnQueue(tbl[last].not_last) end self:AnnQueue{2,"click_end","buzz_end",0.3} --self:UpdateBoards() @@ -296,119 +281,71 @@ function TRAIN_SYSTEM:TriggerInput(name,value) self.Line = self.Line-1 if self.Line < 1 then self.Line = #rri end end - rriL = rri[self.Line] - self.FirstStation = -1 - if not rriL.Loop then - self.LastStation = #rri[self.Line]+1 - repeat - self.FirstStation = self.FirstStation + 1 - if self.FirstStation > #rriL then self.FirstStation = 1 end - until (not rriL[self.FirstStation] or (rriL[self.FirstStation].arrlast and rriL[self.FirstStation].arrlast[self.FirstStation > self.LastStation and 2 or 1]))-- and self.FirstStation ~= self.LastStation - repeat - self.LastStation = self.LastStation - 1 - if self.LastStation < (rriL.Loop and 0 or 1) then self.LastStation = #rriL end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.FirstStation > self.LastStation]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - else - self.LastStation = 0 - end + self.FirstStation = 0 + self.LastStation = #rri[self.Line]+1 + + repeat + self.FirstStation = self.FirstStation + 1 + if self.FirstStation > #rriL then self.FirstStation = 1 end + until (not rriL[self.FirstStation] or rriL[self.FirstStation].arrlast)-- and self.FirstStation ~= self.LastStation + repeat + self.LastStation = self.LastStation - 1 + if self.LastStation < 1 then self.LastStation = #rriL end + until (not rriL[self.LastStation] or rriL[self.LastStation].arrlast) and self.LastStation ~= self.FirstStation self.Arrived = true end if self.Selected == 1 then if name == "Right" then - if rriL.Loop then - self.Path = not self.Path - else - repeat - self.FirstStation = self.FirstStation + 1 - if self.FirstStation > #rriL then self.FirstStation = 1 end - until (not rriL[self.FirstStation] or rriL[self.FirstStation].arrlast)-- and self.FirstStation ~= self.LastStation - end + repeat + self.FirstStation = self.FirstStation + 1 + if self.FirstStation > #rriL then self.FirstStation = 1 end + until (not rriL[self.FirstStation] or rriL[self.FirstStation].arrlast)-- and self.FirstStation ~= self.LastStation end if name == "Left" then - if rriL.Loop then - self.Path = not self.Path - else - repeat - self.FirstStation = self.FirstStation - 1 - if self.FirstStation < 1 then self.FirstStation = #rriL end - until (not rriL[self.FirstStation] or rriL[self.FirstStation].arrlast)-- and self.FirstStation ~= self.LastStation - end - end - - self.LastStation = (rriL.Loop and 0 or 1) and 0 or #rri[self.Line]+1 - if rriL.Loop then - self.LastStation = 0 - else repeat - self.LastStation = self.LastStation - 1 - if self.LastStation < 1 then self.LastStation = #rriL end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.FirstStation > self.LastStation and 2 or 1]) or rriL.Loop and self.LastStation == 0) - if self.FirstStation==self.LastStation then - self.LastStation = 0 - repeat - self.LastStation = self.LastStation + 1 - if self.LastStation > #rriL then self.LastStation = (rriL.Loop and 0 or 1) end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.FirstStation > self.LastStation and 2 or 1]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - end + self.FirstStation = self.FirstStation - 1 + if self.FirstStation < 1 then self.FirstStation = #rriL end + until (not rriL[self.FirstStation] or rriL[self.FirstStation].arrlast)-- and self.FirstStation ~= self.LastStation end - if self.FirstStation > 0 then - self.Station = self.FirstStation - else - self.Station = 1 + self.Station = self.FirstStation + self.Arrived = true + + self.LastStation = #rri[self.Line]+1 + repeat + self.LastStation = self.LastStation - 1 + if self.LastStation < 1 then self.LastStation = #rriL end + until (not rriL[self.LastStation] or rriL[self.LastStation].arrlast) + if self.FirstStation==self.LastStation then + self.LastStation = 0 + repeat + self.LastStation = self.LastStation + 1 + if self.LastStation > #rriL then self.LastStation = 1 end + until (not rriL[self.LastStation] or rriL[self.LastStation].arrlast) and self.LastStation ~= self.FirstStation end end if self.Selected == 2 then if name == "Right" then - if rriL.Loop then - repeat - self.LastStation = self.LastStation + 1 - if self.LastStation > #rriL then self.LastStation = (rriL.Loop and 0 or 1) end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.Path and 2 or 1]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - else - repeat - self.LastStation = self.LastStation + 1 - if self.LastStation > #rriL then self.LastStation = (rriL.Loop and 0 or 1) end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.FirstStation > self.LastStation and 2 or 1]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - end + repeat + self.LastStation = self.LastStation + 1 + if self.LastStation > #rriL then self.LastStation = 1 end + until (not rriL[self.LastStation] or rriL[self.LastStation].arrlast) and self.LastStation ~= self.FirstStation end if name == "Left" then - if rriL.Loop then - repeat - self.LastStation = self.LastStation - 1 - if self.LastStation < (rriL.Loop and 0 or 1) then self.LastStation = #rriL end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.Path and 2 or 1]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - else - repeat - self.LastStation = self.LastStation - 1 - if self.LastStation < (rriL.Loop and 0 or 1) then self.LastStation = #rriL end - until (not rriL[self.LastStation] or (rriL[self.LastStation].arrlast and rriL[self.LastStation].arrlast[self.FirstStation > self.LastStation and 2 or 1]) or rriL.Loop and self.LastStation == 0) and self.LastStation ~= self.FirstStation - end - end - if self.FirstStation > 0 then - self.Station = self.FirstStation - else - self.Station = 1 + repeat + self.LastStation = self.LastStation - 1 + if self.LastStation < 1 then self.LastStation = #rriL end + until (not rriL[self.LastStation] or rriL[self.LastStation].arrlast) and self.LastStation ~= self.FirstStation end end if self.Selected == 3 then if name == "Right" then - if rriL.Loop and (self.Arrived or self.Station == self.LastStation) and (self.Path and self.Station == 1 or not self.Path and self.Station == #rriL) then - self.Arrived = false - self.Station = self.Path and #rriL or 1 - elseif not rriL.Loop and self.Station == self.LastStation then + if self.Station == self.LastStation then self.Arrived = true self.Station = self.FirstStation elseif not self.Arrived then self.Arrived = true - elseif rriL.Loop then - if self.Path then - self.Station = self.Station - 1 - else - self.Station = self.Station + 1 - end - self.Arrived = false else if self.FirstStation > self.LastStation then self.Station = self.Station - 1 @@ -419,21 +356,11 @@ function TRAIN_SYSTEM:TriggerInput(name,value) end end if name == "Left" then - if rriL.Loop and (not self.Arrived) and (not self.Path and self.Station == 1 or self.Path and self.Station == #rriL) then - self.Arrived = true - self.Station = self.Path and 1 or #rriL - elseif not rriL.Loop and self.Station == self.FirstStation then - self.Arrived = true + if self.Station == self.FirstStation then + self.Arrived = false self.Station = self.LastStation elseif self.Arrived then self.Arrived = false - elseif rriL.Loop then - if self.Path then - self.Station = self.Station + 1 - else - self.Station = self.Station - 1 - end - self.Arrived = true else if self.FirstStation > self.LastStation then self.Station = self.Station + 1 @@ -448,22 +375,15 @@ function TRAIN_SYSTEM:TriggerInput(name,value) end function TRAIN_SYSTEM:Trigger(name,value) - if self.Power and (name == "R_Program1" or name == "R_Program1H" or name == "SB10" or name == "SB20") and value > 0 then - if self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click_end",0.5} end + if self.Power and (name == "R_Program1" or name == "R_Program1H" or name == "SB10" or name == "SB20") and self.LineOut==0 and value > 0 then self:Play() - local rriL = self.CurrentTable[self.Line] - if rriL.Loop and self.Arrived and (self.Path and self.Station == 1 or not self.Path and self.Station == #rriL) then - self.Arrived = false - self.Station = self.Path and #rriL or 1 - elseif not rriL.Loop and self.Station == self.LastStation then + if self.Station == self.LastStation then self.Arrived = true self.Station = self.FirstStation elseif not self.Arrived then self.Arrived = true else - if self.FirstStation == -1 then - self.Station = self.Station + (self.Path and -1 or 1) - elseif self.FirstStation > self.LastStation then + if self.FirstStation > self.LastStation then self.Station = self.Station - 1 else self.Station = self.Station + 1 @@ -489,7 +409,6 @@ function TRAIN_SYSTEM:Think() local Train = self.Train local VV = Train.RRI_VV self.Power = VV.Power > 0 - if not self.Power and self.LineOut>0 then self:AnnQueue{-2,"buzz_end","click_end"} end for k,v in pairs(self.TriggerNames) do if Train[v] and Train[v].Value ~= self.Triggers[v] then @@ -506,16 +425,10 @@ function TRAIN_SYSTEM:Think() end if self.CurrentTable and self.CurrentTable[1] then self.Line = 1 - if self.CurrentTable[self.Line].Loop then - self.FirstStation = -1 - self.LastStation = 0 - self.Path = faslse - self.Station = 1 - else - self.FirstStation = 1 - self.LastStation = #self.CurrentTable[self.Line] - self.Station = self.FirstStation - end + + self.FirstStation = 1 + self.LastStation = #self.CurrentTable[self.Line] + self.Station = self.FirstStation else self.Line = -1 @@ -528,7 +441,6 @@ function TRAIN_SYSTEM:Think() Train:SetNW2Int("RRI:FirstStation",self.FirstStation) Train:SetNW2Int("RRI:LastStation",self.LastStation) Train:SetNW2Int("RRI:Station",self.Station) - Train:SetNW2Bool("RRI:Path",self.Path) Train:SetNW2Bool("RRI:Arrived",self.Arrived) self.LineOut = #Train.Announcer.Schedule>0 and 1 or 0 diff --git a/lua/metrostroi/systems/sys_81_720_bars.lua b/lua/metrostroi/systems/sys_81_720_bars.lua index 2404fb5..a48409c 100644 --- a/lua/metrostroi/systems/sys_81_720_bars.lua +++ b/lua/metrostroi/systems/sys_81_720_bars.lua @@ -31,11 +31,10 @@ function TRAIN_SYSTEM:Initialize() self.BINoFreq = 0 self.BIAccel = 0 - self.BIDirection = 0 end function TRAIN_SYSTEM:Outputs() - return {"Active","Ring","Brake","Brake2","Drive","PN1","PN2", "SpeedLimit", "BTB","BINoFreq","BIAccel","BIDirection"} + return {"Active","Ring","Brake","Brake2","Drive","PN1","PN2", "SpeedLimit", "BTB","BINoFreq","BIAccel"} end function TRAIN_SYSTEM:Inputs() @@ -119,35 +118,7 @@ function TRAIN_SYSTEM:Think(dT) if self.SpeedLimit < 20 and self.KB then self.SpeedLimit = 20 end - local PrepareAO = self.RealF5 and 2 or self.NoFreq and 1 or 0 - if not self.AOTimer and PrepareAO > 0 then - self.AOTimer = CurTime() - elseif PrepareAO <= 0 then - self.AOTimer = nil - end - if PrepareAO > 0 and (CurTime()-self.AOTimer < 2 or self.OldPrepareAO ~= PrepareAO) and (not self.AOState or self.AOState%2 ~= PrepareAO%2) then - self.AOTimer = CurTime() - self.AOState = (self.AOState or 0) + 1 - elseif PrepareAO == 0 or self.AOTimer and CurTime()-self.AOTimer >= 2 then - self.AOState = false - end - - self.OldPrepareAO = PrepareAO - --self.BIAccel = 0 - if self.AOState and self.AOState>2 then - self.SpeedLimit = 0 - self.NextLimit = 0 - self.BINoFreq = 0 - self.BIAccel = -10 - self.KB = false - else - if self.BIAccel == -10 then self.BIAccel = Train.Acceleration end - self.BIAccel = 0.8*self.BIAccel + 0.2*Train.Acceleration - end else - self.AOState = false - self.AOTimer = false - self.BIAccel = 0 self.SpeedLimit = 0 self.NextLimit = 0 end @@ -260,7 +231,6 @@ function TRAIN_SYSTEM:Think(dT) self.BTB = 0 end end - self.BIDirection = speed > 0.2 and 1 or speed < -0.2 and -1 or 0 else if Train.ALS.Value > 0 then --[[ Устройства БАРС, или при следовании с отключёнными устройствами БАРС, устройство ограничения скорости (УОС) передают информацию о допустимой скорости и фактической скорости движения поезда в БУП. В зависимости от информации БУП разрешает движение, отключает тяговый режим, выдаёт команду на торможение.]] @@ -297,7 +267,6 @@ function TRAIN_SYSTEM:Think(dT) self.Braking = false self.Ringing = false self.LN = false - self.BIDirection = 0 end if Train.BUKP.State < 5 or not Power then self.BTB = (not UOS and Train.ALS.Value == 0) and 0 or self.BTB @@ -309,5 +278,6 @@ function TRAIN_SYSTEM:Think(dT) self.Ready = true end self.Active = Active and 1 or 0 - --self.BIAccel = self.BIAccel + (ALS.Acceleration-self.BIAccel)*dT*2 + self.BIAccel = self.BIAccel + (ALS.Acceleration-self.BIAccel)*dT*2 + end diff --git a/lua/metrostroi/systems/sys_81_720_bpti.lua b/lua/metrostroi/systems/sys_81_720_bpti.lua index a44951b..819c8f3 100644 --- a/lua/metrostroi/systems/sys_81_720_bpti.lua +++ b/lua/metrostroi/systems/sys_81_720_bpti.lua @@ -108,15 +108,16 @@ function TRAIN_SYSTEM:Think(dT) else self.T = self.T+(T*(0.95+math.random()*0.1)-self.T)*dT*1.5 end + --if I > T then print(self.RNState,self.RVState,I,T,self.PrepareElectric) end - self:SolveRV(Train,self.T,dT,I,self.State < 0,self.State == 1 and Train.Electric.BlockRV) - self:SolveRN(Train,self.T,dT,I,self.State < 0,self.State == 1 and T <= 150) + self:SolveRV(Train,self.T,dT,I,self.State < 0) + self:SolveRN(Train,self.T,dT,I,self.State < 0) end --BPTI -------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) +function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake) -- General state local Active = self.RN > 0--and T > 0 --local I = math.abs(Electric.I13 + Electric.I24)/2 @@ -136,9 +137,9 @@ function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) if T == 0 then self.RNState = math.max(0,self.RNState-5*dT*sign) elseif I > T then - self.RNState = math.max(0,math.min(start and 0.1 or 1,self.RNState-dC*1/rnd*dT*sign)) + self.RNState = math.max(0,math.min(1,self.RNState-dC*1/rnd*dT*sign)) else - self.RNState = math.max(0,math.min(start and 0.1 or 1,self.RNState+dC*1/rnd*dT*sign)) + self.RNState = math.max(0,math.min(1,self.RNState+dC*1/rnd*dT*sign)) end if (not brake and self.RNState == 1 or brake and self.RNState == 0) and self.RN > 0 and not self.RV then self.RV = true @@ -147,9 +148,9 @@ function TRAIN_SYSTEM:SolveRN(Train,T,dT,I,brake,start) end end end -function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) +function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake) -- General state - local Active = self.RV and (not block or self.RVState > 0) + local Active = self.RV --local I = math.abs(Electric.I13 + Electric.I24)/2 self.RNPrevCurrent = Current @@ -168,7 +169,7 @@ function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) local dC = math.min(math.abs(T-I), 300) if not self.PrepareElectric then - if T == 0 or block then + if T == 0 then self.RVState = math.max(0,self.RVState-5*dT*sign) elseif brake and I T then self.RVState = math.max(0,math.min(1,self.RVState-dC*1/rnd*dT*sign)) @@ -216,6 +217,10 @@ function TRAIN_SYSTEM:SolveRV(Train,T,dT,I,brake,block) self.RNState = brake and 0.01 or 0.99 end end + --[[ + if Train:EntIndex() == 1275 and iter%4 == 0 then + print(Format("[%04d]RV:% 3.01f/% 3.01f A % 3d%% %.2f+%.2f=%.2f % 3d km\\h F=%.02f",Train:EntIndex(),Current,T,self.RVState*100,A,B,C,Train.Speed,TargetField)) + end]] end -- Set resistance self.RVResistance = Resistance + 1e9 * (Active and 0 or 1) diff --git a/lua/metrostroi/systems/sys_81_720_bukp.lua b/lua/metrostroi/systems/sys_81_720_bukp.lua index ac888fd..a1c6fb4 100644 --- a/lua/metrostroi/systems/sys_81_720_bukp.lua +++ b/lua/metrostroi/systems/sys_81_720_bukp.lua @@ -106,11 +106,11 @@ function TRAIN_SYSTEM:TriggerInput(name,value) end if SERVER then function TRAIN_SYSTEM:CANReceive(source,sourceid,target,targetid,textdata,numdata) - if not self.Trains[-sourceid] then return end + if not self.Trains[sourceid] then return end if textdata == "Get" then self.Reset = 1 else - self.Trains[-sourceid][textdata] = numdata + self.Trains[sourceid][textdata] = numdata end end function TRAIN_SYSTEM:CState(name,value,target,bypass) @@ -215,9 +215,9 @@ if SERVER then if name == "VityazF8" and value then if self.Entering and #self.Entering == 4 then local wagnum = tonumber(self.Entering) - self.Trains[-wagnum] = {} + self.Trains[wagnum] = {} if not wagnum or wagnum == 0 then - self.Trains[-wagnum] = nil + self.Trains[wagnum] = nil wagnum = nil end self.Trains[self.Selected+1] = wagnum @@ -366,7 +366,7 @@ if SERVER then self.States = {} self.PVU = {} for k,v in ipairs(self.Trains) do - if self.Trains[-v] then self.Trains[-v] = {} end + if self.Trains[v] then self.Trains[v] = {} end end self.PTEnabled = nil @@ -401,7 +401,7 @@ if SERVER then if self.State == 3 then local initialized = true for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] if train then if not train.WagNOrientated and train.BUVWork and not train.BadCombination then--and train.PTEnabled then Train:SetNW2Bool("VityazWagI"..i,true) @@ -448,7 +448,7 @@ if SERVER then local err3,err4,err6,err7,err10,err11,err12,err17 local HVBad = false for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] or {} + local train = self.Trains[self.Trains[i]] or {} if train.DriveStrength then EnginesStrength = EnginesStrength + train.DriveStrength end if train.BrakeStrength then EnginesStrength = EnginesStrength + train.BrakeStrength end @@ -481,7 +481,7 @@ if SERVER then self.DoorClosed = true for i=1,self.WagNum do local trainid = self.Trains[i] - local train = self.Trains[-trainid] + local train = self.Trains[trainid] if train then if not min or train.BCPressure < min then min = train.BCPressure end if not max or train.BCPressure > max then max = train.BCPressure end @@ -551,25 +551,25 @@ if SERVER then end elseif self.State2 == 21 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Int("VityazIMK"..i,train.MKVoltage*10) end elseif self.State2 == 22 then for i=1,self.WagNum do - Train:SetNW2Int("VityazIVO"..i,self.Trains[-self.Trains[i]].VagEqConsumption*10) + Train:SetNW2Int("VityazIVO"..i,self.Trains[self.Trains[i]].VagEqConsumption*10) end elseif self.State2 == 23 then for i=1,self.WagNum do - Train:SetNW2Int("VityazI13"..i,self.Trains[-self.Trains[i]].I13*10) + Train:SetNW2Int("VityazI13"..i,self.Trains[self.Trains[i]].I13*10) end elseif self.State2 == 24 then for i=1,self.WagNum do - Train:SetNW2Int("VityazI24"..i,self.Trains[-self.Trains[i]].I24*10) + Train:SetNW2Int("VityazI24"..i,self.Trains[self.Trains[i]].I24*10) end elseif self.State2 == 3 then if self.Selected == 0 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Bool("VityazBUVState"..i,train.BUVWork) --"БУВ" Train:SetNW2Bool("VityazBTBReady"..i,train.BTBReady) --"БТБ ГОТ" Train:SetNW2Bool("VityazPTGood"..i,train.PTEnabled) --"ПТ ЭФФ" @@ -580,7 +580,7 @@ if SERVER then end elseif self.Selected == 1 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Bool("VityazPTApply"..i,not train.PTEnabled) --"ПТ ВКЛ" Train:SetNW2Bool("VityazEDTBroken"..i,not train.EnginesBrakeBroke) --"ОТКАЗ ЭТ" FIXME Train:SetNW2Bool("VityazEDTDone"..i,not train.EnginesDone) --"ИСТОЩ ЭТ" FIXME @@ -591,7 +591,7 @@ if SERVER then end elseif self.Selected == 2 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Bool("VityazLVGood"..i,not train.LVBad) --"НАПР БС" Train:SetNW2Bool("VityazMKWork"..i,train.MKWork) --"МК" Train:SetNW2Bool("VityazBVEnabled"..i,train.BVEnabled) --"ЗАЩИТ ТП" @@ -602,7 +602,7 @@ if SERVER then end elseif self.Selected == 3 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Bool("VityazVent1Work"..i,train.Vent1Enabled) --"ВЕНТИЛ 1" Train:SetNW2Bool("VityazVent2Work"..i,train.Vent2Enabled) --"ВЕНТИЛ 2" Train:SetNW2Bool("VityazHVGood"..i,not train.HVBad) --"НАПР КС" @@ -611,12 +611,12 @@ if SERVER then end elseif self.State2 == 4 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] Train:SetNW2Bool("VityazWagOr"..i,train.Orientation) end elseif self.State2 == 5 then for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] local orientation = train.Orientation Train:SetNW2Bool("VityazWagOr"..i,orientation) for d=1,4 do @@ -695,7 +695,7 @@ if SERVER then end local ring = false for i=1,self.WagNum do - local train = self.Trains[-self.Trains[i]] + local train = self.Trains[self.Trains[i]] if train and train.Ring then ring = true end diff --git a/lua/metrostroi/systems/sys_81_720_buv.lua b/lua/metrostroi/systems/sys_81_720_buv.lua index e745dfa..286cc9a 100644 --- a/lua/metrostroi/systems/sys_81_720_buv.lua +++ b/lua/metrostroi/systems/sys_81_720_buv.lua @@ -188,17 +188,14 @@ function TRAIN_SYSTEM:Think() if self.Reset and self.Reset ~= CurTime() then self.Reset = nil end - - local NoHV = Train.Electric.Main750V < 650 or Train.Electric.Main750V > 975 - - self.BBE = ((not self:Get("PVU8") and self:Get("BBE")) and 1 or (Train.BBER and Train.BBER.Value or 0))*Train.SFV7.Value - if NoHV then self.BBE = 0 end + self.BBE = not self:Get("PVU8") and self:Get("BBE") and Train.SFV7.Value or 0 + if Train.Electric.Main750V < 650 or Train.Electric.Main750V > 975 then self.BBE = 0 end if self.BBE == 0 and self.MainLights and not self.MainLightsTimer then self.MainLightsTimer = CurTime() end - if self.BBE > 0 or not self.MainLights or self.MainLightsTimer and CurTime()-self.MainLightsTimer > 27 then self.MainLightsTimer = nil end + if self.BBE > 0 or not self.MainLights or self.MainLightsTimer and CurTime()-self.MainLightsTimer > 20 then self.MainLightsTimer = nil end if (self:Get("BVOn") or Train:ReadTrainWire(2) > 0) then Train.BV:TriggerInput("Close",Train.SFV8.Value*Train.SFV9.Value) end - if self:Get("BVOff") and Train.SFV8.Value > 0 or self:Get("PVU1") then + if self:Get("BVOff") and Train.SFV8.Value > 0 then Train.BV:TriggerInput("Open",1) end self.MainLights = not self:Get("PVU5") and (self.BBE > 0 or self.MainLightsTimer) and Train.SFV19.Value > 0.5 and self:Get("PassLight") @@ -240,6 +237,7 @@ function TRAIN_SYSTEM:Think() local PN = self.PTReplace and CurTime()-self.PTReplace > 1.2 or self.States.EnginesDone self.PN1 = (self:Get("PN1") and self:Get("PN1") > 0) or PN and (self:Get("DriveStrength") and self:Get("DriveStrength") > 0) + --print(self:Get("DriveStrength"),Train.K1.Value,Train.Electric.Itotal,Train.Electric.Drive,Train.BUV.Brake) self.PN2 = (self:Get("PN2") and self:Get("PN2") > 0) or PN and (self:Get("DriveStrength") and self:Get("DriveStrength") > 2) self.MK = not self:Get("PVU3") and self:Get("Compressor") and 1 or 0 @@ -249,12 +247,15 @@ function TRAIN_SYSTEM:Think() self.CloseDoors = self:Get("PVU2") or self:Get("CloseDoors") self.Vent1 = not self:Get("PVU7") and self:Get("Vent1") and 1 or 0 - self.Vent2 = not self:Get("PVU7") and self:Get("Vent1") and self:Get("Vent2") and not NoHV and 1 or 0 + self.Vent2 = not self:Get("PVU7") and self:Get("Vent1") and self:Get("Vent2") and 1 or 0 self.Orientation = Train:ReadTrainWire(3) > 0 self.RevOrientation = Train:ReadTrainWire(4) > 0 + --print(Train:ReadTrainWire(3),Train:ReadTrainWire(4)) + --if self.Orientation == self.RevOrientation then print(Train:ReadTrainWire(3),Train:ReadTrainWire(4)) end local BadOrientation = self.Orientation and self.Orientation == self.RevOrientation if self.State and self.Orientation ~= self.RevOrientation then if not self.BadOrientation and self.OrientateBUP and (not self.Commands[self.OrientateBUP] or self.Orientation and self.Commands.Forward ~= self.OrientateBUP or self.RevOrientation and self.Commands.Back ~= self.OrientateBUP) then + --print(Train:GetWagonNumber(),"New BUP",self.Orientation and "Forward" or "Back",self.OrientateBUP) if self.Orientation then self.Commands.Forward = self.OrientateBUP else self.Commands.Back = self.OrientateBUP end self.OrientateBUP = nil end @@ -263,6 +264,7 @@ function TRAIN_SYSTEM:Think() local ReOrientation = self.State and (self.Orientation or self.RevOrientation) and (self.Orientation ~= self.PrevOrientation or self.RevOrientation ~= self.PrevRevOrientation or self.CurrentBUP ~= (self.Orientation and self.Commands.Forward or self.Commands.Back)) if ReOrientation then self.CurrentBUP = self.Orientation and self.Commands.Forward or self.Commands.Back + --print(Train:GetWagonNumber(),"Reorientate",self.Orientation and "Forward" or "Back",self.CurrentBUP) self.Reset = CurTime() if self.CurrentBUP then self.Commands[self.CurrentBUP] = {} diff --git a/lua/metrostroi/systems/sys_81_720_electric.lua b/lua/metrostroi/systems/sys_81_720_electric.lua index 526efc5..f994367 100644 --- a/lua/metrostroi/systems/sys_81_720_electric.lua +++ b/lua/metrostroi/systems/sys_81_720_electric.lua @@ -266,8 +266,8 @@ function TRAIN_SYSTEM:Think(dT,iter) end self.BVKA_KM2 = KM2 end - self.BVKA_KM3 = P*Train.SFV23.Value*(Train.BUV.Vent1) - self.BVKA_KM4 = P*Train.SFV24.Value*(Train.BUV.Vent2) + self.BVKA_KM3 = P*HV*Train.SFV23.Value*(Train.BUV.Vent1) + self.BVKA_KM4 = P*HV*Train.SFV24.Value*(Train.BUV.Vent2) self.BVKA_KM5 = P self.BSKA = P*Train.SFV6.Value*self.BVKA_KM2 @@ -292,7 +292,7 @@ function TRAIN_SYSTEM:Think(dT,iter) drive = strength*self.BUTP*bv else brake = Train.BUV.Brake*self.BUTP - drive = Train.BUV.Drive*self.BUTP*bv + drive = Train.BUV.Drive*self.BUTP*HV*bv strength = Train.BUV.DriveStrength end @@ -323,21 +323,20 @@ function TRAIN_SYSTEM:Think(dT,iter) Train.K2:TriggerInput("Set",0) Train.K3:TriggerInput("Set",self.IT) end - if bv==0 or 550 >= self.Main750V or self.Main750V >= 975 then + if bv==0 then self.ISet = 0 self.BPTIState = 0 elseif Train.K2.Value > 0 and self.IX > 0 then self.BPTIState = 1 if strength == 1 then - self.ISet = 150 + self.ISet = 100 elseif strength == 2 then self.ISet = 200 + 60*Train.Pneumatic.WeightLoadRatio elseif strength == 3 then - self.ISet = 260 + 70*Train.Pneumatic.WeightLoadRatio + self.ISet = 260 + 60*Train.Pneumatic.WeightLoadRatio elseif strength == 4 then - self.ISet = 330 + 120*Train.Pneumatic.WeightLoadRatio + self.ISet = 330 + 60*Train.Pneumatic.WeightLoadRatio end - self.BlockRV = strength <= 2 elseif Train.K3.Value > 0 and self.IT > 0 then self.BPTIState = -1 if strength == 1 then @@ -484,6 +483,7 @@ function TRAIN_SYSTEM:SolvePP(Train,inTransition) -- Total resistance (for induction RL circuit) self.R13 = R1 self.R24 = R2 + --if inTransition then print("InPP1",self.I13,Format("(%.2f-%.2f)/%.2f=%.2f",V , E1,R1,(V - E1)/R1),Train.K1.Value,Train.K3_4.Value,self.RVState,self.RNState) end -- Calculate everything else self.U13 = self.I13*R1 diff --git a/lua/metrostroi/systems/sys_81_720_panel.lua b/lua/metrostroi/systems/sys_81_720_panel.lua index 8d614e1..1ec5d9d 100644 --- a/lua/metrostroi/systems/sys_81_720_panel.lua +++ b/lua/metrostroi/systems/sys_81_720_panel.lua @@ -202,7 +202,7 @@ function TRAIN_SYSTEM:TriggerInput(name,value) self.ControllerTimer = CurTime()-1 end function TRAIN_SYSTEM:Think() - if self.ControllerTimer and CurTime() - self.ControllerTimer > 0.03 and self.Controller ~= self.TargetController then + if self.ControllerTimer and CurTime() - self.ControllerTimer > 0.06 and self.Controller ~= self.TargetController then local previousPosition = self.Controller self.ControllerTimer = CurTime() if self.TargetController > self.Controller then diff --git a/lua/metrostroi/systems/sys_81_720_pneumatic.lua b/lua/metrostroi/systems/sys_81_720_pneumatic.lua index 9ba8987..c7baabf 100644 --- a/lua/metrostroi/systems/sys_81_720_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_720_pneumatic.lua @@ -87,8 +87,6 @@ function TRAIN_SYSTEM:Initialize() self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} local start = math.Rand(0.4,0.7) self.DoorSpeedMain = math.Rand(start,math.Rand(start+0.1,start+0.3)) for i=1,#self.LeftDoorSpeed do @@ -374,7 +372,7 @@ function TRAIN_SYSTEM:Think(dT) if self.EmergencyBrakeActive then PMPressure = self.AirDistributorPressure if self.BrakeCylinderPressure < self.AirDistributorPressure and self.AirDistributorPressure-self.BrakeCylinderPressure > 0.1 then - self:equalizePressure(dT,"AirDistributorPressure",0, math.min(self.TrainLinePressure,self.AirDistributorPressure-self.BrakeCylinderPressure)*1, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, nil, 2) + self:equalizePressure(dT,"AirDistributorPressure",0, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, nil, 2) end end if Train:ReadTrainWire(28) > 0 then @@ -409,7 +407,7 @@ function TRAIN_SYSTEM:Think(dT) local pneumaticValveConsumption_dPdT = 0 trainLineConsumption_dPdT = trainLineConsumption_dPdT + math.max(0,pneumaticValveConsumption_dPdT) if self.BrakeCylinderValve == 1 then - self:equalizePressure(dT,"BrakeCylinderPressure", math.min(3.3,self.TrainLinePressure,targetPressure), 2.50, 2.50, nil, self.BrakeCylinderPressure > targetPressure and 0.3+math.Clamp((self.BrakeCylinderPressure-0.4)/3.3,0,0.6) or 0.9) + self:equalizePressure(dT,"BrakeCylinderPressure", math.min(3.3,targetPressure), 2.50, 2.50, nil, self.BrakeCylinderPressure > targetPressure and 0.3+math.Clamp((self.BrakeCylinderPressure-0.4)/3.3,0,0.6) or 0.9) end else self:equalizePressure(dT,"BrakeCylinderPressure", 0.0, 2.00) @@ -420,7 +418,7 @@ function TRAIN_SYSTEM:Think(dT) else self:equalizePressure(dT,"ParkingBrakePressure", 0, 0.4,1,nil,0.5) end - Train:SetPackedRatio("ParkingBrakePressure_dPdT",self.ParkingBrakePressure_dPdT+0.02) + Train:SetPackedRatio("ParkingBrakePressure_dPdT",self.ParkingBrakePressure_dPdT) trainLineConsumption_dPdT = trainLineConsumption_dPdT + math.max(0,self.BrakeCylinderPressure_dPdT + self.ParkingBrakePressure_dPdT) self.Train:SetPackedRatio("BrakeCylinderPressure_dPdT", self.BrakeCylinderPressure_dPdT) @@ -504,28 +502,14 @@ function TRAIN_SYSTEM:Think(dT) self.DoorRight = false elseif commandLeft then self.DoorLeft = true elseif commandRight then self.DoorRight = true end - - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false - end - Train.LeftDoorsOpen = false Train.RightDoorsOpen = false for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT/(self.DoorLeft and 2*self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1.5,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT/(self.DoorRight and 2*self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1.5,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + (self.LeftDoorDir[i]/self.LeftDoorSpeed[i]*dT),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + (self.LeftDoorDir[i]/self.LeftDoorSpeed[i]*dT),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + (self.RightDoorDir[i]/self.RightDoorSpeed[i]*dT),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + (self.RightDoorDir[i]/self.RightDoorSpeed[i]*dT),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end if not Train.BUV.LeftDoorsOpen and self.LeftDoorState[i] > 0 then Train.LeftDoorsOpen = true @@ -536,14 +520,11 @@ function TRAIN_SYSTEM:Think(dT) Train.BUV.DoorsOpened = Train.LeftDoorsOpen or Train.RightDoorsOpen Train:SetPackedRatio("DoorL"..i,self.LeftDoorState[i]) Train:SetPackedRatio("DoorR"..i,self.RightDoorState[i]) - if self.LeftDoorStuck[i] and (self.DoorLeft or type(self.LeftDoorStuck[i]) == "number" and CurTime()-self.LeftDoorStuck[i] > 0) then - self.LeftDoorStuck[i] = false - end - if self.RightDoorStuck[i] and (self.DoorRight or type(self.RightDoorStuck[i]) == "number" and CurTime()-self.RightDoorStuck[i] > 0) then - self.RightDoorStuck[i] = false - end - Train:SetPackedBool("DoorLS"..i,self.LeftDoorStuck[i]) - Train:SetPackedBool("DoorRS"..i,self.RightDoorStuck[i]) + --[[ + self.DoorSpeedMain = math.Rand(1.1,1.3) + for i=1,#self.LeftDoorSpeed do + self.LeftDoorSpeed[i] = math.Rand(self.DoorSpeedMain,self.DoorSpeedMain+0.2) + end--]] end Train:SetPackedBool("DoorL",self.DoorLeft) Train:SetPackedBool("DoorR",self.DoorRight) diff --git a/lua/metrostroi/systems/sys_81_720_ticker.lua b/lua/metrostroi/systems/sys_81_720_ticker.lua index ceaa5dd..0d3d6e6 100644 --- a/lua/metrostroi/systems/sys_81_720_ticker.lua +++ b/lua/metrostroi/systems/sys_81_720_ticker.lua @@ -45,25 +45,19 @@ if CLIENT then }) end createFont("Tickers","Advanced LED Board-7",49,400) - local aaaa = surface.GetTextureID("models/metrostroi_train/81-720/a") - function TRAIN_SYSTEM:ClientThink(dT) - if not self.Train:ShouldDrawPanel("Tickers") then return end + function TRAIN_SYSTEM:ClientThink() local str = self.Train:GetNW2String("TickerMessage","") - local pos = self.Train:GetNW2Float("TickerState",0) - local spd = self.Train:GetNW2Float("TickersSpeed",0) - self.TargetPosition = self.TargetPosition or 0 - if self.Text ~= str or math.abs(self.Position-pos) > 50 then + local pos = self.Train:GetNW2Int("TickerState",0) + if self.Train:ShouldDrawPanel("Tickers") and (self.Text ~= str or self.Position ~= pos) then + self.Text = str self.Position = pos - else - self.Position = self.Position - 150*dT + render.PushRenderTarget(self.Train.Tickers,0,0,852, 64) + render.Clear(0, 0, 0, 0) + cam.Start2D() + self:Tickers(self.Train) + cam.End2D() + render.PopRenderTarget() end - self.Text = str - render.PushRenderTarget(self.Train.Tickers,0,0,852, 64) - render.Clear(0, 0, 0, 0) - cam.Start2D() - self:Tickers(self.Train) - cam.End2D() - render.PopRenderTarget() end function TRAIN_SYSTEM:PrintText(x, text, inverse) local str = {utf8.codepoint(text, 1, -1)} @@ -75,14 +69,7 @@ if CLIENT then --if (i-33)*26.5+x*3.005+20 > 0 then continue end if -26.5 < xpos and xpos < 26.5 * 32 then local char = utf8.char(str[i + 1]) - if char == "@" then - surface.SetDrawColor(Color(255,255,255)) - surface.SetTexture(aaaa) - surface.DrawTexturedRectRotated(xpos + 20, 24,24,32,0) - - else - draw.SimpleText(char, "Metrostroi_Tickers", xpos + 20, 24, Color(50, 160, 150), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) - end + draw.SimpleText(char, "Metrostroi_Tickers", xpos + 20, 24, Color(50, 160, 150), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end end end @@ -90,7 +77,7 @@ if CLIENT then function TRAIN_SYSTEM:Tickers(Train) if self.Text ~= "" then - self:PrintText(math.floor(self.Position/1),self.Text) + self:PrintText(self.Position,self.Text) end end return @@ -120,15 +107,14 @@ function TRAIN_SYSTEM:Think() local Power = Train.Panel.TickerPower>0 local Work = Train.Panel.TickerWork>0 and Metrostroi.TickerAdverts if Power and (Work or self.Advert ~= -1) then - self.AdvertSymbol = self.AdvertSymbol - 150*Train.DeltaTime - + self.AdvertSymbol = self.AdvertSymbol - 90*Train.DeltaTime if self.AdvertSymbol < -utf8.len(self.CurrentAdvert)*10-20 then self.AdvertSymbol = 40*(7+math.random(0,3))--40*7 if Work then if self.NextAdvertStation then self.Advert = 0 self.NextAdvertStation = false - elseif #Metrostroi.TickerAdverts > 0 then + else local rnd repeat rnd = math.random(0,#Metrostroi.TickerAdverts) until rnd ~= self.Advert self.Advert = rnd @@ -157,7 +143,7 @@ function TRAIN_SYSTEM:Think() end else self.AdvertSymbol = 40*8 - self.CurrentAdvert = "" + self.CurrentAdvert = "НИИ Фабрики SENT БЕГУЩАЯ СТРОКА v1.1 0123456789" self.Advert = -1 end --[[ @@ -167,6 +153,5 @@ function TRAIN_SYSTEM:Think() end]] Train:SetNW2String("TickerMessage",self.CurrentAdvert) --Train:SetNW2Int("TickerState",math.ceil(math.min(0,self.AdvertSymbol))) - Train:SetNW2Float("TickerState",math.ceil(self.AdvertSymbol)) - Train:SetNW2Float("TickersSpeed",150*Train.DeltaTime) + Train:SetNW2Int("TickerState",math.ceil(self.AdvertSymbol)) end diff --git a/lua/metrostroi/systems/sys_81_722_asyncinverter.lua b/lua/metrostroi/systems/sys_81_722_asyncinverter.lua index 4854226..b1b56b8 100644 --- a/lua/metrostroi/systems/sys_81_722_asyncinverter.lua +++ b/lua/metrostroi/systems/sys_81_722_asyncinverter.lua @@ -84,8 +84,7 @@ TRAIN_SYSTEM.xF = { {30, 40.60}, {40, 54.15}, {60, 81.20}, - {80, 108.30}, - {100*1.2, 120*1.5}, + {80, 108.30} },{ {0, 0.35}, {1, 1.43}, @@ -104,8 +103,7 @@ TRAIN_SYSTEM.xF = { {30, 38.44}, {40, 51.25}, {60, 76.87}, - {80, 102.50}, - {100*1.2, 115*1.5}, + {80, 102.50} },{ {300.374, 0}, {308.958, 0.05}, {318.122, 0.1}, {327.922, 0.15}, {338.424, 0.2}, {349.703, 0.25}, {361.842, 0.3}, {374.937, 0.35}, @@ -116,10 +114,9 @@ TRAIN_SYSTEM.xF = { } },{ { - {0, 3.5*0.05}, - {1.5, 1.5}, - {4.5, 4.5*1.1}, - {5.0, 4.73*1.1}, + {0, 3.5}, + {4.5, 3.50}, + {5.0, 4.73}, {7.5, 7.5}, {10, 10.3}, {15, 15.95}, @@ -135,10 +132,9 @@ TRAIN_SYSTEM.xF = { {80, 92.6}, {100, 115.8} },{ - {0, 4.5*0.05}, - {1.5, 1.7}, - {4.5, 5*1.1}, - {5.0, 5.625*1.1}, + {0, 4.5}, + {4.5, 4.50}, + {5.0, 5.625}, {7.5, 8.66}, {10, 11.71}, {15, 17.80}, @@ -176,32 +172,24 @@ function TRAIN_SYSTEM:Think(dT) elseif self.Drive*self.Power > 0.5 then TargetMode = 1 end - self.EDone = self.Brake*((self.Speed<=4 or self.Speed<=10 and (self.Mode>=0 or self.EDone > 0) or self.Mode>=0 and self.Voltage<550) and 1 or 0) + self.EDone = self.Brake*((self.Speed<=5 or self.Speed<=10 and (self.Mode>=0 or self.EDone > 0) or self.Mode>=0 and self.Voltage<550) and 1 or 0) -- Check correct mode if TargetMode ~= self.Mode then if self.State < 0.01 then - if (TargetMode == 0 or self.Timer and CurTime()-self.Timer>0.6) then - self.Mode = TargetMode - self.Timer = nil - if TargetMode then self.BrakeTimer = CurTime() end - elseif not self.Timer then - self.Timer = CurTime() - end + self.Mode = TargetMode end - else - if self.Mode ~= -1 then self.BrakeTimer = nil end - self.Timer = false - end + end if self.Power == 0 or (self.Voltage < 550 and self.Mode > 0) then self.Mode = 0 end - local Inverter_PWM0 = self.Mode == -1 and math.max(0.02,math.min(1,(CurTime()-self.BrakeTimer)/0.1))*1 or 1.5 -- PWM On + local Inverter_PWM0 = 1.5 -- PWM On local Inverter_PWM1 = 2--TargetMode==0 and 0.5 or 1.5 -- PWM Off -- PWM target command -- Adjust state as defined by mode if self.Mode == TargetMode and TargetMode ~= 0 and self.EDone ==0 then local torque = math.abs(self.Torque) + --print(self.State,torque,self.TargetTorque,(self.TargetTorque-torque)) self.State = math.max(0, math.min(1, self.State + (self.TargetTorque-torque)*Inverter_PWM0*dT)) --[[ if torque < self.TargetTorque then self.State = math.max(0, math.min(1, self.State + (self.TargetTorque-torque)*Inverter_PWM0*dT)) @@ -302,4 +290,7 @@ function TRAIN_SYSTEM:Think(dT) -- Output torque self.Current = Is_total self.Torque = T_total + --[[print(string.format("V=%.1f km/h Torque=%.2f m/s2 I=%.1f A s=%.4f | Inverter S=%.0f%% V=%.0f V F=%.1f Hz (%.1f Hz) %s", + self.Speed, T_total, Is_total, s, self.State*100, V, f, self.InverterGenFrequency, ((self.Mode == 1) and "Drive" or ((self.Mode == -1) and "Brake" or "Coast")) + ))]] end diff --git a/lua/metrostroi/systems/sys_81_722_bars.lua b/lua/metrostroi/systems/sys_81_722_bars.lua index 751fdb7..d26409f 100644 --- a/lua/metrostroi/systems/sys_81_722_bars.lua +++ b/lua/metrostroi/systems/sys_81_722_bars.lua @@ -83,11 +83,10 @@ function TRAIN_SYSTEM:Think(dT) if ALSPower ~= ALS.Enabled then ALS:TriggerInput("Enable",ALSPower) end - ALSPower = ALSPower*Train.Panel.BARSPower local FreqCode = bit.bor(ALS.F1*1,ALS.F2*2,ALS.F3*4,ALS.F4*8,ALS.F5*16,ALS.F6*32,ALSPower*64) if self.FreqCode ~= FreqCode then if not self.FreqCodeTimer then self.FreqCodeTimer = CurTime() end - if self.FreqCodeTimer and CurTime()-self.FreqCodeTimer>0.2 then + if self.FreqCodeTimer and CurTime()-self.FreqCodeTimer>0.8 then self.FreqCode = FreqCode self.FreqCodeTimer = nil @@ -109,7 +108,8 @@ function TRAIN_SYSTEM:Think(dT) local States = Train.BUKP.States self.KB = (Train.Vigilance.Value+Train.PB.Value) > 0 self.VRD = Train.VRD.Value > 0 - local pos = (Train.BUKP.Active>0 or Train.Electric.CabActive > 0) and (States.Brake and -States.DriveStrength or States.DriveStrength) or -1 + local pos = Train.BUKP.Active>0 and (States.Brake and -States.DriveStrength or States.DriveStrength) or -1 + local Vzad = 20 if self.F4 > 0 then Vzad = 40 end if self.F3 > 0 then Vzad = 60 end @@ -152,7 +152,7 @@ function TRAIN_SYSTEM:Think(dT) self.BrakeTimer = false end self.PTR = (self.BrakeTimer and CurTime()-self.BrakeTimer > 1.5) - if (not self.RNT or not self.RUVD) and (Train.Acceleration > -0.8 and speed>3) then + if not self.RNT or not self.RUVD and (Train.Acceleration > -0.8 and speed>3) then if not self.EKTimer then self.EKTimer = CurTime() end elseif self.EKTimer then self.EKTimer = false diff --git a/lua/metrostroi/systems/sys_81_722_bukp.lua b/lua/metrostroi/systems/sys_81_722_bukp.lua index 02ce486..726159b 100644 --- a/lua/metrostroi/systems/sys_81_722_bukp.lua +++ b/lua/metrostroi/systems/sys_81_722_bukp.lua @@ -23,7 +23,6 @@ function TRAIN_SYSTEM:Initialize() self.Speed = 0 self.PowerCommand = 0 - self.PowerPrecent = 0 self.DoorLeft = 0 self.DoorRight = 0 @@ -106,7 +105,7 @@ function TRAIN_SYSTEM:Think(dT) for k,t in pairs(self.UnInitialized) do if k == curr then self.Trains[curr] = table.insert(self.Trains,{Type=t.type,ID=curr}) - if i>1 and t.type==0 and (#self.Trains==3 or #self.Trains==6 or #self.Trains==8) then + if i>1 and t.type==0 and (#self.Trains==3 or #self.Trains==6) then builded = true break end @@ -198,7 +197,7 @@ function TRAIN_SYSTEM:Think(dT) local TrainCHalf = TrainCount/2 if not self.PVU.Sync then for i,t in ipairs(self.Trains) do - for p=1,7 do + for p=1,6 do self.PVU[i][p] = t["PVU"..p] end Train:CANWrite("BUKP",Train:GetWagonNumber(),"BUKV",t.ID,"Orientate",i < #self.Trains/2) @@ -232,16 +231,15 @@ function TRAIN_SYSTEM:Think(dT) local errors = {[4]={},[7]={}} for i,t in ipairs(self.Trains) do - for p=1,7 do + for p=1,6 do self:CStateTarget("PVU"..i.."_"..p,"PVU"..p,"BUKV",t.ID,self.PVU[i][p]) end if t.Type<=1 and Train.Compressor.Value == 1 then if i>TrainCHalf then--TrainCount<=3 and i>TrainCHalf or TrainCount>3 and i%2==0 then MK2m = MK2m+1 - if not t.MKWork and not t.MKTimeOut then t.MKTimeOut = CurTime() end - if t.MKWork and t.MKTimeOut then t.MKTimeOut = false end + if not t.MKTimeOut then t.MKTimeOut = CurTime() end if t.MKTimeOut~=true or t.MKWork then MK2c = MK2c+1 end - if t.MKTimeOut and t.MKTimeOut ~= true and CurTime()-t.MKTimeOut>(t.PantDisabled and 2 or 0.5) then t.MKTimeOut = true end + if t.MKTimeOut and t.MKTimeOut ~= true and CurTime()-t.MKTimeOut>0.5 then t.MKTimeOut = true end end HVCount = HVCount + 1 if t.NoHV then NoHV = NoHV+1 end @@ -329,16 +327,9 @@ function TRAIN_SYSTEM:Think(dT) MFDU:Error(64,1,Train.Electric.LSD==0 and (pos>0 or MFDU:ErrorGet("64_1"))) --MFDU:Error(64,1,Train.Electric.LSD==0 and self.States.CloseDoors,4) MFDU:Error(5,1,not self.LSD and self.States.CloseDoors and (pos>0 or MFDU:ErrorGet("5_1"))) - local fault = false - for k,v in pairs(MFDU.Errors) do - if type(k) == "string" and MFDU.ErrorNames[MFDU.Log[v[1]][1]][2] == 1 then - fault = true - break - end - end if not RR or back or Train.BKCU.Emergency>0 then self.PowerCommand = 0 - elseif self.PowerCommand>0 and (not self.DoorsClosed and Train.VAD.Value==0 or Train.BARS.MOT==0 and Train.RCARS.Value>0 or Train.RCARS.Value==0 and Train.PB.Value==0 and Train.VAH.Value==0 or self.Blocked) --[[or fault]] then + elseif self.PowerCommand>0 and (not self.DoorsClosed and Train.VAD.Value==0 or Train.BARS.MOT==0 and Train.RCARS.Value>0 or Train.RCARS.Value==0 and Train.PB.Value==0 and Train.VAH.Value==0 or self.Blocked) then self.PowerCommand = 0 self.Blocked = true else @@ -375,7 +366,7 @@ function TRAIN_SYSTEM:Think(dT) self.BackDoors = nil end MFDU:Error(49,1,(Train.DoorBack.Value>0 and Train.DoorSelect.Value==1 or MFDU:ErrorGet("49_1") and self.BackDoors~=nil) and not self.States.CloseDoors) - Train:CANWrite("BUKP",Train:GetWagonNumber(),"BUKV",self.Trains[#self.Trains].ID,"OpenRightBack",self.BackDoors and self.BackDoors~=true) + self:CState("OpenRightBack",self.BackDoors and self.BackDoors~=true) if self.CloseRing and (Train.DoorLeft1.Value > 0 or Train.DoorLeft2.Value > 0 or Train.DoorRight.Value > 0 or self.LSD) then self.CloseRing = false end if (not self.CloseRing or self.CloseRing and CurTime()-self.CloseRing<0) and Train.DoorClose.Value==2 and not self.LSD then self.CloseRing = CurTime() end @@ -383,25 +374,9 @@ function TRAIN_SYSTEM:Think(dT) self:CState("PassLight",Train.PassLight.Value>0) self:CState("PassVent",Train.PassVent.Value-1) self:CState("ParkingBrake",Train.ParkingBrake.Value) - if BARSPower and Train.BARS.V2 > 0 or not BARSPower and math.abs(self.Speed) < 0.5 and self.PowerCommand < 0 then - self.StopV2 = true - elseif self.PowerCommand > 0 then - if self.StopV2 == true then - self.StopV2 = CurTime() - elseif self.StopV2 and CurTime()-self.StopV2 > 1 then - self.StopV2 = false - end - end - if BARSPower and Electric.Emer == 0 then - self:CState("PN1",Train.BARS.V1 > 0) - self:CState("PN2",self.StopV2) - elseif Electric.Emer == 0 then - self:CState("PN1",not not self.StopV2) - self:CState("PN2",not not self.StopV2) - else - self:CState("PN1",false) - self:CState("PN2",false) - end + + self:CState("PN1",Train.BARS.V1>0) + self:CState("PN2",Train.BARS.V2>0) self:CState("CloseRing",self.CloseRing and (CurTime()-self.CloseRing)%1<=0.5) --[[ self:CState("RVPB",(1-Train.RV["KRO5-6"])*Train.SF2.Value > 0) diff --git a/lua/metrostroi/systems/sys_81_722_bukv.lua b/lua/metrostroi/systems/sys_81_722_bukv.lua index 753225d..604f3a1 100644 --- a/lua/metrostroi/systems/sys_81_722_bukv.lua +++ b/lua/metrostroi/systems/sys_81_722_bukv.lua @@ -172,7 +172,7 @@ function TRAIN_SYSTEM:Think() --self:CState("AsyncBroken", AsyncInverter.Power == 0) --FIXME self:CState("AsyncProtection", AsyncInverter.Power == 0) --FIXME self:CState("BVState", not self:Get("PVU5")) --FIXME - self:CState("AsyncEDone", AsyncInverter.EDone>0 or AsyncInverter.Mode==-1 and Train.Speed < 3.5) --FIXME + self:CState("AsyncEDone", AsyncInverter.EDone>0) --FIXME self:CState("NoHV", Electric.Main750V < 550) @@ -201,18 +201,12 @@ function TRAIN_SYSTEM:Think() --? Состояние петли безопасности --? Неисправность вентилятора тормозного реостата - for i=1,5 do - self:CState("PVU"..i, self:Get("PVU"..i)) - end - if self:Get("PVU6") then - self.AsyncDisabled = true - elseif self.AsyncDisabled == true then - self.AsyncDisabled = CurTime() - elseif self.AsyncDisabled and CurTime()-self.AsyncDisabled > 1.5 then - self.AsyncDisabled = false - end - self:CState("PVU6", not not self.AsyncDisabled) - self:CState("PVU7", self:Get("PVU7")) + self:CState("PVU1", self:Get("PVU1")) + self:CState("PVU2", self:Get("PVU2")) + self:CState("PVU3", self:Get("PVU3")) + self:CState("PVU4", self:Get("PVU4")) + self:CState("PVU5", self:Get("PVU5")) + self:CState("PVU6", self:Get("PVU6")) self:CState("BUKVTimer", math.floor((CurTime()*2)%10)) elseif self.States.BUKVTimer then for k,v in pairs(self.Commands) do @@ -230,7 +224,7 @@ function TRAIN_SYSTEM:Think() if self.Emer ~= Train.Electric.Emer then self.Emer = Train.Electric.Emer if self.Emer > 0 then - for i=1,7 do + for i=1,6 do self.States["PVU"..i] = false end end @@ -248,7 +242,7 @@ function TRAIN_SYSTEM:Think() if not PTReplace and self.PTReplace then self.PTReplace = nil end local PN = self.PTReplace and CurTime()-self.PTReplace > 1.2 or self.States.AsyncEDone self.PN1 = self:Get("PN1") or PN and (self:Get("DriveStrength") and self:Get("DriveStrength") > 0) or self:Get("ARSBrake") and (Train.Electric.Type>1 or not self.States.AsyncAssembly) - self.PN2 = self:Get("PN2") or PN and (self:Get("DriveStrength") and (not self.States.AsyncEDone and not PTReplace and self:Get("DriveStrength") > 0.2 or (PTReplace or self.States.AsyncEDone) and self:Get("DriveStrength") > 0.7 or self:Get("BrakeTPlus"))) + self.PN2 = self:Get("PN2") or PN and (self:Get("DriveStrength") and (not self.States.AsyncEDone and self:Get("DriveStrength") > 0.2 or self:Get("BrakeTPlus"))) --self.MK = (not self:Get("PVU3") and self:Get("Compressor"))and 1 or 0 @@ -260,7 +254,7 @@ function TRAIN_SYSTEM:Think() self.Drive = (1-brake)*(strength>0 and 1 or 0) self.Brake = brake*(strength>0 and 1 or 0) local BCPressure = self.States.BCPressure or 0 - if self.Brake>0 and BCPressure < 1.5 or self.Drive>0--[[ and BCPressure < 0.5]] then + if self.Brake>0 and BCPressure < 1.5 or self.Drive>0 and BCPressure < 0.5 then self.Strength = strength*100 else self.Strength = 0 @@ -275,7 +269,7 @@ function TRAIN_SYSTEM:Think() self.DisablePSN = self:Get("PVU3") and 1 or 0 self.EnableMK = (not self:Get("PVU4") and self:Get("Compressor")) and 1 or 0 self.DisableTP = (self:Get("PVU5") or self:Get("PVU6")) and 1 or 0 - self.DisablePant = (self:Get("DisablePant") or self:Get("PVU7")) and 1 or 0 + self.DisablePant = self:Get("DisablePant") and 1 or 0 self.ParkingBrake = self:Get("ParkingBrake") local vent = self:Get("PassVent") or 0 if vent==1 then diff --git a/lua/metrostroi/systems/sys_81_722_electric.lua b/lua/metrostroi/systems/sys_81_722_electric.lua index 7976900..38452c4 100644 --- a/lua/metrostroi/systems/sys_81_722_electric.lua +++ b/lua/metrostroi/systems/sys_81_722_electric.lua @@ -20,8 +20,8 @@ function TRAIN_SYSTEM:Initialize() self.HaveAsyncInverter = 0--self.HaveAsyncInverter or self.Type 0)+Train.SF9.Value*C(Train.BARSMode.Value < 2))*Train.RCARS.Value) Panel.ARSPower = Panel.BARSPower*(1-Train.BUKP.Back)*Train.ARS.Value - Panel.ALSPower = BO*(1-Train.BUKP.Back)*Train.ALS.Value + Panel.ALSPower = Panel.BARSPower*(1-Train.BUKP.Back)*Train.ALS.Value Panel.UPOPower = BO*S["RV"]*Train.R_UPO.Value Train:WriteTrainWire(15,BO*(Train.UPO.LineOut*Train.SarmatUPO.UPOActive+Train.SarmatUPO.LineOut)) @@ -214,26 +214,25 @@ function TRAIN_SYSTEM:Think(dT) Async:TriggerInput("Power",BO*Train.SF56.Value*(1-BUKV.DisableTP)) - local speed = math.abs(Async.Speed) + local command = 0 + if self.AsyncEmer > 0 then - Async:TriggerInput("Drive",W[19]) + command = self.AsyncEmer*W[19] + Async:TriggerInput("Drive",command) Async:TriggerInput("Brake",0) - if W[19] > 0 then - Async:TriggerInput("TargetTorque",(1.0+Clamp(speed/15,0,1)-Clamp((speed-30)/38,0,2))*(3)) - else - Async:TriggerInput("TargetTorque",0) - end else Async:TriggerInput("Drive",BUKV.Drive) Async:TriggerInput("Brake",BUKV.Brake) - local command = (BUKV.Strength/100)*(BUKV.Drive-BUKV.Brake) - if command > 0 then - Async:TriggerInput("TargetTorque",(math.abs(command)^0.5)*(1.0+Clamp(speed/15,0,1)-Clamp((speed-30)/38,0,2))*(1+Train.Pneumatic.WeightLoadRatio*0.3)) - elseif command < 0 then - Async:TriggerInput("TargetTorque",Clamp((speed-1)/4,0,1)*math.abs(command)*2.4*(1+Train.Pneumatic.WeightLoadRatio*0.3)) - else - Async:TriggerInput("TargetTorque",0) - end + command = (BUKV.Strength/100)*(BUKV.Drive-BUKV.Brake) + end + --print(Format("%.2f %.2f %d %.2f",command,Async.Speed,Async.Mode,Async.State)) + local speed = math.abs(Async.Speed) + if command > 0 then + Async:TriggerInput("TargetTorque",(math.abs(command)^0.75)*(1.0+Clamp(speed/15,0,1)-Clamp((speed-30)/35,0,2))*(1+Train.Pneumatic.WeightLoadRatio*0.3)) + elseif command < 0 then + Async:TriggerInput("TargetTorque",Clamp((speed-2)/6,0,1)*math.abs(command)*2.4*(1+Train.Pneumatic.WeightLoadRatio*0.3)) + else + Async:TriggerInput("TargetTorque",0) end self.PSN = HV*(1-BUKV.DisablePSN) diff --git a/lua/metrostroi/systems/sys_81_722_mfdu.lua b/lua/metrostroi/systems/sys_81_722_mfdu.lua index ad69c78..6816d5d 100644 --- a/lua/metrostroi/systems/sys_81_722_mfdu.lua +++ b/lua/metrostroi/systems/sys_81_722_mfdu.lua @@ -86,7 +86,7 @@ TRAIN_SYSTEM.ErrorNames = { --[46] = {"нет связи с БТБУ",1}, --[47] = {"Не открывается Х левая дверь на %d вагоне",2}, --[48] = {"Не открывается Х правая дверь на %d вагоне",2}, - [49] = {"Открытие левых дверей на хвостовом вагоне",3}, + [49] = {"Открытие левых дверей на хвостовом вагоне подтверждено",3}, --[50] = {"Отказ системы внутреннего видеонаблюдения на вагоне",3}, --[51] = {"Вызов связи «Пассажир-Машинист» на вагоне",3}, --[52] = {"Неисправность ключей КПД",1}, @@ -342,28 +342,25 @@ if SERVER then local i = i-self.Page-1 local pvu = BUKP.PVU[i+1] - if 13+i*131 < x and x < 130+i*131 and 110+61*0 < y and y < 160+61*0 then + if 13+i*131 < x and x < 130+i*131 and 110+71*0 < y and y < 168+71*0 then pvu[1] = not pvu[1] end - if 13+i*131 < x and x < 130+i*131 and 110+61*1 < y and y < 160+61*1 then + if 13+i*131 < x and x < 130+i*131 and 110+71*1 < y and y < 168+71*1 then pvu[2] = not pvu[2] end if BUKP.Trains[i+1].Type < 2 then - if 13+i*131 < x and x < 130+i*131 and 110+61*2 < y and y < 160+61*2 then + if 13+i*131 < x and x < 130+i*131 and 110+71*2 < y and y < 168+71*2 then pvu[3] = not pvu[3] end - if 13+i*131 < x and x < 130+i*131 and 110+61*3 < y and y < 160+61*3 then + if 13+i*131 < x and x < 130+i*131 and 110+71*3 < y and y < 168+71*3 then pvu[4] = not pvu[4] end - --[[ if 13+i*131 < x and x < 130+i*131 and 110+61*4 < y and y < 160+61*4 then + --[[ if 13+i*131 < x and x < 130+i*131 and 110+71*4 < y and y < 168+71*4 then pvu[5] = not pvu[5] end--]] - if 13+i*131 < x and x < 130+i*131 and 110+61*5 < y and y < 160+61*5 then + if 13+i*131 < x and x < 130+i*131 and 110+71*5 < y and y < 168+71*5 then pvu[6] = not pvu[6] end - if 13+i*131 < x and x < 130+i*131 and 110+61*6 < y and y < 160+61*6 then - pvu[7] = not pvu[7] - end end end end @@ -408,31 +405,55 @@ if SERVER then if Power and self.State == 0 then self.State = -1 self.MFDUTimer = CurTime()-math.Rand(-0.5,1) + self.Windows95 = math.random() > 0.9 + Train:SetNW2Bool("MFDUWin95Egg",self.Windows95) end - if self.State == -1 and self.MFDUTimer and CurTime()-self.MFDUTimer > 7 then + if self.State == -1 and self.MFDUTimer and CurTime()-self.MFDUTimer > 2 then self.State = -2 - self.MFDUTimer = CurTime()-math.Rand(-0.5,1) - end - if self.State == -2 then - if self.MFDUTimer and CurTime()-self.MFDUTimer > 4 then - self.State = -3 - self.MFDUTimer = CurTime()-math.Rand(-0.3,0.5) - self.Windows95 = math.random() >= 0.98 - Train:SetNW2Bool("MFDUWin95Egg",self.Windows95) + if self.Windows95 then + self.MFDUTimer = CurTime()-math.Rand(-0.5,1) + else + self.MFDUTimer = {0,0,0}--CurTime()-math.Rand(-0.5,1) + for i=1,3 do + Train:SetNW2Int("MFDULoadState"..i,0) + end end end - if self.State == -3 and self.Windows95 and self.MFDUTimer and CurTime()-self.MFDUTimer > 6 then - self.State = -4 - self.MFDUTimer = CurTime()-math.Rand(-0.3,0.5) + if self.State == -2 then + if self.Windows95 then + if self.MFDUTimer and CurTime()-self.MFDUTimer > 10 then + self.State = -3 + self.MFDUTimer = CurTime()-math.Rand(-0.3,0.5) + end + else + local done = true + for i=1,3 do + if self.MFDUTimer[i] < 1 then + if math.random() > 0.1+(i*0.06-i*0.022) then + self.MFDUTimer[i] = math.min(1,self.MFDUTimer[i] + math.Rand(0.08-i*0.02,0.2-(i*0.03-i*0.015))*dT) + end + done = false + Train:SetNW2Int("MFDULoadState"..i,self.MFDUTimer[i]*100) + end + end + if done then + for i=1,3 do + Train:SetNW2Int("MFDULoadState"..i,0) + end + self.State = -3 + self.MFDUTimer = CurTime()-math.Rand(-0.3,0.5) + end + end end - if self.State == -3 and not self.Windows95 and self.MFDUTimer and CurTime()-self.MFDUTimer > 3 or self.State == -4 and self.Windows95 and self.MFDUTimer and CurTime()-self.MFDUTimer > 0.5 then + if self.State == -3 and self.MFDUTimer and CurTime()-self.MFDUTimer > 1 then self.State = 1 self.MFDUL2State = 0 self.MFDUL3State = 0 self.MFDUL4State = 0 end + local Active = Train.Electric.CabActive>0 local trains = BUKP.Trains if self.State > 0 then @@ -446,13 +467,13 @@ if SERVER then Train:SetPackedRatio("MFDUPowerCommand",BUKP.States.DriveStrength or 0) end Train:SetNW2Bool("MFDUARSBrake",BUKP.Braking) - Train:SetNW2Int("MFDUSpeed",BUKP.Speed) - Train:SetNW2Bool("MFDUBARSActive",Train.Panel.ARSPower>0) if self.MFDUL2State == 0 then + Train:SetNW2Int("MFDUSpeed",BUKP.Speed) local BARS = Train.BARS Train:SetNW2Int("MFDUSpeedLimit",BARS.F1>0 and 80 or BARS.F2>0 and 70 or BARS.F3>0 and 60 or BARS.F4>0 and 40 or BARS.F5>0 and 0 or -1) - Train:SetNW2Bool("MFDUALSActive",Train.Panel.ARSPower>0) + Train:SetNW2Bool("MFDUBARSActive",Train.Panel.ARSPower>0) + Train:SetNW2Bool("MFDUALSActive",Train.Panel.ALSPower>0) end elseif not Active then @@ -575,7 +596,7 @@ if SERVER then end elseif self.MFDUL2State == 5 then for i,train in ipairs(trains) do - for p=1,train.Type<2 and 7 or 2 do + for p=1,train.Type<2 and 6 or 2 do Train:SetPackedBool("MFDUDPVUC"..i.."_"..p,BUKP.PVU[i][p]) Train:SetPackedBool("MFDUDPVUB"..i.."_"..p,train["PVU"..p]) end @@ -649,7 +670,7 @@ if SERVER then end --ErrorConfirm - Train:SetNW2Bool("MFDUIdent",BUKP.Prepared ~= true or not Active) + Train:SetNW2Bool("MFDUIdent",BUKP.Prepared ~= true) Train:SetPackedBool("MFDUActive",Active) Train:SetPackedBool("MFDUBackCab",BUKP.Back>0) @@ -692,8 +713,6 @@ else createFont("Calibri23","Calibri",23,800) createFont("FixedSys35","FixedsysTTF",35) createFont("722LastStation","soviet font",59,800) - local kontron_logo = surface.GetTextureID("models/metrostroi_train/81-722/screens/kontron_logo") - local win95_splash = surface.GetTextureID("models/metrostroi_train/81-722/screens/windows95_splash") local windows95_load = surface.GetTextureID("models/metrostroi_train/81-722/screens/windows95_load") @@ -729,19 +748,10 @@ else function TRAIN_SYSTEM:ClientThink(dT) if not self.Train:ShouldDrawPanel("Vityaz") then return end render.PushRenderTarget(self.Train.Vityaz,0,0,1024, 1024) - if self.PrepareLoad then - render.Clear(0, 0, 0, 0) - end + render.Clear(0, 0, 0, 0) cam.Start2D() - if self.Train:GetNW2Int("MFDUState",0) ~= -1 then - surface.SetDrawColor(0,0,0) - surface.DrawRect(0,0,800,600) - self.PrepareLoad = true - elseif self.PrepareLoad then - surface.SetDrawColor(200,200,200) - surface.DrawRect(1,0,799,600) - self.PrepareLoad = false - end + surface.SetDrawColor(0,0,0) + surface.DrawRect(0,0,800,600) self:BUKPMonitor(self.Train,dT) cam.End2D() render.PopRenderTarget() @@ -756,7 +766,7 @@ else "Двери", "Вагон.\nоборуд.", "Тяговый\nпривод.", - --"Теневой" + "Теневой" } for i=1,#buttons do local x = {} @@ -783,12 +793,11 @@ else local errorstates = { {"А",Color(255,0,0)}, {"Б",Color(255,255,0)}, - {"В",Color(0,255,255)}, + {"В",Color(255,255,255)}, } function TRAIN_SYSTEM:ClientInitialize() self.PowerCommand = 0 - self.PowerCommandSmooth = 0 end local function drawButton(i,text,state,format,color) @@ -825,29 +834,32 @@ else local Active = Train:GetPackedBool("MFDUActive") local Back = Train:GetPackedBool("MFDUBackCab") local WagNum = Train:GetNW2Int("MFDUWagNum",0) - if state == -1 then - surface.SetDrawColor(255,0,0) - surface.DrawRect(200,0,1,600) - surface.SetDrawColor(0,0,20,15) - surface.DrawRect(201,0,599,600) - elseif state == -2 then - surface.SetTexture(kontron_logo) - surface.SetDrawColor(255,255,255) - surface.DrawTexturedRectRotated(238,122,296,64,0) - - draw.SimpleText("Version 2.13.1215. Copyright (c) 2011 American Megatrends Inc.","Metrostroi_Calibri26",80, 196,Color(123,123,123),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Kontron version NTC1R111, 01/31/2012 10:47:49","Metrostroi_Calibri26",80, 216,Color(123,123,123),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - draw.SimpleText("Press or to enter Setup. for Boot menu","Metrostroi_Calibri26",80, 236,Color(123,123,123),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) - elseif state == -3 and Train:GetPackedBool("MFDUWin95Egg") then - render.SetScissorRect(2, 0, 800, 600, true) - surface.SetTexture(win95_splash) - surface.SetDrawColor(180,180,180) - surface.DrawTexturedRectRotated(512,512,1024,1024,0) - surface.SetTexture(windows95_load) - surface.SetDrawColor(180,180,180) - surface.DrawTexturedRectRotated(800+(RealTime()%4*200-400),591,800,14,0) - surface.DrawTexturedRectRotated(800+(RealTime()%4*200-400)-800,591,800,14,0) + if state == -2 then + if Train:GetPackedBool("MFDUWin95Egg") then + render.SetScissorRect(2, 0, 800, 600, true) + surface.SetTexture(win95_splash) + surface.SetDrawColor(180,180,180) + surface.DrawTexturedRectRotated(512,512,1024,1024,0) + surface.SetTexture(windows95_load) + surface.SetDrawColor(180,180,180) + surface.DrawTexturedRectRotated(800+(RealTime()%4*200-400),591,800,14,0) + surface.DrawTexturedRectRotated(800+(RealTime()%4*200-400)-800,591,800,14,0) render.SetScissorRect( 0, 0, 0, 0, false ) + --surface.DrawTexturedRectRotated(512,474,64,13,0) + else + local lstate = Train:GetNW2Int("MFDULoadState1",0)/100 + local lstate2 = Train:GetNW2Int("MFDULoadState2",0)/100 + local lstate3 = Train:GetNW2Int("MFDULoadState3",0)/100 + surface.SetDrawColor(0,69,125) + surface.DrawRect(10,550,600*lstate,30) + surface.SetDrawColor(0,113,178) + surface.DrawRect(10,550,600*lstate2,30) + surface.SetDrawColor(255,255,255) + surface.DrawRect(10,550,600*lstate3,30) + draw.SimpleText("CentOS 6.5","Metrostroi_FixedSys35",620, 565,lstate2 == 1 and Color(255,255,255) or lstate == 1 and Color(0,113,178) or Color(0,69,125),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER) + end + --surface.SetTexture(ubuntu_load) + --surface.SetDrawColor(255,255,255) elseif state == -10 then if Train:GetPackedBool("MFDUEmer") then surface.SetDrawColor(255,255,255) @@ -863,18 +875,13 @@ else elseif state == 1 then local PCmd = Train:GetPackedRatio("MFDUPowerCommand",0) local lineSel = Train:GetNW2Int("MFDULineSel") - local dPCmd = math.abs(PCmd-self.PowerCommand)/0.8 + local dPCmd = math.abs(PCmd-self.PowerCommand)/0.6 if dPCmd > 0.14 then self.PowerCommand = PCmd elseif self.PowerCommand < PCmd then - self.PowerCommand = math.min(self.PowerCommand+dT*0.8,PCmd) + self.PowerCommand = math.min(self.PowerCommand+dT*0.55,PCmd) elseif self.PowerCommand > PCmd then - self.PowerCommand = math.max(self.PowerCommand-dT*0.8,PCmd) - end - if self.PowerCommandSmooth < PCmd and dPCmd > 0.14 and PCmd <= 0 then - self.PowerCommandSmooth = PCmd - else - self.PowerCommandSmooth = self.PowerCommandSmooth+(self.PowerCommand-self.PowerCommandSmooth)*dT*20 + self.PowerCommand = math.max(self.PowerCommand-dT*0.55,PCmd) end if state2 == 0 then if Back then @@ -887,12 +894,11 @@ else if Train:GetNW2Bool("MFDUALSActive") then local speedLimit = Train:GetNW2Int("MFDUSpeedLimit",-1) if speedLimit == -1 then - draw.SimpleText("НЧ","Metrostroi_Calibri60",180, 80,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("БАРС","Metrostroi_Calibri30",180, 110,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText("НЧ","Metrostroi_BUKPSpeed",180, 105,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) elseif speedLimit >= 0 then local color = Color(speedLimit < 60 and 255 or 0,speedLimit > 20 and 255 or 0,0) - draw.SimpleText(speedLimit,"Metrostroi_Calibri60",180, 80,color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("БАРС","Metrostroi_Calibri30",180, 110,color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText(speedLimit,"Metrostroi_BUKPSpeed",180, 105,color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + draw.SimpleText("км/ч","Metrostroi_Calibri30",180, 145,color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end end @@ -928,9 +934,9 @@ else --draw.SimpleText(math.floor(Train:GetPackedRatio("FREQ",99)),"Metrostroi_BUKPSpeed",384, 150,Color(220,0,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) surface.SetDrawColor(38,38,38) surface.DrawRect(24,476,751,34) - if Active and -0.01 > self.PowerCommandSmooth or self.PowerCommandSmooth > 0.01 then - surface.SetDrawColor(self.PowerCommandSmooth < 0 and 255 or 0,Train:GetNW2Bool("MFDUARSBrake",false) and 0 or 255,0) - surface.DrawRect(400,477,math.Clamp(self.PowerCommandSmooth*377,-375,375),32) + if Active and -0.01 > self.PowerCommand or self.PowerCommand > 0.01 then + surface.SetDrawColor(self.PowerCommand < 0 and 255 or 0,Train:GetNW2Bool("MFDUARSBrake",false) and 0 or 255,0) + surface.DrawRect(400,477,math.Clamp(self.PowerCommand*377,-375,375),32) end for i=1,WagNum>6 and 8 or 6 do @@ -976,7 +982,7 @@ else end if not Back then - for i=0,8 do + for i=0,9 do surface.SetDrawColor(38,38,38) surface.DrawRect(1+i*80,538,78,61) Metrostroi.DrawRectOutline(1+i*80,538,78,61,Color(129,129,129),1) @@ -1248,21 +1254,20 @@ else local ix = i-page-1 Metrostroi.DrawRectOutline(13+ix*131,59,117,38,Color(129,129,129),1) draw.SimpleText(Format("%05d",Train:GetNW2Int("MFDUWagNum"..i,0)),"Metrostroi_Calibri40",71+ix*131,78, Color(129,129,129),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,110,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_1") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_1") and 6 or 1) - draw.SimpleText("Двери","Metrostroi_Calibri35",71+ix*131,132,Train:GetNW2Bool("MFDUDPVUB"..i.."_1") and Color(220,0,0) or Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,171,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_2") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_2") and 6 or 1) - draw.SimpleText("Свет","Metrostroi_Calibri35",71+ix*131,193, Train:GetNW2Bool("MFDUDPVUB"..i.."_2") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + + Metrostroi.DrawRectOutline(13+ix*131,110,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_1") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_1") and 6 or 1) + draw.SimpleText("Двери","Metrostroi_Calibri35",71+ix*131,137,Train:GetNW2Bool("MFDUDPVUB"..i.."_1") and Color(220,0,0) or Color(129,129,129),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + Metrostroi.DrawRectOutline(13+ix*131,181,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_2") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_2") and 6 or 1) + draw.SimpleText("Свет","Metrostroi_Calibri35",71+ix*131,208, Train:GetNW2Bool("MFDUDPVUB"..i.."_2") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) if Train:GetNW2Bool("MFDUWagTyp"..i,false) then - Metrostroi.DrawRectOutline(13+ix*131,232,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_3") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_3") and 6 or 1) - draw.SimpleText("ПСН","Metrostroi_Calibri35",71+ix*131,254, Train:GetNW2Bool("MFDUDPVUB"..i.."_3") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,293,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_4") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_4") and 6 or 1) - draw.SimpleText("МК","Metrostroi_Calibri35",71+ix*131,315, Train:GetNW2Bool("MFDUDPVUB"..i.."_4") and Color(220,0,0) or Color(129,129,129),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,354,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_5") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_5") and 6 or 1) - draw.SimpleText("БВ","Metrostroi_Calibri35",71+ix*131,376, Train:GetNW2Bool("MFDUDPVUB"..i.."_5") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,415,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_6") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_6") and 6 or 1) - draw.SimpleText("ТП","Metrostroi_Calibri35",71+ix*131,437, Train:GetNW2Bool("MFDUDPVUB"..i.."_6") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - Metrostroi.DrawRectOutline(13+ix*131,476,117,50,Train:GetNW2Bool("MFDUDPVUC"..i.."_7") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_7") and 6 or 1) - draw.SimpleText("ТкПр","Metrostroi_Calibri35",71+ix*131,498, Train:GetNW2Bool("MFDUDPVUB"..i.."_7") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + Metrostroi.DrawRectOutline(13+ix*131,252,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_3") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_3") and 6 or 1) + draw.SimpleText("ПСН","Metrostroi_Calibri35",71+ix*131,279, Train:GetNW2Bool("MFDUDPVUB"..i.."_3") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + Metrostroi.DrawRectOutline(13+ix*131,323,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_4") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_4") and 6 or 1) + draw.SimpleText("МК","Metrostroi_Calibri35",71+ix*131,350, Train:GetNW2Bool("MFDUDPVUB"..i.."_4") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + Metrostroi.DrawRectOutline(13+ix*131,394,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_5") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_5") and 6 or 1) + draw.SimpleText("БВ","Metrostroi_Calibri35",71+ix*131,421, Train:GetNW2Bool("MFDUDPVUB"..i.."_5") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + Metrostroi.DrawRectOutline(13+ix*131,465,117,58,Train:GetNW2Bool("MFDUDPVUC"..i.."_6") and Color(220,0,0) or Color(129,129,129),Train:GetNW2Bool("MFDUDPVUC"..i.."_6") and 6 or 1) + draw.SimpleText("ТП","Metrostroi_Calibri35",71+ix*131,492, Train:GetNW2Bool("MFDUDPVUB"..i.."_6") and Color(220,0,0) or Color(0,220,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) end @@ -1393,9 +1398,9 @@ else end surface.SetDrawColor(38,38,38) surface.DrawRect(24,476,751,34) - if -0.01 > self.PowerCommandSmooth or self.PowerCommandSmooth > 0.01 then - surface.SetDrawColor(self.PowerCommandSmooth < 0 and 255 or 0,Train:GetPackedBool("ARSComm",false) and 0 or 255,0) - surface.DrawRect(400,477,math.Clamp(self.PowerCommandSmooth*377,-375,375),32) + if -0.01 > self.PowerCommand or self.PowerCommand > 0.01 then + surface.SetDrawColor(self.PowerCommand < 0 and 255 or 0,Train:GetPackedBool("ARSComm",false) and 0 or 255,0) + surface.DrawRect(400,477,math.Clamp(self.PowerCommand*377,-375,375),32) end surface.SetDrawColor(255,255,255) @@ -1634,14 +1639,6 @@ else if Train:GetNW2Bool("MFDUIdent") then draw.SimpleText("Идентификация","Metrostroi_Calibri26",701, 22,Color(123,123,123),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - elseif state2 > 1 and state2 ~= 2 then - if Train:GetNW2Bool("MFDUBARSActive") then - draw.SimpleText(math.floor(Train:GetNW2Int("MFDUSpeed",0)),"Metrostroi_Calibri60",650, 22,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("км/ч","Metrostroi_Calibri30",720, 22,Color(255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - else - draw.SimpleText(math.floor(Train:GetNW2Int("MFDUSpeed",0)),"Metrostroi_Calibri60",650, 22,Color(255,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - draw.SimpleText("км/ч","Metrostroi_Calibri30",720, 22,Color(255,255,0),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) - end else--if Active then local drvnum = Train:GetNW2Int("MFDUDriverNumber",-1) draw.SimpleText(Format("%010d",drvnum > -1 and drvnum or 0),"Metrostroi_Calibri26",701, 22,Color(123,123,123),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) @@ -1654,7 +1651,7 @@ else end end end - if state ~= 0 and state ~= -1 then + if state ~= 0 then surface.SetDrawColor(0,0,20,100) surface.DrawRect(0,0,800,600) end diff --git a/lua/metrostroi/systems/sys_81_722_panel.lua b/lua/metrostroi/systems/sys_81_722_panel.lua index 05c9378..2f8a960 100644 --- a/lua/metrostroi/systems/sys_81_722_panel.lua +++ b/lua/metrostroi/systems/sys_81_722_panel.lua @@ -130,7 +130,7 @@ function TRAIN_SYSTEM:Initialize() self.RS = 0 self.AVS = 0 - self.LRU = 0 + self.RU = 0 self.EmergencyDriveL = 0 self.EmergencyBrakeTPlusL = 0 @@ -177,7 +177,7 @@ function TRAIN_SYSTEM:Inputs() end function TRAIN_SYSTEM:Outputs() - return { "Controller","BattOn","BattOff","SOSDL","RS","AVS","LRU","EmergencyDriveL","EmergencyBrakeTPlusL","DoorLeftL","DoorRightL","MFDUPowerL","CabLights","PanelLights","Headlights1","Headlights2","RedLights","EmergencyLights","MainLights", "V4","SOSD","UPOPower","AnnouncerPlaying", "PassSchemePowerL", "PassSchemePowerR","DoorsW","BrW","GRP","RC","VPR1","VPR2","BARSPower","ARSPower","ALSPower"} + return { "Controller","BattOn","BattOff","SOSDL","RS","AVS","RU","EmergencyDriveL","EmergencyBrakeTPlusL","DoorLeftL","DoorRightL","MFDUPowerL","CabLights","PanelLights","Headlights1","Headlights2","RedLights","EmergencyLights","MainLights", "V4","SOSD","UPOPower","AnnouncerPlaying", "PassSchemePowerL", "PassSchemePowerR","DoorsW","BrW","GRP","RC","VPR1","VPR2","BARSPower","ARSPower","ALSPower"} end --if not TURBOSTROI then return end function TRAIN_SYSTEM:TriggerInput(name,value) diff --git a/lua/metrostroi/systems/sys_81_722_pneumatic.lua b/lua/metrostroi/systems/sys_81_722_pneumatic.lua index 6ef560c..34efb04 100644 --- a/lua/metrostroi/systems/sys_81_722_pneumatic.lua +++ b/lua/metrostroi/systems/sys_81_722_pneumatic.lua @@ -85,8 +85,6 @@ function TRAIN_SYSTEM:Initialize() self.RightDoorDir = { 0,0,0,0 } self.LeftDoorSpeed = {0,0,0,0} self.RightDoorSpeed = {0,0,0,0} - self.LeftDoorStuck = {false, false, false, false} - self.RightDoorStuck = {false, false, false, false} self.DoorSpeedMain = math.Rand(1.9,2.1) for i=1,#self.LeftDoorSpeed do self.LeftDoorSpeed[i] = math.Rand(self.DoorSpeedMain-0.3,self.DoorSpeedMain+0.3) @@ -325,7 +323,7 @@ function TRAIN_SYSTEM:Think(dT) self.Leak = true end self.EPKLeaking = self.Leak - self.Train:SetPackedRatio("EmergencyValveEPK_dPdT", -leak*2) + self.Train:SetPackedRatio("EmergencyValveEPK_dPdT", -leak) end local leak = 0 if self.Train.EmergencyBrakeValve and self.Train.EmergencyBrakeValve.Value > 0.5 then @@ -385,7 +383,7 @@ function TRAIN_SYSTEM:Think(dT) if self.EmergencyBrakeActive then PMPressure = self.AirDistributorPressure if self.BrakeCylinderPressure < self.AirDistributorPressure and self.AirDistributorPressure-self.BrakeCylinderPressure > 0.1 then - self:equalizePressure(dT,"AirDistributorPressure",0, math.min(self.TrainLinePressure,self.AirDistributorPressure-self.BrakeCylinderPressure)*1, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, nil, 2) + self:equalizePressure(dT,"AirDistributorPressure",0, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, (self.AirDistributorPressure-self.BrakeCylinderPressure)*1, nil, 2) end end if Power then @@ -393,13 +391,13 @@ function TRAIN_SYSTEM:Think(dT) if Train:ReadTrainWire(29) > 0 then EPMPressure = 1.7+self.WeightLoadRatio*0.7 --2 уставка elseif Train:ReadTrainWire(30) > 0 then - EPMPressure = 0.75+self.WeightLoadRatio*0.5 --1 уставка + EPMPressure = 0.9+self.WeightLoadRatio*0.5 --1 уставка end else if Train.BUKV.PN2 then EPMPressure = 1.7+self.WeightLoadRatio*0.7 --2 уставка elseif Train.BUKV.PN1 then - EPMPressure = 0.75+self.WeightLoadRatio*0.5 --1 уставка + EPMPressure = 0.9+self.WeightLoadRatio*0.5 --1 уставка end end end @@ -422,7 +420,7 @@ function TRAIN_SYSTEM:Think(dT) local pneumaticValveConsumption_dPdT = 0 trainLineConsumption_dPdT = trainLineConsumption_dPdT + math.max(0,pneumaticValveConsumption_dPdT) if self.BrakeCylinderValve == 1 then - self:equalizePressure(dT,"BrakeCylinderPressure", math.min(3.3,self.TrainLinePressure,targetPressure), 2.50, 2.50, nil, self.BrakeCylinderPressure > targetPressure and 0.3+math.Clamp((self.BrakeCylinderPressure-0.4)/3.3,0,0.6) or 0.9) + self:equalizePressure(dT,"BrakeCylinderPressure", math.min(3.3,targetPressure), 2.50, 2.50, nil, self.BrakeCylinderPressure > targetPressure and 0.3+math.Clamp((self.BrakeCylinderPressure-0.4)/3.3,0,0.6) or 0.9) --if self.DriversValve == 1 then --self:equalizePressure(dT,"BrakeCylinderPressure", targetPressure, 2.00, 3.50, nil, 1.0) --0.75, 1.25) --else @@ -530,27 +528,14 @@ function TRAIN_SYSTEM:Think(dT) self.DoorRight = false elseif commandLeft then self.DoorLeft = true elseif commandRight then self.DoorRight = true end - if Train.CanStuckPassengerLeft then - for i in ipairs(self.LeftDoorStuck) do - self.LeftDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerLeft*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerLeft = false - end - if Train.CanStuckPassengerRight then - for i in ipairs(self.RightDoorStuck) do - self.RightDoorStuck[i] = math.random() < (0.6+math.min(2,2-self.LeftDoorSpeed[i])*0.2)*Train.CanStuckPassengerRight*0.6 and (math.random() > 0.7 and CurTime()+math.random()*15) - end - Train.CanStuckPassengerRight = false - end - Train.LeftDoorsOpen = false Train.RightDoorsOpen = false for i=1,4 do self.LeftDoorDir[i] = math.Clamp(self.LeftDoorDir[i]+dT*(self.DoorLeft and self.LeftDoorSpeed[i] or -self.LeftDoorSpeed[i]),-1,1) self.RightDoorDir[i] = math.Clamp(self.RightDoorDir[i]+dT*(self.DoorRight and self.RightDoorSpeed[i] or -self.RightDoorSpeed[i]),-1,1) - self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + (1/self.LeftDoorSpeed[i]*dT*self.LeftDoorDir[i]),self.LeftDoorStuck[i] and 0.3 or 0,1) + self.LeftDoorState[i] = math.Clamp(self.LeftDoorState[i] + (1/self.LeftDoorSpeed[i]*dT*self.LeftDoorDir[i]),0,1) if self.LeftDoorState[i] == 0 or self.LeftDoorState[i] == 1 then self.LeftDoorDir[i] = 0 end - self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + (1/self.RightDoorSpeed[i]*dT*self.RightDoorDir[i]),self.RightDoorStuck[i] and 0.3 or 0,1) + self.RightDoorState[i] = math.Clamp(self.RightDoorState[i] + (1/self.RightDoorSpeed[i]*dT*self.RightDoorDir[i]),0,1) if self.RightDoorState[i] == 0 or self.RightDoorState[i] == 1 then self.RightDoorDir[i] = 0 end ---[[ if self.LeftDoorState[i] > 0 then diff --git a/lua/metrostroi/systems/sys_81_722_routenumber.lua b/lua/metrostroi/systems/sys_81_722_routenumber.lua index 63ab6d0..a9451ae 100644 --- a/lua/metrostroi/systems/sys_81_722_routenumber.lua +++ b/lua/metrostroi/systems/sys_81_722_routenumber.lua @@ -21,11 +21,9 @@ function TRAIN_SYSTEM:Initialize() if self.Train[v] then self.Triggers[v] = self.Train[v].Value > 0.5 end end - if not TURBOSTROI then - self.RouteNumber = IsValid(self.Train.Owner) and Format("%03d",tonumber(self.Train.Owner:GetInfo("metrostroi_route_number","61")) or 0) or "000" - self.CurrentRouteNumber = self.RouteNumber - self.RouteNumberState = 42 - end + self.CurrentRouteNumber = 777 + self.RouteNumber = 777 + self.RouteNumberState = 42 end function TRAIN_SYSTEM:Outputs() diff --git a/lua/metrostroi/systems/sys_81_722_sarmat_upo.lua b/lua/metrostroi/systems/sys_81_722_sarmat_upo.lua index 30b5357..81dedbb 100644 --- a/lua/metrostroi/systems/sys_81_722_sarmat_upo.lua +++ b/lua/metrostroi/systems/sys_81_722_sarmat_upo.lua @@ -536,7 +536,6 @@ if SERVER then if not Power and self.SarmatState ~= 0 then self.SarmatState = 0 self.SarmatTimer = nil - if self.LineOut>0 then self:AnnQueue(-2) end end if Power and self.SarmatState == 0 then self.SarmatState = -1 diff --git a/lua/metrostroi/systems/sys_als_ars_bis200a.lua b/lua/metrostroi/systems/sys_als_ars_bis200a.lua index 92a36bb..eeeaae2 100644 --- a/lua/metrostroi/systems/sys_als_ars_bis200a.lua +++ b/lua/metrostroi/systems/sys_als_ars_bis200a.lua @@ -23,8 +23,6 @@ function TRAIN_SYSTEM:Initialize() self.Power = 0 self.R0 = 0 self.Speed = 0 - - self.SAdd = 0 end function TRAIN_SYSTEM:Outputs() @@ -32,26 +30,17 @@ function TRAIN_SYSTEM:Outputs() end function TRAIN_SYSTEM:Inputs() - return {"SpeedDec"} + return {} end function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "SpeedDec" then self.SpeedDec = value > 0 end end local function C(val) return val and 1 or 0 end ---[[local function inrange(val,min,max) +local function inrange(val,min,max) return C(min < val and val < max) -end]] - -local function inrange(val,min,max,min2,max2,state) - if state then - return C(min2 < val and val < max2) - else - return C(min < val and val < max) - end end function TRAIN_SYSTEM:Think(dT) @@ -59,48 +48,19 @@ function TRAIN_SYSTEM:Think(dT) local speed = Train.ALSCoil.Speed --vv При торможении смещение на 2км\ч vv - ----[[ - if true or self.SpeedDec then - Train.BIS_R1:TriggerInput("Set", self.Power*inrange(speed,5.5,11.5 ,3.5 ,14.0 ,Train.BIS_R1.Value > 0)) - Train.BIS_R2:TriggerInput("Set", self.Power*inrange(speed,10 ,21.5 ,8.2 ,25.7 ,Train.BIS_R2.Value > 0)) - Train.BIS_R3:TriggerInput("Set", self.Power*inrange(speed,20 ,31.5 ,17.6,35.7 ,Train.BIS_R3.Value > 0)) - Train.BIS_R4:TriggerInput("Set", self.Power*inrange(speed,30 ,41.5 ,27.6,45.7 ,Train.BIS_R4.Value > 0)) - Train.BIS_R5:TriggerInput("Set", self.Power*inrange(speed,40 ,51.5 ,37.6,55.7 ,Train.BIS_R5.Value > 0)) - Train.BIS_R6:TriggerInput("Set", self.Power*inrange(speed,50 ,61.5 ,47.3,65.7 ,Train.BIS_R6.Value > 0)) - Train.BIS_R7:TriggerInput("Set", self.Power*inrange(speed,60 ,71.5 ,56.7,75.6 ,Train.BIS_R7.Value > 0)) - Train.BIS_R8:TriggerInput("Set", self.Power*inrange(speed,70 ,81.5 ,66.7,85.7 ,Train.BIS_R8.Value > 0)) - Train.BIS_R10:TriggerInput("Set",self.Power*inrange(speed,80 ,101.5,74.5,108.4,Train.BIS_R10.Value > 0)) - - --[[ - if speed > self.Speed then - self.SAdd = math.min(1,math.max(-0.3,self.SAdd-(speed-self.Speed)*0.6)) - else - self.SAdd = math.min(1,math.max(-0.3,self.SAdd-(speed-self.Speed)*0.3)) - end - local add = math.max(0,self.SAdd) - --self.R0 = self.Power*C(speed<7)--11.5) - Train.BIS_R1:TriggerInput("Set", self.Power*inrange(speed,5.5-add*2 ,11.5 +add*2.5)) - Train.BIS_R2:TriggerInput("Set", self.Power*inrange(speed,10 -add*1.8,21.5 +add*4.2)) - Train.BIS_R3:TriggerInput("Set", self.Power*inrange(speed,20 -add*2.4,31.5 +add*4.2)) - Train.BIS_R4:TriggerInput("Set", self.Power*inrange(speed,30 -add*2.4,41.5 +add*4.2)) - Train.BIS_R5:TriggerInput("Set", self.Power*inrange(speed,40 -add*2.4,51.5 +add*4.2)) - Train.BIS_R6:TriggerInput("Set", self.Power*inrange(speed,50 -add*2.7,61.5 +add*4.2)) - Train.BIS_R7:TriggerInput("Set", self.Power*inrange(speed,60 -add*3.3,71.5 +add*4.1)) - Train.BIS_R8:TriggerInput("Set", self.Power*inrange(speed,70 -add*3.3,81.5 +add*4.2)) - Train.BIS_R10:TriggerInput("Set",self.Power*inrange(speed,80 -add*5.5,101.5+add*6.9))]] - else - --self.R0 = self.Power*C(speed<7)--11.5) - Train.BIS_R1:TriggerInput("Set",self.Power*inrange(speed,5.5,11.5)) - Train.BIS_R2:TriggerInput("Set",self.Power*inrange(speed,10,21.5)) - Train.BIS_R3:TriggerInput("Set",self.Power*inrange(speed,20,31.5)) - Train.BIS_R4:TriggerInput("Set",self.Power*inrange(speed,30,41.5)) - Train.BIS_R5:TriggerInput("Set",self.Power*inrange(speed,40,51.5)) - Train.BIS_R6:TriggerInput("Set",self.Power*inrange(speed,50,61.5)) - Train.BIS_R7:TriggerInput("Set",self.Power*inrange(speed,60,71.5)) - Train.BIS_R8:TriggerInput("Set",self.Power*inrange(speed,70,81.5)) - Train.BIS_R10:TriggerInput("Set",self.Power*inrange(speed,80,101.5)) - --Train.BIS_R10:TriggerInput("Set",self.Power*C(speed>80)) - end--]] + --self.SAdd = self.SAdd or 0 + --self.SAdd = math.max(-1,math.min(0,self.SAdd+(speed-self.Speed)*dT*4)) + --self.Speed = speed + --speed = speed-self.SAdd*2 --^^ При торможении смещение на 2км\ч ^^ - self.Speed = speed -end \ No newline at end of file + self.R0 = self.Power*C(speed<7)--11.5) + Train.BIS_R1:TriggerInput("Set",self.Power*inrange(speed,5.5,11.5)) + Train.BIS_R2:TriggerInput("Set",self.Power*inrange(speed,10,21.5)) + Train.BIS_R3:TriggerInput("Set",self.Power*inrange(speed,20,31.5)) + Train.BIS_R4:TriggerInput("Set",self.Power*inrange(speed,30,41.5)) + Train.BIS_R5:TriggerInput("Set",self.Power*inrange(speed,40,51.5)) + Train.BIS_R6:TriggerInput("Set",self.Power*inrange(speed,50,61.5)) + Train.BIS_R7:TriggerInput("Set",self.Power*inrange(speed,60,71.5)) + Train.BIS_R8:TriggerInput("Set",self.Power*inrange(speed,70,81.5)) + Train.BIS_R10:TriggerInput("Set",self.Power*C(speed>80)) +end diff --git a/lua/metrostroi/systems/sys_als_ars_blpm.lua b/lua/metrostroi/systems/sys_als_ars_blpm.lua index c0c61fc..4ee1cd1 100644 --- a/lua/metrostroi/systems/sys_als_ars_blpm.lua +++ b/lua/metrostroi/systems/sys_als_ars_blpm.lua @@ -49,7 +49,7 @@ local S = {} function TRAIN_SYSTEM:Think(dT) local Train = self.Train local ALS = Train.ALSCoil - --[[if Train.KPK2 and Train.KPK2.Value > 0 then + if Train.KPK2 and Train.KPK2.Value > 0 then S["TW94"] = Train:ReadTrainWire(self.PKWire or 94) S["F6"] = bit.band(S["TW94"],32)/32 S["F5"] = bit.band(S["TW94"],16)/16 @@ -64,21 +64,6 @@ function TRAIN_SYSTEM:Think(dT) S["F3"] = ALS.F3 S["F2"] = ALS.F2 S["F1"] = ALS.F1 - end]] - S["F6"] = ALS.F6 - S["F5"] = ALS.F5 - S["F4"] = ALS.F4 - S["F3"] = ALS.F3 - S["F2"] = ALS.F2 - S["F1"] = ALS.F1 - if Train.KPK2 and Train.KPK2.Value > 0 then - S["TW94"] = Train:ReadTrainWire(self.PKWire or 94) - S["F6"] = math.max(S["F6"],bit.band(S["TW94"],32)/32) - S["F5"] = math.max(S["F5"],bit.band(S["TW94"],16)/16) - S["F4"] = math.max(S["F4"],bit.band(S["TW94"],8)/8) - S["F3"] = math.max(S["F3"],bit.band(S["TW94"],4)/4) - S["F2"] = math.max(S["F2"],bit.band(S["TW94"],2)/2) - S["F1"] = math.max(S["F1"],bit.band(S["TW94"],1)/1) end local freqCount = self.Power*(S["F6"]+S["F5"]+S["F4"]+S["F3"]+S["F2"]+S["F1"]) self.NoneFreq =freqCount==0 and 1 or 0 diff --git a/lua/metrostroi/systems/sys_als_ars_bum.lua b/lua/metrostroi/systems/sys_als_ars_bum.lua index e699c8d..5ca42fb 100644 --- a/lua/metrostroi/systems/sys_als_ars_bum.lua +++ b/lua/metrostroi/systems/sys_als_ars_bum.lua @@ -22,7 +22,7 @@ function TRAIN_SYSTEM:Initialize(typ) self.Train:LoadSystem("BUM_TR","Relay","ARS",{close_time=typ==2 and 0.02 or 0.15, bass=true,bass_separate=true}) --self.Train:LoadSystem("BUM_PTR","Relay","ARS",{open_time=0.15, bass=true,bass_separate=true}) --self.Train:LoadSystem("BUM_PTR1","Relay","ARS",{open_time=1.4, bass=true,bass_separate=true}) - self.Train:LoadSystem("BUM_PTR","Relay","ARS",{open_time=1.25, bass=true,bass_separate=true}) + self.Train:LoadSystem("BUM_PTR","Relay","ARS",{open_time=1.0, bass=true,bass_separate=true}) self.Train:LoadSystem("BUM_PTR1","Relay","ARS",{open_time=0.9, bass=true,bass_separate=true}) self.Train:LoadSystem("BUM_RIPP","Relay","ARS",{bass=true,bass_separate=true}) diff --git a/lua/metrostroi/systems/sys_als_ars_dnepr.lua b/lua/metrostroi/systems/sys_als_ars_dnepr.lua index 14ccb51..c441e9e 100644 --- a/lua/metrostroi/systems/sys_als_ars_dnepr.lua +++ b/lua/metrostroi/systems/sys_als_ars_dnepr.lua @@ -18,12 +18,6 @@ function TRAIN_SYSTEM:Initialize() self.Train:LoadSystem("ALSCoil") - self.Train:LoadSystem("BIS_R11","Relay","ARS",{bass=true,bass_separate=true}) - self.Train:LoadSystem("BIS_R12","Relay","ARS",{bass=true,bass_separate=true,open_time=2.7}) - self.R11 = 0 - self.R12 = 0 - self.KRH = 0 - self.Train:LoadSystem("BIS200","ALS_ARS_BIS200") self.Train:LoadSystem("BLPM","ALS_ARS_BLPM") self.Train:LoadSystem("BSM","ALS_ARS_BSM") @@ -65,18 +59,14 @@ end function TRAIN_SYSTEM:Outputs() return { "2", "8", "20", "48", "33D", "33G", "48", - "NoFreq","F1","F2","F3","F4","F5","F6","LN","PD", + "NoFreq","F1","F2","F3","F4","F5","F6","LN", "EPK", } end function TRAIN_SYSTEM:Inputs() - return {"KiyvKRH"} + return {} end -function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "KiyvKRH" then self.KiyvKRH = value > 0 end -end - local S = {} function TRAIN_SYSTEM:Think(dT) local Train = self.Train @@ -84,14 +74,6 @@ function TRAIN_SYSTEM:Think(dT) local BLPM = Train.BLPM local Panel = Train.Panel - if self.KiyvKRH then - Train.BSM_KRH:TriggerInput("Set",self.KRH + self.R11*Train.BIS_R11.Value*Train.BIS_R12.Value) - Train.BIS_R11:TriggerInput("Set",self.R11) - Train.BIS_R12:TriggerInput("Set",self.R12*(1-Train.BIS_R11.Value)) - else - Train.BSM_KRH:TriggerInput("Set",self.KRH) - end - Train.FMM1:TriggerInput("Set",self.FMM1) Train.FMM2:TriggerInput("Set",self.FMM2) @@ -99,9 +81,7 @@ function TRAIN_SYSTEM:Think(dT) --Train.BIS_R0:TriggerInput("NoOpenTime",Train.BIS_R1.Value+(1-Train.BIS_R0.Value)) Train.BIS_R0:TriggerInput("NoOpenTime",(1-Train.BIS_R0.Value)+Train.BIS_R1.Value) - --Train.BIS_R0:TriggerInput("Set",(self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value))*Train.BIS200.R0) - Train.BIS_R0:TriggerInput("Set",self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value)) - Train.BSM_PR1:TriggerInput("Set",self.GE*Train.BIS_R1.Value) + Train.BIS_R0:TriggerInput("Set",(self.GE*(1-Train.BSM_GE.Value)+S["RVZ"]*(Train.BIS_R1.Value+Train.BIS_R0.Value))*Train.BIS200.R0) S["RVZ1"] = S["RVZ"]*Train.BIS_R0.Value*(1-Train.BIS_R1.Value) S["EK0"] = S["RVZ1"]*(1-Train.BSM_GE.Value) @@ -256,6 +236,8 @@ function TRAIN_SYSTEM:Think(dT) Train.BUM_RET:TriggerInput("Set",self.GE*(1-Train.BUM_TR.Value)*Train.BUM_PTR1.Value) Train.BUM_PTR1:TriggerInput("Set",self.GE*Train.BUM_TR.Value) Train.BUM_RVZ1:TriggerInput("Set",S["RVZ1"]*(1-Train.BSM_BR2.Value)) + + --EPK -- S["EKR0on"] = @@ -281,7 +263,7 @@ function TRAIN_SYSTEM:Think(dT) Train.BUM_EK:TriggerInput("Set",S["EK"]) Train.BUM_EK1:TriggerInput("Set",S["EK"]) Train.BUM_EK:TriggerInput("OpenTime",S["EKt"]) - Train.BUM_EK1:TriggerInput("OpenTime",S["EKt"]) + Train.BUM_EK:TriggerInput("OpenTime",S["EKt"]) self.EPK = self.GE*Train.BUM_EK.Value*Train.BUM_EK1.Value Train.BUM_PEK:TriggerInput("Set",self.EPK) @@ -293,7 +275,6 @@ function TRAIN_SYSTEM:Think(dT) self["2"] = self.DA*Train.BUM_RVT4.Value Train:WriteTrainWire(94,(1-Train.KPK2.Value)*bit.bor(ALS.F1*1,ALS.F2*2,ALS.F3*4,ALS.F4*8,ALS.F5*16,ALS.F6*32)) - Train:WriteTrainWire(78,S["LUDS"]*Train.BLPM_6R3.Value) Train:WriteTrainWire(79,S["LUDS"]*(1-Train.BLPM_6R3.Value)*(Train.BLPM_6R2.Value)*(Train.BLPM_6R1.Value)) Train:WriteTrainWire(85,S["AR80"]) Train:WriteTrainWire(84,S["AR70"]) @@ -306,7 +287,6 @@ function TRAIN_SYSTEM:Think(dT) --Train:WriteTrainWire(89,S["GE"]*(Train.NG.Value*Train.FMM1.Value+Train.NH.Value*(1-Train.FMM1.Value))) --LN 1/5 Fix Train:WriteTrainWire(89,S["GE"]*(Train.NG.Value*Train.FMM1.Value+Train.NH.Value*(1-Train.FMM1.Value))*Train.PD2.Value) - Panel.OneFreq = Train:ReadTrainWire(78) Panel.RS = Train:ReadTrainWire(79) Panel.AR80 = Train:ReadTrainWire(85) Panel.AR70 = Train:ReadTrainWire(84) diff --git a/lua/metrostroi/systems/sys_alscoil.lua b/lua/metrostroi/systems/sys_alscoil.lua index f5d16ae..5d3488e 100644 --- a/lua/metrostroi/systems/sys_alscoil.lua +++ b/lua/metrostroi/systems/sys_alscoil.lua @@ -69,8 +69,12 @@ function TRAIN_SYSTEM:Think(dT) self.NoFreq = 0 self.NoFreqTimer = 0 end + -- Speed check and update speed data + if CurTime() - (self.LastSpeedCheck or 0) > 0.5 then + self.LastSpeedCheck = CurTime() + end self.Speed = (Train.Speed or 0) - self.Acceleration = math.Round(Train.Acceleration or 0,1) + self.Acceleration = math.Round(Train.Acceleration,1) self.SpeedSign = Train.SpeedSign or 1 local autostop = haveautostop and Train.SpeedSign > 0 and Train.Speed > 0.1 @@ -110,8 +114,6 @@ function TRAIN_SYSTEM:Think(dT) end end - self.Signal = ars - if self.Enabled > 0 and IsValid(ars) then if not ars:GetARS(1,Train) then self.F1 = ars:GetARS(8,force1_5,force2_6) and 1 or 0 @@ -159,13 +161,10 @@ function TRAIN_SYSTEM:Think(dT) self.F5 = CurTime()%2 < 1 and 1 or 0 end end - else - self.Signal = nil end local freqCount = self.F6+self.F5+self.F4+self.F3+self.F2+self.F1 self.NoneFreq =freqCount==0 and 1 or 0 self.OneFreq = freqCount==1 and 1 or 0 self.TwoFreq = freqCount==2 and 1 or 0 self.BadFreq = freqCount>2 and 1 or 0 - self.NoFreq = math.min(1,self.NoFreq+self.NoneFreq*self.Enabled) end diff --git a/lua/metrostroi/systems/sys_ars_mp.lua b/lua/metrostroi/systems/sys_ars_mp.lua index 3267c32..dcdb899 100644 --- a/lua/metrostroi/systems/sys_ars_mp.lua +++ b/lua/metrostroi/systems/sys_ars_mp.lua @@ -190,8 +190,8 @@ function TRAIN_SYSTEM:Think(dT) self.FreqCode = 0 end if Power then - self.ABReady = (1-self.AB)*(FreqCount*self.ALS == 0 and 1 or 0) - local ABAccept = self.ABReady > 0 --self.NoFreq--[[ *ALS.Enabled--]] > 0 + self.ABReady = self.NoFreq*(1-self.AB) + local ABAccept = self.NoFreq--[[ *ALS.Enabled--]] > 0 if ABAccept and not self.ABPressed1 and Train.AB1.Value > 0 then self.ABPressed1 = CurTime() end if ABAccept and not self.ABPressed2 and Train.AB2.Value > 0 then self.ABPressed2 = CurTime() end if not ABAccept or Train.AB1.Value == 0 then self.ABPressed1 = nil end diff --git a/lua/metrostroi/systems/sys_bv_630.lua b/lua/metrostroi/systems/sys_bv_630.lua index e27b3fc..d2380ab 100644 --- a/lua/metrostroi/systems/sys_bv_630.lua +++ b/lua/metrostroi/systems/sys_bv_630.lua @@ -19,9 +19,7 @@ function TRAIN_SYSTEM:Outputs() end function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "Enable" and value > 0 then - self.State = 1 - end + if name == "Enable" and value > 0 then self.State = 1 end if name == "Disable" and value > 0 then self.State = 0 end if name == "Power" then self.Power = value end end diff --git a/lua/metrostroi/systems/sys_dk_117dm.lua b/lua/metrostroi/systems/sys_dk_117dm.lua index faafe4d..03fc6f6 100644 --- a/lua/metrostroi/systems/sys_dk_117dm.lua +++ b/lua/metrostroi/systems/sys_dk_117dm.lua @@ -42,8 +42,7 @@ function TRAIN_SYSTEM:Inputs() end function TRAIN_SYSTEM:Outputs() - return { "BogeyMoment", } - --"Speed","Rwa","Rws","E13","E24","RotationRate","MagneticFlux13","MagneticFlux24","FieldReduction13","FieldReduction24","Moment13","Moment24","BogeyMoment"} + return { "BogeyMoment" } end function TRAIN_SYSTEM:TriggerInput(name,value) diff --git a/lua/metrostroi/systems/sys_electric.lua b/lua/metrostroi/systems/sys_electric.lua index 0e896a0..f02b0c4 100644 --- a/lua/metrostroi/systems/sys_electric.lua +++ b/lua/metrostroi/systems/sys_electric.lua @@ -93,10 +93,7 @@ function TRAIN_SYSTEM:Outputs() --[[ "ThyristorResistance", "ThyristorState", "ElectricEnergyUsed", "ElectricEnergyDissipated", "EnergyChange", "RPSignalResistor", --]] "Cosume","Type", - "ElectricEnergyUsed", "ElectricEnergyDissipated","ThyristorControllerPower","ThyristorControllerWork", - - --"Main750V","Aux750V","Power750V","Aux80V","Lights80V","R1","R2","R3","Rs1","Rs2","Rstator13","Rstator24","Ranchor13","Ranchor24","Itotal","I13","I24","Ustator13","Ustator24","Ishunt13","Istator13","Ishunt24","Istator24","Magnetization","IR1","IR2","IRT2","T1","T2","P1","P2","Overheat1","Overheat2","ElectricEnergyUsed","ThyristorResistance","ThyristorState","ThyristorControllerPower","ThyristorControllerWork", - } + "ElectricEnergyUsed", "ElectricEnergyDissipated","ThyristorControllerPower","ThyristorControllerWork"} end function TRAIN_SYSTEM:TriggerInput(name,value) @@ -131,7 +128,7 @@ function TRAIN_SYSTEM:Think(dT,iter) if self.ThyristorController then self:SolveThyristorController(Train,dT) end - self:SolvePowerCircuits(Train,dT,iter==1) + self:SolvePowerCircuits(Train,dT) self:SolveInternalCircuits(Train,dT,iter==1) @@ -268,13 +265,13 @@ end -------------------------------------------------------------------------------- -function TRAIN_SYSTEM:SolvePowerCircuits(Train,dT,firstIter) +function TRAIN_SYSTEM:SolvePowerCircuits(Train,dT) if not self.ResistorBlocksInit then self.ResistorBlocksInit = true -- Load resistor blocks self.Train:LoadSystem("ResistorBlocks","Gen_Res_710") + Train.ResistorBlocks.InitializeResistances_81_710(Train) end - if firstIter then Train.ResistorBlocks.InitializeResistances_81_710(Train) end self.ExtraResistanceLK5 = Train.KF_47A["L2-L4" ]*(1-Train.LK5.Value) self.ExtraResistanceLK2 = Train.KF_47A["L12-L13"]*(1-Train.LK2.Value) diff --git a/lua/metrostroi/systems/sys_igla_cbki1.lua b/lua/metrostroi/systems/sys_igla_cbki1.lua index bca7559..7de38fc 100644 --- a/lua/metrostroi/systems/sys_igla_cbki1.lua +++ b/lua/metrostroi/systems/sys_igla_cbki1.lua @@ -184,24 +184,8 @@ if CLIENT then local w = Train:GetNW2Int("IGLA:WagNumber") local m = Train:GetNW2String("IGLA:ErrorID") if messages[m] then m = messages[m] end - if m == "PTROverheat" then - if CurTime()%2 > 1 then - self:PrintText(1,0,"!! PIZDA POEZDU !!",colorf) - else - self:PrintText(0,0,Format("%05d",w),colorf) - self:PrintText(6,0,"ПТР",colorf) - self:PrintText(10,0,Format ("% 3dC",Train:GetNW2Int("IGLA:Temp",0)),colorf) - self:PrintText(15,0,"пожар",colorf) - end - elseif m == "PTROverheating" then - self:PrintText(0,0,Format("%05d",w),colorf) - self:PrintText(6,0,"ПТР",colorf) - self:PrintText(9,0,Format ("% 3dC",Train:GetNW2Int("IGLA:Temp",0)),colorf) - self:PrintText(15,0,"перег",colorf) - else - self:PrintText(0,0,Format("%05d",w),colorf) - self:PrintText(6,0,m,colorf) - end + self:PrintText(0,0,Format("%05d",w),colorf) + self:PrintText(6,0,m,colorf) self:PrintText(0,1,"^",colorf) if Train:GetNW2Bool("IGLA:ButtonL2") then self:PrintText(6,1,"<-",colorf) end if Train:GetNW2Bool("IGLA:ButtonL3") then self:PrintText(11,1,"->",colorf) end @@ -214,19 +198,7 @@ if CLIENT then if messages[m] then m = messages[m] end if w > 0 then self:PrintText(0,0,Format("%05d",w),colorf) - if m == "PTROverheat" then - if CurTime()%2 > 1 then - self:PrintText(6,0,"PIZDA POEZDU",colorf) - else - self:PrintText(6,0,"ПТР",colorf) - self:PrintText(10,0,"пожар",colorf) - end - elseif m == "PTROverheating" then - self:PrintText(6,0,"ПТР",colorf) - self:PrintText(10,0,"перегрев",colorf) - else self:PrintText(6,0,m,colorf) - end else self:PrintText(0,0,m,colorf) end @@ -304,8 +276,6 @@ else end end local Logging = { - PTROverheat = true, - PTROverheating = true, SCHEME = false, RP = true, DOORS = true, @@ -323,7 +293,7 @@ else function TRAIN_SYSTEM:CError(WagID,ErrID,status) local ID = WagID..ErrID if not self.Messages[ID] and status then - self.Messages[ID] = table.insert(self.Messages,{ErrID,WagID,Metrostroi.GetSyncTime(),ID,status}) + self.Messages[ID] = table.insert(self.Messages,{ErrID,WagID,Metrostroi.GetSyncTime(),ID}) if Logging[ErrID] then table.insert(self.Log,self.Messages[self.Messages[ID]]) end @@ -402,10 +372,6 @@ else self.StandbyTimer = CurTime() self.ShowTimeTimer = nil self.ShowTime = false - self.FireAlarm = false - self.OverhAlarm = false - self.FireState = false - self.OverhState = false Train:PlayOnce("igla_start2","cabin",nil,1) @@ -486,9 +452,6 @@ else local err = self.Messages[self.Selected] Train:SetNW2String("IGLA:ErrorID",err[1]) Train:SetNW2Int("IGLA:WagNumber",err[2]) - if err[1] == "PTROverheating" or err[1] == "PTROverheat" then - Train:SetNW2Int("IGLA:Temp",math.floor(self.States[err[2]][err[1]])) - end self.ButtonL1 = true @@ -522,31 +485,6 @@ else Train:SetNW2Bool("IGLA:Standby",Standby) Train:SetNW2Bool("IGLA:ShowTime",self.ShowTime) self.Fire = false - local overh = false - for i,v in ipairs(self.Messages) do - if v[1] == "PTROverheat" then - if not self.FireAlarm then self.FireAlarm = CurTime() end - self.Fire = CurTime()%0.5>0.25 - self.OverhAlarm = true - elseif v[1] == "PTROverheating" and self.OverhAlarm ~= true then - overh = true - end - end - if overh and not self.OverhAlarm then - self.OverhAlarm = CurTime() - elseif not overh and self.OverhAlarm then - self.OverhAlarm = false - self.OverhState = false - end - - if self.OverhAlarm and self.OverhAlarm ~= true and self.OverhState ~= math.floor((CurTime()-self.OverhAlarm)*2) and (not self.OverhState or self.OverhState < 5) then - Train:PlayOnce("igla_alarm2","cabin",nil,1) - self.OverhState = math.floor((CurTime()-self.OverhAlarm)*2) - end - if self.FireAlarm and self.FireState ~= math.floor((CurTime()-self.FireAlarm)*1.5) and (not self.FireState or self.FireState < 10) then - Train:PlayOnce("igla_alarm3","cabin",nil,1) - self.FireState = math.floor((CurTime()-self.FireAlarm)*1.5) - end self.Error = false end Train:SetNW2Bool("IGLA:Messages",self.MessagesCount) diff --git a/lua/metrostroi/systems/sys_igla_cbki2.lua b/lua/metrostroi/systems/sys_igla_cbki2.lua index d94626d..590add7 100644 --- a/lua/metrostroi/systems/sys_igla_cbki2.lua +++ b/lua/metrostroi/systems/sys_igla_cbki2.lua @@ -148,23 +148,13 @@ if CLIENT then end if messages[m] then m = messages[m] end local timer = math.ceil((RealTime()-self.Timer)%3) - if m ~= "PTROverheat" or timer == 1 then - if w > 0 then self:PrintText(0,Format("[%05d]",w)) else self:PrintText(0,"[]") end - end + if w > 0 then self:PrintText(0,Format("[%05d]",w)) else self:PrintText(0,"[]") end if timer == 1 then if w > 0 then - if m == "PTROverheating" then - self:PrintText(7,"перегрев") - elseif m == "PTROverheat" then - self:PrintText(7,"пожар") - else - self:PrintText(7,m) - end + self:PrintText(7,m) else self:PrintText(2,m) end - elseif m == "PTROverheat" then - self:PrintText(0,"!PIZDA POEZDU!") elseif timer == 2 then local d = Train:GetNW2Int("IGLA:LogDate") self:PrintText(w > 0 and 7 or 2,os.date("!%H:%M:%S",d)) @@ -190,23 +180,13 @@ if CLIENT then end if messages[m] then m = messages[m] end local timer = math.ceil((RealTime()-self.Timer)%3) - if m ~= "PTROverheat" or timer == 1 then - if w > 0 then self:PrintText(0,Format("[%05d]",w)) else self:PrintText(0,"[]") end - end + if w > 0 then self:PrintText(0,Format("[%05d]",w)) else self:PrintText(0,"[]") end if timer == 1 then if w > 0 then - if m == "PTROverheating" then - self:PrintText(7,Format("пер % 3d",Train:GetNW2Int("IGLA:Temp",0))) - elseif m == "PTROverheat" then - self:PrintText(7,Format("пож % 3d",Train:GetNW2Int("IGLA:Temp",0))) - else - self:PrintText(7,m) - end + self:PrintText(7,m) else self:PrintText(2,m) end - elseif m == "PTROverheat" then - self:PrintText(0,"!PIZDA POEZDU!") elseif timer == 2 then local d = Train:GetNW2Int("IGLA:LogDate") self:PrintText(w > 0 and 7 or 2,os.date("!%H:%M:%S",d)) @@ -282,8 +262,6 @@ else end end local Logging = { - PTROverheat = true, - PTROverheating = true, SCHEME = false, RP = true, DOORS = true, @@ -333,10 +311,6 @@ else self.Timer = nil self.Fire = false self.Error = false - self.OverhAlarm = false - self.OverhState = false - self.FireAlarm = false - self.FireState = false self.PCBKCount = 0 self.States = {} self.Messages = {} @@ -359,6 +333,7 @@ else self.Timer = CurTime()+math.random()*0.4 end if self.State == 1 then + self.Fire = true self.Error = true if CurTime()-self.Timer > 4 then self.State = 2 @@ -422,6 +397,7 @@ else end if self.State2 == 0 then + self.Fire = false self.Error = self.MessagesCount > 0 elseif self.State2 == 1 then if self.Selected >= #self.Log then self.Selected = #self.Log end @@ -438,41 +414,13 @@ else self.Error = false elseif self.State2 == 2 then local err = self.Messages[self.Selected] - if err[1] == "PTROverheating" or err[1] == "PTROverheat" then - Train:SetNW2Int("IGLA:Temp",math.floor(self.States[err[2]][err[1]])) - end Train:SetNW2Int("IGLA:Selected",self.Selected) Train:SetNW2String("IGLA:ErrorID",err[1]) Train:SetNW2Int("IGLA:WagNumber",err[2]) Train:SetNW2Int("IGLA:Arrow",self.Selected == 1 and 1 or self.Selected == #self.Messages and -1 or 0) if CurTime()-self.StandbyTimer > 10 then self.State2 = 0 end - end - - local overh = false - for i,v in ipairs(self.Messages) do - if v[1] == "PTROverheat" then - if not self.FireAlarm then self.FireAlarm = CurTime() end - self.Fire = true - self.OverhAlarm = true - elseif v[1] == "PTROverheating" and self.OverhAlarm ~= true then - overh = true - end - end - if overh and not self.OverhAlarm then - self.OverhAlarm = CurTime() - elseif not overh and self.OverhAlarm then - self.OverhAlarm = false - self.OverhState = false - end - - if self.OverhAlarm and self.OverhAlarm ~= true and self.OverhState ~= math.floor((CurTime()-self.OverhAlarm)*2) and (not self.OverhState or self.OverhState < 5) then - Train:PlayOnce("igla_start1","cabin",nil,1) - self.OverhState = math.floor((CurTime()-self.OverhAlarm)*2) - end - if self.FireAlarm and self.FireState ~= math.floor((CurTime()-self.FireAlarm)*1.5) and (not self.FireState or self.FireState < 10) then - Train:PlayOnce("igla_start2","cabin",nil,1) - self.FireState = math.floor((CurTime()-self.FireAlarm)*1.5) + self.Fire = false end end self.Error = self.MessagesCount > 0 @@ -483,9 +431,14 @@ else Train:SetNW2Bool("IGLARX",self.State > -2 and self.PCBKCount == 0) Train:SetNW2Bool("IGLAErr",self.State > 0 and self.Error or self.State == 1) Train:SetNW2Bool("IGLAOSP", self.State == 1) - Train:SetNW2Bool("IGLAPI", self.Fire or self.State == 1) + Train:SetNW2Bool("IGLAPI", self.State == 1) Train:SetNW2Bool("IGLAOff", self.State == 1) + + + + + Train:SetNW2Int("IGLA:State",self.State) end end diff --git a/lua/metrostroi/systems/sys_igla_pcbk.lua b/lua/metrostroi/systems/sys_igla_pcbk.lua index 37f01cf..f8e7ed0 100644 --- a/lua/metrostroi/systems/sys_igla_pcbk.lua +++ b/lua/metrostroi/systems/sys_igla_pcbk.lua @@ -56,11 +56,8 @@ function TRAIN_SYSTEM:Think(dT) if self.Update then self:CANWrite("Timer",CurTime()) end - local electric = self.Train.Electric self.Time= CurTime()+math.random()*0.4 - self:CState("PTROverheat",(electric.Overheat1 > 0 or electric.Overheat2 > 0) and math.max(electric.T1,electric.T2)) - self:CState("PTROverheating",(electric.T1 > 500 or electric.T2 > 500) and math.min(999,math.max(electric.T1,electric.T2))) - --[[ local schengaged = Train:ReadTrainWire(20)>0 + local schengaged = Train:ReadTrainWire(20)>0 local schengagedD = schengaged and Train:ReadTrainWire(1)>0 local schengagedB = schengaged and Train:ReadTrainWire(6)>0 local RP = Train.RPvozvrat.Value > 0.5 @@ -88,7 +85,7 @@ function TRAIN_SYSTEM:Think(dT) if self.EngageTimer then self.EngageTimer = nil end if self.BrakesTimer then self.BrakesTimer = nil end end - self:CState("SCHEME",self.EngageTimer and CurTime()-self.EngageTimer > 3) + --[[ self:CState("SCHEME",self.EngageTimer and CurTime()-self.EngageTimer > 3) self:CState("RP",RP) self:CState("DOORS",DOORS) self:CState("BPSN",self.BPSNTimer and CurTime()-self.BPSNTimer > 7) diff --git a/lua/metrostroi/systems/sys_pkg_759b.lua b/lua/metrostroi/systems/sys_pkg_759b.lua index 8c36d12..144ce78 100644 --- a/lua/metrostroi/systems/sys_pkg_759b.lua +++ b/lua/metrostroi/systems/sys_pkg_759b.lua @@ -74,16 +74,16 @@ function TRAIN_SYSTEM:Think(dT) self.TPSpeed = math.max(-1,math.min(1,self.TPSpeed+dT*(self.TPTS-self.TPMS)*0.9)) end self.TPPosition = math.max(0,math.min(1,self.TPPosition + self.RotationRate*self.TPSpeed)) - self.NZ = self.ReverserPosition < 0.2 and 1 or 0 - self.VP = self.ReverserPosition > 0.2 and 1 or 0 - self.TPM = self.TPPosition < 0.2 and 1 or 0 - self.TPT = self.TPPosition > 0.2 and 1 or 0 - if self.ReverserPosition < 0.1 and self.RKRSmd or self.ReverserPosition > 0.9 and not self.RKRSmd then - self.RKRSmd = self.ReverserPosition > 0.9 + self.NZ = self.ReverserPosition < 0.5 and 1 or 0 + self.VP = self.ReverserPosition >= 0.5 and 1 or 0 + self.TPM = self.TPPosition < 0.5 and 1 or 0 + self.TPT = self.TPPosition >= 0.5 and 1 or 0 + if self.OldVP ~= self.VP then + self.OldVP = self.VP self.Train:PlayOnce("RKR","bass",1,1) end - if self.TPPosition < 0.1 and self.TPMSnd or self.TPPosition > 0.9 and not self.TPMSnd then - self.TPMSnd = self.TPPosition > 0.9 + if self.OldTPM ~= self.TPM then + self.OldTPM = self.TPM self.Train:PlayOnce("T","bass",1,1) end diff --git a/lua/metrostroi/systems/sys_pr_14x_panels.lua b/lua/metrostroi/systems/sys_pr_14x_panels.lua index 9ed0e8e..09112aa 100644 --- a/lua/metrostroi/systems/sys_pr_14x_panels.lua +++ b/lua/metrostroi/systems/sys_pr_14x_panels.lua @@ -19,7 +19,7 @@ function TRAIN_SYSTEM:Initialize() -- Реле педали бдительности (РПБ) self.Train:LoadSystem("RPB","Relay","REV-813T", { bass = true, open_time = 2.5,}) -- РВ-2 - self.Train:LoadSystem("RV_2","Relay","REV-813T",{ open_time = 0.2, close_time = 0.6 }) + self.Train:LoadSystem("RV_2","Relay","REV-813T",{ close_time = 2.5}) @@ -33,7 +33,7 @@ function TRAIN_SYSTEM:Initialize() -- Контактор дверей (КД) self.Train:LoadSystem("KD","Relay","REV-811T",{ bass = true }) -- Реле остановки (РО) - self.Train:LoadSystem("RO","Relay","KPD-110E",{ bass = true, close_time = 0--[[ , close_time = 0.1--]] }) + self.Train:LoadSystem("RO","Relay","KPD-110E",{ bass = true--[[ , close_time = 0.1--]] }) end function TRAIN_SYSTEM:Think() diff --git a/lua/metrostroi/systems/sys_pr_722d.lua b/lua/metrostroi/systems/sys_pr_722d.lua index 54c4fc9..8dcee26 100644 --- a/lua/metrostroi/systems/sys_pr_722d.lua +++ b/lua/metrostroi/systems/sys_pr_722d.lua @@ -41,10 +41,10 @@ function TRAIN_SYSTEM:Think(dT) self.Speed = math.max(-1,math.min(1,self.Speed+dT*(self.VPS-self.NZS)*0.9)) end self.Position = math.max(0,math.min(1,self.Position + self.RotationRate*self.Speed)) - if self.Position < 0.1 and self.RKRS or self.Position > 0.9 and not self.RKRS then - self.RKRS = self.Position > 0.9 + if self.OldVP ~= self.VP then + self.OldVP = self.VP self.Train:PlayOnce("RKR","bass",1,1) end - self.NZ = self.Position < 0.2 and 1 or 0 - self.VP = self.Position > 0.2 and 1 or 0 + self.NZ = self.Position < 0.5 and 1 or 0 + self.VP = self.Position >= 0.5 and 1 or 0 end diff --git a/lua/metrostroi/systems/sys_relay.lua b/lua/metrostroi/systems/sys_relay.lua index 62d1f95..586ffef 100644 --- a/lua/metrostroi/systems/sys_relay.lua +++ b/lua/metrostroi/systems/sys_relay.lua @@ -209,7 +209,9 @@ function TRAIN_SYSTEM:TriggerInput(name,value) if self.pneumatic and self.Train.Pneumatic.TrainLinePressure < 3 then return end if (not self.ChangeTime) or (self.TargetValue ~= 1.0) then self.ChangeTime = self.Time + FailSim.Value(self,"CloseTime") + --if self.rvt then print(FailSim.Value(self,"CloseTime")) end end + --if self.rpb and if self.Value == 1.0 then self.ChangeTime = nil end self.TargetValue = 1.0 if self.ChangeTime==self.Time and self.Train.DeltaTime then self:Think(self.Train.DeltaTime) end @@ -269,6 +271,9 @@ end function TRAIN_SYSTEM:Think(dT) --print(self.relay_type) self.Time = self.Time + dT + --if self.relay_type == "VA21-29" then + --if self.Value + --if self.Value == -1 then print(self.Name) end -- Short-circuited relay if FailSim.Value(self,"ShortCircuit") > 0.5 then self.Value = 1.0 diff --git a/lua/metrostroi/systems/sys_telemetry.lua b/lua/metrostroi/systems/sys_telemetry.lua index 69c1061..2afaaf1 100644 --- a/lua/metrostroi/systems/sys_telemetry.lua +++ b/lua/metrostroi/systems/sys_telemetry.lua @@ -4,7 +4,6 @@ Metrostroi.DefineSystem("Telemetry") function TRAIN_SYSTEM:Initialize(parameters,extra_parameters) - local extra_parameters = {"Electric","Engines","RheostatController","PositionSwitch"} if extra_parameters then self.SystemsList = extra_parameters table.sort(self.SystemsList) @@ -23,7 +22,7 @@ end function TRAIN_SYSTEM:Think(dT) -- Generate file name if not self.DataName then - self.DataName = "D:\\metrostroi_telemetry\\telemetry_"..os.date("%Y%m%d_%H%M%S").."_"..string.format("%04d",1000*math.random())..".txt" + self.DataName = "F:\\f\\subway\\metrostroi_telemetry\\telemetry_"..os.date("%Y%m%d_%H%M%S").."_"..string.format("%04d",1000*math.random())..".txt" self.Time = 0 if not self.SystemsList then diff --git a/lua/metrostroi/systems/sys_upps.lua b/lua/metrostroi/systems/sys_upps.lua index eab20c3..7303015 100644 --- a/lua/metrostroi/systems/sys_upps.lua +++ b/lua/metrostroi/systems/sys_upps.lua @@ -26,7 +26,7 @@ function TRAIN_SYSTEM:Inputs() end function TRAIN_SYSTEM:TriggerSensor(coil,plate) - if self.Power == true and not self.Controlling and plate.DistanceToOPV and plate.PlateType==METROSTROI_UPPSSENSOR then + if self.Power == true and not self.Controlling and plate.DistanceToOPV then self.Controlling = plate.DistanceToOPV self.Train:PlayOnce("upps","cabin",1) self.KBTimer = CurTime() diff --git a/lua/metrostroi/systems/sys_yar_27.lua b/lua/metrostroi/systems/sys_yar_27.lua index 7cf39fe..79d06f4 100644 --- a/lua/metrostroi/systems/sys_yar_27.lua +++ b/lua/metrostroi/systems/sys_yar_27.lua @@ -15,23 +15,20 @@ function TRAIN_SYSTEM:Initialize(parameters) self.Train:LoadSystem("RV3","Relay","REV-813T",{ open_time = 2.3 }) -- Реле тока (РТ2) self.Train:LoadSystem("RT2","Relay","REV-830",{ trigger_level = 130 }) -- A - self.Train:LoadSystem("RT2r","Relay","REV-830",{ close_time = 0, open_time = 0.2 }) --UNREALISTIC Repeater for RT2 for MSK trains -- Реле контроля тормозного тока (РКТТ) self.Train:LoadSystem("RKTT","Relay","R-52B") self.Train.RKTTsh = 1 + if parameters=="Ezh3" then self.NoRKTT = true end end function TRAIN_SYSTEM:Inputs() - return { "NoRKTT" } + return { } end function TRAIN_SYSTEM:Outputs() --return { "RKTTClose" , "RKTTOpen", "RKTTCurrent"} end function TRAIN_SYSTEM:TriggerInput(name,value) - if name == "NoRKTT" then - self.NoRKTT = value > 0 - end end function TRAIN_SYSTEM:Think() @@ -39,7 +36,6 @@ function TRAIN_SYSTEM:Think() -- RT2 relay operation Train.RT2:TriggerInput("Set",Train.Electric.IRT2) if self.NoRKTT then return end - Train.RT2r:TriggerInput("Set",Train.RT2.Value) --self.RUTTarget = 250 + 150*self.WeightLoadRatio self.RKTTCurrent = Train.Electric.IRT2*Train.RKTTsh--(math.abs(Train.Electric.I13) + math.abs(Train.Electric.I24))*Train:ReadTrainWire(6) --self.RKTTClose = 275 + 50*self.WeightLoadRatio --125 diff --git a/lua/metrostroi_data/languages/cz_502.lua b/lua/metrostroi_data/languages/cz_502.lua index cf46788..1580a4e 100644 --- a/lua/metrostroi_data/languages/cz_502.lua +++ b/lua/metrostroi_data/languages/cz_502.lua @@ -166,7 +166,7 @@ Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -208,8 +208,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] diff --git a/lua/metrostroi_data/languages/cz_702.lua b/lua/metrostroi_data/languages/cz_702.lua index f054290..563fd3e 100644 --- a/lua/metrostroi_data/languages/cz_702.lua +++ b/lua/metrostroi_data/languages/cz_702.lua @@ -20,11 +20,6 @@ Spawner.707.Type2 = Nový + ASNP Spawner.710.RRI = Radioreléový hlásič #######Buttons########### -Train.Buttons.ParkingBrake = %d%% #NEW -Train.Buttons.EnginesVoltage = %d V #NEW -Train.Buttons.CanAB = AB mode is available #NEW -Train.Buttons.InAB = In AB mode #NEW - #Common Common.702.VZ1 = Pneumatický ventil č. 1 Common.703.ParkingBrakeLeft = Odbrzdit ruční brzdu @@ -95,7 +90,7 @@ Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -154,7 +149,7 @@ Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -190,9 +185,6 @@ Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] #NEW Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -226,7 +218,7 @@ Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -291,7 +283,7 @@ Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -441,7 +433,7 @@ Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] @@ -618,7 +610,7 @@ Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] diff --git a/lua/metrostroi_data/languages/cz_717.lua b/lua/metrostroi_data/languages/cz_717.lua index d77e3ef..4cfe15d 100644 --- a/lua/metrostroi_data/languages/cz_717.lua +++ b/lua/metrostroi_data/languages/cz_717.lua @@ -34,8 +34,6 @@ Spawner.717.RingType = Zvonek ARS Spawner.717.BPSNType = Typ měniče (BPSN) #######Buttons########### -Train.Buttons.RZP = BPSN converter protection engaged - #Common Common.717.VBD = Vypínač blokování dveří pomocí ASNP Common.717.UPPS = Vypínač systému UPPS @@ -258,7 +256,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.G Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer2 = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] @@ -537,7 +534,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDis Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -745,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] @@ -954,7 +951,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDis Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -1051,10 +1048,6 @@ Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW #gmod_subway_81-714_lvz Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -1129,11 +1122,6 @@ Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - #Spawner: Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] @@ -1215,4 +1203,4 @@ Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.1 = @[Common.Spawner.S Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] +]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/cz_718.lua b/lua/metrostroi_data/languages/cz_718.lua index 7fb679e..45b4f6b 100644 --- a/lua/metrostroi_data/languages/cz_718.lua +++ b/lua/metrostroi_data/languages/cz_718.lua @@ -9,11 +9,6 @@ Train.718.BUP = BUP Train.718.PPZ = PPZ Train.718.VPU = VPU -Train.Buttons.LHalf = Dim #NEW (panel lighting) -Train.Buttons.LFull = Bright #NEW (panel lighting) -Train.Buttons.HL5 = Control circuits are not engaged #NEW -Train.Buttons.HL6 = Protection has tripped or low current #NEW -Train.Buttons.HL7 = BBE protection has tripped #NEW #Common Common.718.SB4 = Kontrola zkompletování obvodů Common.718.SB5 = Předání řízení (zvonek) @@ -556,7 +551,7 @@ Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.DriverValveDisconnectT Entities.gmod_subway_81-718.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-718.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] @@ -690,10 +685,6 @@ Entities.gmod_subway_81-719.Buttons.couch_cap.CouchCap Entities.gmod_subway_81-719.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW #Spawner: Entities.gmod_subway_81-718.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-718.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] @@ -705,4 +696,4 @@ Entities.gmod_subway_81-718.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMod Entities.gmod_subway_81-718.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] Entities.gmod_subway_81-718.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] Entities.gmod_subway_81-718.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] +]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/cz_720.lua b/lua/metrostroi_data/languages/cz_720.lua index 893cbc4..9a8213c 100644 --- a/lua/metrostroi_data/languages/cz_720.lua +++ b/lua/metrostroi_data/languages/cz_720.lua @@ -12,13 +12,6 @@ Train.720.CameraVityaz = SAU "Vityaz" Train.720.CameraKRMH = Ventily KRMSH a UAVA Train.720.CameraPVZ = PVZ -Train.Buttons.Heating = Heating #NEW -Train.Buttons.Vent = Ventilation #NEW -Train.Buttons.Cooling = Cooling #NEW -Train.Buttons.BARS1 = BARS1 #NEW -Train.Buttons.BARS2 = BARS2 #NEW -Train.Buttons.BARS12 = BARS1 and BARS2 #NEW - #Common Common.720.SF1 = SF1: Hlavní napájení Common.720.SF2 = SF2: Hlavní řízení @@ -425,4 +418,4 @@ Entities.gmod_subway_81-720.Spawner.SpawnMode.1 = @[Common.Spawner.S Entities.gmod_subway_81-720.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] Entities.gmod_subway_81-720.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] Entities.gmod_subway_81-720.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] +]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/cz_722.lua b/lua/metrostroi_data/languages/cz_722.lua index 5c47ab3..1c40f4a 100644 --- a/lua/metrostroi_data/languages/cz_722.lua +++ b/lua/metrostroi_data/languages/cz_722.lua @@ -13,20 +13,6 @@ Train.722.CabLights = Panel osvětlení kabiny Train.722.Disconnects = Ventily hlavního a brzdového potrubí Train.722.KRMH = Ventily KRMSH a RVTB -Train.Buttons.BattOn = Battery enabled #NEW -Train.Buttons.BattOff = Battery disabling #NEW -Train.Buttons.VentEmer = Emergency #NEW -Train.Buttons.VentAuto = Auto #New -Train.Buttons.Vent1/2 = Half of ventilation #NEW -Train.Buttons.VentAll = All ventilation fans #NEW - -Train.Buttons.VRUAH = Emergency control #NEW -Train.Buttons.VRUOn = Manual activation #NEW -Train.Buttons.PantSC = Enable shorting device #NEW -Train.Buttons.DoorCloseA = Auto closing (with buzzer) #NEW -Train.Buttons.DoorCloseM = Manual closing (without buzzer) #NEW -Train.Buttons.AHActive = Emergency control active #NEW - #######Buttons########### Common.722.MirrorHeating = Vyhřívání zrcátek Common.722.EmergencyDrive = Jízda nouze @@ -371,4 +357,4 @@ Entities.gmod_subway_81-722.Spawner.SpawnMode.2 = @[Common.Spawner.S Entities.gmod_subway_81-722.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] Entities.gmod_subway_81-722.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] +]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/cz_base.lua b/lua/metrostroi_data/languages/cz_base.lua index 92ed75f..479d352 100644 --- a/lua/metrostroi_data/languages/cz_base.lua +++ b/lua/metrostroi_data/languages/cz_base.lua @@ -31,16 +31,12 @@ Panel.DrawCams = Renderovací kamery Panel.DisableHUD = Vypnout HUD v pozici strojvedoucího Panel.DisableCamAccel = Vypnout akceleraci pohledu Panel.DisableHoverText = Vypnout vysvětlivky -Panel.DisableHoverTextP = Disable additional information\nin tooltips #NEW Panel.ScreenshotMode = Mód snímku obrazovky (NÍZKÉ FPS) Panel.RedLights = Zapnout dynamická červená světla Panel.ShadowsHeadlight = Zapnout odrazy reflektorů Panel.ShadowsOther = Zapnout odrazy ostatních\nzdrojů světla Panel.MinimizedShow = Nenačítat znovu součásti\npři minimalizování -Panel.PanelLights = Enable dynamic lights\nfrom panel lamps #NEW -Panel.RouteNumber = Route number #NEW Panel.FOV = FOV -Panel.Z = Výška kamery Panel.RenderDistance = Vykreslovací\nvzdálenost Panel.ReloadClient = Znovu načíst klienta @@ -49,7 +45,7 @@ Panel.DrawDebugInfo = Zobrazit informace pro vývojáře Panel.DrawSignalDebugInfo = Informace pro vývojáře (Signalizace) Panel.CheckAddons = Zkontrolovat addony Panel.ReloadLang = Znovu načíst jazyky -Panel.SoftDraw = Doba načítání prvků vlaku +Panel.SoftDraw = Procento "plynulého"\nnačtení součástí Panel.SoftReloadLang = Znovu nenahrávat spawnovací menu @@ -64,54 +60,7 @@ Train.Common.PneumoPanels = Pneumatické ventily Train.Common.Voltmeters = Voltmetry a ampérmetry Train.Common.CouplerCamera = Spřáhlo/Spřáhla Common.ARM.Monitor1 = Monitor 1 ARM - -Train.Buttons.Sealed = Sealed -Train.Buttons.Active = Active #NEW -Train.Buttons.Auto = Auto #NEW -Train.Buttons.On = On #NEW -Train.Buttons.Off = Off #NEW -Train.Buttons.Closed = Closed #NEW -Train.Buttons.Opened = Opened #NEW -Train.Buttons.Disconnected = Disconnected #NEW -Train.Buttons.Connected = Connected #NEW -Train.Buttons.UAVAOff = Control circuits isolated #NEW -Train.Buttons.UAVAOn = Control circuits active #NEW -Train.Buttons.Freq1/5 = 1/5 AB #NEW -Train.Buttons.Freq2/6 = 2/6 ALS-ARS #NEW -Train.Buttons.Left = Left #NEW -Train.Buttons.Right = Right #NEW -Train.Buttons.Low = Low #NEW -Train.Buttons.High = High #NEW -Train.Buttons.LFar = Distant light #NEW #FIXME -Train.Buttons.LNear = Near light #NEW #FIXME -Train.Buttons.0 = 0 #NEW -Train.Buttons.1 = 1 #NEW -Train.Buttons.2 = 2 #NEW -Train.Buttons.3 = 3 #NEW -Train.Buttons.4 = 4 #NEW -Train.Buttons.Forward = Forward #NEW -Train.Buttons.Back = Backward #NEW #FIXME -Train.Buttons.VentHalf = 1/2 of speed #NEW -Train.Buttons.VentFull = Full speed #NEW -Train.Buttons.VTRF = Forward oriented wagons #NEW -Train.Buttons.VTRB = Back oriented wagons #NEW -Train.Buttons.VTR1 = Even wagons #NEW -Train.Buttons.VTR2 = Odd wagons #NEW -Train.Buttons.VTRH1 = First half of train #NEW -Train.Buttons.VTRH2 = Second half of train #NEW #FIXME -Train.Buttons.VTRAll = All wagons #NEW - -Train.Buttons.BatteryVoltage = %d V #NEW -Train.Buttons.HighVoltage = %d V #NEW -Train.Buttons.BatteryCurrent = %d A #NEW -Train.Buttons.EnginesCurrent = %d A #NEW -Train.Buttons.Speed = %d km/h #NEW -Train.Buttons.SpeedAll = %d km/h Speed limit:%s km/h #NEW -Train.Buttons.SpeedLimit = %s km/h #NEW -Train.Buttons.SpeedLimitNext = %s km/h #NEW -Train.Buttons.04 = NF #NEW -Train.Buttons.BCPressure = %.1f kgf/cm² #NEW #FIXME bar? -Train.Buttons.BLTLPressure = TL: %.1f BL:%.1f kgf/cm² #NEW #FIXME bar? +Train.Buttons.Sealed = Zaplombováno #Train entities Entities.gmod_subway_base.Name = Vozová základna diff --git a/lua/metrostroi_data/languages/de_502.lua b/lua/metrostroi_data/languages/de_502.lua index ab2040f..1076b73 100644 --- a/lua/metrostroi_data/languages/de_502.lua +++ b/lua/metrostroi_data/languages/de_502.lua @@ -1,56 +1,68 @@ -return [[ +return [[ #81-502 + [de] + #######Buttons########### #Common -Common.502.KS = KSAUP im Betrieb -Common.502.AV = Autonomes fahren ist aktiv -Common.502.SD = SD: Türfreigabe (Türen sind geschlossen) -Common.502.SDW = SD: Türfreigabe (Türen sind geöffnet) -Common.502.L3w = 3. Lampe (X3 Modus) -Common.502.L4w = 4. Lampe (Rückwärts) -Common.502.L5w = 5. Lampe(Vorwärts) -Common.502.L16w = 16. (Türverriegelung) -Common.502.L20w = 20. (LK2 und LK5 schließung) -Common.502.L23w = 23r. (Steuerung des Luftpressers) +Common.502.KS = KSAUP aktiv +Common.502.AV = Autonomes fahren ist aktiv. +Common.502.SD = SD: Leuchtmelder der Tueren (Tueren sind verschlossen) +Common.502.SDW = SD: Leuchtmelder der Tueren (Tueren sind offen) +Common.502.L3w = 3. Leuchtmelder (X3 modus) +Common.502.L4w = 4. Leuchtmelder (Fahrtrichtung nach hinten) +Common.502.L5w = 5. Leuchtmelder (Fahrtrichtung vorwärts) +Common.502.L16w = 16. Leuchtmelder (Türen sind verriegelt) +Common.502.L20w = 20. Leuchtmelder (LK2 and LK5 closure, smooth disengage) +Common.502.L23w = 23. Leuchtmelder (Kompressorsteuerung) Common.502.RK1 = Steuerung der ersten Schaltwerkposition Common.502.BRD = Türstörung -Common.502.KOS = KB: Wachsamkeitstaste -Common.502.VAK = AK: Stromkreise für Notfahrmodus schließen -Common.502.LRU = Notfahrmodus aktiv +Common.502.KOS = KB: Wachsamtaste +Common.502.VAK = AK: Stromkreise für Notfallfahrt schließen +Common.502.LRU = Stromkreise für Notfahrmodus geschlossen + #Spawner -Spawner.502.TypeNVL = Zugtyp NVL -Spawner.502.TypeKVLO = altes KVL Triebfahrzeug -Spawner.502.TypeKVLN = neues KVL Triebfahrzeug -Spawner.502.EWagons = "E" Wagen einsetzen +Spawner.502.TypeNVL = Train from NVL #FIXME +Spawner.502.TypeKVLO = Old train from KVL #FIXME +Spawner.502.TypeKVLN = New train from KVL #FIXME +Spawner.502.EWagons = Add "E" type wagons #FIXME + #gmod_subway_81-502 -Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = Batterie für autonomes Fahren an/aus -Entities.gmod_subway_81-502.Buttons.AV.VRUToggle = VRU: Sperrfahrt -Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle = KPVU: Deaktiviren von pneumatischer Steuerungs Überbrückung -Entities.gmod_subway_81-502.Buttons.AV.KSDToggle = KSD: Türverriegelung ausschalten +Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = Batterie für das autonomes Fahren an/aus + +Entities.gmod_subway_81-502.Buttons.AV.VRUToggle = VRU: Notfall-Fahrmodus +Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle = KPVU: Überbrückung von Druckluftsystemen ausschalten +Entities.gmod_subway_81-502.Buttons.AV.KSDToggle = KSD: Türverriegelung deaktivieren Entities.gmod_subway_81-502.Buttons.AV.KAHToggle = @[Common.ALL.VAH] Entities.gmod_subway_81-502.Buttons.AV.KADToggle = @[Common.ALL.VAD] Entities.gmod_subway_81-502.Buttons.AV.OVTToggle = @[Common.ALL.OVT] Entities.gmod_subway_81-502.Buttons.AV.VKFToggle = @[Common.ALL.VKF] -Entities.gmod_subway_81-502.Buttons.RCAV3.RCAV3Toggle = KSAUP Lasttrennschalter (AV3) -Entities.gmod_subway_81-502.Buttons.RCAV4.RCAV4Toggle = KSAUP Lasttrennschalter (AV4) -Entities.gmod_subway_81-502.Buttons.RCAV5.RCAV5Toggle = KSAUP Lasttrennschalter (AV5) + + +Entities.gmod_subway_81-502.Buttons.RCAV3.RCAV3Toggle = KSAUP Trennschalter (AV3) +Entities.gmod_subway_81-502.Buttons.RCAV4.RCAV4Toggle = KSAUP Trennschalter (AV4) +Entities.gmod_subway_81-502.Buttons.RCAV5.RCAV5Toggle = KSAUP Trennschalter (AV5) Entities.gmod_subway_81-502.Buttons.RCARS.RCARSToggle = @[Common.ALL.RCARS] Entities.gmod_subway_81-502.Buttons.RCBPS.RCBPSToggle = @[Common.ALL.RCBPS] + Entities.gmod_subway_81-502.Buttons.VRD2.2:VRDSet = @[Common.ARS.VRD] Entities.gmod_subway_81-502.Buttons.VRD2.!LVRD = @[Common.ARS.LRD] + Entities.gmod_subway_81-502.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-502.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-502.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-502.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-502.Buttons.AV1.VU3Toggle = @[Common.703.VU3] Entities.gmod_subway_81-502.Buttons.UPO.R_UPOToggle = @[Common.ALL.UPO] + Entities.gmod_subway_81-502.Buttons.VU.VUToggle = @[Common.ALL.VU] + Entities.gmod_subway_81-502.Buttons.VRD.VRDToggle = @[Common.ARS.VRD] Entities.gmod_subway_81-502.Buttons.HelperPanel.VDLSet = @[Common.ALL.KDL] Entities.gmod_subway_81-502.Buttons.HelperPanel.KDPHSet = @[Common.ALL.KDPH] Entities.gmod_subway_81-502.Buttons.AV2.VSOSDToggle = @[Common.ALL.VSOSD] Entities.gmod_subway_81-502.Buttons.AV2.VRToggle = @[Common.ALL.VPR] + Entities.gmod_subway_81-502.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLampAutodrive = @[Common.ALL.Unsused1] Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLamp2 = @[Common.ALL.L2w] @@ -74,6 +86,7 @@ Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_60 = @[Common.ARS.6 Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_40 = @[Common.ARS.40] Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_00 = @[Common.ARS.0] Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_04 = @[Common.ARS.N4] + Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_KS = @[Common.502.KS] Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_AV = @[Common.502.AV] Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_4 = @[Common.502.L4w] @@ -100,6 +113,7 @@ Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_40 = @[Common.ARS.4 Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_60 = @[Common.ARS.60] Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_70 = @[Common.ARS.70] Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_80 = @[Common.ARS.80] + Entities.gmod_subway_81-502.Buttons.Main1.2:VUSToggle = @[Common.ALL.VF2] Entities.gmod_subway_81-502.Buttons.Main1.2:HeadlightsToggle = @[Common.ALL.VF1] Entities.gmod_subway_81-502.Buttons.Main1.!LKTLight = @[Common.ARS.KT] @@ -120,6 +134,7 @@ Entities.gmod_subway_81-502.Buttons.Main1.2:VAKSet = @[Common.502.V Entities.gmod_subway_81-502.Buttons.Main1.2:VUDToggle = @[Common.ALL.VUD] Entities.gmod_subway_81-502.Buttons.Main1_2.!LMK2 = @[Common.502.L23w] Entities.gmod_subway_81-502.Buttons.Main1_2.!LVRD2 = @[Common.ARS.LRD] + Entities.gmod_subway_81-502.Buttons.Main2.KOSSet = @[Common.502.KOS] Entities.gmod_subway_81-502.Buttons.Main2.!LMK = @[Common.502.L23w] Entities.gmod_subway_81-502.Buttons.Main2.VZPToggle = @[Common.ALL.VZP] @@ -140,11 +155,13 @@ Entities.gmod_subway_81-502.Buttons.Main2.VUSToggle = @[Common.ALL.V Entities.gmod_subway_81-502.Buttons.Main2.VAKSet = @[Common.502.VAK] Entities.gmod_subway_81-502.Buttons.Main2.AutodriveToggle = @[Common.ALL.VAV] Entities.gmod_subway_81-502.Buttons.Main2.VUDToggle = @[Common.ALL.VUD] + Entities.gmod_subway_81-502.Buttons.BPS.!BPSon = @[Common.BPS.On] Entities.gmod_subway_81-502.Buttons.BPS.!BPSErr = @[Common.BPS.Err] Entities.gmod_subway_81-502.Buttons.BPS.!BPSFail = @[Common.BPS.Fail] Entities.gmod_subway_81-502.Buttons.NMnUAVA.!NMPressureLow = @[Commom.NMnUAVA.NMPressureLow] Entities.gmod_subway_81-502.Buttons.NMnUAVA.!UAVATriggered = @[Commom.NMnUAVA.UAVATriggered] + Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -163,29 +180,36 @@ Entities.gmod_subway_81-502.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_81-502.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-502.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-502.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_81-502.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_81-502.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_81-502.Buttons.Route.RouteNumber3+ = @[Common.ALL.RouteNumber3+] Entities.gmod_subway_81-502.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_81-502.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_81-502.Buttons.Route.RouteNumber3- = @[Common.ALL.RouteNumber3-] + Entities.gmod_subway_81-502.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-502.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_81-502.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_81-502.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_81-501 Entities.gmod_subway_81-501.Buttons.AV.KPVUToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle] Entities.gmod_subway_81-501.Buttons.AV.KSDToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KSDToggle] + Entities.gmod_subway_81-501.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-501.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-501.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-501.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] + +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] @@ -196,7 +220,9 @@ Entities.gmod_subway_81-501.Buttons.Main.KDLSet = @[Common.ALL.K Entities.gmod_subway_81-501.Buttons.Main.KDPSet = @[Common.ALL.KDP] Entities.gmod_subway_81-501.Buttons.Main.VMKToggle = @[Common.ALL.VMK] Entities.gmod_subway_81-501.Buttons.Main.VUDToggle = @[Common.ALL.VUD] + Entities.gmod_subway_81-501.Buttons.HelperPanel.VDLSet = @[Common.ALL.KDL] + Entities.gmod_subway_81-501.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-501.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-501.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -213,13 +239,16 @@ Entities.gmod_subway_81-501.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_81-501.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-501.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-501.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_81-501.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-501.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] + Entities.gmod_subway_81-501.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #Cameras: -Train.502.AV = Switches +Train.502.AV = Schalter Train.502.VBA = @[Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle] Train.502.VRD = VRD Train.502.RCARS = RC-ARS @@ -227,6 +256,7 @@ Train.502.RCAV5 = RC-AV5 Train.502.RCBPS = RC-BPS Train.502.RCAV3 = RC-AV3 Train.502.RCAV4 = RC-AV4 + #Spawner: Entities.gmod_subway_81-502.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-502.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] diff --git a/lua/metrostroi_data/languages/de_702.lua b/lua/metrostroi_data/languages/de_702.lua index 3ae2aba..21f5c45 100644 --- a/lua/metrostroi_data/languages/de_702.lua +++ b/lua/metrostroi_data/languages/de_702.lua @@ -1,6 +1,8 @@ -return [[ +return [[ #D/E-based types + [de] + #Cameras: Train.702.Breakers1 = Batteriehauptschalter Train.702.Breakers2 = Innenbeleuchtung @@ -10,14 +12,16 @@ Train.703.Breakers2 = Hauptschalter und Innenbeleuchtung Train.703.Parking = Handbremse, UAVA Train.703.RCARS = RC-1: ARS Trennschalter Train.703.AVU = AVU block + #Spawner -Spawner.707.Type = Führerstand -Spawner.707.Type1 = Alt + RRI -Spawner.707.Type2 = Neu + ASNP -Spawner.710.RRI = Radio-Relais-Ansager +Spawner.707.Type = Panel type #FIXME +Spawner.707.Type1 = Old + RRI #FIXME +Spawner.707.Type2 = New + ASNP #FIXME +Spawner.710.RRI = Radio-relay announcer #FIXME + #######Buttons########### #Common -Common.702.VZ1 = Pneumatsches Ventil Nr.1 +Common.702.VZ1 = Pneumatic valve №1 #FIXME!! Common.703.ParkingBrakeLeft = Handbremse lösen Common.703.ParkingBrakeRight = Handbremse anlegen Common.703.KSD = KSD: Steuerung der Türverriegelung @@ -33,6 +37,7 @@ Common.703.RUT = RUT anpassen (reduziert Beschleunigung) Common.707.SEQ = Schaltwerk ist in Bewegung Common.707.TAH = TAH: Fahren ohne Zugsicherung Common.710.RK = Schaltwerk in Zwischenposition + Common.710.SAMMSchemeOff = SAMM Anhalten Common.710.SAMMStart = SAMM Start Common.710.SAMMReset = SAMM: Reset @@ -44,12 +49,14 @@ Common.710.SAMMUnit = SAMM: Ausfürhungseinheit Common.710.SAMMX2 = SAMM: X2 modus Common.710.SAMMAhead = SAMM: Aufholmodus Common.710.SAMMAccept = SAMM: Erlaubnis + #gmod_subway_81-702 Entities.gmod_subway_81-702.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-702.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-702.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-702.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-702.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_81-702.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_81-702.Buttons.VU.KU1Set = @[Common.703.LOn] Entities.gmod_subway_81-702.Buttons.VU.KU2Set = @[Common.703.LOff] @@ -64,6 +71,7 @@ Entities.gmod_subway_81-702.Buttons.MainL.!RedRP = @[Common.ALL.RRP] Entities.gmod_subway_81-702.Buttons.MainL.!GreenRP = @[Common.ALL.GRP] Entities.gmod_subway_81-702.Buttons.MainL.!Blue = @[Common.703.SD] Entities.gmod_subway_81-702.Buttons.VU.SNSet = @[Common.ALL.KSN] + Entities.gmod_subway_81-702.Buttons.HelperPanel.KU10Set = @[Common.ALL.KDL] Entities.gmod_subway_81-702.Buttons.HelperPanel.KU8Toggle = @[Common.ALL.VUD2] Entities.gmod_subway_81-702.Buttons.HelperPanel.R_Program1Set = @[Common.ALL.Program1] @@ -77,6 +85,7 @@ Entities.gmod_subway_81-702.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.R Entities.gmod_subway_81-702.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] Entities.gmod_subway_81-702.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] Entities.gmod_subway_81-702.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] + Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -95,24 +104,30 @@ Entities.gmod_subway_81-702.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_81-702.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-702.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-702.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_81-702.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_81-702.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_81-702.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_81-702.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_81-702.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] Entities.gmod_subway_81-702.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] + Entities.gmod_subway_81-702.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] + Entities.gmod_subway_81-702.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-702.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-702.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-702.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_81-702.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_81-702_int Entities.gmod_subway_81-702_int.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-702_int.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-702_int.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-702_int.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-702_int.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_81-702_int.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_81-702_int.Buttons.VU.KU1Set = @[Common.703.LOn] Entities.gmod_subway_81-702_int.Buttons.VU.KU2Set = @[Common.703.LOff] @@ -126,8 +141,10 @@ Entities.gmod_subway_81-702_int.Buttons.MainL.!RedRP = @[Common.ALL.R Entities.gmod_subway_81-702_int.Buttons.MainL.!GreenRP = @[Common.ALL.GRP] Entities.gmod_subway_81-702_int.Buttons.MainL.!Blue = @[Common.703.SD] Entities.gmod_subway_81-702_int.Buttons.VU.SNSet = @[Common.ALL.KSN] + Entities.gmod_subway_81-702_int.Buttons.HelperPanel.KU10Set = @[Common.ALL.KDL] Entities.gmod_subway_81-702_int.Buttons.HelperPanel.KU8Toggle = @[Common.ALL.VUD2] + Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -146,18 +163,23 @@ Entities.gmod_subway_81-702_int.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_81-702_int.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-702_int.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-702_int.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_81-702_int.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] + Entities.gmod_subway_81-702_int.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-702_int.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-702_int.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-702_int.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_81-702_int.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_81-703 Entities.gmod_subway_81-703.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-703.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-703.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-703.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-703.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_81-703.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] @@ -177,6 +199,7 @@ Entities.gmod_subway_81-703.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] Entities.gmod_subway_81-703.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] Entities.gmod_subway_81-703.Buttons.Main.KU12Toggle = @[Common.703.RUT] Entities.gmod_subway_81-703.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] + Entities.gmod_subway_81-703.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] Entities.gmod_subway_81-703.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program1Set = @[Common.ALL.Program1] @@ -190,6 +213,7 @@ Entities.gmod_subway_81-703.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.R Entities.gmod_subway_81-703.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] Entities.gmod_subway_81-703.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] Entities.gmod_subway_81-703.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] + Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -208,25 +232,31 @@ Entities.gmod_subway_81-703.Buttons.PassengerDoor2.PassengerDoor Entities.gmod_subway_81-703.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-703.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-703.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_81-703.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_81-703.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_81-703.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_81-703.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_81-703.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] Entities.gmod_subway_81-703.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] + Entities.gmod_subway_81-703.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] + Entities.gmod_subway_81-703.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-703.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-703.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-703.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_81-703.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_81-703.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_81-703_int Entities.gmod_subway_81-703_int.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_81-703_int.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_81-703_int.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_81-703_int.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_81-703_int.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_81-703_int.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_81-703_int.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703_int.Buttons.Main.GRP = @[Common.ALL.GRP] @@ -245,8 +275,10 @@ Entities.gmod_subway_81-703_int.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] Entities.gmod_subway_81-703_int.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] Entities.gmod_subway_81-703_int.Buttons.Main.KU12Toggle = @[Common.703.RUT] Entities.gmod_subway_81-703_int.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] + Entities.gmod_subway_81-703_int.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] Entities.gmod_subway_81-703_int.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] + Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -265,28 +297,36 @@ Entities.gmod_subway_81-703_int.Buttons.PassengerDoor2.PassengerDoor Entities.gmod_subway_81-703_int.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-703_int.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-703_int.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] = @[Common.ALL.LastStation-] + Entities.gmod_subway_81-703_int.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] + Entities.gmod_subway_81-703_int.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_81-703_int.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-703_int.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-703_int.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_81-703_int.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_81-703_int.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_ezh Entities.gmod_subway_ezh.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_ezh.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_ezh.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_ezh.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_ezh.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_ezh.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_ezh.Buttons.VU.KU14Set = @[Common.ALL.KRP] Entities.gmod_subway_ezh.Buttons.VU.KU15Set = @[Common.ALL.RMK] Entities.gmod_subway_ezh.Buttons.KRR.KRRSet = @[Common.703.KRR] + Entities.gmod_subway_ezh.Buttons.AVU.OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_ezh.Buttons.AVU.!AVULight = @[Common.ALL.LAVU] + Entities.gmod_subway_ezh.Buttons.AV2.R_RadioToggle = @[Common.ALL.VASNP] Entities.gmod_subway_ezh.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_ezh.Buttons.AV2.UOSToggle = @[Common.ALL.UOS] + Entities.gmod_subway_ezh.Buttons.LampsALS1.!LNF = @[Common.ARS.04] Entities.gmod_subway_ezh.Buttons.LampsALS1.!L0 = @[Common.ARS.0] Entities.gmod_subway_ezh.Buttons.LampsALS1.!L40 = @[Common.ARS.40] @@ -299,10 +339,12 @@ Entities.gmod_subway_ezh.Buttons.LampsALS2.!L40_2 = @[Common.ARS.40] Entities.gmod_subway_ezh.Buttons.LampsALS2.!L60_2 = @[Common.ARS.60] Entities.gmod_subway_ezh.Buttons.LampsALS2.!L70_2 = @[Common.ARS.70] Entities.gmod_subway_ezh.Buttons.LampsALS2.!L80_2 = @[Common.ARS.80] + Entities.gmod_subway_ezh.Buttons.AB1.AB1Set = @[Common.ARS.ABButton]@[Common.ARS.ABDriver] Entities.gmod_subway_ezh.Buttons.AB2.AB2Set = @[Common.ARS.ABButton]@[Common.ARS.ABHelper] Entities.gmod_subway_ezh.Buttons.KAH.KAHToggle = @[Common.707.TAH] Entities.gmod_subway_ezh.Buttons.RC1.RC1Toggle = @[Common.ALL.RCARS] + Entities.gmod_subway_ezh.Buttons.Lamps1.!AV = @[Common.ARS.AV] Entities.gmod_subway_ezh.Buttons.Lamps1.!SEQ = @[Common.707.SEQ] Entities.gmod_subway_ezh.Buttons.Lamps1.!ARS = @[Common.ARS.ARS] @@ -323,6 +365,7 @@ Entities.gmod_subway_ezh.Buttons.Lamps2.!AB2 = @[Common.ARS.AB] Entities.gmod_subway_ezh.Buttons.Lamps2.!SD2 = @[Common.703.SD] Entities.gmod_subway_ezh.Buttons.Lamps2.!LN2 = @[Common.ARS.LN] Entities.gmod_subway_ezh.Buttons.Lamps2.!LSN2 = @[Common.ALL.SN] + Entities.gmod_subway_ezh.Buttons.Main1.1:KU16Toggle = @[Common.ALL.VF2] Entities.gmod_subway_ezh.Buttons.Main1.1:ALSFreqToggle = @[Common.ARS.Freq]@[Common.ARS.FreqD] Entities.gmod_subway_ezh.Buttons.Main1.1:KVTSet = @[Common.ARS.KVT] @@ -355,6 +398,7 @@ Entities.gmod_subway_ezh.Buttons.Main2.2:KU9Set = @[Common.ALL.VRP] Entities.gmod_subway_ezh.Buttons.Main2.2:R_Program1Set = @[Common.ALL.Program1] Entities.gmod_subway_ezh.Buttons.Main2.2:KU2Toggle = @[Common.ALL.VUD] Entities.gmod_subway_ezh.Buttons.Main2.2:KU10Set = @[Common.ALL.KRZD] + Entities.gmod_subway_ezh.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] Entities.gmod_subway_ezh.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] Entities.gmod_subway_ezh.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] @@ -384,6 +428,7 @@ Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGL Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] + Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -403,19 +448,25 @@ Entities.gmod_subway_ezh.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_ezh.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_ezh.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_ezh.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_ezh.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_ezh.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_ezh.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_ezh.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_ezh.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] Entities.gmod_subway_ezh.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] + + Entities.gmod_subway_ezh.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] + Entities.gmod_subway_ezh.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_ezh.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_ezh.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_ezh.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_ezh.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_ezh.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_ezh1 Entities.gmod_subway_ezh1.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_ezh1.Buttons.Main.KU5Set = @[Common.703.LOff] @@ -426,18 +477,24 @@ Entities.gmod_subway_ezh1.Buttons.Main.KU6Set = @[Common.ALL.KDL] Entities.gmod_subway_ezh1.Buttons.Main.KU7Set = @[Common.ALL.KDP] Entities.gmod_subway_ezh1.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] Entities.gmod_subway_ezh1.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] + + Entities.gmod_subway_ezh1.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_ezh1.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_ezh1.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_ezh1.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_ezh1.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_ezh1.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] Entities.gmod_subway_ezh1.Buttons.VU.VUToggle = @[Common.ALL.VU] + Entities.gmod_subway_ezh1.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] Entities.gmod_subway_ezh1.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] + Entities.gmod_subway_ezh1.Buttons.Main.!GRP = @[Common.ALL.RRP] Entities.gmod_subway_ezh1.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_ezh1.Buttons.Main.!SD = @[Common.703.SD] + Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh1.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] @@ -453,22 +510,29 @@ Entities.gmod_subway_ezh1.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_ezh1.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_ezh1.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_ezh1.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_ezh1.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_ezh1.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_ezh1.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_ezh1.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_ezh1.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + Entities.gmod_subway_ezh1.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] + #gmod_subway_ez3 Entities.gmod_subway_ezh3.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_ezh3.Buttons.RUM.RUMToggle = @[Common.ALL.RCARS] Entities.gmod_subway_ezh3.Buttons.KRR.KRRSet = @[Common.703.KRR] + Entities.gmod_subway_ezh3.Buttons.VU.VUToggle = @[Common.ALL.VU] Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle = @[Common.ALL.VU] + + Entities.gmod_subway_ezh3.Buttons.Main.SAMMSchemeOffSet = @[Common.710.SAMMSchemeOff] Entities.gmod_subway_ezh3.Buttons.Main.SAMMStartSet = @[Common.710.SAMMStart] Entities.gmod_subway_ezh3.Buttons.Main.SAMMResetSet = @[Common.710.SAMMReset] @@ -511,6 +575,7 @@ Entities.gmod_subway_ezh3.Buttons.Main.KU10Set = @[Common.ALL.KRP] Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle = @[Common.ALL.GCab] Entities.gmod_subway_ezh3.Buttons.Main.!AnnPlay = @[Common.ALL.AnnPlay] + Entities.gmod_subway_ezh3.Buttons.HelperPanel.V6Set = @[Common.ALL.KDL] Entities.gmod_subway_ezh3.Buttons.HelperPanel.V3Toggle = @[Common.ALL.VUD2] Entities.gmod_subway_ezh3.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] @@ -540,6 +605,7 @@ Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IG Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] + Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] @@ -559,39 +625,47 @@ Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_ezh3.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_ezh3.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_ezh3.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] Entities.gmod_subway_ezh3.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] + Entities.gmod_subway_ezh3.Buttons.Panel.!L04 = @[Common.ARS.04] Entities.gmod_subway_ezh3.Buttons.Panel.!L0 = @[Common.ARS.0] Entities.gmod_subway_ezh3.Buttons.Panel.!L40 = @[Common.ARS.40] Entities.gmod_subway_ezh3.Buttons.Panel.!L60 = @[Common.ARS.60] Entities.gmod_subway_ezh3.Buttons.Panel.!L70 = @[Common.ARS.70] Entities.gmod_subway_ezh3.Buttons.Panel.!L80 = @[Common.ARS.80] + Entities.gmod_subway_ezh3.Buttons.Panel.!LKT = @[Common.ARS.KT] Entities.gmod_subway_ezh3.Buttons.Panel.!LSN = @[Common.ALL.SN] Entities.gmod_subway_ezh3.Buttons.Panel.!LKVD = @[Common.ARS.VD] Entities.gmod_subway_ezh3.Buttons.Panel.!LRP = @[Common.ALL.GRP] Entities.gmod_subway_ezh3.Buttons.Panel.!LPU = @[Common.ALL.PU] Entities.gmod_subway_ezh3.Buttons.Panel.!LSD = @[Common.703.SD] + Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer = @[Common.ALL.Speedometer] Entities.gmod_subway_ezh3.Buttons.Panel.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_ezh3.Buttons.Panel.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_ezh3.Buttons.Panel.!HighVoltage = @[Common.ALL.HighVoltage] Entities.gmod_subway_ezh3.Buttons.Panel.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + #gmod_subway_em508t Entities.gmod_subway_em508t.Buttons.AVMain.AVToggle = @[Common.703.AV] Entities.gmod_subway_em508t.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle = @[Common.703.VU1] Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle = @[Common.703.VU2] Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle = @[Common.703.VU3] + Entities.gmod_subway_em508t.Buttons.VU14.VU14Toggle = @[Common.ALL.VF2] Entities.gmod_subway_em508t.Buttons.VU.VUToggle = @[Common.ALL.VU] + Entities.gmod_subway_em508t.Buttons.VU.VUToggle = @[Common.ALL.VU] + Entities.gmod_subway_em508t.Buttons.Main.KU12Set = @[Common.ALL.KDL] Entities.gmod_subway_em508t.Buttons.Main.KU11Set = @[Common.703.KSD] Entities.gmod_subway_em508t.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -606,8 +680,10 @@ Entities.gmod_subway_em508t.Buttons.Main.V10Set = @[Common.ALL.KRZD] Entities.gmod_subway_em508t.Buttons.Main.!RedRP = @[Common.ALL.RRP] Entities.gmod_subway_em508t.Buttons.Main.!GreenRP = @[Common.ALL.GRP] Entities.gmod_subway_em508t.Buttons.Main.!SD = @[Common.703.SD] + Entities.gmod_subway_em508t.Buttons.HelperPanel.V6Set = @[Common.ALL.KDL] Entities.gmod_subway_em508t.Buttons.HelperPanel.V3Toggle = @[Common.ALL.VUD2] + Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_em508t.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] @@ -623,11 +699,13 @@ Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor Entities.gmod_subway_em508t.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] + Entities.gmod_subway_em508t.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] Entities.gmod_subway_em508t.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_em508t.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_em508t.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_em508t.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] + #Spawner: Entities.gmod_subway_81-702.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] Entities.gmod_subway_81-702.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] @@ -637,6 +715,7 @@ Entities.gmod_subway_81-702.Spawner.SpawnMode.4 = @[Common.Spawner.Spawn Entities.gmod_subway_81-702.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-702.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] Entities.gmod_subway_81-702.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] + Entities.gmod_subway_81-703.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] Entities.gmod_subway_81-703.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] Entities.gmod_subway_81-703.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] @@ -645,6 +724,7 @@ Entities.gmod_subway_81-703.Spawner.SpawnMode.4 = @[Common.Spawner.Spawn Entities.gmod_subway_81-703.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-703.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] Entities.gmod_subway_81-703.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] + Entities.gmod_subway_ezh.Spawner.TrainType.Name = @[Spawner.707.Type] Entities.gmod_subway_ezh.Spawner.TrainType.1 = @[Spawner.707.Type1] Entities.gmod_subway_ezh.Spawner.TrainType.2 = @[Spawner.707.Type2] @@ -658,6 +738,7 @@ Entities.gmod_subway_ezh.Spawner.PassTexture.Name = @[Common.Spawner.PassT Entities.gmod_subway_ezh.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] Entities.gmod_subway_ezh.Spawner.Announcer.Name = @[Common.Spawner.Announcer] Entities.gmod_subway_ezh.Spawner.EWagons.Name = @[Spawner.502.EWagons] + Entities.gmod_subway_ezh3.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_ezh3.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] Entities.gmod_subway_ezh3.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] diff --git a/lua/metrostroi_data/languages/de_717.lua b/lua/metrostroi_data/languages/de_717.lua deleted file mode 100644 index db30417..0000000 --- a/lua/metrostroi_data/languages/de_717.lua +++ /dev/null @@ -1,1137 +0,0 @@ -return [[ -#81-717 -[de] -#Cameras: -Train.717.Breakers = Automatischer Trennschalter -Train.717.VB = Batterie und RC -Train.717.VBD = VBD und UPPS -Train.717.VRD = VRD -Train.717.SOSD = SOSD -Train.717.PUAV = PUAV -Train.717.PA = PA -Train.717.PAScreen = PA Bildschirm -Train.714.Shunt = Rangiersteuerung und Führerbremsventil -#Spawner -Spawner.717.Line2 = MPL Triebfahrzeug -Spawner.717.Line4 = PBL Triebfahrzeug -Spawner.717.Line5 = FPL Triebfahrzeug -Spawner.717.Type = Triebfahrzeugtyp -Spawner.717.BodyType = Wagenkasten -Spawner.717.MVM = MVM -Spawner.717.LVZ = LVZ -Spawner.717.MaskType = Maske -Spawner.717.CranType = Führerbremsventil -Spawner.717.LampType = Lampen -Spawner.717.Lamp1 = LPV-02 -Spawner.717.Lamp2 = LLV-01 -Spawner.717.SeatType = Sitze -Spawner.717.ARS = ARS Anzeigetyp -Spawner.717.RingType = ARS Warnton -Spawner.717.BPSNType = BPSN -#######Buttons########### -Train.Buttons.RZP = BPSN Sicherung des Umformers -#Common -Common.717.VBD = ASNP Türblockierung -Common.717.UPPS = UPPS Systemschalter -Common.717.BPSN = BPSN: Zentrale Energieversorgung -Common.717.ARS13V = ARS 13V: ARS prüfung der stabilisierten Spannung -Common.717.Radio13V = Funkstabilisierte 13V Spannungsprüfung -Common.717.LVD = LVD: 1. Lampe Motoren aktiv -Common.717.LHRK = LHRK: 2. Lampe Schaltwerk dreht sich -Common.717.LST = LST: 6. Lampe Bremslicht -Common.717.KVC = LKVC: Hilfsstromkreise Schützlampe (Hochspannung ist nicht vorhanden) -Common.717.GLEB = GLEB: Störung! -Common.717.KVP = LKVP: Hochspannungsumformer -Common.717.LSP = LSP: Feueralarm -Common.717.LEKK = LEKK: Schaltkastenanzeige -Common.717.LPU = LPU: Anzeige für reduzierte RUT-Einstellungen -Common.717.OtklBV = Schnellschalter deaktivieren (BV) -Common.717.OtklBVK = Schnellschalterabdeckung -Common.717.ConverterProtection = Netztschutztaste -Common.717.VZ1 = VZ1: Pneumatisches Ventil №1 -Common.717.VL1 = Kontrollleuchte für Lüftung ohne Einschluss -Common.717.V13 = Notbelüftung -Common.717.V11 = 1. Lüftungsgruppenschalter -Common.717.V12 = 2. Lüftungsgruppenschalter -Common.717.RZPL = RZP: Power supply protection relay -Common.717.VPAOn = VPA: Netztschutzrelais -Common.717.VPAOff = VPA: Triebfahrzeug abschalten -Common.717.VZD = VZD: Türsteuerung (Türen schließen) -Common.717.A53 = A53: Hilfsschütz -Common.717.A56 = A56: Batterie -Common.717.A54 = A54: Traktionssteuerung -Common.717.A17 = A17: Türen, weiße Notscheinwerfer -Common.717.A44 = A44: Notsteuerung, Notkompressor, ARS-Notstromversorgung -Common.717.A39 = A39: Zugstart über Notsteuerung -Common.717.A70 = A70: RKTT Automatikmodus -Common.717.A14 = A14: Notstartrelais -Common.717.A74 = A74: Zugsicherung zurücksetzen -Common.717.A26 = A26: Niederfrequenzverstärker -Common.717.AR63 = AР63: Radiosender -Common.717.AS1 = AС1: Gegensprechanlage, ASNP -Common.717.A13 = A13: Türstatus -Common.717.A21 = A21: Türsteuerung -Common.717.A31 = A31: Linke Türen öffnen -Common.717.A32 = A32: Rechte Türen öffnen -Common.717.A16 = A16: Türen Schließen -Common.717.A12 = A12: Zwangsschließen -Common.717.A24 = A24: Ladekontrolle -Common.717.A49 = A49: Notbeleuchtung -Common.717.A27 = A27: Innenraumbeleuchtung, Kabinenbeleuchtung, Bremssignalisierung, grüne RP-Lampe -Common.717.A72 = A72: Pneumatikventil №1 synchronisieren -Common.717.A50 = A50: Lichtschütz -Common.717.AV3 = AВ3: Notbelüftungsleistung -Common.717.AV3S = AВ3: Notstromversorgung der Funkstation -Common.717.AV2 = AВ2: Hauptlüftungsleistung -Common.717.AV4 = AВ4: 1. Lüftungsgruppensteuerung -Common.717.AV5 = AВ5: 2. Lüftungsgruppensteuerung -Common.717.AV6 = AВ6: Notlüftungsgruppensteuerung -Common.717.AV1 = AВ1: Lüftungssteuerung, Lüftungssignalisierung, Kabinenbelüftung -Common.717.A29 = A29: Zugspitzenlicht -Common.717.A46 = A46: Abgedunkelte Scheinwerfer (1. Gruppe) -Common.717.A47 = A47: Fernlicht (2. Gruppe) -Common.717.A71 = A71: RV-3-Stromversorgung von Steuerung und ARS -Common.717.A7 = A7: rechtes Schlusslicht -Common.717.A9 = A9: linkes Schlusslicht -Common.717.A84 = @[Common.ALL.VU] -Common.717.A8 = A8: Pneumatikventil №2 -Common.717.A52 = A52: Pneumatisches Ventil durch das Aufmerksamkeitspedal -Common.717.A19 = A19: Wagen RV-3 -Common.717.A48 = A48: Aufmerksamkeitspedal, RPB, Haupt-ARS-Leistung -Common.717.A10 = A10: Luftpressersteuerung -Common.717.A22 = A22: Kompressorschütz -Common.717.A30 = A30: Servomotorleistung des Rheostat-Reglers (SDRK) -Common.717.A1 = A1: Fahrmodus -Common.717.A2 = A2: Rheostat-Reglersteuerung -Common.717.A3 = A3: X-3 -Common.717.A4 = A4: Rückwärts fahren -Common.717.A5 = A5: Vorwärts fahren -Common.717.A6 = A6: Bremse -Common.717.A18 = A18: Schutz zurückgesetzt -Common.717.A73 = A73: Störung -Common.717.A20 = A20: LK-2, LK-5 -Common.717.A25 = A25: Manuelles Bremsen -Common.717.A11 = A11: Geräteraum und Kabinenbeleuchtung -Common.717.A37 = A37: Netzschutzrelais zurückgesetzt -Common.717.A45 = A45: BPSN Steuerung -Common.717.A38 = A38: Wagenstromkreis-Störmeldeleuchte -Common.717.A51 = A51: KPP- und KVP-Schütze -Common.717.A65 = A65: Sekundärer BPSN-Umformer -Common.717.A66 = A66: BV deaktivieren -Common.717.A42 = A42: 75V ARS -Common.717.A43 = A43: 12V ARS -Common.717.A432 = A43: EPK Steuerung -Common.717.A41 = A41: Pneumatikventil №2 durch ARS -Common.717.A40 = A40: Bremslicht -Common.717.A75 = A75: Führerstandsheizung -Common.717.A76 = A76: Feueralarm -Common.717.A60 = A60: Motor im Betrieb -Common.717.A58 = A58: KAH-1 -Common.717.A57 = A57: Rotationslampe für Rheostat-Regler -Common.717.A59 = A59: KAH-2 -Common.717.A28 = A28: Thyristorregler Steuergerät -Common.717.A55 = A55: Rheostat-Regler synchron -Common.717.A68 = A68: Stromabnehmersteuerung -Common.717.A80 = A80: BV aktiv -Common.717.A81 = A81: BV Steuerung -Common.717.A58PU = A58: PUAV Leistung -Common.717.A59PU = A59: PUAV Steuerung -Common.717.A61PU = A61: PUAV Wendeschlüsselsteuerung -Common.717.A58PA = A58: PA Strom -Common.717.A59PA = А59: @[Common.ALL.Unsused1] -Common.717.A61PA = A61: PA Wendeschlüsselsteuerung -Common.717.A78 = A78: Vordertüren steuern -Common.717.ABK = A-VK: Steuerung der Kabinenklimaanlage -Common.717.A81 = A81: BV Steuerung -Common.717.A23 = A23: Start des Kompressors -Common.717.A15 = A15: Notfallbeleuchtung -Common.717.AIS = AIS: Leistungsschalter für Geschwindigkeitssensor -Common.717.RC2 = RC-2: Lasttrennschalter für Autodrive-System -Common.717.VAU = VAU: Autodrive-Systemschalter -Common.717.LampDV = DV: Störung des Rotationssensors -Common.717.ARSL20 = Geschwindigkeitsüberwachung 20 km/h -Common.717.ARSL40 = @[Common.ARS.40] -Common.717.ARSL60 = @[Common.ARS.60] -Common.717.ARSL70 = @[Common.ARS.70] -Common.717.ARSL80 = @[Common.ARS.80] -Common.PUAV.K16 = LK16: Stromverfügbarkeit am 16. Draht (Türen schließen) -Common.PUAV.OS = LOS: PUAV-Geschwindigkeitsbegrenzungsmodus -Common.PUAV.AVT = LAVT: PUAV-Autofahrmodus -Common.PUAV.RS = LRS: PUAV-Geschwindigkeitsregelungsmodus -Common.PUAV.KI1 = LKI1: 1. PUAV-Subset-Störungsanzeige -Common.PUAV.KI2 = LKI2: 2. PUAV-Subset-Störungsanzeige -Common.717.KH = KH3: Aktivieren Sie den X-3-Modus über das Autodrive-System -Common.717.KSZD = KSZD: Das Schließen der Türen genehmigen -Common.717.VAV = @[Common.ALL.VAV] -Common.717.PAM = PA-M -Common.717.PAKSDM = PA-KSD-M -Common.PA.P = P -Common.PA.F = F -Common.PA.Up = Hoch -Common.PA.M = M -Common.PA.Left = links -Common.PA.Down = runter -Common.PA.Right = rechts -Common.PA.Esc = Abbruch -Common.PA.Enter = Enter -Common.714.Start = Starten der Fahrmotoren -Common.714.RV = Richtungsschalter -#gmod_subway_81-717 -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:UOSToggle = @[Common.ALL.UOS] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:UOSToggle = @[Common.ALL.UOS] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_C.1:VBDToggle = @[Common.717.VBD] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_R.2:VBDToggle = @[Common.717.VBD] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_C.1:UPPS_OnToggle = @[Common.717.UPPS] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_R.2:UPPS_OnToggle = @[Common.717.UPPS] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.ARS13Set = @[Common.717.ARS13V] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARSOch = @[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLHRK = @[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLN = @[Common.ARS.LN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARSOch = @[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLHRK = @[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.GLEB] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!60 = @[Common.ARS.60]\n@[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!70 = @[Common.ARS.70]\n@[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LEKK = @[Common.717.LEKK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LPU = @[Common.717.LPU] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block3.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-717_mvm.Buttons.Block3.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_UNchToggle = @[Common.ALL.UNCh] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_ZSToggle = @[Common.ALL.ES] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_RadioToggle = @[Common.ALL.R_Radio] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.1:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.1:KVTRSet = @[Common.ARS.KVTR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.2:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.2:KVTRSet = @[Common.ARS.KVTR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!L1Light = @[Common.717.VL1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V13Toggle = @[Common.717.V13] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VUD1Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!GreenRPLight = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!AVULight = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!LKVPLight = @[Common.717.KVP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!SPLight = @[Common.717.LSP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklBVSet = @[Common.717.OtklBV] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklBVKToggle = @[Common.717.OtklBVK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V11Toggle = @[Common.717.V11] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V12Toggle = @[Common.717.V12] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ARSRToggle = @[Common.ALL.ARSR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ALSFreqToggle = @[Common.ARS.Freq] @[Common.ARS.FreqU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VPToggle = @[Common.ARS.VP] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KAHSet = @[Common.ALL.KAH] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KAHKToggle = @[Common.ALL.KAHK] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.!PNT = @[Common.ALL.BrT] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.!PNW = @[Common.ALL.BrW] -Entities.gmod_subway_81-717_mvm.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_mvm.Buttons.HVMeters.!HighVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.SAB1Toggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.!VH1 = @[Common.BZOS.VH1] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.!VH2 = @[Common.BZOS.VH2] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:SAB1Toggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:!VH1 = @[Common.BZOS.VH1] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:!VH2 = @[Common.BZOS.VH2] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_C.PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_C.PVK+ = @[Common.CabVent.PVK+] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_R.1:PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_R.1:PVK+ = @[Common.CabVent.PVK+] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA23 = @[Common.IGLA.Button23] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA3Set = @[Common.IGLA.Button3] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA4Set = @[Common.IGLA.Button4] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.!IGLAFire = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA23 = @[Common.IGLA.Button23] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA3Set = @[Common.IGLA.Button3] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA4Set = @[Common.IGLA.Button4] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:!IGLAFire = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A43Toggle = @[Common.717.A43] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A58Toggle = @[Common.717.A58] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A59Toggle = @[Common.717.A59] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A43Toggle = @[Common.717.A43] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A68Toggle = @[Common.717.A68] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-717_mvm.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-717_mvm.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle = @[Common.ALL.DriverValveDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-717_mvm.Buttons.OtsekDoor1.OtsekDoor1 = @[Common.ALL.OtsekDoor1] -Entities.gmod_subway_81-717_mvm.Buttons.OtsekDoor2.OtsekDoor2 = @[Common.ALL.OtsekDoor2] -Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_81-717_mvm.Buttons.EPVDisconnect.EPKToggle = @[Common.ALL.EPV] -Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -#gmod_subway_81-717_lvz -#Buttons: -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC2Toggle = @[Common.717.RC2] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC2Toggle = @[Common.717.RC2] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VAUToggle = @[Common.717.VAU] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VAUToggle = @[Common.717.VAU] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-717_lvz.Buttons.VRD_C.1:VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-717_lvz.Buttons.SOSD_C.1:VSOSDToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-717_lvz.Buttons.SOSD_R.2:VSOSDToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.ARS13Set = @[Common.717.ARS13V] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.Radio13Set = @[Common.717.Radio13V] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSOch = @[Common.ARS.N4] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLVD = @[Common.ALL.L1w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLHRK = @[Common.ALL.L2w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLST = @[Common.ALL.L6w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLRD = @[Common.ARS.LRD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampDV = @[Common.717.LampDV] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!SpeedFact1 = @[Common.ALL.SpeedCurr] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!SpeedFact2 = @[Common.ALL.SpeedCurr] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL20 = @[Common.717.ARSL20] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL40 = @[Common.717.ARSL40] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL60 = @[Common.717.ARSL60] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL70 = @[Common.717.ARSL70] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL80 = @[Common.717.ARSL80] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!NMPressureLow2 = @[Commom.NMnUAVA.NMPressureLow] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!UAVATriggered2 = @[Commom.NMnUAVA.UAVATriggered] -Entities.gmod_subway_81-717_lvz.Buttons.USS1.!NMPressureLow = @[Commom.NMnUAVA.NMPressureLow] -Entities.gmod_subway_81-717_lvz.Buttons.USS1.!UAVATriggered = @[Commom.NMnUAVA.UAVATriggered] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OK16 = @[Common.PUAV.K16] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OLRS = @[Common.PUAV.RS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OKI1 = @[Common.PUAV.KI1] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OKI2 = @[Common.PUAV.KI2] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OOS = @[Common.PUAV.OS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OAVT = @[Common.PUAV.AVT] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:KHSet = @[Common.717.KH] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:VAVToggle = @[Common.717.VAV] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:VZPToggle = @[Common.ALL.VZP] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!K16 = @[Common.PUAV.K16] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!OS = @[Common.PUAV.OS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!AVT = @[Common.PUAV.AVT] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!LRS = @[Common.PUAV.RS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI1 = @[Common.PUAV.KI1] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI2 = @[Common.PUAV.KI2] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARSOch = @[Common.ARS.N4] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KHSet = @[Common.717.KH] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VAVToggle = @[Common.717.VAV] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VZPToggle = @[Common.ALL.VZP] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMPSet = @[Common.717.PAM]: @[Common.PA.P] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMFSet = @[Common.717.PAM]: @[Common.PA.F] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMUpSet = @[Common.717.PAM]: @[Common.PA.Up] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMMSet = @[Common.717.PAM]: @[Common.PA.M] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMLeftSet = @[Common.717.PAM]: @[Common.PA.Left] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMDownSet = @[Common.717.PAM]: @[Common.PA.Down] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMRightSet = @[Common.717.PAM]: @[Common.PA.Right] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM1Set = @[Common.717.PAM]: 1 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM2Set = @[Common.717.PAM]: 2 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM3Set = @[Common.717.PAM]: 3 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM4Set = @[Common.717.PAM]: 4 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM5Set = @[Common.717.PAM]: 5 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM6Set = @[Common.717.PAM]: 6 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM7Set = @[Common.717.PAM]: 7 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM8Set = @[Common.717.PAM]: 8 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM9Set = @[Common.717.PAM]: 9 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMEscSet = @[Common.717.PAM]: @[Common.PA.Esc] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM0Set = @[Common.717.PAM]: 0 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMEnterSet = @[Common.717.PAM]: @[Common.PA.Enter] -Entities.gmod_subway_81-717_lvz.Buttons.PAM.2:KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PAM.2:VZPToggle = @[Common.ALL.VZP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!OhSigLamp1 = @[Common.BZOS.Engaged] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!GreenRPLight1 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!AVULight1 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!LKVPLight1 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!SPLight1 = @[Common.717.LSP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OhrSigToggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!OhSigLamp2 = @[Common.BZOS.Engaged] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!KDLLight2 = @[Common.ALL.KDLL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!KDLRLight2 = @[Common.ALL.KDLL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!GreenRPLight2 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!RZPLight2 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!LKVPLight2 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OhrSigToggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VPAOnSet = @[Common.717.VPAOn] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VPAOffSet = @[Common.717.VPAOff] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!AVULight2 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!RZPLight1 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!SPLight3 = @[Common.717.LSP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!AVULight3 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.1:VPAOnSet = @[Common.717.VPAOn] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.1:VPAOffSet = @[Common.717.VPAOff] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OVTToggle = @[Common.ALL.VOVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.!1:PNT = @[Common.ALL.BrT] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.!KDPLight2 = @[Common.ALL.KDPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.!2:PNT = @[Common.ALL.BrT] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VOPDSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VOPDSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-717_lvz.Buttons.CabVent_C.PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_lvz.Buttons.CabVent_C.PVK+ = @[Common.CabVent.PVK+] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_N.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_N.!HighVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_O.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_O.!HighVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AV3Toggle = @[Common.717.AV3S] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A58Toggle = @[Common.717.A58PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A59Toggle = @[Common.717.A59PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A61Toggle = @[Common.717.A61PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A58Toggle = @[Common.717.A58PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A59Toggle = @[Common.717.A59PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A61Toggle = @[Common.717.A61PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A06Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A43Toggle = @[Common.717.A432] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A58Toggle = @[Common.717.A58PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A59Toggle = @[Common.717.A59PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A61Toggle = @[Common.717.A61PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A58Toggle = @[Common.717.A58PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A59Toggle = @[Common.717.A59PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A61Toggle = @[Common.717.A61PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A78Toggle = @[Common.717.A78]@[Common.ALL.Unsused2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.ABKToggle = @[Common.717.ABK]@[Common.ALL.Unsused2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A43Toggle = @[Common.717.A432] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AV3Toggle = @[Common.717.AV3S] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber3+ = @[Common.ALL.RouteNumber3+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber3- = @[Common.ALL.RouteNumber3-] -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle = @[Common.ALL.DriverValveDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-717_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_lvz.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-717_lvz.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-717_lvz.Buttons.OtsekDoor1.OtsekDoor1 = @[Common.ALL.OtsekDoor1] -Entities.gmod_subway_81-717_lvz.Buttons.OtsekDoor2.OtsekDoor2 = @[Common.ALL.OtsekDoor2] -Entities.gmod_subway_81-717_lvz.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_81-717_lvz.Buttons.EPVDisconnect.EPKToggle = @[Common.ALL.EPV] -Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -#gmod_subway_81-714_mvm -Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-714_mvm.Buttons.couch_cap_o.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_mvm.Buttons.couch_cap.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A23Toggle = @[Common.717.A23] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-714_mvm.Buttons.VU.A84Toggle = @[Common.ALL.VU] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.!RZPLight = @[Common.717.RZPL] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.OtklBVSet = @[Common.717.OtklBV] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.StartSet = @[Common.714.Start] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.RV- = @[Common.714.RV] @[Common.ALL.CCW] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.RV+ = @[Common.714.RV] @[Common.ALL.CW] -Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW -#gmod_subway_81-714_lvz -Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-714_lvz.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-714_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-714_lvz.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-714_lvz.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-714_lvz.Buttons.couch_cap_o.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_lvz.Buttons.couch_cap.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_lvz.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A23Toggle = @[Common.717.A23] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-714_lvz.Buttons.VU.A84Toggle = @[Common.ALL.VU] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.!RZPLight = @[Common.717.RZPL] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.StartSet = @[Common.714.Start] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.RV- = @[Common.714.RV] @[Common.ALL.CCW] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.RV+ = @[Common.714.RV] @[Common.ALL.CW] -Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW -#Spawner: -Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Type.Name = @[Spawner.717.Type] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.Name = @[Spawner.717.BodyType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.1 = @[Spawner.717.MVM] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.2 = @[Spawner.717.LVZ] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_mvm_custom.Spawner.MaskType.Name = @[Spawner.717.MaskType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Cran.Name = @[Spawner.717.CranType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.Name = @[Spawner.717.LampType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.2 = @[Spawner.717.Lamp1] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.3 = @[Spawner.717.Lamp2] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.Name = @[Spawner.717.SeatType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.2 = @[Common.Spawner.Old] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.3 = @[Common.Spawner.New] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.Name = @[Spawner.717.ARS] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.Name = @[Spawner.717.RingType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.7 = @[Common.Spawner.Type] 6 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.8 = @[Common.Spawner.Type] 7 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.9 = @[Common.Spawner.Type] 8 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.Name = @[Spawner.717.BPSNType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.7 = @[Common.Spawner.Type] 6 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.8 = @[Common.Spawner.Type] 7 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.9 = @[Common.Spawner.Type] 8 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.10 = @[Common.Spawner.Type] 9 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.11 = @[Common.Spawner.Type] 10 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.12 = @[Common.Spawner.Type] 11 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.13 = @[Common.Spawner.Type] 12 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.14 = @[Common.Spawner.Type] 13 -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -#Spawner: -Entities.gmod_subway_81-717_lvz.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-717_lvz.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-717_lvz.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-717_lvz.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_lvz.Spawner.Type.Name = @[Spawner.Common.EType] -Entities.gmod_subway_81-717_lvz.Spawner.Type.1 = @[Spawner.717.Line2] -Entities.gmod_subway_81-717_lvz.Spawner.Type.2 = @[Spawner.717.Line4] -Entities.gmod_subway_81-717_lvz.Spawner.Type.3 = @[Spawner.717.Line5] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/de_718.lua b/lua/metrostroi_data/languages/de_718.lua deleted file mode 100644 index cae3c11..0000000 Binary files a/lua/metrostroi_data/languages/de_718.lua and /dev/null differ diff --git a/lua/metrostroi_data/languages/de_720.lua b/lua/metrostroi_data/languages/de_720.lua index 1afe2f2..406a6fb 100644 --- a/lua/metrostroi_data/languages/de_720.lua +++ b/lua/metrostroi_data/languages/de_720.lua @@ -1,124 +1,135 @@ -return [[ +return [[ #81-720 + [de] + #######Buttons########### #Cameras -Train.720.CameraCond = Klimaanlage, Störungsanzeige -Train.720.CameraPPZ = PPZ -Train.720.CameraPV = VPU -Train.720.CameraVityaz = SAU "Vityaz" -Train.720.CameraKRMH = KRMSH- und UAVA-Ventile -Train.720.CameraPVZ = PVZ +Train.720.CameraCond = Air conditioner, IGLA #FIXME +Train.720.CameraPPZ = PPZ #FIXME +Train.720.CameraPV = VPU #FIXME +Train.720.CameraVityaz = SAU "Vityaz" #FIXME +Train.720.CameraKRMH = KRMSH and UAVA valves #FIXME +Train.720.CameraPVZ = PVZ #FIXME + #Common -Common.720.SF1 = SF1: Hauptstrom +Common.720.SF1 = SF1: Hauptschalter Common.720.SF2 = SF2: Hauptsteuerung Common.720.SF3 = SF3: Notsteuerung Common.720.SF4 = SF4: BARS -Common.720.SF5 = SF5: BUP (Zugsteuergerät) -Common.720.SF6 = SF6: BKCU (Steuerkreiskommutierungseinheit) +Common.720.SF5 = SF5: BUP (Zugsteuerung) +Common.720.SF6 = SF6: BKCU (Kontrollkreise Kommunikation) Common.720.SF7 = SF7: PPO (ASOTP) Common.720.SF8 = SF8: Ansager -Common.720.SF9 = SF9: Funk -Common.720.SF10 = SF10: Wagenorientierung -Common.720.SF11 = SF11: Bewegungsrichtung +Common.720.SF9 = SF9: Radiostation +Common.720.SF10 = SF10: Wagen orientation +Common.720.SF11 = SF11: Fahrtrichtung Common.720.SF12 = SF12: 1. Scheinwerfergruppe Common.720.SF13 = SF13: 2. Scheinwerfergruppe -Common.720.SF14 = SF14: Schlusslicht +Common.720.SF14 = SF14: Schlusslichter Common.720.SF15 = SF15: @[Common.703.VU3] Common.720.SF16 = SF16: @[Common.703.VU1] -Common.720.SF17 = SF17: Klimaanlage in der Kabine +Common.720.SF17 = SF17: Kabinenlüftung Common.720.SF18 = SF18: Spurkranzschmierung -Common.720.SF19 = SF19: Hauptbremshebel -Common.720.SF20 = SF20: Bremshebel Notstrom +Common.720.SF19 = SF19: Bremshebel Hauptsteuerung +Common.720.SF20 = SF20: Bremshebel Notsteuerung Common.720.SF21 = SF21: Türen öffnen Common.720.SF22 = SF22: Türen schließen -Common.720.SFV1 = SF1: Spannung der Wagensteuerkreise -Common.720.SFV2 = SF2: Spannung der Wagensteuerung -Common.720.SFV3 = SF3: Spannung Traktionsmotoren-Steuergerät -Common.720.SFV4 = SF4: Steuergerät für Fahrmotoren -Common.720.SFV5 = SF5: Steuergerät für Notfahrmotoren -Common.720.SFV6 = SF6: BUTP -Common.720.SFV7 = SF7: Stromversorgung + +Common.720.SFV1 = SF1: Wagensteuerung Stromzufuhr +Common.720.SFV2 = SF2: Wagensteuerung Stromzufuhr +Common.720.SFV3 = SF3: Steuerung der Fahrmotoren +Common.720.SFV4 = SF4: Steuerung der Fahrmotoren +Common.720.SFV5 = SF5: Notsteuerung der Fahrmotoren +Common.720.SFV6 = SF6: BUTP power +Common.720.SFV7 = SF7: Stromzufuhr Common.720.SFV8 = SF8: BV Steuerung -Common.720.SFV9 = SF9: BV Spannung +Common.720.SFV9 = SF9: BV Strom Common.720.SFV10 = SF10: PPO (ASOTP PCBK) Common.720.SFV11 = SF11: Luftpresser Common.720.SFV12 = SF12: Türen schließen Common.720.SFV13 = SF13: Linke Türen öffnen Common.720.SFV14 = SF14: Rechte Türen öffnen -Common.720.SFV15 = SF15: letzte Türen +Common.720.SFV15 = SF15: Türen am Zugschluss Common.720.SFV16 = SF16: Ansager -Common.720.SFV17 = SF17: Notruf-Gegensprechanlage +Common.720.SFV17 = SF17: Notruf Common.720.SFV18 = SF18: @[Common.ALL.Unsused1] -Common.720.SFV19 = SF19: Spannung Innenbeleuchtung -Common.720.SFV20 = SF20: Innenbeleuchtung für Notfälle -Common.720.SFV21 = SF21: Geschwindigkeitsmesser +Common.720.SFV19 = SF19: Stromzufuhr für Innenbeleuchtung +Common.720.SFV20 = SF20: Notbeleuchtung Innenraum +Common.720.SFV21 = SF21: Geschwindigkeits Sensor Common.720.SFV22 = SF22: Federspeicherbremse -Common.720.SFV23 = SF23: 1. Lüftungsgruppensteuerung -Common.720.SFV24 = SF24: 2. Lüftungsgruppensteuerung -Common.720.SFV25 = SF25: 1. Lüftungsgruppenspannung -Common.720.SFV26 = SF26: 2. Lüftungsgruppenspannung -Common.720.SFV27 = SF27: Erregerleistung -Common.720.SFV28 = SF28: Ladekondensatorleistung +Common.720.SFV23 = SF23: 1. Lüftergruppe +Common.720.SFV24 = SF24: 2. Lüftergruppe +Common.720.SFV25 = SF25: 1. Lüftergruppe Stromzufuhr +Common.720.SFV26 = SF26: 2. Lüftergruppe Stromzufuhr +Common.720.SFV27 = SF27: Umformer Stromzufuhr +Common.720.SFV28 = SF28: Strom für Batterieladen Common.720.SFV29 = SF29: Spannungssammler -Common.720.SFV30 = SF30: Linienschema & Innenanzeige +Common.720.SFV30 = SF30: Linienpläne & Innenanzeigen Common.720.SFV31 = SF31: @[Common.ALL.Unsused1] Common.720.SFV32 = SF32: @[Common.ALL.Unsused1] Common.720.SFV33 = SF33: @[Common.ALL.Unsused1] -Common.720.VentCMode = Lüftungsmodus -Common.720.VentHMode+ = Heizleistung erhöhen -Common.720.VentHMode- = Heizleistung verringern -Common.720.VentSMode- = Lüftungsleistung erhöhen -Common.720.VentSMode+ = Lüftungsleistung verringern -Common.720.Pant1 = Freigabe der ersten Sammlergruppe -Common.720.Pant2 = Freigabe der zweiten Sammlergruppe -Common.720.Vent1 = 1. Lüftungsgruppe -Common.720.Vent2 = 2. Lüftungsgruppe -Common.720.TorecDoors = letzte Türen + +Common.720.VentCMode = Ventilation mode #FIXME +Common.720.VentHMode+ = Increase heater power #FIXME +Common.720.VentHMode- = Decrease heater power #FIXME +Common.720.VentSMode- = Increase ventilation power #FIXME +Common.720.VentSMode+ = Decrease ventilation power #FIXME + +Common.720.Pant1 = 1. Spannungssammler entladen +Common.720.Pant2 = 2. Spannungssammler entladen +Common.720.Vent1 = 1. Lüftergruppe +Common.720.Vent2 = 2. Lüftergruppe +Common.720.TorecDoors = Türen am Zugschluss Common.720.BBER = Notfall BBE -Common.720.BBE = BBE: Stromversorgung +Common.720.BBE = BBE: Stromzufuhr Common.720.CabLightStrength = Helligkeit der Kabinenbeleuchtung -Common.720.AppLights = Beleuchtung der Wagenausstattung -Common.720.BARSBlock = Störung Blockierung der BARS (ARS-Einheit) +Common.720.AppLights = Beleuchtung Schaltschrank +Common.720.BARSBlock = Faulty BARS (ARS unit) blocking #FIXME + Common.720.Accel = Beschleunigung -Common.720.Forward = Vorwärtsbewegung -Common.720.Backward = Rückwärtsbewegung +Common.720.Forward = Fährt vorwärts +Common.720.Backward = Fährt rückwärts Common.720.Stand = Steht -Common.720.Ticker = Innenanzeige -Common.720.KAH = KAH: Notfall-BARS-Fahrmodus +Common.720.Ticker = Innenanzeigen +Common.720.KAH = KAH: BARS überbrücken Common.720.KAHK = @[Common.ALL.KAHK] -Common.720.ALS = ALS: ARS in den Signalisierungsmodus schalten (ARS deaktivieren) -Common.720.ALSK = ALS-Tastenabdeckung -Common.720.FDepot = Abfahrt vom Depot -Common.720.HVoltage = keine Hochspannung -Common.720.PassScheme = Informationsanzeige -Common.720.EmergencyCompressor = Notstarttaste für Kompressor -Common.720.EnableBV = aktiviere BV -Common.720.DisableBV = deaktiviere BV -Common.720.Ring = Übertragung der Kontrolle (Alarm) -Common.720.R_Announcer = Aktivieren des Ansagetons im Fahrgastraum -Common.720.R_Line = Fahrermikrofon aktivieren -Common.720.R_Emer = Notruf-Gegensprechanlage -Common.720.R_Program1 = Ansage starten (Programm 1) -Common.720.EnableBVEmer = Notfall BV aktivieren -Common.720.EmergencyControls = Disable emergency enable of circuit control -Common.720.Wiper = Scheibenwischer einschalten (Platzhalter) -Common.720.AccelRate = Aktivieren des "Steigungsmodus" -Common.720.EBrakeAdd = Hilfsbremskraft erhöhen -Common.720.EBrakeRelease = Hilfsbremskraft verringern -Common.720.EBrakeToggle = Hilfsbremse aktivieren -Common.720.EmergencyBrake = Hilfsbremse deaktivieren +Common.720.ALS = ALS: ALS abschalten +Common.720.ALSK = ALS Verdeckung +Common.720.FDepot = Ausrücken vom Depot +Common.720.HVoltage = Keine Hochspannung +Common.720.PassScheme = Position auf der Route #alte Übersetzung: "Linienpläne" +Common.720.EmergencyCompressor = Luftpresser Zwangsstart +Common.720.EnableBV = BV einschalten +Common.720.DisableBV = BV abschalten +Common.720.Ring = Steuerung übertragen (Klingel) +Common.720.R_Announcer = Ansager im Innenraum anschalten +Common.720.R_Line = Fahrermikrofon einschalten +Common.720.R_Emer = Notruf +Common.720.R_Program1 = Ansage starten (programm 1) +Common.720.EnableBVEmer = Notstrom einschalten +Common.720.EmergencyControls = Notsteuerung der Stromkreise +Common.720.Wiper = Scheibenwischer + +Common.720.AccelRate = Steigungsmodus einschalten +Common.720.EBrakeAdd = Zusatzbremse stärken +Common.720.EBrakeRelease = Zusatzbremse schwächer +Common.720.EBrakeToggle = Zusatzbremse aktivieren +Common.720.EmergencyBrake = Notbremse aktivieren Common.720.DoorClose = Türen schließen -Common.720.AttentionMessage = Nachrichtenwahrnehmungstaster -Common.720.DoorSelectL = linke Türen vorwählen -Common.720.DoorSelectR = rechte Türen vorwählen -Common.720.DoorBlock = Fahren ohne Grünschleife -Common.720.KDL = öffne rechte Türen -Common.720.KDP = öffne rechte Türen +Common.720.AttentionMessage = Nachricht bestätigen + + +Common.720.DoorSelectL = Linke Türen wählen +Common.720.DoorSelectR = Rechte Türen wählen +Common.720.DoorBlock = Fahren ohne Türsteuerung +Common.720.KDL = Türen links öffnen +Common.720.KDP = Türen rechts öffnen + Common.Vityaz.F1 = Vityaz: F1 -Common.Vityaz.F2 = Vityaz: nächste Seite -Common.Vityaz.F3 = Vityaz: vorherige Seite -Common.Vityaz.F4 = Vityaz: Hauptmodus +Common.Vityaz.F2 = Vityaz: Nächste Seite +Common.Vityaz.F3 = Vityaz: Vorherige Seite +Common.Vityaz.F4 = Vityaz: Hauptseite Common.Vityaz.1 = Vityaz: 1 Common.Vityaz.4 = Vityaz: 4 Common.Vityaz.7 = Vityaz: 7 @@ -130,27 +141,32 @@ Common.Vityaz.3 = Vityaz: 3 Common.Vityaz.6 = Vityaz: 6 Common.Vityaz.9 = Vityaz: 9 Common.Vityaz.F5 = Vityaz: ZV -Common.Vityaz.F6 = Vityaz: Hoch/Geschwindigkeit -Common.Vityaz.F7 = Vityaz: Runter/Spannung -Common.Vityaz.F8 = Vityaz: Enter\Wagenausstattung -Common.Vityaz.F9 = Vityaz: Select\Wagenausstattungssteuerung -Common.720.EmerX1 = Notfall X1 Fahrmodus -Common.720.EmerX2 = Notfall X2 Fahrmodus +Common.Vityaz.F6 = Vityaz: Hoch\Geschwindigkeit +Common.Vityaz.F7 = Vityaz: Runter\Spannung +Common.Vityaz.F8 = Vityaz: Enter\Wagensteuerung - Status +Common.Vityaz.F9 = Vityaz: Auswählen\Wagensteuerung + +Common.720.EmerX1 = Emergency X1 Fahrmodus +Common.720.EmerX2 = Emergency X2 Fahrmodus Common.720.EmerCloseDoors = Zwangsschließen -Common.720.EmergencyDoors = Aktivieren Sie die Nottürsteuerung -Common.720.BRU = BRU: Hochspannungstrennschalter +Common.720.EmergencyDoors = Notsteuerung der Türen +Common.720.BRU = BRU: Hochspannungs Trennschalter + #gmod_subway_81-720 #Buttons: + Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode- = @[Common.720.VentCMode] @[Common.ALL.CCW] Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+ = @[Common.720.VentCMode] @[Common.ALL.CW] Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+ = @[Common.720.VentHMode+] Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode- = @[Common.720.VentHMode-] Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode- = @[Common.720.VentSMode-] Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+ = @[Common.720.VentSMode+] + Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set = @[Common.720.EmerX1] Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set = @[Common.720.EmerX2] Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet = @[Common.720.EmerCloseDoors] Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle = @[Common.720.EmergencyDoors] + Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set = @[Common.Vityaz.F1] Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set = @[Common.Vityaz.F2] Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set = @[Common.Vityaz.F3] @@ -170,6 +186,7 @@ Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set = @[Common.Vityaz. Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set = @[Common.Vityaz.F7] Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set = @[Common.Vityaz.F8] Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set = @[Common.Vityaz.F9] + Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle = @[Common.720.SF1] Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle = @[Common.720.SF2] Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle = @[Common.720.SF3] @@ -192,6 +209,7 @@ Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle = @[Common.720.S Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle = @[Common.720.SF20] Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle = @[Common.720.SF21] Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle = @[Common.720.SF22] + Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle = @[Common.720.Pant1] Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle = @[Common.720.Pant2] Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle = @[Common.720.Vent1] @@ -211,6 +229,7 @@ Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock- = @[Common.7 Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+ = @[Common.720.BARSBlock] @[Common.ALL.CW] Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle = @[Common.ALL.VB] Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle = @[Common.ARS.Freq] + Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed = @[Common.ALL.LSD] Entities.gmod_subway_81-720.Buttons.PUU.StandToggle = @[Common.720.Stand] @[Common.ALL.Unsused2] Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle = @[Common.720.Ticker] @@ -240,6 +259,7 @@ Entities.gmod_subway_81-720.Buttons.PUU.!VDop2 = @[Common.A Entities.gmod_subway_81-720.Buttons.PUU.!Acc = @[Common.720.Accel] Entities.gmod_subway_81-720.Buttons.PUU.!Forw = @[Common.720.Forward] Entities.gmod_subway_81-720.Buttons.PUU.!Back = @[Common.720.Backward] + Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet = @[Common.720.AccelRate] Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet = @[Common.720.EBrakeAdd] Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet = @[Common.720.EBrakeRelease] @@ -252,11 +272,13 @@ Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet = @[Common.A Entities.gmod_subway_81-720.Buttons.PUR.HornBSet = @[Common.ALL.Horn] Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet = @[Common.720.KDP] Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp = @[Common.ALL.KDPL] + Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle = @[Common.720.DoorSelectL] Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle = @[Common.720.DoorSelectR] Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle = @[Common.720.DoorBlock] Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp = @[Common.ALL.KDLL] Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet = @[Common.720.KDL] + Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle = @[Common.720.SFV1] Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle = @[Common.720.SFV2] Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle = @[Common.720.SFV3] @@ -290,10 +312,12 @@ Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle = @[Common.720.SFV30 Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle = @[Common.720.SFV31] Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle = @[Common.720.SFV32] Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle = @[Common.720.SFV33] + Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] + Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] @@ -306,18 +330,22 @@ Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLA Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] + Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle = @[Common.ALL.KRMH] Entities.gmod_subway_81-720.Buttons.BTO.UAVAToggle = @[Common.ALL.UAVA2] + Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] + Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight = @[Common.ALL.CabinDoor] Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft = @[Common.ALL.CabinDoor] Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor = @[Common.ALL.PassDoor] + Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV = @[Common.ALL.HighVoltage] Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3 = @[Common.ALL.EnginesCurrent1] Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4 = @[Common.ALL.EnginesCurrent2] @@ -325,12 +353,14 @@ Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine = @[Common.A Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder = @[Common.ALL.BCPressure] Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery = @[Common.ALL.BatteryVoltage] Entities.gmod_subway_81-720.Buttons.GV.GVToggle = @[Common.720.BRU] + Entities.gmod_subway_81-720.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] Entities.gmod_subway_81-720.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] Entities.gmod_subway_81-720.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] Entities.gmod_subway_81-720.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_81-720.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] Entities.gmod_subway_81-720.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] + #gmod_subway_81-721 Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle = @[Common.ALL.VB] Entities.gmod_subway_81-721.Buttons.GV.GVToggle = @[Common.720.BRU] @@ -367,13 +397,16 @@ Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle = @[Common.720.SFV30 Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle = @[Common.720.SFV31] Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle = @[Common.720.SFV32] Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle = @[Common.720.SFV33] + Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] + #Spawner: + Entities.gmod_subway_81-720.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-720.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] Entities.gmod_subway_81-720.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] @@ -385,4 +418,4 @@ Entities.gmod_subway_81-720.Spawner.SpawnMode.1 = @[Common.Spawner.S Entities.gmod_subway_81-720.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] Entities.gmod_subway_81-720.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] Entities.gmod_subway_81-720.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] \ No newline at end of file +]] diff --git a/lua/metrostroi_data/languages/de_722.lua b/lua/metrostroi_data/languages/de_722.lua deleted file mode 100644 index d70feea..0000000 --- a/lua/metrostroi_data/languages/de_722.lua +++ /dev/null @@ -1,330 +0,0 @@ -return [[ -#81-722 -[de] -#Cameras: -Train.722.Breakers = Autosicherung -Train.722.PU2_1 = Schaltflächenbedienfeld -Train.722.PU2_2 = Hilfsbedienfeld -Train.722.Vityaz = SAU "VITYAZ-SP" monitor -Train.722.SARMAT = CIS Bildschirm -Train.722.CabLights = Kabinenbeleuchtung -Train.722.Disconnects = Luftabsperrhähne -Train.722.KRMH = KRMSH- und RVTB Ventile -#######Buttons########### -Common.722.MirrorHeating = Spiegelheizung -Common.722.EmergencyDrive = Notstart im Notfahrmodus -Common.722.Microphone = Mikrofon aktivieren -Common.722.LRS = Notstrom des Radiosenders aus Batterien #indicator -Common.722.LAVS = Niedriger Druck in Hauptluftleitung #indicator -Common.722.LRU = Steuerrelais ist ausgeschaltet #indicator -Common.722.GlassWasher = Scheibenwaschanlage -Common.722.GlassCleaner = Scheibenwischer -Common.722.EmergencyBrakeTPlus = Notbremse (T + Modus) -Common.722.EmergencyBrakeTPlusK = Tastenabdeckung "Notbremse" -Common.722.KRO = Bewegungsrichtung -Common.722.PSNToggle = Fremdeinspeisung aktivieren -Common.722.BattOn = Aktivieren der Zugstromversorgung -Common.722.BattOff = Deaktivieren der Zugstromversorgung -Common.722.TorecDoorUnlock = Endtüren entriegeln -Common.722.SCEnabled = Kurzschlussgerät ist eingeschaltet -Common.722.LSOSD = Lampe für Stationstüren leuchtet #indicator -Common.722.PassVent = Innenbelüftung -Common.722.VRU = Steuermodus-Schalter -Common.722.VADToggle = Fahren ohne Grünschleife -Common.722.VAHToggle = Fahren ohne Aufmerksamkeitspedal -Common.722.EmergencyRadioPowerToggle = Notstromversorgung des Funks -Common.722.BARSMode = BARS Modus -Common.722.PantSC = Stromabnehmer und Kurzschlussgerät -Common.SARMAT.Up = SARMAT: Hoch -Common.SARMAT.Down = SARMAT: Runter -Common.SARMAT.Enter = SARMAT: Enter -Common.SARMAT.Esc = SARMAT: Esc -Common.SARMAT.F1 = SARMAT: F1 -Common.SARMAT.F2 = SARMAT: F2 -Common.SARMAT.F3 = SARMAT: F3 -Common.SARMAT.F4 = SARMAT: F4 -Common.SARMAT.Path = SARMAT: Gleis -Common.SARMAT.Line = SARMAT: Linie -Common.SARMAT.Zero = SARMAT: Zu Start springen -Common.SARMAT.Start = SARMAT: Start -#Autobreakers -Common.722.SF1 = SF1: Zugstrom (Steuerung) -Common.722.SF2 = SF2: Aktiver Führerstand -Common.722.SF3 = SF3: Hauptsteuerung -Common.722.SF4 = SF4: Notsteuerung -Common.722.SF5 = SF5: RVTB Steuerung -Common.722.SF6 = SF6: Bremshebelspannung -Common.722.SF7 = SF7: Türsteuerung -Common.722.SF8 = SF8: BARS 1 -Common.722.SF9 = SF9: BARS 2 -Common.722.UPO = SF: UPO1 -Common.722.SF10 = SF10: BRPI-M1 -Common.722.SF11 = SF11: BRPI-M2 -Common.722.SF12 = SF12: Feueralarm -Common.722.SF13 = SF13: @[Common.722.PantSC] -Common.722.SF14 = SF14: Funkverbindung 1 -Common.722.SF15 = SF15: Funkverbindung 2 -Common.722.SF16 = SF16: CIS 1 (monitor) -Common.722.SF17 = SF17: CIS 2 (zentrales Informationssystem) -Common.722.SF18 = SF18: CIS 3 -Common.722.SF19 = SF19: BUKP, UPI -Common.722.SF20 = SF20: Monitor -Common.722.SF21 = SF21: Orientierung -Common.722.SF22 = SF22: Schlusslicht über Batterien -Common.722.SF23 = SF23: Spitzen- und Schlusslicht -Common.722.SF24 = SF24: Station Türen öffnende Lampe -Common.722.SF25 = SF25: Kabinenbeleuchtung -Common.722.SF26 = SF26: Klimaanlage in der Kabine -Common.722.SF27 = SF27: Scheibenwischer, Scheibenwaschanlage, Pfeife -Common.722.SF31 = SF31: Kabel zur Stromversorgung -Common.722.SF32 = SF32: Zugstromleitung (Steuerung) -Common.722.SF33 = SF33: Steuerstromkreise -Common.722.SF34 = SF34: ZIS links -Common.722.SF35 = SF35: ZIS rechts -Common.722.SF36 = SF36: Bort Signalleuchten -Common.722.SF37 = SF37: Freigabe der Spannungssammler -Common.722.SF38 = SF38: Reserve -Common.722.SF41 = SF41: Türen links -Common.722.SF42 = SF42: Türen rechts -Common.722.SF43 = SF43: Türen schließen -Common.722.SF44 = SF44: Türen am Zugschluss -Common.722.SF45 = SF45: Spannung der Innenbeleuchtung -Common.722.SF46 = SF46: Innenbeleuchtung für Notfälle -Common.722.SF47 = SF47: 1. Lüftungsgruppe -Common.722.SF48 = SF48: 2. Lüftungsgruppe -Common.722.SF49 = SF49: Zähler -Common.722.SF51 = SF51: Wagensteuerung -Common.722.SF52 = SF52: BODV -Common.722.SF53 = SF53: PSN (Stromversorgung) -Common.722.SF54 = SF54: Drucklufttrockner -Common.722.SF55 = SF55: BUFT (Steuergerät für Reibungsbremse) -Common.722.SF56 = SF56: Umformer -Common.722.SF57 = SF57: Umformerheizung -Common.722.SF58 = SF58: Hauptstromkreis der Wagensteuerung -Common.722.SF59 = SF59: Notstromversorgung der Wagensteuerkreise -#gmod_subway_81-722 -#Buttons: -Entities.gmod_subway_81-722.Buttons.PU1.MirrorHeatingSet = @[Common.722.MirrorHeating] -Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft2Set = @[Common.720.KDL] -Entities.gmod_subway_81-722.Buttons.PU1.DoorBackSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-722.Buttons.PU1.EmergencyDriveSet = @[Common.722.EmergencyDrive] -Entities.gmod_subway_81-722.Buttons.PU1.MicrophoneSet = @[Common.722.Microphone] -Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft1Set = @[Common.720.KDL] -Entities.gmod_subway_81-722.Buttons.PU2.ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-722.Buttons.PU2.ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-722.Buttons.PU2.GlassWasherSet = @[Common.722.GlassWasher] -Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner+ = @[Common.722.GlassCleaner] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner- = @[Common.722.GlassCleaner] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusKToggle = @[Common.722.EmergencyBrakeTPlusK] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusSet = @[Common.722.EmergencyBrakeTPlus] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeToggle = @[Common.720.EmergencyBrake] -Entities.gmod_subway_81-722.Buttons.PU2.VigilanceSet = @[Common.ARS.KB] -Entities.gmod_subway_81-722.Buttons.PU2.Headlights+ = @[Common.ALL.VF] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.Headlights- = @[Common.ALL.VF] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-722.Buttons.PU2.DoorClose+ = @[Common.720.DoorClose] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.DoorClose- = @[Common.720.DoorClose] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.DoorRightSet = @[Common.720.KDP] -Entities.gmod_subway_81-722.Buttons.BI3.KRO+ = @[Common.722.KRO] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.BI3.KRO- = @[Common.722.KRO] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.BI3.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-722.Buttons.BI3.Compressor- = @[Common.ALL.MK] @[Common.ALL.CCW]\n[Off, Auto, 2, 5, 2/5] -Entities.gmod_subway_81-722.Buttons.BI3.Compressor+ = @[Common.ALL.MK] @[Common.ALL.CW]\n[Off, Auto, 2, 5, 2/5] -Entities.gmod_subway_81-722.Buttons.BI3.!BrakeTrainLine = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-722.Buttons.BI3.!BrakeCylinder = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-722.Buttons.PPZB.PSNToggleSet = @[Common.722.PSNToggle] -Entities.gmod_subway_81-722.Buttons.PPZB.BattOnSet = @[Common.722.BattOn] -Entities.gmod_subway_81-722.Buttons.PPZB.BattOffSet = @[Common.722.BattOff] -Entities.gmod_subway_81-722.Buttons.PPZB.TorecDoorUnlockSet = @[Common.722.TorecDoorUnlock] -Entities.gmod_subway_81-722.Buttons.PPZB.SCEnable = @[Common.722.SCEnabled] -Entities.gmod_subway_81-722.Buttons.PPZB.SOSD = @[Common.722.LSOSD] -Entities.gmod_subway_81-722.Buttons.PVM.PassLightToggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-722.Buttons.PVM.PassVent- = @[Common.722.PassVent] @[Common.ALL.CCW]\n[Emerg, Off, Auto, 1/2, 1] -Entities.gmod_subway_81-722.Buttons.PVM.PassVent+ = @[Common.722.PassVent] @[Common.ALL.CW]\n[Emerg, Off, Auto, 1/2, 1] -Entities.gmod_subway_81-722.Buttons.PVM.VKFToggle = @[Common.ALL.VKF] -Entities.gmod_subway_81-722.Buttons.PVM.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-722.Buttons.PVM.VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-722.Buttons.PVM.SOSDEnableToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-722.Buttons.PVM.VRU- = @[Common.722.VRU] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.VRU+ = @[Common.722.VRU] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.VADToggle = @[Common.722.VADToggle] -Entities.gmod_subway_81-722.Buttons.PVM.VAHToggle = @[Common.722.VAHToggle] -Entities.gmod_subway_81-722.Buttons.PVM.EmergencyRadioPowerToggle = @[Common.722.EmergencyRadioPowerToggle] -Entities.gmod_subway_81-722.Buttons.PVM.BARSMode- = @[Common.722.BARSMode] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.BARSMode+ = @[Common.722.BARSMode] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.PantSC- = @[Common.722.PantSC] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.PantSC+ = @[Common.722.PantSC] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.RCARSToggle = @[Common.ALL.RCARS] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LRD = @[Common.ARS.LRD] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LPT = @[Common.ALL.BrT] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!RS = @[Common.722.LRS] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!AVS = @[Common.722.LAVS] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LSD = @[Common.ALL.LSD] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!RU = @[Common.722.LRU] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!04 = @[Common.ARS.N4] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!00 = @[Common.ARS.0] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!40 = @[Common.ARS.40] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!60 = @[Common.ARS.60] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!70 = @[Common.ARS.70] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!80 = @[Common.ARS.80] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatUpSet = @[Common.SARMAT.Up] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatDownSet = @[Common.SARMAT.Down] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEnterSet = @[Common.SARMAT.Enter] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEscSet = @[Common.SARMAT.Esc] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF1Set = @[Common.SARMAT.F1] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF2Set = @[Common.SARMAT.F2] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF3Set = @[Common.SARMAT.F3] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF4Set = @[Common.SARMAT.F4] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatPathSet = @[Common.SARMAT.Path] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatLineSet = @[Common.SARMAT.Line] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatZeroSet = @[Common.SARMAT.Zero] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatStartSet = @[Common.SARMAT.Start] -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber1Set = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber2Set = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber3Set = @[Common.ALL.RouteNumber3+] -Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight- = @[Common.ALL.CabLights] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight+ = @[Common.ALL.CabLights] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.Lighting.PanelLightToggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-722.Buttons.PPZ.SF1Toggle = @[Common.722.SF1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF2Toggle = @[Common.722.SF2] -Entities.gmod_subway_81-722.Buttons.PPZ.SF3Toggle = @[Common.722.SF3] -Entities.gmod_subway_81-722.Buttons.PPZ.SF4Toggle = @[Common.722.SF4] -Entities.gmod_subway_81-722.Buttons.PPZ.SF5Toggle = @[Common.722.SF5] -Entities.gmod_subway_81-722.Buttons.PPZ.SF6Toggle = @[Common.722.SF6] -Entities.gmod_subway_81-722.Buttons.PPZ.SF7Toggle = @[Common.722.SF7] -Entities.gmod_subway_81-722.Buttons.PPZ.SF8Toggle = @[Common.722.SF8] -Entities.gmod_subway_81-722.Buttons.PPZ.SF9Toggle = @[Common.722.SF9] -Entities.gmod_subway_81-722.Buttons.PPZ.R_UPOToggle = @[Common.722.UPO] -Entities.gmod_subway_81-722.Buttons.PPZ.SF01Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF10Toggle = @[Common.722.SF10] -Entities.gmod_subway_81-722.Buttons.PPZ.SF11Toggle = @[Common.722.SF11] -Entities.gmod_subway_81-722.Buttons.PPZ.SF12Toggle = @[Common.722.SF12] -Entities.gmod_subway_81-722.Buttons.PPZ.SF13Toggle = @[Common.722.SF13] -Entities.gmod_subway_81-722.Buttons.PPZ.SF02Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF14Toggle = @[Common.722.SF14] -Entities.gmod_subway_81-722.Buttons.PPZ.SF15Toggle = @[Common.722.SF15] -Entities.gmod_subway_81-722.Buttons.PPZ.SF16Toggle = @[Common.722.SF16] -Entities.gmod_subway_81-722.Buttons.PPZ.SF17Toggle = @[Common.722.SF17] -Entities.gmod_subway_81-722.Buttons.PPZ.SF18Toggle = @[Common.722.SF18] -Entities.gmod_subway_81-722.Buttons.PPZ.SF19Toggle = @[Common.722.SF19] -Entities.gmod_subway_81-722.Buttons.PPZ.SF20Toggle = @[Common.722.SF20] -Entities.gmod_subway_81-722.Buttons.PPZ.SF21Toggle = @[Common.722.SF21] -Entities.gmod_subway_81-722.Buttons.PPZ.SF22Toggle = @[Common.722.SF22] -Entities.gmod_subway_81-722.Buttons.PPZ.SF23Toggle = @[Common.722.SF23] -Entities.gmod_subway_81-722.Buttons.PPZ.SF24Toggle = @[Common.722.SF24] -Entities.gmod_subway_81-722.Buttons.PPZ.SF25Toggle = @[Common.722.SF25] -Entities.gmod_subway_81-722.Buttons.PPZ.SF26Toggle = @[Common.722.SF26] -Entities.gmod_subway_81-722.Buttons.PPZ.SF27Toggle = @[Common.722.SF27] -Entities.gmod_subway_81-722.Buttons.PPZ.SF03Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF04Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PVZ.SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-722.Buttons.PVZ.1:SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-722.Buttons.PVZ.SF32Toggle = @[Common.722.SF32] -Entities.gmod_subway_81-722.Buttons.PVZ.SF33Toggle = @[Common.722.SF33] -Entities.gmod_subway_81-722.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-722.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-722.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-722.Buttons.PVZ.SF37Toggle = @[Common.722.SF37] -Entities.gmod_subway_81-722.Buttons.PVZ.SF38Toggle = @[Common.722.SF38] -Entities.gmod_subway_81-722.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-722.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-722.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-722.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-722.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-722.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-722.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-722.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-722.Buttons.PVZ.SF49Toggle = @[Common.722.SF49] -Entities.gmod_subway_81-722.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-722.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-722.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-722.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-722.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] -Entities.gmod_subway_81-722.Buttons.PVZ.SF56Toggle = @[Common.722.SF56] -Entities.gmod_subway_81-722.Buttons.PVZ.SF57Toggle = @[Common.722.SF57] -Entities.gmod_subway_81-722.Buttons.PVZ.SF58Toggle = @[Common.722.SF58] -Entities.gmod_subway_81-722.Buttons.PVZ.SF59Toggle = @[Common.722.SF59] -Entities.gmod_subway_81-722.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-722.Buttons.CabinDoorL.CabinDoorLeft = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-722.Buttons.CabinDoorR.CabinDoorRight = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-722.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-722.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-722.Buttons.Isolations.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.Isolations.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.StopKran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-722.Buttons.StopKran.UAVAToggle = @[Common.ALL.UAVA2] -Entities.gmod_subway_81-722.Buttons.BTO.K29Toggle = @[Common.ALL.KRMH] -Entities.gmod_subway_81-722.Buttons.BTO.K9Toggle = @[Common.ALL.RVTB] -#gmod_subway_81-723 -Entities.gmod_subway_81-723.Buttons.PVZ.SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-723.Buttons.PVZ.1:SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-723.Buttons.PVZ.SF32Toggle = @[Common.722.SF32] -Entities.gmod_subway_81-723.Buttons.PVZ.SF33Toggle = @[Common.722.SF33] -Entities.gmod_subway_81-723.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-723.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-723.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-723.Buttons.PVZ.SF37Toggle = @[Common.722.SF37] -Entities.gmod_subway_81-723.Buttons.PVZ.SF38Toggle = @[Common.722.SF38] -Entities.gmod_subway_81-723.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-723.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-723.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-723.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-723.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-723.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-723.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-723.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-723.Buttons.PVZ.SF49Toggle = @[Common.722.SF49] -Entities.gmod_subway_81-723.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-723.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-723.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-723.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-723.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] -Entities.gmod_subway_81-723.Buttons.PVZ.SF56Toggle = @[Common.722.SF56] -Entities.gmod_subway_81-723.Buttons.PVZ.SF57Toggle = @[Common.722.SF57] -Entities.gmod_subway_81-723.Buttons.PVZ.SF58Toggle = @[Common.722.SF58] -Entities.gmod_subway_81-723.Buttons.PVZ.SF59Toggle = @[Common.722.SF59] -Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-723.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -#gmod_subway_81-724 -#Buttons: -Entities.gmod_subway_81-724.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-724.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-724.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-724.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-724.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-724.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-724.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-724.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-724.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-724.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-724.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-724.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-724.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-724.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-724.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-724.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] -Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-724.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -#Spawner: -Entities.gmod_subway_81-722.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-722.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-722.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-722.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-722.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name = @[Common.Spawner.SchemeInvert] -Entities.gmod_subway_81-722.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-722.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-722.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-722.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-722.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/de_base.lua b/lua/metrostroi_data/languages/de_base.lua index 254e3c0..e0d4ecd 100644 --- a/lua/metrostroi_data/languages/de_base.lua +++ b/lua/metrostroi_data/languages/de_base.lua @@ -1,4 +1,4 @@ -return [[ +return [[ #Base text for German language [de] @@ -10,16 +10,16 @@ Workshop.Title = Content manager Workshop.FilesMissing = Einige Addons fehlen oder sind beschaedigt!.\nIf addons wurden installiert. Versuche Datei zu loeschen:\nGarrysMod/garrysmod/%s. Workshop.FilesMissingLocaly = Einige Addons fehlen oder sind beschaedigt. Workshop.InstalledLocaly = Installiert (lokal) -Workshop.NotInstalledE = Nicht installiert.Abboniere das Addon und ueberpruefe es im "Addons" menue. +Workshop.NotInstalledE = Nicht installiert.\nAbboniere das Addon und ueberpruefe es im "Addons" menue. Workshop.NotInstalled = Nicht installiert. -Workshop.Disabled = Deaktiviert. Aktiviere es im "Addons" menue. +Workshop.Disabled = Deaktiviert.\nAktiviere es im "Addons" menue. Workshop.Installed = Installiert Workshop.Open = Workshop Workshop.ErrorGithub = Es wurde die GitHub Version von Metrostroi erkannt. Diese Version von Metrostroiw wird nicht mit der GitHub Version funtkionieren. Workshop.ErrorLegacy = Es wurde die Legacy Version von Metrostroi erkannt. Diese Version von Metrostroiw wird nicht mit der Legacy Version funtkionieren. -Workshop.ErrorEnhancers = Dieses Addon enthält Grafikverbesserer, die das komfortable Spiel beeinträchtigen können. +Workshop.ErrorEnhancers = This addon contain a graphic enhancers that may interfere comfortable game. Workshop.Error1 = Es werden veraltete Scripts von Metrostroi verwendet. Dies kann zu Problemen fuehren! -Workshop.ErrorOld = Veraltete Modelle entdeckt! Bitte veralteten Content löschen, Cache leeren und neu installieren! +Workshop.ErrorOld = Old models detected (81-702 and 81-717 old models). Check and remove old metrostroi content files, remove cache, download and downloads folders from garrysmod folder. #Client settings Panel.Admin = Admin @@ -31,16 +31,12 @@ Panel.DrawCams = Kameras rendern Panel.DisableHUD = HUD im Zug deaktivieren Panel.DisableCamAccel = Deaktivieren der Kamerabewegung Panel.DisableHoverText = Hilfetext ausblenden -Panel.DisableHoverTextP = Disable additional information\nin tooltips #NEW Panel.ScreenshotMode = Screenshot modus (NIEDRIGE FPS) Panel.ShadowsHeadlight = Schatten der Scheinwerfer aktivieren Panel.RedLights = Enable dynamic light\nof red lights Panel.ShadowsOther = Schatten von anderen\nLichtquellen Panel.MinimizedShow = Elemente beibehalten\nwenn minimiert -Panel.PanelLights = Enable dynamic lights\nfrom panel lamps #NEW -Panel.RouteNumber = Route number #NEW Panel.FOV = Sichtfeld -Panel.Z = Camera height #NEW Panel.RenderDistance = Render distanz Panel.ReloadClient = Clientseitig neuladen @@ -49,7 +45,7 @@ Panel.DrawDebugInfo = Debuginformationen zeigen Panel.DrawSignalDebugInfo = Signalling debug info Panel.CheckAddons = Addons ueberpruefen Panel.ReloadLang = Sprachen laden -Panel.SoftDraw = Element "weiches Laden" in Prozent +Panel.SoftDraw = Element "weiches\nLaden" in Prozent Panel.SoftReloadLang = Spawnmenue nicht neuladen @@ -59,59 +55,12 @@ Train.Common.Camera0 = Fahrersitz Train.Common.RouteNumber = Umlauf Train.Common.LastStation = Letzte Station Train.Common.HelpersPanel = Bedienung fuer Zugbegleiter -Train.Common.UAVA = UAVA -Train.Common.PneumoPanels = Ventile -Train.Common.Voltmeters = Voltmeter and amperemeter -Train.Common.CouplerCamera = Kupplung +Train.Common.UAVA = UAVA #FIXME +Train.Common.PneumoPanels = Pneumatic valves #FIXME +Train.Common.Voltmeters = Voltmeters and amperemeters #FIXME +Train.Common.CouplerCamera = Coupler Common.ARM.Monitor1 = Monitor 1 ARM - Train.Buttons.Sealed = Versiegelt -Train.Buttons.Active = Active #NEW -Train.Buttons.Auto = Auto #NEW -Train.Buttons.On = On #NEW -Train.Buttons.Off = Off #NEW -Train.Buttons.Closed = Closed #NEW -Train.Buttons.Opened = Opened #NEW -Train.Buttons.Disconnected = Disconnected #NEW -Train.Buttons.Connected = Connected #NEW -Train.Buttons.UAVAOff = Control circuits isolated #NEW -Train.Buttons.UAVAOn = Control circuits active #NEW -Train.Buttons.Freq1/5 = 1/5 AB #NEW -Train.Buttons.Freq2/6 = 2/6 ALS-ARS #NEW -Train.Buttons.Left = Left #NEW -Train.Buttons.Right = Right #NEW -Train.Buttons.Low = Low #NEW -Train.Buttons.High = High #NEW -Train.Buttons.LFar = Distant light #NEW #FIXME -Train.Buttons.LNear = Near light #NEW #FIXME -Train.Buttons.0 = 0 #NEW -Train.Buttons.1 = 1 #NEW -Train.Buttons.2 = 2 #NEW -Train.Buttons.3 = 3 #NEW -Train.Buttons.4 = 4 #NEW -Train.Buttons.Forward = Forward #NEW -Train.Buttons.Back = Backward #NEW #FIXME -Train.Buttons.VentHalf = 1/2 of speed #NEW -Train.Buttons.VentFull = Full speed #NEW -Train.Buttons.VTRF = Forward oriented wagons #NEW -Train.Buttons.VTRB = Back oriented wagons #NEW -Train.Buttons.VTR1 = Even wagons #NEW -Train.Buttons.VTR2 = Odd wagons #NEW -Train.Buttons.VTRH1 = First half of train #NEW -Train.Buttons.VTRH2 = Second half of train #NEW -Train.Buttons.VTRAll = All wagons #NEW - -Train.Buttons.BatteryVoltage = %d V #NEW -Train.Buttons.HighVoltage = %d V #NEW -Train.Buttons.BatteryCurrent = %d A #NEW -Train.Buttons.EnginesCurrent = %d A #NEW -Train.Buttons.Speed = %d km/h #NEW -Train.Buttons.SpeedAll = %d km/h Speed limit:%s km/h #NEW -Train.Buttons.SpeedLimit = %s km/h #NEW -Train.Buttons.SpeedLimitNext = %s km/h #NEW -Train.Buttons.04 = NF #NEW -Train.Buttons.BCPressure = %.1f bar #NEW -Train.Buttons.BLTLPressure = TL: %.1f BL:%.1f bar #NEW #Train entities Entities.gmod_subway_base.Name = Zugbasis @@ -126,7 +75,7 @@ Entities.gmod_subway_ezh1.Name = 81-708 (Ezh1 Beiwagen) Entities.gmod_subway_ezh3.Name = 81-710 (Ezh3 Kopf) Entities.gmod_subway_em508t.Name = 81-508T (Em-508T Beiwagen) Entities.gmod_subway_81-717_mvm.Name = 81-717 (Moscow Kopf) -Entities.gmod_subway_81-717_mvm_custom.Name = 81-717 (Moscow Benutzerdefiniert) +Entities.gmod_subway_81-717_mvm_custom.Name = 81-717 (Moscow custom) #FIXME Entities.gmod_subway_81-714_mvm.Name = 81-714 (Moscow Beiwagen) Entities.gmod_subway_81-717_lvz.Name = 81-717 (St. Petersburg Kopf) Entities.gmod_subway_81-714_lvz.Name = 81-714 (St. Petersburg Beiwagen) @@ -157,90 +106,90 @@ Entities.gmod_track_powermeter.Name = Stromzaehler Entities.gmod_track_arm.Name = ARM DSCP Entities.gmod_track_udochka.Name = Stromzufuhr fuer Depots Entities.gmod_train_spawner.Name = Zug spawner -Entities.gmod_train_special_box.Name = Speziallieferung +Entities.gmod_train_special_box.Name = Special delivery #FIXME #Weapons -Weapons.button_presser.Name = Knopfdrücker -Weapons.button_presser.Purpose = Wird zum Bedienen von Knöpfen auf Maps genutzt. -Weapons.button_presser.Instructions = Zum bedienen linke Maustaste drücken. -Weapons.train_key.Name = Administratorschlüssel -Weapons.train_key.Purpose = Wird zum bedienen von Adminknöpfen benutzt. -Weapons.train_key.Instructions = Zum bedienen linke Maustaste drücken. -Weapons.train_kv_wrench.Name = Richtungswender -Weapons.train_kv_wrench.Purpose = Wird zum bedienen von Knöpfen in Zügen verwendet. -Weapons.train_kv_wrench.Instructions = Zum bedienen linke Maustaste verwenden. -Weapons.train_kv_wrench_gold.Name = goldener Richtungswender +Weapons.button_presser.Name = Button presser #FIXME +Weapons.button_presser.Purpose = Used to press buttons on the maps. #FIXME +Weapons.button_presser.Instructions = Hold to the button and click "Attack" button. #FIXME +Weapons.train_key.Name = Administrator key #FIXME +Weapons.train_key.Purpose = Used to activate the administrators buttons. #FIXME +Weapons.train_key.Instructions = Hold to administrator button and press "Attack" button. #FIXME +Weapons.train_kv_wrench.Name = Reverser wrench #FIXME +Weapons.train_kv_wrench.Purpose = Used in metro train and for pressing buttons in them. #FIXME +Weapons.train_kv_wrench.Instructions = Hold to button in the train and press "Attack" button. #FIXME +Weapons.train_kv_wrench_gold.Name = The golden reverser wrench #FIXME Weapons.train_kv_wrench_gold.Purpose = @[Weapons.train_kv_wrench.Purpose] Weapons.train_kv_wrench_gold.Instructions = @[Weapons.train_kv_wrench.Instructions] #Spawner common -Spawner.Title = Zugspawner -Spawner.Spawn = Spawnen -Spawner.Close = Schließen -Spawner.Trains1 = erlaubte Wagen -Spawner.Trains2 = pro Spieler -Spawner.WagNum = Anzahl der Wagen -Common.Spawner.Texture = Aussehen (aussen) -Common.Spawner.PassTexture = Aussehen (innen) -Common.Spawner.CabTexture = Aussehen (Fuehrerstand) -Common.Spawner.Announcer = Ansagen Typ -Common.Spawner.Type1 = Typ 1 -Common.Spawner.Type2 = Typ 2 -Common.Spawner.Type3 = Typ 3 -Common.Spawner.Type4 = Typ 4 -Common.Spawner.SpawnMode = Zugstatus -Common.Spawner.SpawnMode.Deadlock = kalt -Common.Spawner.SpawnMode.Full = voll gestartet -Common.Spawner.SpawnMode.NightDeadlock = kalt über Nacht -Common.Spawner.SpawnMode.Depot = Depot -Spawner.Common.EType = Art der Stromkreise -Common.Spawner.Scheme = Linienplan -Common.Spawner.Random = züfällig -Common.Spawner.Old = alt -Common.Spawner.New = neu -Common.Spawner.Type = Typ -Common.Spawner.SchemeInvert = Linienplan umdrehen +Spawner.Title = Train spawner #FIXME +Spawner.Spawn = Spawn #FIXME +Spawner.Close = Close #FIXME +Spawner.Trains1 = Wags. allowed #FIXME +Spawner.Trains2 = Per player #FIXME +Spawner.WagNum = Wagons amount #FIXME +Common.Spawner.Texture = Aussehen (aussen) +Common.Spawner.PassTexture = Aussehen (innen) +Common.Spawner.CabTexture = Aussehen (Fuehrerstand) +Common.Spawner.Announcer = Ansagen Typ +Common.Spawner.Type1 = Typ 1 +Common.Spawner.Type2 = Typ 2 +Common.Spawner.Type3 = Typ 3 +Common.Spawner.Type4 = Typ 4 +Common.Spawner.SpawnMode = Train state #FIXME +Common.Spawner.SpawnMode.Deadlock = Dead-end #FIXME +Common.Spawner.SpawnMode.Full = Fully started #FIXME +Common.Spawner.SpawnMode.NightDeadlock = Dead-end after night #FIXME +Common.Spawner.SpawnMode.Depot = Depot #FIXME +Spawner.Common.EType = Electric circuits type #FIXME +Common.Spawner.Scheme = Line schemes +Common.Spawner.Random = Random #FIXME +Common.Spawner.Old = Old #FIXME +Common.Spawner.New = New #FIXME +Common.Spawner.Type = Type #FIXME +Common.Spawner.SchemeInvert = Invert line schemes #Coupler common -Common.Couple.Title = Kupplungsmenü -Common.Couple.CoupleState = Kupplungsstatus -Common.Couple.Coupled = gekuppelt -Common.Couple.Uncoupled = nicht gekuppelt -Common.Couple.Uncouple = entkuppeln -Common.Couple.IsolState = Absperrhähne -Common.Couple.Isolated = geschlossen -Common.Couple.Opened = offen -Common.Couple.Open = öffnen -Common.Couple.Isolate = schließen -Common.Couple.EKKState = EKK Status -Common.Couple.Disconnected = getrennt -Common.Couple.Connected = verbunden -Common.Couple.Connect = verbinden -Common.Couple.Disconnect = trennen +Common.Couple.Title = Coupler menu #FIXME +Common.Couple.CoupleState = Coupler state #FIXME +Common.Couple.Coupled = Coupled #FIXME +Common.Couple.Uncoupled = Not coupled #FIXME +Common.Couple.Uncouple = Uncouple #FIXME +Common.Couple.IsolState = Isolation valves state #FIXME +Common.Couple.Isolated = Closed #FIXME +Common.Couple.Opened = Opened #FIXME +Common.Couple.Open = Open #FIXME +Common.Couple.Isolate = Close #FIXME +Common.Couple.EKKState = EKK state (electrical connection) #FIXME +Common.Couple.Disconnected = Disconnected #FIXME +Common.Couple.Connected = Connected #FIXME +Common.Couple.Connect = Connect #FIXME +Common.Couple.Disconnect = Disconnect #FIXME #Bogey common -Common.Bogey.Title = Drehgestellmenü -Common.Bogey.ContactState = Status der Stromabnehmer -Common.Bogey.CReleased = gelöst -Common.Bogey.CPressed = angelegt -Common.Bogey.CPress = anlegen -Common.Bogey.CRelease = lösen -Common.Bogey.ParkingBrakeState = Handbremsstatus -Common.Bogey.PBDisabled = manuell ausgeschalten -Common.Bogey.PBEnabled = An -Common.Bogey.PBEnable = Aus #FIXME -Common.Bogey.PBDisable = Manuell Aus #FIXME +Common.Bogey.Title = Bogie menu #FIXME +Common.Bogey.ContactState = Current collectors state #FIXME +Common.Bogey.CReleased = Released #FIXME +Common.Bogey.CPressed = Pressed #FIXME +Common.Bogey.CPress = Press #FIXME +Common.Bogey.CRelease = Release #FIXME +Common.Bogey.ParkingBrakeState = Parking brake state #FIXME +Common.Bogey.PBDisabled = Manually disabled #FIXME +Common.Bogey.PBEnabled = Enabled #FIXME +Common.Bogey.PBEnable = Enable #FIXME +Common.Bogey.PBDisable = Manual disable #FIXME #Trains common Common.ALL.Unsused1 = Nicht im Gebrauch -Common.ALL.Unsused2 = (nicht im Gebrauch) -Common.ALL.Up = (hoch) -Common.ALL.Down = (runter) -Common.ALL.Left = (links) -Common.ALL.Right = (rechts) -Common.ALL.CW = (im Uhrzeigersinn) -Common.ALL.CCW = (gegen den Uhrzeigersinn +Common.ALL.Unsused2 = (Gebrauch) +Common.ALL.Up = (up) #FIXME +Common.ALL.Down = (down) #FIXME +Common.ALL.Left = (left) #FIXME +Common.ALL.Right = (right) #FIXME +Common.ALL.CW = (clockwise) #FIXME +Common.ALL.CCW = (counter-clockwise) #FIXME Common.ALL.VB = VB: Battery an/aus Common.ALL.VSOSD = SOSD: Leuchtmelder fuer Stationtueren Common.ALL.VKF = VKF: Batteriespannung fuer Schlusslichter @@ -254,8 +203,8 @@ Common.ALL.KAHK = KAH Verdeckung Common.ALL.VAD = VAD: Zwangsschliessen der Tueren ueberbruecken (Stoerung des KD relais) Common.ALL.OVT = OVT: Druckluftbremsen deaktivieren Common.ALL.VOVT = VOVT: ueberbruecken der deaktivierten Druckluftbremsen -Common.ALL.EmergencyBrakeValve = Notbremse -Common.ALL.ParkingBrake = Handbremse +Common.ALL.EmergencyBrakeValve = Notbremsung +Common.ALL.ParkingBrake = Handbremse #FIXME Common.ALL.VU = VU: Zugsteuerung Common.ALL.KDP = KDP: Tueren rechts oeffnen Common.ALL.KDPL = Türen rechts freigegeben @@ -310,15 +259,15 @@ Common.ALL.ARSR = ARS-R: Automatische Geschwindigkei Common.ALL.ALS = ALS: Automatische Anzeige der Signalgeschwindigkeiten Common.ALL.RCARS = RC-ARS: ARS Kreise trennen Common.ALL.RC1 = RC-1: ARS deaktivieren -Common.ALL.EPK = ARS Elektropneumatisches Ventil (EPK) -Common.ALL.EPV = ARS Elektropneumatisches Ventil (EPV) +Common.ALL.EPK = ARS Elektropneumatische Ventil (EPK) +Common.ALL.EPV = ARS Elektropneumatische Ventil (EPV) Common.ARS.LN = LN: Richtungssignal Common.ARS.KT = KT: Leuchtmelder der Bremsen Common.ARS.VD = VD: Beschleunigung vom ARS unterbrochen Common.ARS.Freq = ALS decoder Common.ARS.FreqD = (hoch 1/5, runter 2/6) Common.ARS.FreqU = (hoch 2/6, runter 1/5) -Common.ARS.VP = Hilfstriebfahrzeug +Common.ARS.VP = "Auxiliary train" mode #FIXME Common.ARS.RS = RS: Naechste Begrenzung ist groesser oder gleich zu der jetzigen Common.ARS.AB = Autoblockieren ARS modus Common.ARS.ABButton = Autoblockieren ARS modus Schalter @@ -345,22 +294,22 @@ Common.BPS.On = Rollschutz aktiv Common.BPS.Err = Rollschutz Stoerung Common.BPS.Fail = Rollschutz fehlfunktion Commom.NMnUAVA.NMPressureLow = Bremsdruck in Hauptluftleitung zu gering -Commom.NMnUAVA.UAVATriggered = UAVA Kontakte offen +Commom.NMnUAVA.UAVATriggered = UAVA kontakte offen Common.ALL.LSD = Türmelder (Türen sind geschlossen und verriegelt) Common.ALL.L1w = 1. Leuchtmelder (Fahrmotoren aktiv) Common.ALL.L2w = 2. Leuchtmelder (Schaltwerk ist in Bewegung) Common.ALL.L6w = 6. Leuchtmelder (Bremse aktiv) -Common.ALL.Horn = Signalhorn -Common.ALL.DriverValveBLDisconnect = Absperrhahn fuer Hauptluftleitung -Common.ALL.DriverValveTLDisconnect = Absperrhahn fuer Hauptluftbehälter +Common.ALL.Horn = Signalhorn +Common.ALL.DriverValveBLDisconnect = Absperrhahn fuer Bremsleitung +Common.ALL.DriverValveTLDisconnect = Absperrhahn fuer Hauptluftleitung Common.ALL.DriverValveDisconnect = Absperrhahn für Druckluftbremsen Common.ALL.KRMH = KRMSH: Nothahn für Fahrer Common.ALL.RVTB = RVTB: Reserved valve of safety brake #FIXME -Common.ALL.FrontBrakeLineIsolationToggle = Absperrhahn fuer Hauptluftleitung -Common.ALL.FrontTrainLineIsolationToggle = Absperrhahn fuer Hauptluftbehälter -Common.ALL.RearTrainLineIsolationToggle = Absperrhahn fuer Hauptluftbehälter -Common.ALL.RearBrakeLineIsolationToggle = Absperrhahn fuer Hauptluftleitung -Common.ALL.UAVA = UAVA: Uberbrueckung von Zwangsbremsungen von Signalen(kann reaktiviert werden wenn der Druck der Hauptluftleitung abfaellt) +Common.ALL.FrontBrakeLineIsolationToggle = Absperrhahn fuer Bremsleitung +Common.ALL.FrontTrainLineIsolationToggle = Absperrhahn fuer Hauptluftleitung +Common.ALL.RearTrainLineIsolationToggle = Absperrhahn fuer Hauptluftleitung +Common.ALL.RearBrakeLineIsolationToggle = Absperrhahn fuer Bremsleitung +Common.ALL.UAVA = UAVA: Uberbrueckung d. Zwangsbremsungen von Signalen\n(kann reaktiviert werden wenn Bremsleitung abfaellt) Common.ALL.UAVA2 = UAVA: Überbrückung Autostop Common.ALL.UAVAContact = UAVA reset der Kontakte Common.ALL.OAVU = OAVU: AVU Schalter deaktivieren @@ -408,7 +357,7 @@ Common.CabVent.PVK+ = Lüftung erhöhen #IGLA Train.Common.IGLA = IGLA Common.IGLA.Button1Up = IGLA: Erster Knopf hoch -Common.IGLA.Button1 = IGLA: Erster Knopf +Common.IGLA.Button1 = IGLA: Erster Knopf Common.IGLA.Button1Down = IGLA: Erster Knopf runter Common.IGLA.Button2Up = IGLA: Zweiter Knopf hoch Common.IGLA.Button2 = IGLA: Zweiter Knopf @@ -434,7 +383,7 @@ Common.ALL.SpeedCurr = Geschwindigkeit Common.ALL.SpeedAccept = Erlaubte Geschwindigkeit Common.ALL.SpeedAttent = Erlaubte Geschwindigkeit ab dem Nächsten Signal Common.ALL.Speedometer = Geschwindigkeit -Common.ALL.BLTLPressure = Druck in den Leitungen (rot: Hauptluftleitung, schwarz: Hauptluftleitung) +Common.ALL.BLTLPressure = Druck in den Leitungen (rot: Bremsleitung, schwarz: Hauptluftleitung) Common.ALL.BCPressure = Druck in den Bremszylindern Common.ALL.EnginesCurrent = Spannung auf Fahrmotoren (A) Common.ALL.EnginesCurrent1 = Spannung auf ersten Fahrmotoren (A) diff --git a/lua/metrostroi_data/languages/en_502.lua b/lua/metrostroi_data/languages/en_502.lua index d37cb1b..fe1da65 100644 --- a/lua/metrostroi_data/languages/en_502.lua +++ b/lua/metrostroi_data/languages/en_502.lua @@ -6,7 +6,7 @@ return [[ #######Buttons########### #Common Common.502.KS = KSAUP operating indicator -Common.502.AV = ATO is engaged +Common.502.AV = Autodrive is engaged Common.502.SD = SD: Door state light (doors are closed) Common.502.SDW = SD: Door state light (doors are opened) Common.502.L3w = 3rd wire lamp (X3 mode) @@ -28,7 +28,7 @@ Spawner.502.TypeKVLN = New train from KVL Spawner.502.EWagons = Add "E" type wagons #gmod_subway_81-502 -Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = ATO battery on/off +Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = Autodrive battery on/off Entities.gmod_subway_81-502.Buttons.AV.VRUToggle = VRU: Emergency driving mode Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle = KPVU: Turn off the pneumatic control disabler @@ -166,7 +166,7 @@ Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -208,8 +208,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] diff --git a/lua/metrostroi_data/languages/en_508.lua b/lua/metrostroi_data/languages/en_508.lua deleted file mode 100644 index 8fbe97f..0000000 --- a/lua/metrostroi_data/languages/en_508.lua +++ /dev/null @@ -1,132 +0,0 @@ -return [[ -#81-508/509 - -[en] - -#######Buttons########### -#Common -Common.508.50V = +50V: Additional consumers -Common.508.UKS = Speed limiter active -Common.508.UKSDisconnect = Speed limiter disable valve -Common.508.Heaters = Passenger compartment heater - - -#gmod_subway_em508 -Entities.gmod_subway_em508.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_em508.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_em508.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_em508.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_em508.Spawner.Announcer.1 = @[Spawner.710.RRI] -Entities.gmod_subway_em508.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_em508.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_em508.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_em508.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_em508.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] - -Entities.gmod_subway_em508.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_em508.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_em508.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_em508.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_em508.Buttons.AV1.VU3Toggle = @[Common.703.VU3] -Entities.gmod_subway_em508.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] -Entities.gmod_subway_em508.Buttons.50V.50VToggle = @[Common.508.50V] -Entities.gmod_subway_em508.Buttons.PassHeaters.HPassToggle = @[Common.508.Heaters] - -Entities.gmod_subway_em508.Buttons.Lamps.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_em508.Buttons.Lamps.!LSN = @[Common.ALL.SN] -Entities.gmod_subway_em508.Buttons.Lamps.!RRP = @[Common.ALL.RRP] -Entities.gmod_subway_em508.Buttons.Lamps.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_em508.Buttons.Lamps.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_em508.Buttons.Lamps.!SD = @[Common.703.SD] -Entities.gmod_subway_em508.Buttons.Lamps.!UKS = @[Common.508.UKS] -Entities.gmod_subway_em508.Buttons.Lamps.KU16Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_em508.Buttons.Main1.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_em508.Buttons.Main1.KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_em508.Buttons.Main1.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_em508.Buttons.Main1.KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_em508.Buttons.Main1.KU15Set = @[Common.ALL.RMK] -Entities.gmod_subway_em508.Buttons.Main1.KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_em508.Buttons.Main1.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_em508.Buttons.Main1.KU4Set = @[Common.703.LOn] -Entities.gmod_subway_em508.Buttons.Main1.KU5Set = @[Common.703.LOff] -Entities.gmod_subway_em508.Buttons.Main1.UV1Set = @[Common.702.VZ1] -Entities.gmod_subway_em508.Buttons.Main1.KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508.Buttons.Main1.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_em508.Buttons.Main1.KU6KToggle = @[Common.ALL.KDLPK] - -Entities.gmod_subway_em508.Buttons.KU14.KU14Set = @[Common.ALL.KRP] -Entities.gmod_subway_em508.Buttons.KU10R.KU10RSet = @[Common.ALL.KRZD] -Entities.gmod_subway_em508.Buttons.AVU.OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_em508.Buttons.AVU.!AVULight = @[Common.ALL.LAVU] -Entities.gmod_subway_em508.Buttons.KRR.KRRSet = @[Common.703.KRR] -Entities.gmod_subway_em508.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_em508.Buttons.DriverMicrophone.R_Program1Set = @[Common.ALL.Program1] - -Entities.gmod_subway_em508.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_em508.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_em508.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_em508.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_em508.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_em508.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2USet = @[Common.IGLA.Button2Up] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2DSet = @[Common.IGLA.Button2Down] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLASR = @[Common.IGLA.IGLASR] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLARX = @[Common.IGLA.IGLARX] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] - - -Entities.gmod_subway_em508.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UKSDisconnectToggle = @[Common.508.UKSDisconnect] -Entities.gmod_subway_em508.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_em508.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_em508.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_em508.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_em508.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_em508.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_em508.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_em508.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_em508.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_em508.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_em508.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_em508.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_em508.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -Entities.gmod_subway_em508.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_em508.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_em508.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/en_702.lua b/lua/metrostroi_data/languages/en_702.lua index f81e3de..8dedd41 100644 --- a/lua/metrostroi_data/languages/en_702.lua +++ b/lua/metrostroi_data/languages/en_702.lua @@ -14,26 +14,21 @@ Train.703.RCARS = RC-1: ARS circuits disconnector Train.703.AVU = AVU block #Spawner -Spawner.707.Type = Panel type -Spawner.707.Type1 = Old + RRI -Spawner.707.Type2 = New + ASNP -Spawner.710.RRI = Radio-relay announcer +Spawner.707.Type = Panel type #FIXME +Spawner.707.Type1 = Old + RRI #FIXME +Spawner.707.Type2 = New + ASNP #FIXME +Spawner.710.RRI = Radio-relay announcer #FIXME #######Buttons########### -Train.Buttons.ParkingBrake = %d%% -Train.Buttons.EnginesVoltage = %d V #NEW (volts) -Train.Buttons.CanAB = Autoblocking mode is available #NEW (automatic block signals (without ARS)) -Train.Buttons.InAB = In autoblocking mode #NEW (automatic block signals (without ARS)) - #Common -Common.702.VZ1 = Pneumatic valve №1 +Common.702.VZ1 = Pneumatic valve №1 #FIXME!! Common.703.ParkingBrakeLeft = Release the parking brake Common.703.ParkingBrakeRight = Apply the parking brake Common.703.KSD = KSD: Doors interlock control button Common.703.SD = @[Common.502.SDW] -Common.703.VU1 = Driver's cab heater +Common.703.VU1 = Cabin heater Common.703.VU2 = Emergency lighting -Common.703.VU3 = Driver's cab lighting +Common.703.VU3 = Cabin lighting Common.703.AV = Main breaker (high voltage circuits) Common.703.LOn = Enable lighting Common.703.LOff = Disable lighting @@ -42,7 +37,6 @@ Common.703.RUT = RUT adjustment (reduced acceleration) Common.707.SEQ = Rheostat controller motion lamp Common.707.TAH = TAH: Emergency drive mode for driving without ARS Common.710.RK = Rheostat controller is in intermediate position -Common.710.LKVT = Attention light #NEW #FIXME Common.710.SAMMSchemeOff = SAMM stop button Common.710.SAMMStart = SAMM start button @@ -96,7 +90,7 @@ Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -155,7 +149,7 @@ Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -191,9 +185,6 @@ Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -227,7 +218,7 @@ Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -292,7 +283,7 @@ Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -442,7 +433,7 @@ Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] @@ -619,7 +610,7 @@ Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] diff --git a/lua/metrostroi_data/languages/en_717.lua b/lua/metrostroi_data/languages/en_717.lua index ff4316e..05bf169 100644 --- a/lua/metrostroi_data/languages/en_717.lua +++ b/lua/metrostroi_data/languages/en_717.lua @@ -13,7 +13,7 @@ Train.717.PUAV = PUAV Train.717.PA = PA Train.717.PAScreen = PA screen -Train.714.Shunt = Shunting control panel, driver's valve +Train.714.Shunt = Shunting control panel, driver's valve #FIXME #Spawner Spawner.717.Line2 = Train from MPL Spawner.717.Line4 = Train from PBL @@ -34,8 +34,6 @@ Spawner.717.RingType = ARS beeper type Spawner.717.BPSNType = BPSN type #######Buttons########### -Train.Buttons.RZP = BPSN converter protection engaged #NEW - #Common Common.717.VBD = ASNP doors blocking switch Common.717.UPPS = UPPS system switch @@ -62,7 +60,7 @@ Common.717.V12 = 2nd ventilation group switch Common.717.RZPL = RZP: Power supply protection relay Common.717.VPAOn = VPA: Enable train unit Common.717.VPAOff = VPA: Disable train unit -Common.717.VZD = VZD: Door control toggle (close doors) +Common.717.VZD = VZD: Door control toggle (close doors) #FIXME Common.717.A53 = A53: Auxiliary circuits contactor Common.717.A56 = A56: Battery @@ -235,7 +233,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVC = @[Common.717.K Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLRS = @[Common.ARS.RS] Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLVD = @[Common.717.LVD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLEKK = @[Common.717.LEKK] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer1 = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer2 = @[Common.ALL.Speedometer] @@ -259,7 +256,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.G Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] @@ -538,7 +534,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDis Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -562,9 +558,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1P:RC1Toggle = @[Common.ALL.RC1] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2P:RC1Toggle = @[Common.ALL.RC1] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC2Toggle = @[Common.717.RC2] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC2Toggle = @[Common.717.RC2] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VAUToggle = @[Common.717.VAU] @@ -748,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] @@ -957,7 +951,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDis Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -1054,10 +1048,6 @@ Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #gmod_subway_81-714_lvz Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -1132,11 +1122,6 @@ Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] - #Spawner: Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] diff --git a/lua/metrostroi_data/languages/en_718.lua b/lua/metrostroi_data/languages/en_718.lua index e072f3c..0926990 100644 --- a/lua/metrostroi_data/languages/en_718.lua +++ b/lua/metrostroi_data/languages/en_718.lua @@ -5,15 +5,10 @@ return [[ #######Buttons########### #Cameras -Train.718.BUP = BUP -Train.718.PPZ = PPZ -Train.718.VPU = VPU +Train.718.BUP = BUP #FIXME +Train.718.PPZ = PPZ #FIXME +Train.718.VPU = VPU #FIXME -Train.Buttons.LHalf = Dim #NEW (panel lighting) -Train.Buttons.LFull = Bright #NEW (panel lighting) -Train.Buttons.HL5 = Control circuits are not engaged #NEW -Train.Buttons.HL6 = Protection has tripped or low current #NEW -Train.Buttons.HL7 = BBE protection has tripped #NEW #Common Common.718.SB4 = Check circuits assembly Common.718.SB5 = Transfer of the controls (ring) @@ -556,7 +551,7 @@ Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.DriverValveDisconnectT Entities.gmod_subway_81-718.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-718.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] @@ -690,10 +685,6 @@ Entities.gmod_subway_81-719.Buttons.couch_cap.CouchCap Entities.gmod_subway_81-719.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] -Entities.gmod_subway_81-719.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-719.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #Spawner: Entities.gmod_subway_81-718.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-718.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] diff --git a/lua/metrostroi_data/languages/en_720.lua b/lua/metrostroi_data/languages/en_720.lua index ebed0f7..487534d 100644 --- a/lua/metrostroi_data/languages/en_720.lua +++ b/lua/metrostroi_data/languages/en_720.lua @@ -5,19 +5,12 @@ return [[ #######Buttons########### #Cameras -Train.720.CameraCond = Air-conditioner, IGLA +Train.720.CameraCond = Air conditioner, IGLA #FIXME Train.720.CameraPPZ = PPZ #FIXME Train.720.CameraPV = VPU #FIXME -Train.720.CameraVityaz = SAU "Vityaz" -Train.720.CameraKRMH = KRMSH and UAVA valves -Train.720.CameraPVZ = PVZ - -Train.Buttons.Heating = Heating #NEW (air-conditioner mode) -Train.Buttons.Vent = Ventilation #NEW (air-conditioner mode) -Train.Buttons.Cooling = Cooling #NEW (air-conditione mode) -Train.Buttons.BARS1 = BARS1 #NEW -Train.Buttons.BARS2 = BARS2 #NEW -Train.Buttons.BARS12 = BARS1 and BARS2 #NEW +Train.720.CameraVityaz = SAU "Vityaz" #FIXME +Train.720.CameraKRMH = KRMSH and UAVA valves #FIXME +Train.720.CameraPVZ = PVZ #FIXME #Common Common.720.SF1 = SF1: Main power @@ -262,7 +255,7 @@ Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle = @[Common.7 Entities.gmod_subway_81-720.Buttons.PUU.!VDop = @[Common.ALL.SpeedAccept] Entities.gmod_subway_81-720.Buttons.PUU.!VFact = @[Common.ALL.SpeedCurr] Entities.gmod_subway_81-720.Buttons.PUU.!VPred = @[Common.ALL.SpeedAttent] -Entities.gmod_subway_81-720.Buttons.PUU.!VFact2 = @[Common.ALL.SpeedCurr] +Entities.gmod_subway_81-720.Buttons.PUU.!VDop2 = @[Common.ALL.SpeedAccept] Entities.gmod_subway_81-720.Buttons.PUU.!Acc = @[Common.720.Accel] Entities.gmod_subway_81-720.Buttons.PUU.!Forw = @[Common.720.Forward] Entities.gmod_subway_81-720.Buttons.PUU.!Back = @[Common.720.Backward] diff --git a/lua/metrostroi_data/languages/en_722.lua b/lua/metrostroi_data/languages/en_722.lua index b4ac5d4..16294a0 100644 --- a/lua/metrostroi_data/languages/en_722.lua +++ b/lua/metrostroi_data/languages/en_722.lua @@ -13,20 +13,6 @@ Train.722.CabLights = Cabin lighting panel Train.722.Disconnects = Disconnect valves Train.722.KRMH = KRMSH and RVTB valves -Train.Buttons.BattOn = Battery is enabled #NEW (indicator) -Train.Buttons.BattOff = Battery is disabling #NEW (indicator) -Train.Buttons.VentEmer = Emergency #NEW (passenger ventilation) -Train.Buttons.VentAuto = Auto #NEW (passenger ventilation) -Train.Buttons.Vent1/2 = Half of ventilation fans #NEW (passenger ventilation) -Train.Buttons.VentAll = All ventilation fans #NEW (passenger ventilation) - -Train.Buttons.VRUAH = Emergency control #NEW -Train.Buttons.VRUOn = Manual activation #NEW (manual cab activation) -Train.Buttons.PantSC = Enable shorting device #NEW -Train.Buttons.DoorCloseA = Auto closing (with buzzer) #NEW -Train.Buttons.DoorCloseM = Manual closing (without buzzer) #NEW -Train.Buttons.AHActive = Emergency control is active #NEW - #######Buttons########### Common.722.MirrorHeating = Mirrors heater Common.722.EmergencyDrive = Emergency start in the emergency drive mode diff --git a/lua/metrostroi_data/languages/en_base.lua b/lua/metrostroi_data/languages/en_base.lua index a3f3b4c..9292850 100644 --- a/lua/metrostroi_data/languages/en_base.lua +++ b/lua/metrostroi_data/languages/en_base.lua @@ -30,94 +30,37 @@ Panel.Language = Select language Panel.DrawCams = Render cameras Panel.DisableHUD = Disable HUD in the driver seat Panel.DisableCamAccel = Disable camera acceleration -Panel.DisableHoverText = Disable tooltips -Panel.DisableHoverTextP = Disable additional information\nin tooltips #NEW #FIXME +Panel.DisableHoverText = Disable hover text Panel.ScreenshotMode = Screenshot mode (LOW FPS) Panel.ShadowsHeadlight = Enable headlight shadows Panel.RedLights = Enable dynamic light\nof red lights Panel.ShadowsOther = Enable shadows from other\nlight sources -Panel.PanelSprites = Enable sprites from control\npanel lamps Panel.MinimizedShow = Don't unload an elements\nwhen minimized -Panel.PanelLights = Enable dynamic lights\nfrom control panel lamps #NEW -Panel.RouteNumber = Route number #NEW Panel.FOV = FOV -Panel.Z = Camera height #NEW Panel.RenderDistance = Render distance Panel.ReloadClient = Reload client side Panel.ClientAdvanced = Client (advanced) Panel.DrawDebugInfo = Draw debug information -Panel.DrawSignalDebugInfo = Signalling debug info +Panel.DrawSignalDebugInfo = Signalling debug info #FIXME Panel.CheckAddons = Scan addons Panel.ReloadLang = Reload languages -Panel.SoftDraw = Train elements loading time +Panel.SoftDraw = Elements "smooth\nloading" percent Panel.SoftReloadLang = Don't reload a spawnmenu #Common train - -#Cameras Train.Common.Camera0 = Driver's seat Train.Common.RouteNumber = Route number Train.Common.LastStation = Last station Train.Common.HelpersPanel = Helper's panel -Train.Common.UAVA = UAVA -Train.Common.PneumoPanels = Pneumatic valves -Train.Common.Voltmeters = Voltmeters and amperemeters +Train.Common.UAVA = UAVA #FIXME +Train.Common.PneumoPanels = Pneumatic valves #FIXME +Train.Common.Voltmeters = Voltmeters and amperemeters #FIXME Train.Common.CouplerCamera = Coupler Common.ARM.Monitor1 = Monitor 1 ARM - Train.Buttons.Sealed = Sealed -Train.Buttons.Active = Active #NEW -Train.Buttons.Auto = Auto #NEW -Train.Buttons.On = On #NEW -Train.Buttons.Off = Off #NEW -Train.Buttons.Closed = Closed #NEW -Train.Buttons.Opened = Opened #NEW -Train.Buttons.Disconnected = Disconnected #NEW -Train.Buttons.Connected = Connected #NEW -Train.Buttons.UAVAOff = Control circuits is open #NEW (OFF) -Train.Buttons.UAVAOn = Control circuits is closed #NEW (ON) -Train.Buttons.Freq1/5 = 1/5 autoblocking #NEW -Train.Buttons.Freq2/6 = 2/6 ALS-ARS #NEW -Train.Buttons.Left = Left #NEW -Train.Buttons.Right = Right #NEW -Train.Buttons.Low = Low #NEW -Train.Buttons.High = High #NEW #FIXME -Train.Buttons.LFar = Bright #NEW #FIXME (headlights) -Train.Buttons.LNear = Dim #NEW #FIXME (headlights) -Train.Buttons.0 = 0 #NEW -Train.Buttons.1 = 1 #NEW -Train.Buttons.2 = 2 #NEW -Train.Buttons.3 = 3 #NEW -Train.Buttons.4 = 4 #NEW -Train.Buttons.Forward = Forward #NEW -Train.Buttons.Back = Backward #NEW -Train.Buttons.VentHalf = 1/2 of speed #NEW (of ventilation) -Train.Buttons.VentFull = Full speed #NEW (of ventilation) -Train.Buttons.VTRF = Forward oriented wagons #NEW -Train.Buttons.VTRB = Back oriented wagons #NEW -Train.Buttons.VTR1 = Even wagons #NEW -Train.Buttons.VTR2 = Odd wagons #NEW -Train.Buttons.VTRH1 = First half of train #NEW -Train.Buttons.VTRH2 = Second half of train #NEW -Train.Buttons.VTRAll = All wagons #NEW - -Train.Buttons.BatteryVoltage = %d V #NEW -Train.Buttons.HighVoltage = %d V #NEW -Train.Buttons.BatteryCurrent = %d A #NEW -Train.Buttons.EnginesCurrent = %d A #NEW -Train.Buttons.Speed = %d km/h #NEW -Train.Buttons.SpeedAll = %d km/h\nSpeed limit: %s km/h #NEW #FIXME -Train.Buttons.SpeedLimit = %s km/h #NEW -Train.Buttons.SpeedLimitNext = %s km/h #NEW -Train.Buttons.Acceleration = % 4.2f m/s #NEW -Train.Buttons.04 = NF #NEW (no frequency) -Train.Buttons.BCPressure = %.1f bar -Train.Buttons.BLTLPressure = TL: %.1f\nBL: %.1f bar #NEW (TL: Train line, BL: Brake line acronyms) -Train.Buttons.Locked = Locked #NEW -Train.Buttons.Unlocked = Unlocked #NEW #Train entities Entities.gmod_subway_base.Name = Subway base @@ -132,7 +75,7 @@ Entities.gmod_subway_ezh1.Name = 81-708 (Ezh1 intermediate) Entities.gmod_subway_ezh3.Name = 81-710 (Ezh3 head) Entities.gmod_subway_em508t.Name = 81-508T (Em-508T intermediate) Entities.gmod_subway_81-717_mvm.Name = 81-717 (Moscow head) -Entities.gmod_subway_81-717_mvm_custom.Name = 81-717 (Moscow custom) +Entities.gmod_subway_81-717_mvm_custom.Name = 81-717 (Moscow custom) #FIXME Entities.gmod_subway_81-714_mvm.Name = 81-714 (Moscow intermediate) Entities.gmod_subway_81-717_lvz.Name = 81-717 (St. Petersburg head) Entities.gmod_subway_81-714_lvz.Name = 81-714 (St. Petersburg intermediate) @@ -163,90 +106,90 @@ Entities.gmod_track_powermeter.Name = Power meter Entities.gmod_track_arm.Name = ARM DSCP Entities.gmod_track_udochka.Name = Power connector Entities.gmod_train_spawner.Name = Train spawner -Entities.gmod_train_special_box.Name = Special delivery +Entities.gmod_train_special_box.Name = Special delivery #FIXME #Weapons -Weapons.button_presser.Name = Button presser -Weapons.button_presser.Purpose = Used to press buttons on the maps. -Weapons.button_presser.Instructions = Aim to a button and click "Attack" button. -Weapons.train_key.Name = Administrator key -Weapons.train_key.Purpose = Used to activate the administrators buttons. -Weapons.train_key.Instructions = Aim to the administrator button and press "Attack" button. -Weapons.train_kv_wrench.Name = Reverser wrench -Weapons.train_kv_wrench.Purpose = Used in metro train and for pressing buttons in them. -Weapons.train_kv_wrench.Instructions = Aim to a button in the train and press "Attack" button. -Weapons.train_kv_wrench_gold.Name = The golden reverser wrench +Weapons.button_presser.Name = Button presser #FIXME +Weapons.button_presser.Purpose = Used to press buttons on the maps. #FIXME +Weapons.button_presser.Instructions = Hold to the button and click "Attack" button. #FIXME +Weapons.train_key.Name = Administrator key #FIXME +Weapons.train_key.Purpose = Used to activate the administrators buttons. #FIXME +Weapons.train_key.Instructions = Hold to administrator button and press "Attack" button. #FIXME +Weapons.train_kv_wrench.Name = Reverser wrench #FIXME +Weapons.train_kv_wrench.Purpose = Used in metro train and for pressing buttons in them. #FIXME +Weapons.train_kv_wrench.Instructions = Hold to button in the train and press "Attack" button. #FIXME +Weapons.train_kv_wrench_gold.Name = The golden reverser wrench #FIXME Weapons.train_kv_wrench_gold.Purpose = @[Weapons.train_kv_wrench.Purpose] Weapons.train_kv_wrench_gold.Instructions = @[Weapons.train_kv_wrench.Instructions] #Spawner common -Spawner.Title = Train spawner -Spawner.Spawn = Spawn -Spawner.Close = Close -Spawner.Trains1 = Wags. allowed -Spawner.Trains2 = Per player -Spawner.WagNum = Wagons amount +Spawner.Title = Train spawner #FIXME +Spawner.Spawn = Spawn #FIXME +Spawner.Close = Close #FIXME +Spawner.Trains1 = Wags. allowed #FIXME +Spawner.Trains2 = Per player #FIXME +Spawner.WagNum = Wagons amount #FIXME Common.Spawner.Texture = Body skin Common.Spawner.PassTexture = Interior skin -Common.Spawner.CabTexture = Driver's cab skin +Common.Spawner.CabTexture = Cabin skin Common.Spawner.Announcer = Announcer type Common.Spawner.Type1 = Type 1 Common.Spawner.Type2 = Type 2 Common.Spawner.Type3 = Type 3 Common.Spawner.Type4 = Type 4 -Common.Spawner.SpawnMode = Train state -Common.Spawner.SpawnMode.Deadlock = Dead-end -Common.Spawner.SpawnMode.Full = Fully started -Common.Spawner.SpawnMode.NightDeadlock = Dead-end after night -Common.Spawner.SpawnMode.Depot = Cold and dark +Common.Spawner.SpawnMode = Train state #FIXME +Common.Spawner.SpawnMode.Deadlock = Dead-end #FIXME +Common.Spawner.SpawnMode.Full = Fully started #FIXME +Common.Spawner.SpawnMode.NightDeadlock = Dead-end after night #FIXME +Common.Spawner.SpawnMode.Depot = Cold and dark #FIXME Spawner.Common.EType = Electric circuits type #FIXME Common.Spawner.Scheme = Line schemes -Common.Spawner.Random = Random -Common.Spawner.Old = Old -Common.Spawner.New = New -Common.Spawner.Type = Type +Common.Spawner.Random = Random #FIXME +Common.Spawner.Old = Old #FIXME +Common.Spawner.New = New #FIXME +Common.Spawner.Type = Type #FIXME Common.Spawner.SchemeInvert = Invert line schemes #Coupler common -Common.Couple.Title = Coupler menu -Common.Couple.CoupleState = Coupler state -Common.Couple.Coupled = Coupled -Common.Couple.Uncoupled = Not coupled -Common.Couple.Uncouple = Uncouple -Common.Couple.IsolState = Isolation valves state -Common.Couple.Isolated = Closed -Common.Couple.Opened = Opened -Common.Couple.Open = Open -Common.Couple.Isolate = Close -Common.Couple.EKKState = EKK state (electrical box connection) -Common.Couple.Disconnected = Disconnected -Common.Couple.Connected = Connected -Common.Couple.Connect = Connect -Common.Couple.Disconnect = Disconnect +Common.Couple.Title = Coupler menu #FIXME +Common.Couple.CoupleState = Coupler state #FIXME +Common.Couple.Coupled = Coupled #FIXME +Common.Couple.Uncoupled = Not coupled #FIXME +Common.Couple.Uncouple = Uncouple #FIXME +Common.Couple.IsolState = Isolation valves state #FIXME +Common.Couple.Isolated = Closed #FIXME +Common.Couple.Opened = Opened #FIXME +Common.Couple.Open = Open #FIXME +Common.Couple.Isolate = Close #FIXME +Common.Couple.EKKState = EKK state (electrical connection) #FIXME +Common.Couple.Disconnected = Disconnected #FIXME +Common.Couple.Connected = Connected #FIXME +Common.Couple.Connect = Connect #FIXME +Common.Couple.Disconnect = Disconnect #FIXME #Bogey common -Common.Bogey.Title = Bogie menu -Common.Bogey.ContactState = Current collectors state -Common.Bogey.CReleased = Released -Common.Bogey.CPressed = Pressed -Common.Bogey.CPress = Press -Common.Bogey.CRelease = Release -Common.Bogey.ParkingBrakeState = Parking brake state -Common.Bogey.PBDisabled = Manually disabled -Common.Bogey.PBEnabled = Enabled -Common.Bogey.PBEnable = Enable -Common.Bogey.PBDisable = Manual disable +Common.Bogey.Title = Bogie menu #FIXME +Common.Bogey.ContactState = Current collectors state #FIXME +Common.Bogey.CReleased = Released #FIXME +Common.Bogey.CPressed = Pressed #FIXME +Common.Bogey.CPress = Press #FIXME +Common.Bogey.CRelease = Release #FIXME +Common.Bogey.ParkingBrakeState = Parking brake state #FIXME +Common.Bogey.PBDisabled = Manually disabled #FIXME +Common.Bogey.PBEnabled = Enabled #FIXME +Common.Bogey.PBEnable = Enable #FIXME +Common.Bogey.PBDisable = Manual disable #FIXME #Trains common Common.ALL.Unsused1 = Unused Common.ALL.Unsused2 = (unused) -Common.ALL.Up = (up) -Common.ALL.Down = (down) -Common.ALL.Left = (left) -Common.ALL.Right = (right) -Common.ALL.CW = (clockwise) -Common.ALL.CCW = (counter-clockwise) +Common.ALL.Up = (up) #FIXME +Common.ALL.Down = (down) #FIXME +Common.ALL.Left = (left) #FIXME +Common.ALL.Right = (right) #FIXME +Common.ALL.CW = (clockwise) #FIXME +Common.ALL.CCW = (counter-clockwise) #FIXME Common.ALL.VB = VB: Battery on/off Common.ALL.VSOSD = SOSD: Station doors opening lamp Common.ALL.VKF = VKF: Battery power for red lights @@ -256,22 +199,22 @@ Common.ALL.VASNP = ASNP power Common.ALL.UOS = RC-UOS: Speed Limitation Device (driving w/o EPV/EPK) Common.ALL.VAH = VAH: Emergency driving mode (failure of RPB relay) Common.ALL.KAH = KAH: Emergency drive button for driving w/o ARS -Common.ALL.KAHK = KAH button cover +Common.ALL.KAHK = KAH button cover #FIXME Common.ALL.VAD = VAD: Emergency door close override (failure of KD relay) Common.ALL.OVT = OVT: Disable pneumatic valves brake Common.ALL.VOVT = VOVT: Turn off pneumatic valve brakes disabler Common.ALL.EmergencyBrakeValve = Emergency brake -Common.ALL.ParkingBrake = Parking brake +Common.ALL.ParkingBrake = Parking brake #FIXME Common.ALL.VU = VU: Train control switch Common.ALL.KDP = KDP: Open right doors -Common.ALL.KDPL = Right doors side is selected +Common.ALL.KDPL = Right doors side is selected #FIXME Common.ALL.KDPK = Right doors button cover Common.ALL.KDL = KDL: Open left doors -Common.ALL.KDLL = Left doors side is selected +Common.ALL.KDLL = Left doors side is selected #FIXME Common.ALL.KDLK = Left doors button cover Common.ALL.KDLPK = Door buttons cover Common.ALL.KRZD = KRZD: Emergency door closing -Common.ALL.VSD = Doors side selector +Common.ALL.VSD = Doors side selector #FIXME Common.ALL.Ring = Ring Common.ALL.VUD = VUD: Door control toggle (close doors) Common.ALL.KDPH = Open right doors of the last car @@ -279,18 +222,18 @@ Common.ALL.VUD2 = VUD2: Close doors from the helper' Common.ALL.Program1 = Program I Common.ALL.Program2 = Program II Common.ALL.VRP = VRP: Reset overload relay -Common.ALL.VRPBV = VRP: Reset overload relay, enable BV +Common.ALL.VRPBV = VRP: Reset overload relay, enable BV #FIXME Common.ALL.KSN = KSN: Malfunction signalling Common.ALL.VMK = VMK: Compressor -Common.ALL.MK = Compressor # (without acronym) +Common.ALL.MK = Compressor #FIXME (without acronym) Common.ALL.VF1 = 1st headlight group Common.ALL.VF2 = 2nd headlight group Common.ALL.VF = Headlights switch Common.ALL.VUS = VUS: Head lights bright/dim Common.ALL.GaugeLights = Gauges lighting -Common.ALL.CabLights = Driver's cab lighting -Common.ALL.PassLights = Passenger compartment lighting -Common.ALL.PanelLights = Control panel lighting +Common.ALL.CabLights = Cabin lighting +Common.ALL.PassLights = Passenger compartment lighting #FIXME +Common.ALL.PanelLights = Control panel lighting #FIXME Common.ALL.RMK = RMK: Emergency compressor Common.ALL.KRP = KRP: Emergency start button Common.ALL.VZP = VZP: Disable drive delay @@ -310,11 +253,11 @@ Common.ALL.RP = RP: Red overload relay lamp (power Common.ALL.SN = LSN: Failure indicator light (power circuits failed to assemble) Common.ALL.PU = Reduced power mode indicator Common.ALL.BrT = Train pneumobrakes are engaged -Common.ALL.BrW = Wagon pneumobrakes are engaged -Common.ALL.ARS = ARS: Automatic speed regulation -Common.ALL.ARSR = ARS-R: Automatic speed regulation in ARS-R mode +Common.ALL.BrW = Wagon pneumobrakes are engaged #FIXME +Common.ALL.ARS = ARS: Automatic speed regulation switch +Common.ALL.ARSR = ARS-R: Automatic speed regulation in ARS-R mode switch Common.ALL.ALS = ALS: Automatic locomotive signalling -Common.ALL.RCARS = RC-ARS: ARS circuits disconnect # (same as RC-1) +Common.ALL.RCARS = RC-ARS: ARS circuits disconnect #FIXME (same as RC-1) Common.ALL.RC1 = RC-1: ARS circuits disconnect Common.ALL.EPK = ARS electropneumatic valve (EPK) Common.ALL.EPV = ARS electropneumatic valve (EPV) @@ -339,28 +282,27 @@ Common.ARS.VRD = VRD: Allow movement(when 0 on ALS) Common.ARS.KB = KB: Attention button Common.ARS.KVT = KVT: Brake perception button Common.ARS.KVTR = KVT: ARS-R brake perception button -Common.ARS.AO = AO: Absolute stop signal Common.ARS.04 = OCh: No ARS frequency -Common.ARS.N4 = NCh: No ARS frequency # (same as OCh but NCh) +Common.ARS.N4 = NCh: No ARS frequency #FIXME (same as OCh but NCh) Common.ARS.0 = 0: ARS stop signal Common.ARS.40 = Speed limit 40 km/h Common.ARS.60 = Speed limit 60 km/h Common.ARS.70 = Speed limit 70 km/h Common.ARS.80 = Speed limit 80 km/h -Common.ALL.RCBPS = RC-BPS: Anti-Rollback unit -Common.BPS.On = Anti-Rollback unit operation -Common.BPS.Err = Anti-Rollback unit error -Common.BPS.Fail = Anti-Rollback unit malfunction +Common.ALL.RCBPS = RC-BPS: Anti-Rolling unit switch +Common.BPS.On = Anti-Rolling unit operation +Common.BPS.Err = Anti-Rolling unit error +Common.BPS.Fail = Anti-Rolling unit malfunction Commom.NMnUAVA.NMPressureLow = Low train line pressure lamp Commom.NMnUAVA.UAVATriggered = UAVA contacts are open -Common.ALL.LSD = Train doors state light (doors are closed) +Common.ALL.LSD = Train doors state light (doors are closed) #FIXME Common.ALL.L1w = 1st wire lamp (drive mode engaged) Common.ALL.L2w = 2nd wire lamp (rheostat controller motion) Common.ALL.L6w = 6th wire lamp (brake mode engaged) -Common.ALL.Horn = Horn +Common.ALL.Horn = Horn #FIXME Common.ALL.DriverValveBLDisconnect = Brake line disconnect valve Common.ALL.DriverValveTLDisconnect = Train line disconnect valve -Common.ALL.DriverValveDisconnect = Driver's valve disconnect valve +Common.ALL.DriverValveDisconnect = Driver's valve disconnect valve #FIXME Common.ALL.KRMH = KRMSH: Driver's valve emergency enable #FIXME Common.ALL.RVTB = RVTB: Reserved valve of safety brake #FIXME Common.ALL.FrontBrakeLineIsolationToggle = Brake line isolation valve @@ -368,23 +310,23 @@ Common.ALL.FrontTrainLineIsolationToggle = Train line isolation valve Common.ALL.RearTrainLineIsolationToggle = Train line isolation valve Common.ALL.RearBrakeLineIsolationToggle = Brake line isolation valve Common.ALL.UAVA = UAVA: Enable automatic autostop disabler\n(may be enabled after brake line pressure drop) -Common.ALL.UAVA2 = UAVA: Enable automatic autostop disabler +Common.ALL.UAVA2 = UAVA: Enable automatic autostop disabler #FIXME Common.ALL.UAVAContact = UAVA contacts reset -Common.ALL.OAVU = OAVU: Disable AVU +Common.ALL.OAVU = OAVU: Disable AVU switch Common.ALL.LAVU = AVU is activated Common.ALL.GV = Main switch Common.ALL.AirDistributor = VRN: Air distributor disabler -Common.ALL.CabinDoor = Door to the driver's cab -Common.ALL.PassDoor = Door to the passenger compartment +Common.ALL.CabinDoor = Door to the driver's cabin +Common.ALL.PassDoor = Door to the passenger compartment #FIXME Common.ALL.FrontDoor = Front door Common.ALL.RearDoor = Rear door -Common.ALL.OtsekDoor1 = 1st equipment cupboard handle -Common.ALL.OtsekDoor2 = 2nd equipment cupboard handle -Common.ALL.CouchCap = Pull out the seat +Common.ALL.OtsekDoor1 = 1st equipment cupboard handle #FIXME +Common.ALL.OtsekDoor2 = 2nd equipment cupboard handle #FIXME +Common.ALL.CouchCap = Pull out the seat #FIXME -Common.ALL.UNCh = UNCh: Low frequency amplifier -Common.ALL.ES = ES: Emergency communication control -Common.ALL.GCab = Loudspeaker: Sound in the driver's cab +Common.ALL.UNCh = UNCh: Low frequency amplifier switch +Common.ALL.ES = ES: Emergency communication control switch +Common.ALL.GCab = Loudspeaker: Sound in cabin switch Common.ALL.UPO = UPO: Announcer Common.ALL.R_Radio = Announcer Common.ALL.AnnPlay = Announcer playback lamp @@ -409,8 +351,8 @@ Common.ASNP.ASNPDown = ASNP: Down Common.ASNP.ASNPOn = ASNP: Power #PVK -Common.CabVent.PVK- = Decrease driver's cab ventilation power -Common.CabVent.PVK+ = Increase driver's cab ventilation power +Common.CabVent.PVK- = Decrease cabin ventilation power #FIXME +Common.CabVent.PVK+ = Increase cabin ventilation power #FIXME #IGLA Train.Common.IGLA = IGLA @@ -420,9 +362,9 @@ Common.IGLA.Button1Down = IGLA: First button down Common.IGLA.Button2Up = IGLA: Second button up Common.IGLA.Button2 = IGLA: Second button Common.IGLA.Button2Down = IGLA: Second button down -Common.IGLA.Button23 = IGLA: Second and third buttons -Common.IGLA.Button3 = IGLA: Third button -Common.IGLA.Button4 = IGLA: Fourth button +Common.IGLA.Button23 = IGLA: Second and third buttons #FIXME +Common.IGLA.Button3 = IGLA: Third button #FIXME +Common.IGLA.Button4 = IGLA: Fourth button #FIXME Common.IGLA.IGLASR = IGLA: Power Common.IGLA.IGLARX = IGLA: No connection Common.IGLA.IGLAErr = IGLA: Error @@ -431,23 +373,23 @@ Common.IGLA.IGLAPI = IGLA: Fire Common.IGLA.IGLAOff = IGLA: HV circuits off #BZOS -Common.BZOS.On = Security alarm switch -Common.BZOS.VH1 = Security alarm is enabled -Common.BZOS.VH2 = Security alarm is triggered -Common.BZOS.Engaged = Security alarm is triggered +Common.BZOS.On = Security alarm switch #FIXME +Common.BZOS.VH1 = Security alarm is enabled #FIXME +Common.BZOS.VH2 = Security alarm is triggered #FIXME +Common.BZOS.Engaged = Security alarm is triggered #FIXME #Train helpers common Common.ALL.SpeedCurr = Actual speed #FIXME -Common.ALL.SpeedAccept = Allowed speed -Common.ALL.SpeedAttent = Allowed speed on the next block +Common.ALL.SpeedAccept = Allowed speed #FIXME +Common.ALL.SpeedAttent = Allowed speed on the next section #FIXME Common.ALL.Speedometer = Speedometer Common.ALL.BLTLPressure = Pressure in pneumatic lines (red: brake line, black: train line) Common.ALL.BCPressure = Brake cylinder pressure Common.ALL.EnginesCurrent = Engines current (A) -Common.ALL.EnginesCurrent1 = 1st traction motors current (A) -Common.ALL.EnginesCurrent2 = 2nd traction motors current (A) +Common.ALL.EnginesCurrent1 = 1st traction motors current (A) #FIXME +Common.ALL.EnginesCurrent2 = 2nd traction motors current (A) #FIXME Common.ALL.EnginesVoltage = Engines voltage (kV) Common.ALL.BatteryVoltage = Battery voltage (V) -Common.ALL.BatteryCurrent = Battery current (A) +Common.ALL.BatteryCurrent = Battery current (A) #FIXME Common.ALL.HighVoltage = High voltage (kV) ]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/fr_502.lua b/lua/metrostroi_data/languages/fr_502.lua index 167dd67..4323016 100644 --- a/lua/metrostroi_data/languages/fr_502.lua +++ b/lua/metrostroi_data/languages/fr_502.lua @@ -166,7 +166,7 @@ Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -208,8 +208,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] diff --git a/lua/metrostroi_data/languages/fr_702.lua b/lua/metrostroi_data/languages/fr_702.lua index 0205cb7..66b79b5 100644 --- a/lua/metrostroi_data/languages/fr_702.lua +++ b/lua/metrostroi_data/languages/fr_702.lua @@ -20,11 +20,6 @@ Spawner.707.Type2 = Nouveau + ASNP Spawner.710.RRI = Annonceur radio-relai #######Buttons########### -Train.Buttons.ParkingBrake = %d%% #NEW -Train.Buttons.EnginesVoltage = %d V #NEW -Train.Buttons.CanAB = AB mode is available #NEW -Train.Buttons.InAB = In AB mode #NEW - #Common Common.702.VZ1 = Valve pneumatique №1 Common.703.ParkingBrakeLeft = Relâcher le frein de parking @@ -95,7 +90,7 @@ Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -154,7 +149,7 @@ Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -190,9 +185,6 @@ Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] #NEW Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -226,7 +218,7 @@ Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -291,7 +283,7 @@ Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -441,7 +433,7 @@ Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] @@ -618,7 +610,7 @@ Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] diff --git a/lua/metrostroi_data/languages/fr_717.lua b/lua/metrostroi_data/languages/fr_717.lua index 4f9a9f4..64a4533 100644 --- a/lua/metrostroi_data/languages/fr_717.lua +++ b/lua/metrostroi_data/languages/fr_717.lua @@ -13,7 +13,7 @@ Train.717.PUAV = PUAV Train.717.PA = PA Train.717.PAScreen = Ecran PA -Train.714.Shunt = Panneau de contrôle en mannoeuvre, valve du conducteur +Train.714.Shunt = Shunting control panel, driver's valve #FIXME #Spawner Spawner.717.Line2 = Train de MPL (ligne Moskovsko-Petrogradskaya) Spawner.717.Line4 = Train de PBL (ligne Frunzensko-Primorskaya) @@ -34,14 +34,12 @@ Spawner.717.RingType = Type de bipper ARS Spawner.717.BPSNType = Type de BPSN #######Buttons########### -Train.Buttons.RZP = BPSN converter protection engaged - #Common Common.717.VBD = Blocage des portes ASNP Common.717.UPPS = Système UPPS Common.717.BPSN = BPSN: Alimentation électrique du train -Common.717.ARS13V = ARS 13V: Vérification de la tension stabilisée de l'ARS -Common.717.Radio13V = Vérificateur de tension en radio stabilisée 13V +Common.717.ARS13V = ARS 13V: Vérification du voltage stabilisé de l'ARS +Common.717.Radio13V = Vérificateur de voltage en radio stabilisée 13V Common.717.LVD = LVD: Lampe de 1er câble (moteurs allumés) Common.717.LHRK = LHRK: Lampe du 2ème câble (le RK tourne) Common.717.LST = LST: Lampe du 6ème câble (frein) @@ -193,8 +191,8 @@ Common.PA.Right = Droite Common.PA.Esc = Annuler Common.PA.Enter = Entrer -Common.714.Start = Démarrage des moteurs de traction -Common.714.RV = Interrupteur de direction +Common.714.Start = Start traction-motors #FIXME +Common.714.RV = Direction switch #FIXME #gmod_subway_81-717 Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:UOSToggle = @[Common.ALL.UOS] @@ -258,7 +256,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.G Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer2 = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] @@ -537,7 +534,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDis Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -745,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] @@ -954,7 +951,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDis Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -1051,10 +1048,6 @@ Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW #gmod_subway_81-714_lvz Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -1129,11 +1122,6 @@ Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - #Spawner: Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] diff --git a/lua/metrostroi_data/languages/fr_718.lua b/lua/metrostroi_data/languages/fr_718.lua index 136f161..49e71ff 100644 --- a/lua/metrostroi_data/languages/fr_718.lua +++ b/lua/metrostroi_data/languages/fr_718.lua @@ -9,11 +9,6 @@ Train.718.BUP = BUP Train.718.PPZ = PPZ Train.718.VPU = VPU -Train.Buttons.LHalf = Dim #NEW (panel lighting) -Train.Buttons.LFull = Bright #NEW (panel lighting) -Train.Buttons.HL5 = Control circuits are not engaged #NEW -Train.Buttons.HL6 = Protection has tripped or low current #NEW -Train.Buttons.HL7 = BBE protection has tripped #NEW #Common Common.718.SB4 = Vérifier l'assemblage des circuits Common.718.SB5 = Transfère des contrôles (bip) @@ -58,7 +53,7 @@ Common.718.SF8 = SF8: Contrôle des portes Common.718.SF11 = SF11: Contrôle du 2ème groupe de ventilateurs Common.718.SF10 = SF10: Contrôle du 1er groupe de ventilateurs Common.718.SF7 = SF7: BBE, compresseur -Common.718.SF50 = SF50: Indicateur de vitesse +Common.718.SF50 = SF50: Speedomètre Common.718.SF76 = SF76: Alarme incendie Common.718.SF73 = SF73: Lubrification de boudin Common.718.SF3 = SF3: Alimentation de voiture, CUV @@ -202,7 +197,7 @@ Common.718.MVDRP = @[Common.718.MVD]: Actionnement du RP Common.718.MALP2MSU = @[Common.718.MALP1]: Réinitialisation instantanée du point de consigne actuel Common.718.MALP2800 = @[Common.718.MALP1]: 800V par troisième rail disponible -Common.718.MALP2975 = @[Common.718.MALP1]: Tension maximale par troisième rail +Common.718.MALP2975 = @[Common.718.MALP1]: Voltage maximal par troisième rail Common.718.MALP250 = @[Common.718.MALP1]: Disponibilité du courant du 2ème groupe d'armature Common.718.MALP2650 = @[Common.718.MALP1]: Le courant 2ème groupe d'armature est supérieure à 650A Common.718.MALP20 = @[Common.718.MALP1]: Pas de courant du 2ème groupe d'armature @@ -519,12 +514,10 @@ Entities.gmod_subway_81-718.Buttons.PVZ.SF35Toggle = @[Common.718.SF35] Entities.gmod_subway_81-718.Buttons.PVZ.SF23Toggle = @[Common.718.SF23] Entities.gmod_subway_81-718.Buttons.PVZ.SF24Toggle = @[Common.718.SF24] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-718.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-718.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] +Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] +Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] +Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] +Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] Entities.gmod_subway_81-718.Buttons.HelperPanel.SA6Toggle = @[Common.ALL.VUD2] Entities.gmod_subway_81-718.Buttons.HelperPanel.SA24Set = @[Common.ALL.KDL] @@ -556,7 +549,7 @@ Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.DriverValveDisconnectT Entities.gmod_subway_81-718.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-718.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] @@ -690,10 +683,6 @@ Entities.gmod_subway_81-719.Buttons.couch_cap.CouchCap Entities.gmod_subway_81-719.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW #Spawner: Entities.gmod_subway_81-718.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-718.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] diff --git a/lua/metrostroi_data/languages/fr_720.lua b/lua/metrostroi_data/languages/fr_720.lua index e34fbca..67b4988 100644 --- a/lua/metrostroi_data/languages/fr_720.lua +++ b/lua/metrostroi_data/languages/fr_720.lua @@ -12,13 +12,6 @@ Train.720.CameraVityaz = SAU "Vityaz" Train.720.CameraKRMH = Valves KRMSH et UAVA Train.720.CameraPVZ = PVZ -Train.Buttons.Heating = Heating #NEW -Train.Buttons.Vent = Ventilation #NEW -Train.Buttons.Cooling = Cooling #NEW -Train.Buttons.BARS1 = BARS1 #NEW -Train.Buttons.BARS2 = BARS2 #NEW -Train.Buttons.BARS12 = BARS1 and BARS2 #NEW - #Common Common.720.SF1 = SF1: Alimentation principale Common.720.SF2 = SF2: Contrôle principal diff --git a/lua/metrostroi_data/languages/fr_722.lua b/lua/metrostroi_data/languages/fr_722.lua index f0417fc..2245830 100644 --- a/lua/metrostroi_data/languages/fr_722.lua +++ b/lua/metrostroi_data/languages/fr_722.lua @@ -13,20 +13,6 @@ Train.722.CabLights = Panneau de l'éclairage cabine Train.722.Disconnects = Déconnecter les valves Train.722.KRMH = Valves KRMSH et RVTB -Train.Buttons.BattOn = Battery enabled #NEW -Train.Buttons.BattOff = Battery disabling #NEW -Train.Buttons.VentEmer = Emergency #NEW -Train.Buttons.VentAuto = Auto #New -Train.Buttons.Vent1/2 = Half of ventilation #NEW -Train.Buttons.VentAll = All ventilation fans #NEW - -Train.Buttons.VRUAH = Emergency control #NEW -Train.Buttons.VRUOn = Manual activation #NEW -Train.Buttons.PantSC = Enable shorting device #NEW -Train.Buttons.DoorCloseA = Auto closing (with buzzer) #NEW -Train.Buttons.DoorCloseM = Manual closing (without buzzer) #NEW -Train.Buttons.AHActive = Emergency control active #NEW - #######Buttons########### Common.722.MirrorHeating = Chauffage des mirroirs Common.722.EmergencyDrive = Démarrage d'urgence en mode conduite d'urgence diff --git a/lua/metrostroi_data/languages/fr_base.lua b/lua/metrostroi_data/languages/fr_base.lua index 4947b88..9e13ec6 100644 --- a/lua/metrostroi_data/languages/fr_base.lua +++ b/lua/metrostroi_data/languages/fr_base.lua @@ -31,25 +31,21 @@ Panel.DrawCams = Rendu des caméras Panel.DisableHUD = Désactive le HUD sur le siège du conducteur Panel.DisableCamAccel = Désactive l'accéleration de caméra Panel.DisableHoverText = Désactive le texte de légende -Panel.DisableHoverTextP = Disable additional information\nin tooltips #NEW Panel.ScreenshotMode = Mode screenshot (IPS bas) Panel.ShadowsHeadlight = Active les ombres des phares Panel.RedLights = Activer la lumière dynamique\ndes feux rouges Panel.ShadowsOther = Active les ombres d'autres\nsources de lumière Panel.MinimizedShow = Empêche la \ndisparition d'éléments -Panel.PanelLights = Enable dynamic lights\nfrom panel lamps #NEW -Panel.RouteNumber = Route number #NEW Panel.FOV = Champ de vision (FOV) -Panel.Z = Hauteur de caméra Panel.RenderDistance = Rendu à distance Panel.ReloadClient = Redémarrer le client Panel.ClientAdvanced = Client (avancé) Panel.DrawDebugInfo = Afficher les informations de debug -Panel.DrawSignalDebugInfo = Infos de débogage de signalisation +Panel.DrawSignalDebugInfo = Signalling debug info #FIXME Panel.CheckAddons = Rechercher les extensions Panel.ReloadLang = Recharger les langues -Panel.SoftDraw = Temps de chargement des éléments de train +Panel.SoftDraw = Pourcentage de chargement \nprogressif d'éléments Panel.SoftReloadLang = Désactive la recharge du spawnmenu @@ -64,54 +60,7 @@ Train.Common.PneumoPanels = Valves pneumatiques Train.Common.Voltmeters = Voltmètres et ampèremètres Train.Common.CouplerCamera = Atteleur Common.ARM.Monitor1 = Moniteur ARM 1 - Train.Buttons.Sealed = Scellé -Train.Buttons.Active = Active #NEW -Train.Buttons.Auto = Auto #NEW -Train.Buttons.On = On #NEW -Train.Buttons.Off = Off #NEW -Train.Buttons.Closed = Closed #NEW -Train.Buttons.Opened = Opened #NEW -Train.Buttons.Disconnected = Disconnected #NEW -Train.Buttons.Connected = Connected #NEW -Train.Buttons.UAVAOff = Control circuits isolated #NEW -Train.Buttons.UAVAOn = Control circuits active #NEW -Train.Buttons.Freq1/5 = 1/5 AB #NEW -Train.Buttons.Freq2/6 = 2/6 ALS-ARS #NEW -Train.Buttons.Left = Left #NEW -Train.Buttons.Right = Right #NEW -Train.Buttons.Low = Low #NEW -Train.Buttons.High = High #NEW -Train.Buttons.LFar = Distant light #NEW #FIXME -Train.Buttons.LNear = Near light #NEW #FIXME -Train.Buttons.0 = 0 #NEW -Train.Buttons.1 = 1 #NEW -Train.Buttons.2 = 2 #NEW -Train.Buttons.3 = 3 #NEW -Train.Buttons.4 = 4 #NEW -Train.Buttons.Forward = Forward #NEW -Train.Buttons.Back = Backward #NEW #FIXME -Train.Buttons.VentHalf = 1/2 of speed #NEW -Train.Buttons.VentFull = Full speed #NEW -Train.Buttons.VTRF = Forward oriented wagons #NEW -Train.Buttons.VTRB = Back oriented wagons #NEW -Train.Buttons.VTR1 = Even wagons #NEW -Train.Buttons.VTR2 = Odd wagons #NEW -Train.Buttons.VTRH1 = First half of train #NEW -Train.Buttons.VTRH2 = Second half of train #NEW -Train.Buttons.VTRAll = All wagons #NEW - -Train.Buttons.BatteryVoltage = %d V #NEW -Train.Buttons.HighVoltage = %d V #NEW -Train.Buttons.BatteryCurrent = %d A #NEW -Train.Buttons.EnginesCurrent = %d A #NEW -Train.Buttons.Speed = %d km/h #NEW -Train.Buttons.SpeedAll = %d km/h Speed limit:%s km/h #NEW -Train.Buttons.SpeedLimit = %s km/h #NEW -Train.Buttons.SpeedLimitNext = %s km/h #NEW -Train.Buttons.04 = NF #NEW -Train.Buttons.BCPressure = %.1f bar #NEW -Train.Buttons.BLTLPressure = TL: %.1f BL:%.1f bar #NEW #Train entities Entities.gmod_subway_base.Name = Base de métro @@ -439,8 +388,8 @@ Common.ALL.BCPressure = Pression des cylindres de frein Common.ALL.EnginesCurrent = Courant des moteurs (A) Common.ALL.EnginesCurrent1 = Courant des 1ers moteurs de traction (A) Common.ALL.EnginesCurrent2 = Courant des 2èmes moteurs de traction (A) -Common.ALL.EnginesVoltage = Tension des moteurs (kV) -Common.ALL.BatteryVoltage = Tension de batterie (V) +Common.ALL.EnginesVoltage = Voltage des moteurs (kV) +Common.ALL.BatteryVoltage = Voltage de batterie (V) Common.ALL.BatteryCurrent = Courant de batterie (A) Common.ALL.HighVoltage = Haute tension (kV) ]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/hu_502.lua b/lua/metrostroi_data/languages/hu_502.lua deleted file mode 100644 index a16e552..0000000 --- a/lua/metrostroi_data/languages/hu_502.lua +++ /dev/null @@ -1,274 +0,0 @@ -return [[ -#81-502 - -[hu] - -#######Buttons########### -#Common -Common.502.KS = KSAUP üzem visszajelző -Common.502.AV = Automatikus vonatvezérlés üzemben -Common.502.SD = SD: Ajtó állapot (Ajtók zárva) -Common.502.SDW = SD: Ajtó állapot (Ajtók nyitva) -Common.502.L3w = Harmadik visszajelző lámpa (X3 mód) -Common.502.L4w = Negyedik visszajelző lámpa (hátramenet) -Common.502.L5w = Ötödik visszajelző lámpa (előremenet) -Common.502.L16w = Hatodik visszajelző lámpa (ajtó retesz) -Common.502.L20w = Huszadik visszajelző lámpa (LK2 és LK5 zárt) -Common.502.L23w = Huszonharmadik visszajelző lámpa (kompresszor vezérlés) -Common.502.RK1 = Első RK pozíció vezérlése -Common.502.BRD = Ajtóhiba visszajelző -Common.502.KOS = KB: Sebességhatár gomb (éberségi gomb) -Common.502.VAK = AK: Szükségmenet áramkörei gomb -Common.502.LRU = Szükségmenet áramkörei üzemben - -#Spawner -Spawner.502.TypeNVL = Vonat az NVL-ből -Spawner.502.TypeKVLO = Régi vonat a KVL-ből -Spawner.502.TypeKVLN = Új vonat a KVL-ből -Spawner.502.EWagons = "E" típusú közbenső kocsik hozzáadása - -#gmod_subway_81-502 -Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = Automatikus vonatvezérlés akkumulátor(be/ki) - -Entities.gmod_subway_81-502.Buttons.AV.VRUToggle = VRU: Szükségmenet -Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle = KPVU: Pneumatikus vezérlés kikapcsoló -Entities.gmod_subway_81-502.Buttons.AV.KSDToggle = KSD: Ajtó reteszelő egység vezérlés kikapcsoló -Entities.gmod_subway_81-502.Buttons.AV.KAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-502.Buttons.AV.KADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-502.Buttons.AV.OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-502.Buttons.AV.VKFToggle = @[Common.ALL.VKF] - - -Entities.gmod_subway_81-502.Buttons.RCAV3.RCAV3Toggle = KSAUP áramkör szakaszoló (AV3) -Entities.gmod_subway_81-502.Buttons.RCAV4.RCAV4Toggle = KSAUP áramkör szakaszoló (AV4) -Entities.gmod_subway_81-502.Buttons.RCAV5.RCAV5Toggle = KSAUP áramkör szakaszoló (AV5) -Entities.gmod_subway_81-502.Buttons.RCARS.RCARSToggle = @[Common.ALL.RCARS] -Entities.gmod_subway_81-502.Buttons.RCBPS.RCBPSToggle = @[Common.ALL.RCBPS] - -Entities.gmod_subway_81-502.Buttons.VRD2.2:VRDSet = @[Common.ARS.VRD] -Entities.gmod_subway_81-502.Buttons.VRD2.!LVRD = @[Common.ARS.LRD] - -Entities.gmod_subway_81-502.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-502.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-502.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-502.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-502.Buttons.AV1.VU3Toggle = @[Common.703.VU3] -Entities.gmod_subway_81-502.Buttons.UPO.R_UPOToggle = @[Common.ALL.UPO] - -Entities.gmod_subway_81-502.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_81-502.Buttons.VRD.VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-502.Buttons.HelperPanel.VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-502.Buttons.HelperPanel.KDPHSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-502.Buttons.AV2.VSOSDToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-502.Buttons.AV2.VRToggle = @[Common.ALL.VPR] - -Entities.gmod_subway_81-502.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLampAutodrive = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLamp2 = @[Common.ALL.L2w] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLamp1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LLamp6 = @[Common.ALL.L6w] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LDoorsWag = @[Common.502.SDW] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LDoors = @[Common.502.SD] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LGreenRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-502.Buttons.Lamps1_1.!LRedRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RLampAutodrive = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RLamp2 = @[Common.ALL.L2w] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RLamp1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RLamp6 = @[Common.ALL.L6w] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RDoorsWag = @[Common.502.SDW] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RDoors = @[Common.502.SD] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RGreenRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-502.Buttons.Lamps1_2.!RRedRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_80 = @[Common.ARS.80] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_70 = @[Common.ARS.70] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_60 = @[Common.ARS.60] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_40 = @[Common.ARS.40] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_00 = @[Common.ARS.0] -Entities.gmod_subway_81-502.Buttons.ALSPanel.!ALS_04 = @[Common.ARS.N4] - -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_KS = @[Common.502.KS] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_AV = @[Common.502.AV] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_4 = @[Common.502.L4w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_5 = @[Common.502.L5w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_DT = @[Common.ALL.BrT] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_20 = @[Common.502.L20w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_6 = @[Common.ALL.L6w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_2 = @[Common.ALL.L2w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_1P = @[Common.502.RK1] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_SN1 = @[Common.ALL.RP] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_SN2 = @[Common.ALL.SN] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_3 = @[Common.502.L3w] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_SD1 = @[Common.502.SD] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_SD2 = @[Common.502.SD] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_RP = @[Common.ALL.GRP] -Entities.gmod_subway_81-502.Buttons.Lamps2_1.!CPS_DV = @[Common.502.BRD] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!CPS_Pd = @[Common.ARS.LRD] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_04 = @[Common.ARS.04] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_00 = @[Common.ARS.0] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_40 = @[Common.ARS.40] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_60 = @[Common.ARS.60] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_70 = @[Common.ARS.70] -Entities.gmod_subway_81-502.Buttons.Lamps2_2.!ALS_80 = @[Common.ARS.80] - -Entities.gmod_subway_81-502.Buttons.Main1.2:VUSToggle = @[Common.ALL.VF2] -Entities.gmod_subway_81-502.Buttons.Main1.2:HeadlightsToggle = @[Common.ALL.VF1] -Entities.gmod_subway_81-502.Buttons.Main1.!LKTLight = @[Common.ARS.KT] -Entities.gmod_subway_81-502.Buttons.Main1.!LKVDLight = @[Common.ARS.VD] -Entities.gmod_subway_81-502.Buttons.Main1.2:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-502.Buttons.Main1.2:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-502.Buttons.Main1.2:KBSet = @[Common.ARS.KB] -Entities.gmod_subway_81-502.Buttons.Main1.2:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-502.Buttons.Main1.2:LOnSet = @[Common.703.LOn] -Entities.gmod_subway_81-502.Buttons.Main1.2:LOffSet = @[Common.703.LOff] -Entities.gmod_subway_81-502.Buttons.Main1.2:VozvratRPSet = @[Common.ALL.VRP] -Entities.gmod_subway_81-502.Buttons.Main1.2:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-502.Buttons.Main1.2:KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-502.Buttons.Main1.2:VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-502.Buttons.Main1.2:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-502.Buttons.Main1.2:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-502.Buttons.Main1.2:VAKSet = @[Common.502.VAK] -Entities.gmod_subway_81-502.Buttons.Main1.2:VUDToggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-502.Buttons.Main1_2.!LMK2 = @[Common.502.L23w] -Entities.gmod_subway_81-502.Buttons.Main1_2.!LVRD2 = @[Common.ARS.LRD] - -Entities.gmod_subway_81-502.Buttons.Main2.KOSSet = @[Common.502.KOS] -Entities.gmod_subway_81-502.Buttons.Main2.!LMK = @[Common.502.L23w] -Entities.gmod_subway_81-502.Buttons.Main2.VZPToggle = @[Common.ALL.VZP] -Entities.gmod_subway_81-502.Buttons.Main2.VZDSet = @[Common.ALL.VZD] -Entities.gmod_subway_81-502.Buttons.Main2.!L16 = @[Common.502.L16w] -Entities.gmod_subway_81-502.Buttons.Main2.KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-502.Buttons.Main2.KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-502.Buttons.Main2.LOnSet = @[Common.703.LOn] -Entities.gmod_subway_81-502.Buttons.Main2.LOffSet = @[Common.703.LOff] -Entities.gmod_subway_81-502.Buttons.Main2.VozvratRPSet = @[Common.ALL.VRP] -Entities.gmod_subway_81-502.Buttons.Main2.KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-502.Buttons.Main2.KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-502.Buttons.Main2.KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-502.Buttons.Main2.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-502.Buttons.Main2.!RU = @[Common.502.LRU] -Entities.gmod_subway_81-502.Buttons.Main2.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-502.Buttons.Main2.VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-502.Buttons.Main2.VAKSet = @[Common.502.VAK] -Entities.gmod_subway_81-502.Buttons.Main2.AutodriveToggle = @[Common.ALL.VAV] -Entities.gmod_subway_81-502.Buttons.Main2.VUDToggle = @[Common.ALL.VUD] - -Entities.gmod_subway_81-502.Buttons.BPS.!BPSon = @[Common.BPS.On] -Entities.gmod_subway_81-502.Buttons.BPS.!BPSErr = @[Common.BPS.Err] -Entities.gmod_subway_81-502.Buttons.BPS.!BPSFail = @[Common.BPS.Fail] -Entities.gmod_subway_81-502.Buttons.NMnUAVA.!NMPressureLow = @[Commom.NMnUAVA.NMPressureLow] -Entities.gmod_subway_81-502.Buttons.NMnUAVA.!UAVATriggered = @[Commom.NMnUAVA.UAVATriggered] - -Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-502.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-502.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-502.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-502.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-502.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-502.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-502.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-502.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-502.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber3+ = @[Common.ALL.RouteNumber3+] -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-502.Buttons.Route.RouteNumber3- = @[Common.ALL.RouteNumber3-] - -Entities.gmod_subway_81-502.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-502.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-502.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-502.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_81-501 -Entities.gmod_subway_81-501.Buttons.AV.KPVUToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle] -Entities.gmod_subway_81-501.Buttons.AV.KSDToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KSDToggle] - -Entities.gmod_subway_81-501.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-501.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-501.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-501.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] -Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] -Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] -Entities.gmod_subway_81-501.Buttons.Main.VozvratRPSet = @[Common.ALL.VRP] -Entities.gmod_subway_81-501.Buttons.Main.KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-501.Buttons.Main.KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-501.Buttons.Main.KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-501.Buttons.Main.KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-501.Buttons.Main.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-501.Buttons.Main.VUDToggle = @[Common.ALL.VUD] - -Entities.gmod_subway_81-501.Buttons.HelperPanel.VDLSet = @[Common.ALL.KDL] - -Entities.gmod_subway_81-501.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-501.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-501.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-501.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-501.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-501.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-501.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-501.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-501.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-501.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-501.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-501.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-501.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-501.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-501.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-501.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_81-501.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-501.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] - -Entities.gmod_subway_81-501.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#Cameras: -Train.502.AV = Kapcsolók -Train.502.VBA = @[Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle] -Train.502.VRD = VRD -Train.502.RCARS = RC-ARS -Train.502.RCAV5 = RC-AV5 -Train.502.RCBPS = RC-BPS -Train.502.RCAV3 = RC-AV3 -Train.502.RCAV4 = RC-AV4 - -#Spawner: -Entities.gmod_subway_81-502.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-502.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-502.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-502.Spawner.EMAType.Name = @[Spawner.Common.EType] -Entities.gmod_subway_81-502.Spawner.EMAType.1 = @[Spawner.502.TypeNVL] -Entities.gmod_subway_81-502.Spawner.EMAType.2 = @[Spawner.502.TypeKVLO] -Entities.gmod_subway_81-502.Spawner.EMAType.3 = @[Spawner.502.TypeKVLN] -Entities.gmod_subway_81-502.Spawner.EWagons.Name = @[Spawner.502.EWagons] -Entities.gmod_subway_81-502.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-502.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-502.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-502.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-502.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/hu_702.lua b/lua/metrostroi_data/languages/hu_702.lua deleted file mode 100644 index f0cb0b1..0000000 --- a/lua/metrostroi_data/languages/hu_702.lua +++ /dev/null @@ -1,760 +0,0 @@ -return [[ -#D/E-based types - -[hu] - -#Cameras: -Train.702.Breakers1 = Akkumulátor kapcsoló -Train.702.Breakers2 = Világítás kapcsolók -Train.702.Breakers3 = Főmegszakító -Train.703.Breakers1 = Akkumulátor kapcsoló -Train.703.Breakers2 = Főkapcsoló, és világítás kapcsolók -Train.703.Parking = Rögzítőfék, UAVA -Train.703.RCARS = RC-1: ARS áramköri megszakító -Train.703.AVU = AVU blokk - -#Spawner -Spawner.707.Type = Panel típus -Spawner.707.Type1 = Régi + RRI -Spawner.707.Type2 = Új + ASNP -Spawner.710.RRI = Rádió-relé utastájékoztató - -#######Buttons########### -Train.Buttons.ParkingBrake = %d%% #NEW -Train.Buttons.EnginesVoltage = %d V #NEW -Train.Buttons.CanAB = AB mode is available #NEW -Train.Buttons.InAB = In AB mode #NEW - -#Common -Common.702.VZ1 = №1 pneumatikus szelep -Common.703.ParkingBrakeLeft = Rögzítőfék kiengedés -Common.703.ParkingBrakeRight = Rögzítőfék behúzás -Common.703.KSD = KSD: Ajtó reteszelő egység gomb -Common.703.SD = @[Common.502.SDW] -Common.703.VU1 = Fülkefűtés -Common.703.VU2 = Szükségvilágítás -Common.703.VU3 = Fülkevilágítás -Common.703.AV = Főmegszakító (nagyfeszültségű áramkörök) -Common.703.LOn = Világítás felkapcsolás -Common.703.LOff = Világítás lekapcsolás -Common.703.KRR = KRR: RK elfordítása az első pozícióba -Common.703.RUT = RUT beállítása (gyengített gyorsulás) -Common.707.SEQ = Reosztát vezérlő mozgás visszajelző -Common.707.TAH = TAH: Szükségmenet, ARS nélküli vezetéshez -Common.710.RK = Reosztát vezérlő középállásban - -Common.710.SAMMSchemeOff = SAMM Leállító gomb -Common.710.SAMMStart = SAMM Indító gomb -Common.710.SAMMReset = SAMM: Visszaállító gomb -Common.710.SAMMXTLamp = SAMM: Menet-/fékáramkörök kialakulása ATO által -Common.710.SAMMSignal1 = SAMM: @[Common.ALL.Unsused1] -Common.710.SAMMSignal2 = SAMM: @[Common.ALL.Unsused1] -Common.710.SAMMOn = SAMM: Kapcsoló (automatikus vonatvezérlés) -Common.710.SAMMUnit = SAMM: Vezető egység -Common.710.SAMMX2 = SAMM: X2 mód -Common.710.SAMMAhead = SAMM: Felzárkóztató mód -Common.710.SAMMAccept = SAMM: Engedély - -#gmod_subway_81-702 -Entities.gmod_subway_81-702.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-702.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-702.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-702.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-702.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_81-702.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-702.Buttons.VU.KU1Set = @[Common.703.LOn] -Entities.gmod_subway_81-702.Buttons.VU.KU2Set = @[Common.703.LOff] -Entities.gmod_subway_81-702.Buttons.MainB.KU7Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-702.Buttons.MainB.KU6Set = @[Common.ALL.KDP] -Entities.gmod_subway_81-702.Buttons.MainB.VRPSet = @[Common.ALL.VRP] -Entities.gmod_subway_81-702.Buttons.MainB.KU3Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-702.Buttons.MainP.VZSet = @[Common.702.VZ1] -Entities.gmod_subway_81-702.Buttons.KU9.KU9Set = @[Common.703.KSD] -Entities.gmod_subway_81-702.Buttons.KU5.KU5Set = @[Common.ALL.KRZD] -Entities.gmod_subway_81-702.Buttons.MainL.!RedRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-702.Buttons.MainL.!GreenRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-702.Buttons.MainL.!Blue = @[Common.703.SD] -Entities.gmod_subway_81-702.Buttons.VU.SNSet = @[Common.ALL.KSN] - -Entities.gmod_subway_81-702.Buttons.HelperPanel.KU10Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-702.Buttons.HelperPanel.KU8Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-702.Buttons.HelperPanel.R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-702.Buttons.HelperPanel.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-702.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_81-702.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_81-702.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_81-702.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_81-702.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_81-702.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_81-702.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_81-702.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_81-702.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] - -Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-702.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-702.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-702.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-702.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-702.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-702.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-702.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-702.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-702.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_81-702.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-702.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-702.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-702.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-702.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-702.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -Entities.gmod_subway_81-702.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] - -Entities.gmod_subway_81-702.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-702.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-702.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-702.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-702.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_81-702_int -Entities.gmod_subway_81-702_int.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-702_int.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-702_int.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-702_int.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-702_int.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_81-702_int.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-702_int.Buttons.VU.KU1Set = @[Common.703.LOn] -Entities.gmod_subway_81-702_int.Buttons.VU.KU2Set = @[Common.703.LOff] -Entities.gmod_subway_81-702_int.Buttons.MainB.KU7Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-702_int.Buttons.MainB.KU6Set = @[Common.ALL.KDP] -Entities.gmod_subway_81-702_int.Buttons.MainB.VRPSet = @[Common.ALL.VRP] -Entities.gmod_subway_81-702_int.Buttons.MainB.KU3Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-702_int.Buttons.KU9.KU9Set = @[Common.703.KSD] -Entities.gmod_subway_81-702_int.Buttons.KU5.KU5Set = @[Common.ALL.KRZD] -Entities.gmod_subway_81-702_int.Buttons.MainL.!RedRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-702_int.Buttons.MainL.!GreenRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-702_int.Buttons.MainL.!Blue = @[Common.703.SD] -Entities.gmod_subway_81-702_int.Buttons.VU.SNSet = @[Common.ALL.KSN] - -Entities.gmod_subway_81-702_int.Buttons.HelperPanel.KU10Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-702_int.Buttons.HelperPanel.KU8Toggle = @[Common.ALL.VUD2] - -Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-702_int.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-702_int.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-702_int.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-702_int.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-702_int.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-702_int.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-702_int.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-702_int.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-702_int.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_81-702_int.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] - -Entities.gmod_subway_81-702_int.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-702_int.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-702_int.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-702_int.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-702_int.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_81-703 -Entities.gmod_subway_81-703.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-703.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-703.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-703.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-703.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_81-703.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] #NEW -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] #NEW -Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] -Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] -Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_81-703.Buttons.Main.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_81-703.Buttons.Main.KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_81-703.Buttons.Main.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_81-703.Buttons.Main.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_81-703.Buttons.Main.KU7KToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-703.Buttons.Main.KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-703.Buttons.Main.KU6KToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-703.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-703.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-703.Buttons.Main.KU12Toggle = @[Common.703.RUT] -Entities.gmod_subway_81-703.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] - -Entities.gmod_subway_81-703.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-703.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-703.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_81-703.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_81-703.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_81-703.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_81-703.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_81-703.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_81-703.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_81-703.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_81-703.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] - -Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-703.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-703.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-703.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-703.Buttons.PassengerDoor2.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-703.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-703.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-703.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_81-703.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-703.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-703.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-703.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-703.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-703.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -Entities.gmod_subway_81-703.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] - -Entities.gmod_subway_81-703.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-703.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-703.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-703.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-703.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-703.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_81-703_int -Entities.gmod_subway_81-703_int.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_81-703_int.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_81-703_int.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_81-703_int.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_81-703_int.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_81-703_int.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-703_int.Buttons.Main.RRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-703_int.Buttons.Main.GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-703_int.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703_int.Buttons.Main.KU4Set = @[Common.703.LOn] -Entities.gmod_subway_81-703_int.Buttons.Main.KU5Set = @[Common.703.LOff] -Entities.gmod_subway_81-703_int.Buttons.Main.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_81-703_int.Buttons.Main.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_81-703_int.Buttons.Main.KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_81-703_int.Buttons.Main.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_81-703_int.Buttons.Main.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_81-703_int.Buttons.Main.KU7KToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-703_int.Buttons.Main.KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-703_int.Buttons.Main.KU6KToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-703_int.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-703_int.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-703_int.Buttons.Main.KU12Toggle = @[Common.703.RUT] -Entities.gmod_subway_81-703_int.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] - -Entities.gmod_subway_81-703_int.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-703_int.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] - -Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-703_int.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-703_int.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-703_int.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-703_int.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-703_int.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-703_int.Buttons.PassengerDoor2.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-703_int.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-703_int.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-703_int.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] = @[Common.ALL.LastStation-] - -Entities.gmod_subway_81-703_int.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] - -Entities.gmod_subway_81-703_int.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-703_int.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-703_int.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_81-703_int.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-703_int.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-703_int.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_ezh -Entities.gmod_subway_ezh.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_ezh.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_ezh.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_ezh.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_ezh.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_ezh.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_ezh.Buttons.VU.KU14Set = @[Common.ALL.KRP] -Entities.gmod_subway_ezh.Buttons.VU.KU15Set = @[Common.ALL.RMK] -Entities.gmod_subway_ezh.Buttons.KRR.KRRSet = @[Common.703.KRR] - -Entities.gmod_subway_ezh.Buttons.AVU.OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_ezh.Buttons.AVU.!AVULight = @[Common.ALL.LAVU] - -Entities.gmod_subway_ezh.Buttons.AV2.R_RadioToggle = @[Common.ALL.VASNP] -Entities.gmod_subway_ezh.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] -Entities.gmod_subway_ezh.Buttons.AV2.UOSToggle = @[Common.ALL.UOS] - -Entities.gmod_subway_ezh.Buttons.LampsALS1.!LNF = @[Common.ARS.04] -Entities.gmod_subway_ezh.Buttons.LampsALS1.!L0 = @[Common.ARS.0] -Entities.gmod_subway_ezh.Buttons.LampsALS1.!L40 = @[Common.ARS.40] -Entities.gmod_subway_ezh.Buttons.LampsALS1.!L60 = @[Common.ARS.60] -Entities.gmod_subway_ezh.Buttons.LampsALS1.!L70 = @[Common.ARS.70] -Entities.gmod_subway_ezh.Buttons.LampsALS1.!L80 = @[Common.ARS.80] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!LNF_2 = @[Common.ARS.04] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!L0_2 = @[Common.ARS.0] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!L40_2 = @[Common.ARS.40] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!L60_2 = @[Common.ARS.60] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!L70_2 = @[Common.ARS.70] -Entities.gmod_subway_ezh.Buttons.LampsALS2.!L80_2 = @[Common.ARS.80] - -Entities.gmod_subway_ezh.Buttons.AB1.AB1Set = @[Common.ARS.ABButton]@[Common.ARS.ABDriver] -Entities.gmod_subway_ezh.Buttons.AB2.AB2Set = @[Common.ARS.ABButton]@[Common.ARS.ABHelper] -Entities.gmod_subway_ezh.Buttons.KAH.KAHToggle = @[Common.707.TAH] -Entities.gmod_subway_ezh.Buttons.RC1.RC1Toggle = @[Common.ALL.RCARS] - -Entities.gmod_subway_ezh.Buttons.Lamps1.!AV = @[Common.ARS.AV] -Entities.gmod_subway_ezh.Buttons.Lamps1.!SEQ = @[Common.707.SEQ] -Entities.gmod_subway_ezh.Buttons.Lamps1.!ARS = @[Common.ARS.ARS] -Entities.gmod_subway_ezh.Buttons.Lamps1.!AB = @[Common.ARS.AB] -Entities.gmod_subway_ezh.Buttons.Lamps1.!SD = @[Common.703.SD] -Entities.gmod_subway_ezh.Buttons.Lamps1.!LSN = @[Common.ALL.SN] -Entities.gmod_subway_ezh.Buttons.Lamps1.!AV1 = @[Common.ARS.AV1] -Entities.gmod_subway_ezh.Buttons.Lamps1.!RRP = @[Common.ALL.RP] -Entities.gmod_subway_ezh.Buttons.Lamps1.!KT = @[Common.ARS.KT] -Entities.gmod_subway_ezh.Buttons.Lamps1.!VD = @[Common.ARS.VD] -Entities.gmod_subway_ezh.Buttons.Lamps1.!RS = @[Common.ARS.RS] -Entities.gmod_subway_ezh.Buttons.Lamps1.!LN = @[Common.ARS.LN] -Entities.gmod_subway_ezh.Buttons.Lamps2.!RRP2 = @[Common.ALL.RP] -Entities.gmod_subway_ezh.Buttons.Lamps2.!LPU2 = @[Common.707.SEQ] -Entities.gmod_subway_ezh.Buttons.Lamps2.!VD2 = @[Common.ARS.VD] -Entities.gmod_subway_ezh.Buttons.Lamps2.!KT2 = @[Common.ARS.KT] -Entities.gmod_subway_ezh.Buttons.Lamps2.!AB2 = @[Common.ARS.AB] -Entities.gmod_subway_ezh.Buttons.Lamps2.!SD2 = @[Common.703.SD] -Entities.gmod_subway_ezh.Buttons.Lamps2.!LN2 = @[Common.ARS.LN] -Entities.gmod_subway_ezh.Buttons.Lamps2.!LSN2 = @[Common.ALL.SN] - -Entities.gmod_subway_ezh.Buttons.Main1.1:KU16Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_ezh.Buttons.Main1.1:ALSFreqToggle = @[Common.ARS.Freq]@[Common.ARS.FreqD] -Entities.gmod_subway_ezh.Buttons.Main1.1:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU4Set = @[Common.703.LOn] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU5Set = @[Common.703.LOff] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU6KToggle = @[Common.ALL.KDLPK] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_ezh.Buttons.Main1.1:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_ezh.Buttons.Main1.1:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_ezh.Buttons.Main1.1:R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_ezh.Buttons.Main1.1:KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU16Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_ezh.Buttons.Main2.2:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_ezh.Buttons.Main2.2:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU4Set = @[Common.703.LOn] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU5Set = @[Common.703.LOff] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU6KToggle = @[Common.ALL.KDLPK] -Entities.gmod_subway_ezh.Buttons.Main2.2:ALSFreqToggle = @[Common.ARS.Freq]@[Common.ARS.FreqD] -Entities.gmod_subway_ezh.Buttons.Main2.2:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_ezh.Buttons.Main2.2:R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_ezh.Buttons.Main2.2:KU10Set = @[Common.ALL.KRZD] - -Entities.gmod_subway_ezh.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_ezh.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_ezh.Buttons.HelperPanel.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_ezh.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_ezh.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_ezh.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_ezh.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_ezh.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_ezh.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_ezh.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_ezh.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_ezh.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] -Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2USet = @[Common.IGLA.Button2Up] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2DSet = @[Common.IGLA.Button2Down] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLASR = @[Common.IGLA.IGLASR] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLARX = @[Common.IGLA.IGLARX] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] - -Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_ezh.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_ezh.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_ezh.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_ezh.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_ezh.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_ezh.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_ezh.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_ezh.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_ezh.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_ezh.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_ezh.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - - -Entities.gmod_subway_ezh.Buttons.Speedometer.!Speedometer = @[Common.ALL.Speedometer] - -Entities.gmod_subway_ezh.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_ezh.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_ezh.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_ezh.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_ezh.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_ezh.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_ezh1 -Entities.gmod_subway_ezh1.Buttons.Main.KU4Set = @[Common.703.LOn] -Entities.gmod_subway_ezh1.Buttons.Main.KU5Set = @[Common.703.LOff] -Entities.gmod_subway_ezh1.Buttons.Main.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_ezh1.Buttons.Main.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_ezh1.Buttons.Main.KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_ezh1.Buttons.Main.KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh1.Buttons.Main.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_ezh1.Buttons.Main.KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_ezh1.Buttons.Main.KU2Toggle = @[Common.ALL.VUD] - - -Entities.gmod_subway_ezh1.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_ezh1.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_ezh1.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_ezh1.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_ezh1.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_ezh1.Buttons.VU4.KU16Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_ezh1.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_ezh1.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh1.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] - -Entities.gmod_subway_ezh1.Buttons.Main.!GRP = @[Common.ALL.RRP] -Entities.gmod_subway_ezh1.Buttons.Main.!RRP = @[Common.ALL.GRP] -Entities.gmod_subway_ezh1.Buttons.Main.!SD = @[Common.703.SD] - -Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_ezh1.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_ezh1.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_ezh1.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_ezh1.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_ezh1.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh1.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh1.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_ezh1.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_ezh1.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_ezh1.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_ezh1.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_ezh1.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_ezh1.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_ezh1.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_ezh1.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -#gmod_subway_ez3 -Entities.gmod_subway_ezh3.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_ezh3.Buttons.RUM.RUMToggle = @[Common.ALL.RCARS] -Entities.gmod_subway_ezh3.Buttons.KRR.KRRSet = @[Common.703.KRR] - -Entities.gmod_subway_ezh3.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle = @[Common.ALL.VU] - - -Entities.gmod_subway_ezh3.Buttons.Main.SAMMSchemeOffSet = @[Common.710.SAMMSchemeOff] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMStartSet = @[Common.710.SAMMStart] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMResetSet = @[Common.710.SAMMReset] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMXTLamp = @[Common.710.SAMMXTLamp] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1 = @[Common.ALL.Unsused1] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2 = @[Common.ALL.Unsused1] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle = @[Common.710.SAMMOn] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMUnitToggle = @[Common.710.SAMMUnit] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMX2Toggle = @[Common.710.SAMMX2] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMAheadToggle = @[Common.710.SAMMAhead] -Entities.gmod_subway_ezh3.Buttons.Main.SAMMAcceptToggle = @[Common.710.SAMMAccept] -Entities.gmod_subway_ezh3.Buttons.Main.V1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_ezh3.Buttons.Main.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_ezh3.Buttons.Main.VU14Toggle = @[Common.ALL.VUS] -Entities.gmod_subway_ezh3.Buttons.Main.GLightsToggle = @[Common.ALL.GaugeLights] -Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_ezh3.Buttons.Main.V4Set = @[Common.703.LOn] -Entities.gmod_subway_ezh3.Buttons.Main.V5Set = @[Common.703.LOff] -Entities.gmod_subway_ezh3.Buttons.Main.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_ezh3.Buttons.Main.KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_ezh3.Buttons.Main.KBSet = @[Common.ARS.KB] -Entities.gmod_subway_ezh3.Buttons.Main.RKLamp = @[Common.710.RK] -Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle = @[Common.ALL.UNCh] -Entities.gmod_subway_ezh3.Buttons.Main.V2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle = @[Common.ALL.R_Radio] -Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_ezh3.Buttons.Main.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_ezh3.Buttons.Main.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_ezh3.Buttons.Main.PLightsToggle = @[Common.ALL.CabLights] -Entities.gmod_subway_ezh3.Buttons.Main.V10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_ezh3.Buttons.Main.PLightsToggle = @[Common.ALL.CabLights] -Entities.gmod_subway_ezh3.Buttons.Main.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_ezh3.Buttons.Main.KU12Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh3.Buttons.Main.KAHSet = @[Common.ALL.KAH] -Entities.gmod_subway_ezh3.Buttons.Main.KU15Set = @[Common.ALL.RMK] -Entities.gmod_subway_ezh3.Buttons.Main.KU10Set = @[Common.ALL.KRP] -Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle = @[Common.ALL.VPR] -Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_ezh3.Buttons.Main.!AnnPlay = @[Common.ALL.AnnPlay] - -Entities.gmod_subway_ezh3.Buttons.HelperPanel.V6Set = @[Common.ALL.KDL] -Entities.gmod_subway_ezh3.Buttons.HelperPanel.V3Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_ezh3.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_ezh3.Buttons.HelperPanel.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_ezh3.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_ezh3.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_ezh3.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_ezh3.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_ezh3.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_ezh3.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_ezh3.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_ezh3.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_ezh3.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] -Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2USet = @[Common.IGLA.Button2Up] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2DSet = @[Common.IGLA.Button2Down] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLASR = @[Common.IGLA.IGLASR] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLARX = @[Common.IGLA.IGLARX] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] - -Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_ezh3.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_ezh3.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_ezh3.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_ezh3.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_ezh3.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_ezh3.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -Entities.gmod_subway_ezh3.Buttons.Panel.!L04 = @[Common.ARS.04] -Entities.gmod_subway_ezh3.Buttons.Panel.!L0 = @[Common.ARS.0] -Entities.gmod_subway_ezh3.Buttons.Panel.!L40 = @[Common.ARS.40] -Entities.gmod_subway_ezh3.Buttons.Panel.!L60 = @[Common.ARS.60] -Entities.gmod_subway_ezh3.Buttons.Panel.!L70 = @[Common.ARS.70] -Entities.gmod_subway_ezh3.Buttons.Panel.!L80 = @[Common.ARS.80] - -Entities.gmod_subway_ezh3.Buttons.Panel.!LKT = @[Common.ARS.KT] -Entities.gmod_subway_ezh3.Buttons.Panel.!LSN = @[Common.ALL.SN] -Entities.gmod_subway_ezh3.Buttons.Panel.!LKVD = @[Common.ARS.VD] -Entities.gmod_subway_ezh3.Buttons.Panel.!LRP = @[Common.ALL.GRP] -Entities.gmod_subway_ezh3.Buttons.Panel.!LPU = @[Common.ALL.PU] -Entities.gmod_subway_ezh3.Buttons.Panel.!LSD = @[Common.703.SD] - -Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer = @[Common.ALL.Speedometer] -Entities.gmod_subway_ezh3.Buttons.Panel.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_ezh3.Buttons.Panel.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_ezh3.Buttons.Panel.!HighVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_ezh3.Buttons.Panel.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -#gmod_subway_em508t -Entities.gmod_subway_em508t.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_em508t.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle = @[Common.703.VU3] - -Entities.gmod_subway_em508t.Buttons.VU14.VU14Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_em508t.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_em508t.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_em508t.Buttons.Main.KU12Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508t.Buttons.Main.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_em508t.Buttons.Main.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_em508t.Buttons.Main.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_em508t.Buttons.Main.V2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_em508t.Buttons.Main.V1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_em508t.Buttons.Main.V4Set = @[Common.703.LOn] -Entities.gmod_subway_em508t.Buttons.Main.V5Set = @[Common.703.LOff] -Entities.gmod_subway_em508t.Buttons.Main.KU15Set = @[Common.ALL.RMK] -Entities.gmod_subway_em508t.Buttons.Main.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_em508t.Buttons.Main.V10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_em508t.Buttons.Main.!RedRP = @[Common.ALL.RRP] -Entities.gmod_subway_em508t.Buttons.Main.!GreenRP = @[Common.ALL.GRP] -Entities.gmod_subway_em508t.Buttons.Main.!SD = @[Common.703.SD] - -Entities.gmod_subway_em508t.Buttons.HelperPanel.V6Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508t.Buttons.HelperPanel.V3Toggle = @[Common.ALL.VUD2] - -Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_em508t.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_em508t.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_em508t.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508t.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_em508t.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_em508t.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_em508t.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_em508t.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_em508t.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -#Spawner: -Entities.gmod_subway_81-702.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-702.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-702.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-702.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-702.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -Entities.gmod_subway_81-702.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-702.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-702.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] - -Entities.gmod_subway_81-703.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-703.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-703.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-703.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-703.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -Entities.gmod_subway_81-703.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-703.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-703.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] - -Entities.gmod_subway_ezh.Spawner.TrainType.Name = @[Spawner.707.Type] -Entities.gmod_subway_ezh.Spawner.TrainType.1 = @[Spawner.707.Type1] -Entities.gmod_subway_ezh.Spawner.TrainType.2 = @[Spawner.707.Type2] -Entities.gmod_subway_ezh.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_ezh.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_ezh.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_ezh.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_ezh.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -Entities.gmod_subway_ezh.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_ezh.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_ezh.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_ezh.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_ezh.Spawner.EWagons.Name = @[Spawner.502.EWagons] - -Entities.gmod_subway_ezh3.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_ezh3.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_ezh3.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_ezh3.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_ezh3.Spawner.Announcer.1 = @[Spawner.710.RRI] -Entities.gmod_subway_ezh3.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_ezh3.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_ezh3.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_ezh3.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_ezh3.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/hu_717.lua b/lua/metrostroi_data/languages/hu_717.lua deleted file mode 100644 index 1308aec..0000000 --- a/lua/metrostroi_data/languages/hu_717.lua +++ /dev/null @@ -1,1218 +0,0 @@ -return [[ -#81-717 - -[hu] -#Cameras: -Train.717.Breakers = Automaták -Train.717.VB = Akkumulátor és RC -Train.717.VBD = VBD és UPPS - -Train.717.VRD = VRD -Train.717.SOSD = SOSD -Train.717.PUAV = PUAV -Train.717.PA = PA -Train.717.PAScreen = PA képernyő - -Train.714.Shunt = Tolatási vezérlőpanel, töltővezeték -#Spawner -Spawner.717.Line2 = Vonat az MPL-ből -Spawner.717.Line4 = Vonat a PBL-ből -Spawner.717.Line5 = Vonat a FPL-ből - -Spawner.717.Type = Vonat típus -Spawner.717.BodyType = Kocsiszekrény típus -Spawner.717.MVM = MVM -Spawner.717.LVZ = LVZ -Spawner.717.MaskType = Maszk típus -Spawner.717.CranType = Légfékkar típus -Spawner.717.LampType = Lámpa típus -Spawner.717.Lamp1 = LPV-02 -Spawner.717.Lamp2 = LLV-01 -Spawner.717.SeatType = Ülés típus -Spawner.717.ARS = ARS panel típus -Spawner.717.RingType = ARS csipogó típus -Spawner.717.BPSNType = BPSN típus - -#######Buttons########### -Train.Buttons.RZP = BPSN converter protection engaged - -#Common -Common.717.VBD = ASNP ajtó blokkoló kapcsoló -Common.717.UPPS = UPPS rendszer kapcsoló -Common.717.BPSN = BPSN: Vonat áramellátás -Common.717.ARS13V = ARS 13V: ARS stabilizált feszültségmérés -Common.717.Radio13V = Rádió stabilizált 13V feszültségmérés -Common.717.LVD = LVD: Első visszajelző lámpa (motorok üzemben) -Common.717.LHRK = LHRK: Második visszajelző lámpa (RK mozgásban) -Common.717.LST = LST: Hatodik visszajelző lámpa (braking light) -Common.717.KVC = LKVC: Tartalék áramkörök kontaktor visszajelző (nagyfeszültség nem elérhető) -Common.717.GLEB = GLEB: Frissítés elérhető jelző -Common.717.KVP = LKVP: Nagyfeszülségű átalakító vezérlés (BPSN) -Common.717.LSP = LSP: Tűz -Common.717.LEKK = LEKK: Elektromos doboz visszajelző -Common.717.LPU = LPU: Csökkentett RUT beállítás jelszó -Common.717.OtklBV = Gyors kapcsoló kikapcsolása (BV) -Common.717.OtklBVK = Gyors kapcsoló fedő -Common.717.ConverterProtection = Áramellátás védelem gomb -Common.717.VZ1 = VZ1: №1 szelep nyomásérték -Common.717.VL1 = Szellőztetés nélkül visszajelző -Common.717.V13 = Tartalék szellőztetés kapcsoló -Common.717.V11 = Első szellőztető egység kapcsoló -Common.717.V12 = Második szellőztető egység kapcsoló -Common.717.RZPL = RZP: Áramaellátás védelem relé -Common.717.VPAOn = VPA: Vonategység bekapcsolása -Common.717.VPAOff = VPA: Vonategység kikapcsolása -Common.717.VZD = VZD: Ajtó engedélyező (ajtózárás) - -Common.717.A53 = A53: Tartalék áramkörök kontaktora -Common.717.A56 = A56: Akkumulátor -Common.717.A54 = A54: Vonat vezérlés -Common.717.A17 = A17: Ajtók, tartalék fényszóró -Common.717.A44 = A44: Tartalék kontroller, tartalék kompresszor, tartalék ARS ellátás -Common.717.A39 = A39: Vonat indítása a tartalék kontrollerrel -Common.717.A70 = A70: RKTT auto mód -Common.717.A14 = A14: Tartalék indítás relé -Common.717.A74 = A74: Vonat védelem visszaállítás -Common.717.A26 = A26: Alacsony frekvenciájú erősítő -Common.717.AR63 = AР63: Rádióállomás -Common.717.AS1 = AС1: Vészhívó, ASNP -Common.717.A13 = A13: Ajtók állapota -Common.717.A21 = A21: Ajtók vezérlése -Common.717.A31 = A31: Bal oldali ajtók nyitása -Common.717.A32 = A32: Jobb oldali ajtók nyitása -Common.717.A16 = A16: Ajtók zárása -Common.717.A12 = A12: Tartalék ajtózárás - -Common.717.A24 = A24: Töltés vezérlés -Common.717.A49 = A49: Tartalék világítás -Common.717.A27 = A27: Utastér világítás, fülke világítás, fék visszajelzés, zöld RP lámpa -Common.717.A72 = A72: №1 szelep nyomásérték szinkronizálás -Common.717.A50 = A50: Világítás kontaktor -Common.717.AV3 = AВ3: Tartalék szellőtetés áramellátás -Common.717.AV3S = AВ3: Tartalék rádióállomás áramellátás -Common.717.AV2 = AВ2: Fő szellőztetés áramellátás -Common.717.AV4 = AВ4: Első szellőztető egység vezérlés -Common.717.AV5 = AВ5: Második szellőztető egység vezérlés -Common.717.AV6 = AВ6: Tartalék szellőtetés csoport vezérlés -Common.717.AV1 = AВ1: Szellőztetés vezérlés, szellőztetés visszajelzés, fülke szellőztetés -Common.717.A29 = A29: Fényszórók áramellátása -Common.717.A46 = A46: Tompított fényszóró -Common.717.A47 = A47: Távolsági fényszóró -Common.717.A71 = A71: RV-3 teljesítmény a kontrollerből és az ARS-ből -Common.717.A7 = A7: Jobb oldali zárjelző lámpa -Common.717.A9 = A9: Bal oldali zárjelző lámpa - -Common.717.A84 = @[Common.ALL.VU] -Common.717.A8 = A8: №2 pneumatikus szelep -Common.717.A52 = A52: Pneumatikus szelep az éberségi lenyomásával -Common.717.A19 = A19: Kocsi RV-3 áramellátás -Common.717.A48 = A48: Éberségi pedál, RPB, elsődleges ARS áramellátás -Common.717.A10 = A10: Kompresszor vezérlés -Common.717.A22 = A22: Kompresszor kontaktor -Common.717.A30 = A30: Reosztát kontroller szervómotor ellátás (SDRK) -Common.717.A1 = A1: Vezetés mód -Common.717.A2 = A2: Reosztát kontroller vezérlés -Common.717.A3 = A3: X-3 -Common.717.A4 = A4: Hátramenet -Common.717.A5 = A5: Előremenet -Common.717.A6 = A6: Fék -Common.717.A18 = A18: Védelem visszaállító -Common.717.A73 = A73: Hibajelzés -Common.717.A20 = A20: LK-2, LK-5 -Common.717.A25 = A25: Manuális fék - -Common.717.A11 = A11: Hátfalszekrény-, és fülke világítás -Common.717.A37 = A37: Áramellátás védelem visszaállítás -Common.717.A45 = A45: BPSN vezérlés -Common.717.A38 = A38: Kocsi áramkörök hiba visszajelző lámpa -Common.717.A51 = A51: KPP és KVP kontaktorok -Common.717.A65 = A65: Másodlagos BPSN átalakító -Common.717.A66 = A66: BV kikapcsolás -Common.717.A42 = A42: 75V ARS -Common.717.A43 = A43: 12V ARS -Common.717.A432 = A43: EPK vezéslés -Common.717.A41 = A41: №2 pneumatikus szelep ARS által -Common.717.A40 = A40: Féklámpa -Common.717.A75 = A75: Fülkefűtés -Common.717.A76 = A76: Tűzjelző (ASOTP) -Common.717.A60 = A60: Motorok üzemben visszajelző -Common.717.A58 = A58: KAH-1 -Common.717.A57 = A57: Reosztát kontroller forgási visszajelző -Common.717.A59 = A59: KAH-2 -Common.717.A28 = A28: Tirisztor szabályozó egység áramellátás -Common.717.A55 = A55: Reosztát kontroller szinkronizáló -Common.717.A68 = A68: Áramszedő papucs vezérlés -Common.717.A80 = A80: BV bekapcsolás -Common.717.A81 = A81: BV vezérlés - -Common.717.A58PU = A58: PUAV áramellátás -Common.717.A59PU = A59: PUAV vezérlés -Common.717.A61PU = A61: PUAV irányváltó kar vezérlés -Common.717.A58PA = A58: PA áramellátás -Common.717.A59PA = А59: @[Common.ALL.Unsused1] -Common.717.A61PA = A61: PA irányváltó kar vezérlés - -Common.717.A78 = A78: Első ajtók vezérlése -Common.717.ABK = A-VK: Fülke szellőztetés vezérlés - -Common.717.A81 = A81: BV vezérlés -Common.717.A23 = A23: Kompresszor indítás -Common.717.A15 = A15: Tartalék világítás -Common.717.AIS = AIS: Sebességérzékelő biztosíték - -Common.717.RC2 = RC-2: Automatikus vonatvezérlés áramkör leválasztó -Common.717.VAU = VAU: Automatikus vonatvezérlés kapcsoló - -Common.717.LampDV = DV: Forgásérzékelő hiba -Common.717.ARSL20 = Maximum megengedett sebesség 20 km/h -Common.717.ARSL40 = @[Common.ARS.40] -Common.717.ARSL60 = @[Common.ARS.60] -Common.717.ARSL70 = @[Common.ARS.70] -Common.717.ARSL80 = @[Common.ARS.80] - -Common.PUAV.K16 = LK16: Áramellátás lámpa (ajtó zárás) -Common.PUAV.OS = LOS: PUAV sebességkorlátozó mód -Common.PUAV.AVT = LAVT: PUAV automatikus vezérlés mód -Common.PUAV.RS = LRS: PUAV sebességszabályzó mód -Common.PUAV.KI1 = LKI1: Első PUAV alcsoport hibejelző -Common.PUAV.KI2 = LKI2: Második PUAV alcsoport hibejelző -Common.717.KH = KH3: Automatikus vezérlés X-3 mód -Common.717.KSZD = KSZD: Ajtózárás engedélyezés -Common.717.VAV = @[Common.ALL.VAV] - -Common.717.PAM = PA-M -Common.717.PAKSDM = PA-KSD-M - -Common.PA.P = P -Common.PA.F = F -Common.PA.Up = Fel -Common.PA.M = M -Common.PA.Left = Bal -Common.PA.Down = Le -Common.PA.Right = Jobb -Common.PA.Esc = Mégse -Common.PA.Enter = Enter - -Common.714.Start = Vontatómotorok indítása -Common.714.RV = Menetirány kapcsoló - -#gmod_subway_81-717 -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:UOSToggle = @[Common.ALL.UOS] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:UOSToggle = @[Common.ALL.UOS] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_mvm.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] - -Entities.gmod_subway_81-717_mvm.Buttons.VBD_C.1:VBDToggle = @[Common.717.VBD] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_R.2:VBDToggle = @[Common.717.VBD] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_C.1:UPPS_OnToggle = @[Common.717.UPPS] -Entities.gmod_subway_81-717_mvm.Buttons.VBD_R.2:UPPS_OnToggle = @[Common.717.UPPS] - -Entities.gmod_subway_81-717_mvm.Buttons.Block1.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.ARS13Set = @[Common.717.ARS13V] -Entities.gmod_subway_81-717_mvm.Buttons.Block1.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARSOch = @[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLHRK = @[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLN = @[Common.ARS.LN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLST = @[Common.717.LST] - -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARSOch = @[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLHRK = @[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.GLEB] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] - -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!60 = @[Common.ARS.60]\n@[Common.ARS.80] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!70 = @[Common.ARS.70]\n@[Common.717.LHRK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LEKK = @[Common.717.LEKK] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LPU = @[Common.717.LPU] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LRP = @[Common.ALL.RRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LKVC = @[Common.717.KVC] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LVD = @[Common.717.LVD] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LST = @[Common.717.LST] - -Entities.gmod_subway_81-717_mvm.Buttons.Block3.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-717_mvm.Buttons.Block3.!BCPressure = @[Common.ALL.BCPressure] - -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_81-717_mvm.Buttons.Block4.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] - -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_UNchToggle = @[Common.ALL.UNCh] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_ZSToggle = @[Common.ALL.ES] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_RadioToggle = @[Common.ALL.R_Radio] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_Program1Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.1:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.1:KVTRSet = @[Common.ARS.KVTR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.2:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.2:KVTRSet = @[Common.ARS.KVTR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!L1Light = @[Common.717.VL1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V13Toggle = @[Common.717.V13] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VUD1Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!GreenRPLight = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!AVULight = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!LKVPLight = @[Common.717.KVP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.!SPLight = @[Common.717.LSP] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklBVSet = @[Common.717.OtklBV] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OtklBVKToggle = @[Common.717.OtklBVK] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V11Toggle = @[Common.717.V11] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.V12Toggle = @[Common.717.V12] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ARSRToggle = @[Common.ALL.ARSR] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.ALSFreqToggle = @[Common.ARS.Freq] @[Common.ARS.FreqU] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_mvm.Buttons.Block5_6.VPToggle = @[Common.ARS.VP] - -Entities.gmod_subway_81-717_mvm.Buttons.Block7.L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KAHSet = @[Common.ALL.KAH] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KAHKToggle = @[Common.ALL.KAHK] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.!PNT = @[Common.ALL.BrT] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_mvm.Buttons.Block7.!PNW = @[Common.ALL.BrW] - -Entities.gmod_subway_81-717_mvm.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_mvm.Buttons.HVMeters.!HighVoltage = @[Common.ALL.HighVoltage] - -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_C.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel_R.1:R_Program2HSet = @[Common.ALL.Program2] - -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.SAB1Toggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.!VH1 = @[Common.BZOS.VH1] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_C.!VH2 = @[Common.BZOS.VH2] - -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:SAB1Toggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:!VH1 = @[Common.BZOS.VH1] -Entities.gmod_subway_81-717_mvm.Buttons.BZOS_R.1:!VH2 = @[Common.BZOS.VH2] - - -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_C.PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_C.PVK+ = @[Common.CabVent.PVK+] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_R.1:PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_mvm.Buttons.CabVent_R.1:PVK+ = @[Common.CabVent.PVK+] - -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA23 = @[Common.IGLA.Button23] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA3Set = @[Common.IGLA.Button3] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.IGLA4Set = @[Common.IGLA.Button4] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.!IGLAFire = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_C.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA23 = @[Common.IGLA.Button23] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA3Set = @[Common.IGLA.Button3] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:IGLA4Set = @[Common.IGLA.Button4] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:!IGLAFire = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons_R.1:!IGLAErr = @[Common.IGLA.IGLAErr] - -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A43Toggle = @[Common.717.A43] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A58Toggle = @[Common.717.A58] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A59Toggle = @[Common.717.A59] -Entities.gmod_subway_81-717_mvm.Buttons.AV_C.1:A28Toggle = @[Common.717.A28] - -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A43Toggle = @[Common.717.A43] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_mvm.Buttons.AV_R.2:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_mvm.Buttons.AV_S.A68Toggle = @[Common.717.A68] - -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-717_mvm.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-717_mvm.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-717_mvm.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle = @[Common.ALL.DriverValveDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] - -Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-717_mvm.Buttons.OtsekDoor1.OtsekDoor1 = @[Common.ALL.OtsekDoor1] -Entities.gmod_subway_81-717_mvm.Buttons.OtsekDoor2.OtsekDoor2 = @[Common.ALL.OtsekDoor2] -Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_81-717_mvm.Buttons.EPVDisconnect.EPKToggle = @[Common.ALL.EPV] -Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] - - -#gmod_subway_81-717_lvz -#Buttons: -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC2Toggle = @[Common.717.RC2] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC2Toggle = @[Common.717.RC2] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VAUToggle = @[Common.717.VAU] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VAUToggle = @[Common.717.VAU] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VRDToggle = @[Common.ARS.VRD] - -Entities.gmod_subway_81-717_lvz.Buttons.VRD_C.1:VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-717_lvz.Buttons.SOSD_C.1:VSOSDToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-717_lvz.Buttons.SOSD_R.2:VSOSDToggle = @[Common.ALL.VSOSD] - -Entities.gmod_subway_81-717_lvz.Buttons.Block1.VMKToggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.ARS13Set = @[Common.717.ARS13V] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.Radio13Set = @[Common.717.Radio13V] -Entities.gmod_subway_81-717_lvz.Buttons.Block1.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSOch = @[Common.ARS.N4] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSD1 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSD2 = @[Common.ALL.LSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLVD = @[Common.ALL.L1w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLHRK = @[Common.ALL.L2w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLST = @[Common.ALL.L6w] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLRD = @[Common.ARS.LRD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampRP = @[Common.ALL.RP] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLSN = @[Common.ALL.SN] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLKVD = @[Common.ARS.VD] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampLKT = @[Common.ARS.KT] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!LampDV = @[Common.717.LampDV] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!SpeedFact1 = @[Common.ALL.SpeedCurr] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!SpeedFact2 = @[Common.ALL.SpeedCurr] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL20 = @[Common.717.ARSL20] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL40 = @[Common.717.ARSL40] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL60 = @[Common.717.ARSL60] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL70 = @[Common.717.ARSL70] -Entities.gmod_subway_81-717_lvz.Buttons.Block2.!ARSL80 = @[Common.717.ARSL80] - -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!NMPressureLow2 = @[Commom.NMnUAVA.NMPressureLow] -Entities.gmod_subway_81-717_lvz.Buttons.Block3.!UAVATriggered2 = @[Commom.NMnUAVA.UAVATriggered] - -Entities.gmod_subway_81-717_lvz.Buttons.USS1.!NMPressureLow = @[Commom.NMnUAVA.NMPressureLow] -Entities.gmod_subway_81-717_lvz.Buttons.USS1.!UAVATriggered = @[Commom.NMnUAVA.UAVATriggered] - -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OK16 = @[Common.PUAV.K16] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OLRS = @[Common.PUAV.RS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OKI1 = @[Common.PUAV.KI1] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OKI2 = @[Common.PUAV.KI2] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OOS = @[Common.PUAV.OS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.!OAVT = @[Common.PUAV.AVT] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:KHSet = @[Common.717.KH] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:VAVToggle = @[Common.717.VAV] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVO.1:VZPToggle = @[Common.ALL.VZP] - -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!K16 = @[Common.PUAV.K16] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!OS = @[Common.PUAV.OS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!AVT = @[Common.PUAV.AVT] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!LRS = @[Common.PUAV.RS] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI1 = @[Common.PUAV.KI1] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI2 = @[Common.PUAV.KI2] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARSOch = @[Common.ARS.N4] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS0 = @[Common.ARS.0] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS40 = @[Common.ARS.40] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS60 = @[Common.ARS.60] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS70 = @[Common.ARS.70] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS80 = @[Common.ARS.80] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KHSet = @[Common.717.KH] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VAVToggle = @[Common.717.VAV] -Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VZPToggle = @[Common.ALL.VZP] - -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMPSet = @[Common.717.PAM]: @[Common.PA.P] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMFSet = @[Common.717.PAM]: @[Common.PA.F] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMUpSet = @[Common.717.PAM]: @[Common.PA.Up] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMMSet = @[Common.717.PAM]: @[Common.PA.M] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMLeftSet = @[Common.717.PAM]: @[Common.PA.Left] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMDownSet = @[Common.717.PAM]: @[Common.PA.Down] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMRightSet = @[Common.717.PAM]: @[Common.PA.Right] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM1Set = @[Common.717.PAM]: 1 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM2Set = @[Common.717.PAM]: 2 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM3Set = @[Common.717.PAM]: 3 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM4Set = @[Common.717.PAM]: 4 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM5Set = @[Common.717.PAM]: 5 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM6Set = @[Common.717.PAM]: 6 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM7Set = @[Common.717.PAM]: 7 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM8Set = @[Common.717.PAM]: 8 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM9Set = @[Common.717.PAM]: 9 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMEscSet = @[Common.717.PAM]: @[Common.PA.Esc] -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAM0Set = @[Common.717.PAM]: 0 -Entities.gmod_subway_81-717_lvz.Buttons.PAM1.PAMEnterSet = @[Common.717.PAM]: @[Common.PA.Enter] -Entities.gmod_subway_81-717_lvz.Buttons.PAM.2:KSZDSet = @[Common.717.KSZD] -Entities.gmod_subway_81-717_lvz.Buttons.PAM.2:VZPToggle = @[Common.ALL.VZP] - -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!OhSigLamp1 = @[Common.BZOS.Engaged] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!GreenRPLight1 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!AVULight1 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!LKVPLight1 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!SPLight1 = @[Common.717.LSP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:L_3Toggle = @[Common.ALL.PanelLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.1:OhrSigToggle = @[Common.BZOS.On] - -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!OhSigLamp2 = @[Common.BZOS.Engaged] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!KDLLight2 = @[Common.ALL.KDLL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!KDLRLight2 = @[Common.ALL.KDLL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!GreenRPLight2 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!RZPLight2 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!LKVPLight2 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OhrSigToggle = @[Common.BZOS.On] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VPAOnSet = @[Common.717.VPAOn] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:VPAOffSet = @[Common.717.VPAOff] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OVTToggle = @[Common.ALL.OVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.!AVULight2 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_kvr.2:L_3Toggle = @[Common.ALL.PanelLights] - -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old.!RZPLight1 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_VPRToggle = @[Common.ALL.VPR] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_GToggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:R_UPOToggle = @[Common.ALL.UPO] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KVTSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VZ1Set = @[Common.717.VZ1] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!SPLight3 = @[Common.717.LSP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!AVULight3 = @[Common.ALL.LAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VUD1Toggle = @[Common.717.VZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLRSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KDLRKToggle = @[Common.ALL.KDLK] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet = @[Common.ALL.KRZD] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.1:VPAOnSet = @[Common.717.VPAOn] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.1:VPAOffSet = @[Common.717.VPAOff] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OVTToggle = @[Common.ALL.VOVT] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_2Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:L_3Toggle = @[Common.ALL.PanelLights] - -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.1:KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_old.!1:PNT = @[Common.ALL.BrT] - -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:L_4Toggle = @[Common.ALL.VF] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VUSToggle = @[Common.ALL.VUS] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VADToggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:VAHToggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KRPSet = @[Common.ALL.KRP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:RezMKSet = @[Common.ALL.RMK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.!KDPLight2 = @[Common.ALL.KDPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KDPSet = @[Common.ALL.KDP] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.2:KDPKToggle = @[Common.ALL.KDPK] -Entities.gmod_subway_81-717_lvz.Buttons.Block7_kvr.!2:PNT = @[Common.ALL.BrT] - -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_C.VOPDSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VUD2Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VDLSet = @[Common.ALL.KDL] -Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel_R.1:VOPDSet = @[Common.ALL.KDPH] - -Entities.gmod_subway_81-717_lvz.Buttons.CabVent_C.PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-717_lvz.Buttons.CabVent_C.PVK+ = @[Common.CabVent.PVK+] - -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_N.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_N.!HighVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_O.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-717_lvz.Buttons.HVMeters_O.!HighVoltage = @[Common.ALL.HighVoltage] - -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A26Toggle = @[Common.717.A26] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AR63Toggle = @[Common.717.AR63] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AS1Toggle = @[Common.717.AS1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AV3Toggle = @[Common.717.AV3S] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A58Toggle = @[Common.717.A58PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A59Toggle = @[Common.717.A59PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A61Toggle = @[Common.717.A61PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A58Toggle = @[Common.717.A58PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A59Toggle = @[Common.717.A59PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:P:A61Toggle = @[Common.717.A61PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A9Toggle = @[Common.717.A9] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A06Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A43Toggle = @[Common.717.A432] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A76Toggle = @[Common.717.A76] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-717_lvz.Buttons.AV_C.1:A28Toggle = @[Common.717.A28] - -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A11Toggle = @[Common.717.A11] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A17Toggle = @[Common.717.A17] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A44Toggle = @[Common.717.A44] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A58Toggle = @[Common.717.A58PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A59Toggle = @[Common.717.A59PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A61Toggle = @[Common.717.A61PU] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A58Toggle = @[Common.717.A58PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A59Toggle = @[Common.717.A59PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.P:A61Toggle = @[Common.717.A61PA] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A21Toggle = @[Common.717.A21] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A84Toggle = @[Common.717.A84] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A78Toggle = @[Common.717.A78]@[Common.ALL.Unsused2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A48Toggle = @[Common.717.A48] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.ABKToggle = @[Common.717.ABK]@[Common.ALL.Unsused2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A29Toggle = @[Common.717.A29] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A46Toggle = @[Common.717.A46] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A47Toggle = @[Common.717.A47] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A43Toggle = @[Common.717.A432] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A42Toggle = @[Common.717.A42] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A74Toggle = @[Common.717.A74] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A73Toggle = @[Common.717.A73] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A71Toggle = @[Common.717.A71] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A41Toggle = @[Common.717.A41] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A75Toggle = @[Common.717.A75] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-717_lvz.Buttons.AV_R.A65Toggle = @[Common.717.A65] - -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A28Toggle = @[Common.717.A28] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A18Toggle = @[Common.717.A18] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A40Toggle = @[Common.717.A40] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AISToggle = @[Common.717.AIS] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AV3Toggle = @[Common.717.AV3S] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.AV1Toggle = @[Common.717.AV1] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A57Toggle = @[Common.717.A57] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A60Toggle = @[Common.717.A60] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A7Toggle = @[Common.717.A7] -Entities.gmod_subway_81-717_lvz.Buttons.AV_S.A9Toggle = @[Common.717.A9] - -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber3+ = @[Common.ALL.RouteNumber3+] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-717_lvz.Buttons.Route.RouteNumber3- = @[Common.ALL.RouteNumber3-] - -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle = @[Common.ALL.DriverValveDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] - -Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-717_lvz.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-717_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-717_lvz.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-717_lvz.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-717_lvz.Buttons.OtsekDoor1.OtsekDoor1 = @[Common.ALL.OtsekDoor1] -Entities.gmod_subway_81-717_lvz.Buttons.OtsekDoor2.OtsekDoor2 = @[Common.ALL.OtsekDoor2] -Entities.gmod_subway_81-717_lvz.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_81-717_lvz.Buttons.EPVDisconnect.EPKToggle = @[Common.ALL.EPV] -Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] - -#gmod_subway_81-714_mvm -Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-714_mvm.Buttons.couch_cap_o.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_mvm.Buttons.couch_cap.CouchCap = @[Common.ALL.CouchCap] - -Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle = @[Common.ALL.VB] - -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV2Toggle = @[Common.717.AV2] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV3Toggle = @[Common.717.AV3] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV4Toggle = @[Common.717.AV4] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV5Toggle = @[Common.717.AV5] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:AV6Toggle = @[Common.717.AV6] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-714_mvm.Buttons.AV_T.1:A18Toggle = @[Common.717.A18] - -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A23Toggle = @[Common.717.A23] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-714_mvm.Buttons.AV_S.1:A28Toggle = @[Common.717.A28] - -Entities.gmod_subway_81-714_mvm.Buttons.VU.A84Toggle = @[Common.ALL.VU] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.!RZPLight = @[Common.717.RZPL] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.OtklBVSet = @[Common.717.OtklBV] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.StartSet = @[Common.714.Start] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.RV- = @[Common.714.RV] @[Common.ALL.CCW] -Entities.gmod_subway_81-714_mvm.Buttons.Shunt.RV+ = @[Common.714.RV] @[Common.ALL.CW] -Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] - -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - -#gmod_subway_81-714_lvz -Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-714_lvz.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-714_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-714_lvz.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-714_lvz.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-714_lvz.Buttons.couch_cap_o.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-714_lvz.Buttons.couch_cap.CouchCap = @[Common.ALL.CouchCap] - -Entities.gmod_subway_81-714_lvz.Buttons.Battery.VBToggle = @[Common.ALL.VB] - -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A70Toggle = @[Common.717.A70] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A81Toggle = @[Common.717.A81] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A80Toggle = @[Common.717.A80] -Entities.gmod_subway_81-714_lvz.Buttons.AV_T.1:A18Toggle = @[Common.717.A18] - -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A53Toggle = @[Common.717.A53] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A56Toggle = @[Common.717.A56] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A54Toggle = @[Common.717.A54] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A24Toggle = @[Common.717.A24] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A39Toggle = @[Common.717.A39] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A23Toggle = @[Common.717.A23] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A14Toggle = @[Common.717.A14] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A13Toggle = @[Common.717.A13] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A31Toggle = @[Common.717.A31] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A32Toggle = @[Common.717.A32] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A16Toggle = @[Common.717.A16] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A12Toggle = @[Common.717.A12] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A49Toggle = @[Common.717.A49] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A15Toggle = @[Common.717.A15] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A27Toggle = @[Common.717.A27] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A50Toggle = @[Common.717.A50] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A8Toggle = @[Common.717.A8] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A52Toggle = @[Common.717.A52] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A19Toggle = @[Common.717.A19] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A10Toggle = @[Common.717.A10] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A22Toggle = @[Common.717.A22] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A30Toggle = @[Common.717.A30] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A1Toggle = @[Common.717.A1] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A2Toggle = @[Common.717.A2] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A3Toggle = @[Common.717.A3] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A4Toggle = @[Common.717.A4] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A5Toggle = @[Common.717.A5] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A6Toggle = @[Common.717.A6] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A72Toggle = @[Common.717.A72] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A38Toggle = @[Common.717.A38] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A20Toggle = @[Common.717.A20] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A25Toggle = @[Common.717.A25] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A37Toggle = @[Common.717.A37] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A55Toggle = @[Common.717.A55] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A45Toggle = @[Common.717.A45] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A66Toggle = @[Common.717.A66] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A51Toggle = @[Common.717.A51] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A65Toggle = @[Common.717.A65] -Entities.gmod_subway_81-714_lvz.Buttons.AV_S.1:A28Toggle = @[Common.717.A28] - -Entities.gmod_subway_81-714_lvz.Buttons.VU.A84Toggle = @[Common.ALL.VU] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.BPSNonToggle = @[Common.717.BPSN] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.!RZPLight = @[Common.717.RZPL] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.ConverterProtectionSet = @[Common.717.ConverterProtection] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.L_1Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.StartSet = @[Common.714.Start] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.VozvratRPSet = @[Common.ALL.VRPBV] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.RV- = @[Common.714.RV] @[Common.ALL.CCW] -Entities.gmod_subway_81-714_lvz.Buttons.Shunt.RV+ = @[Common.714.RV] @[Common.ALL.CW] -Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] - -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - -#Spawner: -Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_mvm.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] - - -Entities.gmod_subway_81-717_mvm_custom.Spawner.Type.Name = @[Spawner.717.Type] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.Name = @[Spawner.717.BodyType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.1 = @[Spawner.717.MVM] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BodyType.2 = @[Spawner.717.LVZ] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_mvm_custom.Spawner.MaskType.Name = @[Spawner.717.MaskType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Cran.Name = @[Spawner.717.CranType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.Name = @[Spawner.717.LampType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.2 = @[Spawner.717.Lamp1] -Entities.gmod_subway_81-717_mvm_custom.Spawner.LampType.3 = @[Spawner.717.Lamp2] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.Name = @[Spawner.717.SeatType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.2 = @[Common.Spawner.Old] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SeatType.3 = @[Common.Spawner.New] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.Name = @[Spawner.717.ARS] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.ARSType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.Name = @[Spawner.717.RingType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.7 = @[Common.Spawner.Type] 6 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.8 = @[Common.Spawner.Type] 7 -Entities.gmod_subway_81-717_mvm_custom.Spawner.RingType.9 = @[Common.Spawner.Type] 8 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.Name = @[Spawner.717.BPSNType] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.1 = @[Common.Spawner.Random] -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.2 = @[Common.Spawner.Type] 1 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.3 = @[Common.Spawner.Type] 2 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.4 = @[Common.Spawner.Type] 3 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.5 = @[Common.Spawner.Type] 4 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.6 = @[Common.Spawner.Type] 5 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.7 = @[Common.Spawner.Type] 6 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.8 = @[Common.Spawner.Type] 7 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.9 = @[Common.Spawner.Type] 8 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.10 = @[Common.Spawner.Type] 9 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.11 = @[Common.Spawner.Type] 10 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.12 = @[Common.Spawner.Type] 11 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.13 = @[Common.Spawner.Type] 12 -Entities.gmod_subway_81-717_mvm_custom.Spawner.BPSNType.14 = @[Common.Spawner.Type] 13 -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_mvm_custom.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] - -#Spawner: -Entities.gmod_subway_81-717_lvz.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-717_lvz.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-717_lvz.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-717_lvz.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-717_lvz.Spawner.Type.Name = @[Spawner.Common.EType] -Entities.gmod_subway_81-717_lvz.Spawner.Type.1 = @[Spawner.717.Line2] -Entities.gmod_subway_81-717_lvz.Spawner.Type.2 = @[Spawner.717.Line4] -Entities.gmod_subway_81-717_lvz.Spawner.Type.3 = @[Spawner.717.Line5] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-717_lvz.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] diff --git a/lua/metrostroi_data/languages/hu_718.lua b/lua/metrostroi_data/languages/hu_718.lua deleted file mode 100644 index 5d3cdf3..0000000 --- a/lua/metrostroi_data/languages/hu_718.lua +++ /dev/null @@ -1,708 +0,0 @@ -return [[ -#81-718 - -[hu] - -#######Buttons########### -#Cameras -Train.718.BUP = BUP -Train.718.PPZ = PPZ -Train.718.VPU = VPU - -Train.Buttons.LHalf = Dim #NEW (panel lighting) -Train.Buttons.LFull = Bright #NEW (panel lighting) -Train.Buttons.HL5 = Control circuits are not engaged #NEW -Train.Buttons.HL6 = Protection has tripped or low current #NEW -Train.Buttons.HL7 = BBE protection has tripped #NEW -#Common -Common.718.SB4 = Áramkörök kapcsolásának ellenőrzése -Common.718.SB5 = Vezérlés átadása (csengő) -Common.718.SB7K = Tolatási mód fedele -Common.718.SB7 = Tolatási mód -Common.718.SB12 = Automatikus kapcsolóegység engedélyezése -Common.718.SB13 = Automatikus kapcsolóegység letiltása -Common.718.SB15 = Vonat áramellátásának felkapcsolása -Common.718.SB16 = Vonat áramellátásának lekapcsolása - -Common.718.VTPR = Áramszedő papucs elengedő kapcsoló -Common.718.RX1 = Szükségmenet 1 -Common.718.KAH2 = KAH: Szükségmenet gombja az ARS nélküli vezetéshez -Common.718.RX2 = Szükségmenet 2 - -Common.718.SPULightStrength = Műszerfal visszajelzőinek fényessége - -Common.718.Heat = Fülke fűtés -Common.718.SBP22 = Áramkörök kapcsolásának ellenőrzése -Common.718.KDPR = Jobb ajtók szükségnyitása -Common.718.KDLR = Bal ajtók szükségnyitása -Common.718.UOS = UOS: Sebességkorlátozó egység (EPV/EPK nélküli vezetéshez) - -Common.718.KES = KES: Szükség kommunikációs vezérlés aktiválva -Common.718.CUV = CUV: Kocsi CUV nem működés visszajelző -Common.718.AIP = AIP: Tűzjelző -Common.718.RIP = RIP: Tűzjelző készenléti mód -Common.718.VS1 = VS1: Első szellőztető egység kikapcsolva -Common.718.VS2 = VS2: Második szellőztető egység kikapcsolva - -#Autobreakers -Common.718.SF51 = SF51: Elsődleges ARS áramellátás -Common.718.SF52 = SF52: Tartalék ARS áramellátás -Common.718.SF53 = SF53: ARS fékáramkörök -Common.718.SF60 = SF60: 12V ARS -Common.718.SF61 = SF61: 50V ARS(FMM1) -Common.718.SF77 = SF77: Fővezérlés szükségvezérlése -Common.718.SF78 = SF78: Szükségvezérlés tartalék vezérlése -Common.718.SF40 = SF40: №2 pneumatikus szelep ZPT által -Common.718.SF41 = SF41: Fényszórók -Common.718.SF8 = SF8: Ajtók vezérlése -Common.718.SF11 = SF11: Második szellőztető egység vezérlés -Common.718.SF10 = SF10: Első szellőztető egység vezérlés -Common.718.SF7 = SF7: BBE, kompresszor -Common.718.SF50 = SF50: Sebességmérő -Common.718.SF76 = SF76: Tűzjelző -Common.718.SF73 = SF73: Nyomkarima kenés -Common.718.SF3 = SF3: Kocsi áramellátás, CUV -Common.718.SF71 = SF71: Vészhívó -Common.718.SF63 = SF63: Rádióállomás -Common.718.SF54 = SF54: 50A-es utastájékoztató -Common.718.SF65 = SF65: Fülke szellőztetés -Common.718.SF55 = SF55: SOT-3 -Common.718.SF9 = SF9: Szükség vonat vezérlés -Common.718.SF6 = SF6: Elsődleges vonat vezérlés -Common.718.SF5 = SF5: BKCU vezérlés -Common.718.SF2 = SF2: Vonat áramellátás -Common.718.SF4 = SF4: BUV, PTTI, BCKA áramellátás -Common.718.SF27 = SF27: BVA áramellátás -Common.718.SF46 = SF46: BVA vezérlés -Common.718.SF12 = SF12: BBE bekapcsolás -Common.718.SF13 = SF13: BBE kikapcsolás -Common.718.SF45 = SF45: BBE, világítás kontaktor vezérlés -Common.718.SF16 = SF16: Utastéri világítás vezérlés -Common.718.SF44 = SF44: Utastéri világítás vezérlés áramellátás -Common.718.SF43 = SF43: Tartalék utastéri világítás -Common.718.SF14 = SF14: Vezérlőáramkörök kontaktorának áramellátása -Common.718.SF15 = SF15: Vezérlőáramkörök kontaktorának tartalék áramellátása -Common.718.SF25 = SF25: Áramszedő papucs elengedő vezérlés -Common.718.SF72 = SF72: Rögzítőfék vezérlés visszajelző -Common.718.SF56 = SF56: Kompresszor vezérlés -Common.718.SF29 = SF29: №1 pneumatikus szelep -Common.718.SF26 = SF26: №2 pneumatikus szelep -Common.718.SF42 = SF42: Algerjesztő -Common.718.SF18 = SF18: Bal oldali ajtók nyitása -Common.718.SF20 = SF20: Jobb oldali ajtók nyitása -Common.718.SF17 = SF17: Ajtózárás -Common.718.SF19 = SF19: Tartalék ajtózárás -Common.718.SF21 = SF21: Elsődleges kompresszor vezérlés -Common.718.SF22 = SF22: Tartalék kompresszor vezérlés -Common.718.SF34 = SF34: Első szellőztető egység áramellátás -Common.718.SF35 = SF35: Második szellőztető egység áramellátás -Common.718.SF23 = SF23: Első szellőztető egység kontaktor -Common.718.SF24 = SF24: Második szellőztető egység kontaktor - -#Names -Common.718.MVSU = BUP MVSU -Common.718.MLUP = BUP MLUP -Common.718.MUVS1 = BUP MUVS1 -Common.718.MUVS2 = BUP MUVS2 -Common.718.MP = BUP MP -Common.718.MS = BUP MS - -#A lot of indicators -Common.718.MVSUARSX = @[Common.718.MVSU]: Menet mód engedély a BKBD által -Common.718.MVSUARST = @[Common.718.MVSU]: Fék mód a BKBD által -Common.718.MVSUARSX3 = @[Common.718.MVSU]: X3 mód automatikus vonatvezérlő egység által -Common.718.MVSUARSX2 = @[Common.718.MVSU]: X2 mód automatikus vonatvezérlő egység által -Common.718.MVSUARSX1 = @[Common.718.MVSU]: X1 mód automatikus vonatvezérlő egység által -Common.718.MVSUARS0 = @[Common.718.MVSU]: 0 mód automatikus vonatvezérlő egység által -Common.718.MVSUARST1 = @[Common.718.MVSU]: T1 mód automatikus vonatvezérlő egység által -Common.718.MVSUARST2 = @[Common.718.MVSU]: T2 mód automatikus vonatvezérlő egység által -Common.718.MVSUARST3 = @[Common.718.MVSU]: T3 mód automatikus vonatvezérlő egység által -Common.718.MVSUKVX3 = @[Common.718.MVSU]: X3 mód kontroller által -Common.718.MVSUKVX2 = @[Common.718.MVSU]: X2 mód kontroller által -Common.718.MVSUKVX1 = @[Common.718.MVSU]: X1 mód kontroller által -Common.718.MVSUKV0 = @[Common.718.MVSU]: 0 mód kontroller által -Common.718.MVSUKVT1 = @[Common.718.MVSU]: T1 mód kontroller által -Common.718.MVSUKVT2 = @[Common.718.MVSU]: T2 mód kontroller által -Common.718.MVSUKVT3 = @[Common.718.MVSU]: T3 mód kontroller által -Common.718.MVSUKDV = @[Common.718.MVSU]: Ajtó állapot vezérlés -Common.718.MVSUBDV = @[Common.718.MVSU]: Ajtó vezérlés tiltó mód -Common.718.MVSUPB = @[Common.718.MVSU]: PB vagy ARS engedélyezve -Common.718.MVSUARS = @[Common.718.MVSU]: PB vagy ARS letiltva -Common.718.MVSUAVT = @[Common.718.MVSU]: Vészfék a BKBD által -Common.718.MVSUKVV = @[Common.718.MVSU]: "Előre" mód bemenet -Common.718.MVSUKVN = @[Common.718.MVSU]: "Hátra" mód bemenet -Common.718.MVSUPVU = @[Common.718.MVSU]: Menet-/fékáram nem alakult ki PVU által (UAVA) -Common.718.MVSURPB = @[Common.718.MVSU]: Menet-/fékáram nem alakult ki éberségi pedál relé által -Common.718.MVSUROT = @[Common.718.MVSU]: Menet-/fékáram nem alakult ki vontatás kikapcsol relé (ARS) által -Common.718.MVSUSOT = @[Common.718.MVSU]: Menet-/fékáram nem alakult ki fék visszajelző (EPV) által -Common.718.MLUPVP = @[Common.718.MLUP]: "Előre" mód -Common.718.MLUPNZ = @[Common.718.MLUP]: "Hátra" mód -Common.718.MLUPBUP = @[Common.718.MLUP]: BUP blokkolás -Common.718.MLUPV0 = @[Common.718.MLUP]: Állóhelyzet (№1 pneumatikus szelep) -Common.718.MLUPKU = @[Common.718.MLUP]: Kontroller hiba -Common.718.MLUPBAV = @[Common.718.MLUP]: Automatikus vonatvezérlő egység hiba -Common.718.MLUPKR = @[Common.718.MLUP]: Fordított kontroller hiba !!! -Common.718.MLUPARS = @[Common.718.MLUP]: ARS hiba -Common.718.MUVS1VP = @[Common.718.MUVS1]: "Előre" mód kimenet -Common.718.MUVS1NZ = @[Common.718.MUVS1]: "Hátra" mód kimenet -Common.718.MUVS1X = @[Common.718.MUVS1]: "Menet" mód kimenet -Common.718.MUVS1T = @[Common.718.MUVS1]: "Fék" mód kimenet -Common.718.MUVS1U1 = @[Common.718.MUVS1]: "Jelenlegi alapérték 1" mód kimenet -Common.718.MUVS1U2 = @[Common.718.MUVS1]: "Jelenlegi alapérték 2" mód kimenet -Common.718.MUVS1BAV = @[Common.718.MUVS1]: BAV blokkolás kimenet -Common.718.MUVS1BUP = @[Common.718.MUVS1]: BUV blokkolás kimenet -Common.718.MUVS20 = @[Common.718.MUVS2]: "Kifutás" mód kimenet -Common.718.MUVS2ZPT = @[Common.718.MUVS2]: №2 pneumatikus szelep -Common.718.MPMP = @[Common.718.MP]: Normál üzem -Common.718.MSMS = @[Common.718.MS]: Normál üzem - -Common.718.MPS = BUV MPS -Common.718.MALP1 = BUV MALP1 -Common.718.MVD = BUV MVD -Common.718.MALP2 = BUV MALP2 -Common.718.MGR = BUV MGR -Common.718.MLU = BUV MLU -Common.718.MUVK = BUV MUVK -Common.718.MIV = BUV MIV -Common.718.MUVK2 = BUV MUVK2 -Common.718.MPSPROV = @[Common.718.MPS]: "Üzem ellenőrzés" -Common.718.MPSAVR = @[Common.718.MPS]: "Menet/fék mód letiltva AVT által" -Common.718.MPSTARS = @[Common.718.MPS]: "BKBD ARS fék" -Common.718.MPSX = @[Common.718.MPS]: "Menet mód jelzés" -Common.718.MPSNZ = @[Common.718.MPS]: "Hátramenet" -Common.718.MPSNZR = @[Common.718.MPS]: "Szükség hátramenet" -Common.718.MPSVPR = @[Common.718.MPS]: "Szükség előremenet" -Common.718.MPSPROV0 = @[Common.718.MPS]: "Üzem ellenőrzés" -Common.718.MPSSK = @[Common.718.MPS]: "Sebesség" -Common.718.MPST = @[Common.718.MPS]: "Fék mód jelzés" -Common.718.MPSXR = @[Common.718.MPS]: "Szükségmenet 1" -Common.718.MPSU1 = @[Common.718.MPS]: "Jelenlegi alapérték 1" -Common.718.MPSU2 = @[Common.718.MPS]: "Jelenlegi alapérték 2" -Common.718.MPSVP = @[Common.718.MPS]: "Előre" -Common.718.MPSVZ = @[Common.718.MPS]: "Védelem visszaállító" -Common.718.MPSXM = @[Common.718.MPS]: "@[Common.718.SB7]" -Common.718.MPSU1R = @[Common.718.MPS]: "Szükségmenet 2" - -Common.718.MALP1MZK = @[Common.718.MALP1]: Azonnali tirisztor kapu blokkolás -Common.718.MALP1FM = @[Common.718.MALP1]: Túlfeszültség-védelem (magasabb, mint 1000V) -Common.718.MALP1400 = @[Common.718.MALP1]: 400V a harmadik sínben elérhető -Common.718.MALP150 = @[Common.718.MALP1]: Első armatúra egység áremerősség elérhető -Common.718.MALP1DIF = @[Common.718.MALP1]: Első és második egység áramerősség különbség -Common.718.MALP1650 = @[Common.718.MALP1]: Első armatúra egység áremerőssége magasabb, mint 650A -Common.718.MALP10 = @[Common.718.MALP1]: Nincs első armatúra egység áremerősség -Common.718.MALP1ARS = @[Common.718.MALP1]: Frekvencia indító hiba -Common.718.MALP1ITA = @[Common.718.MALP1]: Első egység fék tirisztor üzemzavar > 100A -Common.718.MALP1TR = @[Common.718.MALP1]: Reosztát áremerősség > 100A az első egységben -Common.718.MALP1SN = @[Common.718.MALP1]: Elektromos áramkörök nem alakultak ki -Common.718.MALP1VN = @[Common.718.MALP1]: Ventillátor hiba - - -Common.718.MVDOTK = @[Common.718.MVD]: Menet/fék mód hiba -Common.718.MVDRP = @[Common.718.MVD]: RP működés - -Common.718.MALP2MSU = @[Common.718.MALP1]: Azonnali jelenlegi alapérték visszaállító -Common.718.MALP2800 = @[Common.718.MALP1]: 800V a harmadik sínben elérhető -Common.718.MALP2975 = @[Common.718.MALP1]: Maximális feszültség a harmadik sínben -Common.718.MALP250 = @[Common.718.MALP1]: Második armatúra egység áremerősség elérhető -Common.718.MALP2650 = @[Common.718.MALP1]: Második armatúra egység áremerősség magasabb, mint 650A -Common.718.MALP20 = @[Common.718.MALP1]: Nincs második armatúra egység áremerősség -Common.718.MALP2BV = @[Common.718.MALP1]: BV működtetés -Common.718.MALP2ITB = @[Common.718.MALP1]: Második egység fék tirisztor üzemzavar > 100A - -Common.718.MGRTP1 = @[Common.718.MGR]: Első áramszedő papucs nyomva -Common.718.MGRTP3 = @[Common.718.MGR]: Harmadik áramszedő papucs nyomva -Common.718.MGRKHA = @[Common.718.MGR]: Első menetkontaktor egység üzemben -Common.718.MGRKTA = @[Common.718.MGR]: Első menetkontaktor egység üzemben -Common.718.MGRTP2 = @[Common.718.MGR]: Második áramszedő papucs nyomva -Common.718.MGRTP4 = @[Common.718.MGR]: Negyedik áramszedő papucs nyomva -Common.718.MGRKHB = @[Common.718.MGR]: Második menetkontaktor egység üzemben -Common.718.MGRKTB = @[Common.718.MGR]: Második menetkontaktor egység üzemben -Common.718.MGRKRV = @[Common.718.MGR]: Előremeneti irányváltó kontaktorok üzemben #reverse előrefele váltva -Common.718.MGRNV = @[Common.718.MGR]: PTTI ventillátor hiba -Common.718.MGRBV = @[Common.718.MGR]: BV üzemben -Common.718.MGRLK = @[Common.718.MGR]: Vonalkontaktor üzemben -Common.718.MGRKRN = @[Common.718.MGR]: Hátrameneti irányváltó kontaktorok üzemben #reverse hátrafele váltva - -Common.718.MLUAKT = @[Common.718.MLU]: Fék parancs -Common.718.MLUAXH = @[Common.718.MLU]: Menet parancs -Common.718.MLUAVP = @[Common.718.MLU]: Irányváltó előremenetben parancs engedélyezve -Common.718.MLUANZ = @[Common.718.MLU]: Irányváltó hátramenetben parancs engedélyezve -Common.718.MLUASS = @[Common.718.MLU]: Áramkör kialakult -Common.718.MLUAPV = @[Common.718.MLU]: Algerjesztő engedélyező parancs -Common.718.MLUALK = @[Common.718.MLU]: Vonalkontaktor engedélyező parancs - -Common.718.MUVK1V1 = @[Common.718.MUVK]: №1 pneumatikus szelep tekercs vezérlés -Common.718.MUVK1KT = @[Common.718.MUVK]: Fék kontaktor vezérlés -Common.718.MUVK1KH = @[Common.718.MUVK]: Menet kontaktor vezérlés -Common.718.MUVK1LK = @[Common.718.MUVK]: Vonalkontaktor vezérlés -Common.718.MUVK1PV = @[Common.718.MUVK]: Algerjesztő vezérlés -Common.718.MUVK1NZ = @[Common.718.MUVK]: Irányváltó hátramenetben vezérlés -Common.718.MUVK1SN = @[Common.718.MUVK]: Kocsi áramellátás áramkör nem alakult ki - -Common.718.MIV33 = @[Common.718.MIV]: Frekvencia indítás befejeződött -Common.718.MIVV1 = @[Common.718.MIV]: №1 pneumatikus szelep -Common.718.MIVSMA = @[Common.718.MIV]: Maximális első alapérték egység áremerősség jelzés -Common.718.MIVSMB = @[Common.718.MIV]: Maximális második alapérték egység áremerősség jelzés - -Common.718.MUVK2RTM = @[Common.718.MUVK2]: Minimális áramerősség relé vezérlés -Common.718.MUVK2RKT = @[Common.718.MUVK2]: Fék vezérlő relé vezérlés -Common.718.MUVK2RP = @[Common.718.MUVK2]: Védelem működtetés -Common.718.MUVK2OTK = @[Common.718.MUVK2]: Kocsi hiba -Common.718.MUVK275 = @[Common.718.MUVK2]: Tartalék BUV áramellátás -Common.718.MUVK2VP = @[Common.718.MUVK2]: Irányváltó előremenetben vezérlés - - -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF51Toggle = @[Common.718.SF51] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF52Toggle = @[Common.718.SF52] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF53Toggle = @[Common.718.SF53] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF60Toggle = @[Common.718.SF60] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF61Toggle = @[Common.718.SF61] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF77Toggle = @[Common.718.SF77] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF78Toggle = @[Common.718.SF78] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF40Toggle = @[Common.718.SF40] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF41Toggle = @[Common.718.SF41] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF8Toggle = @[Common.718.SF8] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF11Toggle = @[Common.718.SF11] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF10Toggle = @[Common.718.SF10] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF7Toggle = @[Common.718.SF7] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF50Toggle = @[Common.718.SF50] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF76Toggle = @[Common.718.SF76] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF73Toggle = @[Common.718.SF73] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF3Toggle = @[Common.718.SF3] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF71Toggle = @[Common.718.SF71] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF63Toggle = @[Common.718.SF63] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF54Toggle = @[Common.718.SF54] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF65Toggle = @[Common.718.SF65] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF55Toggle = @[Common.718.SF55] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF9Toggle = @[Common.718.SF9] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF6Toggle = @[Common.718.SF6] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF5Toggle = @[Common.718.SF5] -Entities.gmod_subway_81-718.Buttons.BackPPZ.SF2Toggle = @[Common.718.SF2] - -Entities.gmod_subway_81-718.Buttons.Main.SA5Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_81-718.Buttons.Main.SB3Set = @[Common.ALL.KRZD] -Entities.gmod_subway_81-718.Buttons.Main.SA7Toggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-718.Buttons.Main.SB1Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-718.Buttons.Main.SB2Set = @[Common.ALL.KDP] -Entities.gmod_subway_81-718.Buttons.Main.SA8Toggle = @[Common.ALL.VAH] -Entities.gmod_subway_81-718.Buttons.Main.SB4Set = @[Common.718.SB4] -Entities.gmod_subway_81-718.Buttons.Main.SB5Set = @[Common.718.SB5] -Entities.gmod_subway_81-718.Buttons.Main.SA9Toggle = @[Common.ALL.OAVU] -Entities.gmod_subway_81-718.Buttons.Main.SA13Toggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-718.Buttons.Main.SA14Toggle = @[Common.ALL.ARSR] -Entities.gmod_subway_81-718.Buttons.Main.SA15Toggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-718.Buttons.Main.SA2Toggle = @[Common.ALL.VAD] -Entities.gmod_subway_81-718.Buttons.Main.SB6KToggle = @[Common.ALL.KAHK] -Entities.gmod_subway_81-718.Buttons.Main.SB6Set = @[Common.ALL.KAH] -Entities.gmod_subway_81-718.Buttons.Main.SB7KToggle = @[Common.718.SB7K] -Entities.gmod_subway_81-718.Buttons.Main.SB7Set = @[Common.718.SB7] -Entities.gmod_subway_81-718.Buttons.Main.SB8Set = @[Common.ARS.KVTR] -Entities.gmod_subway_81-718.Buttons.Main.SB10Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-718.Buttons.Main.SB9Set = @[Common.ARS.KVT] -Entities.gmod_subway_81-718.Buttons.Main.SB11Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-718.Buttons.Main.SA16Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_81-718.Buttons.Main.SB12Set = @[Common.718.SB12] -Entities.gmod_subway_81-718.Buttons.Main.SB13Set = @[Common.718.SB13] -Entities.gmod_subway_81-718.Buttons.Main.SB14Set = @[Common.ALL.RMK] -Entities.gmod_subway_81-718.Buttons.Main.SB15Set = @[Common.718.SB15] -Entities.gmod_subway_81-718.Buttons.Main.SB16Set = @[Common.718.SB16] - - -Entities.gmod_subway_81-718.Buttons.Battery.RCToggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-718.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-718.Buttons.Battery.VTPR- = @[Common.718.VTPR] @[Common.ALL.CCW] -Entities.gmod_subway_81-718.Buttons.Battery.VTPR+ = @[Common.718.VTPR] @[Common.ALL.CW] - - -Entities.gmod_subway_81-718.Buttons.KR.SBR14Set = @[Common.718.RX1] -Entities.gmod_subway_81-718.Buttons.KR.SBR16Set = @[Common.718.KAH2] -Entities.gmod_subway_81-718.Buttons.KR.SBR15Set = @[Common.718.RX2] - - -Entities.gmod_subway_81-718.Buttons.VPU.SAP8Toggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-718.Buttons.VPU.SAP13Toggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-718.Buttons.VPU.SAP36Toggle = @[Common.ALL.ES] -Entities.gmod_subway_81-718.Buttons.VPU.SAP12Toggle = @[Common.720.AppLights] -Entities.gmod_subway_81-718.Buttons.VPU.SAP11Toggle = @[Common.718.Heat] -Entities.gmod_subway_81-718.Buttons.VPU.SAP23Toggle = @[Common.ARS.VP] -Entities.gmod_subway_81-718.Buttons.VPU.SAP9Toggle = @[Common.720.Vent1] -Entities.gmod_subway_81-718.Buttons.VPU.SAP10Toggle = @[Common.720.Vent2] -Entities.gmod_subway_81-718.Buttons.VPU.SAP3Toggle = @[Common.ALL.UNCh] -Entities.gmod_subway_81-718.Buttons.VPU.SAP39Toggle = @[Common.ALL.GCab] -Entities.gmod_subway_81-718.Buttons.VPU.SBP22Set = @[Common.718.SBP22] -Entities.gmod_subway_81-718.Buttons.VPU.SBP6Set = @[Common.718.KDPR] -Entities.gmod_subway_81-718.Buttons.VPU.SBP4Set = @[Common.718.KDLR] -Entities.gmod_subway_81-718.Buttons.VPU.SAP14Toggle = @[Common.ARS.Freq] @[Common.ARS.FreqU] -Entities.gmod_subway_81-718.Buttons.VPU.SAP26Toggle = @[Common.718.UOS] -Entities.gmod_subway_81-718.Buttons.VPU.SAP24Toggle = @[Common.ALL.VOVT] - -Entities.gmod_subway_81-718.Buttons.ARS.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-718.Buttons.ARS.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_81-718.Buttons.ARS.!SD = @[Common.ALL.LSD] -Entities.gmod_subway_81-718.Buttons.ARS.!KT = @[Common.ARS.KT] -Entities.gmod_subway_81-718.Buttons.ARS.!RS = @[Common.ARS.RS] -Entities.gmod_subway_81-718.Buttons.ARS.!SK = @[Common.ARS.LN] -Entities.gmod_subway_81-718.Buttons.ARS.!04 = @[Common.ARS.04] -Entities.gmod_subway_81-718.Buttons.ARS.!0 = @[Common.ARS.0] -Entities.gmod_subway_81-718.Buttons.ARS.!40 = @[Common.ARS.40] -Entities.gmod_subway_81-718.Buttons.ARS.!60 = @[Common.ARS.60] -Entities.gmod_subway_81-718.Buttons.ARS.!70 = @[Common.ARS.70] -Entities.gmod_subway_81-718.Buttons.ARS.!80 = @[Common.ARS.80] -Entities.gmod_subway_81-718.Buttons.ARS.!KES = @[Common.718.KES] -Entities.gmod_subway_81-718.Buttons.ARS.!ST = @[Common.ALL.BrT] -Entities.gmod_subway_81-718.Buttons.ARS.!CUV = @[Common.718.CUV] -Entities.gmod_subway_81-718.Buttons.ARS.!AVU = @[Common.ALL.LAVU] -Entities.gmod_subway_81-718.Buttons.ARS.!AIP = @[Common.718.AIP] -Entities.gmod_subway_81-718.Buttons.ARS.!RIP = @[Common.718.RIP] -Entities.gmod_subway_81-718.Buttons.ARS.!KVD = @[Common.ARS.VD] -Entities.gmod_subway_81-718.Buttons.ARS.!VS1 = @[Common.718.VS1] -Entities.gmod_subway_81-718.Buttons.ARS.!VS2 = @[Common.718.VS2] - -Entities.gmod_subway_81-718.Buttons.Right.SA1/1Toggle = @[Common.ALL.VF1] -Entities.gmod_subway_81-718.Buttons.Right.SA2/1Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_81-718.Buttons.Right.SA5/1Toggle = @[Common.718.SPULightStrength] -Entities.gmod_subway_81-718.Buttons.Right.SA4/1Toggle = @[Common.ALL.GaugeLights] - -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKDV = @[Common.718.MVSUKDV] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUBDV = @[Common.718.MVSUBDV] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUPB = @[Common.718.MVSUPB] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARS = @[Common.718.MVSUARS] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUAVT = @[Common.718.MVSUAVT] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVV = @[Common.718.MVSUKVV] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVN = @[Common.718.MVSUKVN] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVX3 = @[Common.718.MVSUKVX3] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVX2 = @[Common.718.MVSUKVX2] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVX1 = @[Common.718.MVSUKVX1] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKV0 = @[Common.718.MVSUKV0] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVT1 = @[Common.718.MVSUKVT1] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVT2 = @[Common.718.MVSUKVT2] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUKVT3 = @[Common.718.MVSUKVT3] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUPVU = @[Common.718.MVSUPVU] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSURPB = @[Common.718.MVSURPB] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARSX = @[Common.718.MVSUARSX] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARST = @[Common.718.MVSUARST] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARSX3 = @[Common.718.MVSUARSX3] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARSX2 = @[Common.718.MVSUARSX2] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARSX1 = @[Common.718.MVSUARSX1] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARS0 = @[Common.718.MVSUARS0] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARST1 = @[Common.718.MVSUARST1] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARST2 = @[Common.718.MVSUARST2] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUARST3 = @[Common.718.MVSUARST3] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUROT = @[Common.718.MVSUROT] -Entities.gmod_subway_81-718.Buttons.BUP_MVSU.MVSUSOT = @[Common.718.MVSUSOT] - -Entities.gmod_subway_81-718.Buttons.BUP_MUVS2.MUVS20 = @[Common.718.MUVS20] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS2.MUVS2ZPT = @[Common.718.MUVS2ZPT] - -Entities.gmod_subway_81-718.Buttons.BUP_MP.MPMP = @[Common.718.MPMP] -Entities.gmod_subway_81-718.Buttons.BUP_MS.MSMS = @[Common.718.MSMS] - -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1VP = @[Common.718.MUVS1VP] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1NZ = @[Common.718.MUVS1NZ] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1X = @[Common.718.MUVS1X] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1T = @[Common.718.MUVS1T] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1U1 = @[Common.718.MUVS1U1] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1U2 = @[Common.718.MUVS1U2] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1BAV = @[Common.718.MUVS1BAV] -Entities.gmod_subway_81-718.Buttons.BUP_MUVS1.MUVS1BUP = @[Common.718.MUVS1BUP] - -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPVP = @[Common.718.MLUPVP] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPNZ = @[Common.718.MLUPNZ] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPBUP = @[Common.718.MLUPBUP] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPV0 = @[Common.718.MLUPV0] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPKU = @[Common.718.MLUPKU] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPBAV = @[Common.718.MLUPBAV] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPKR = @[Common.718.MLUPKR] -Entities.gmod_subway_81-718.Buttons.BUP_MLUP.MLUPARS = @[Common.718.MLUPARS] - -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSPROV = @[Common.718.MPSPROV] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSAVR = @[Common.718.MPSAVR] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSTARS = @[Common.718.MPSTARS] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSX = @[Common.718.MPSX] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSNZ = @[Common.718.MPSNZ] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSNZR = @[Common.718.MPSNZR] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSPROV0 = @[Common.718.MPSPROV0] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSSK = @[Common.718.MPSSK] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPST = @[Common.718.MPST] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSXR = @[Common.718.MPSXR] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSU1 = @[Common.718.MPSU1] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSU2 = @[Common.718.MPSU2] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSVP = @[Common.718.MPSVP] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSVPR = @[Common.718.MPSVPR] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSVZ = @[Common.718.MPSVZ] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSXM = @[Common.718.MPSXM] -Entities.gmod_subway_81-718.Buttons.BUV_MPS.MPSU1R = @[Common.718.MPSU1R] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1MZK = @[Common.718.MALP1MZK] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1FM = @[Common.718.MALP1FM] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1400 = @[Common.718.MALP1400] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP150 = @[Common.718.MALP150] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1DIF = @[Common.718.MALP1DIF] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1650 = @[Common.718.MALP1650] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP10 = @[Common.718.MALP10] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1ARS = @[Common.718.MALP1ARS] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1ITA = @[Common.718.MALP1ITA] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1TR = @[Common.718.MALP1TR] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1SN = @[Common.718.MALP1SN] -Entities.gmod_subway_81-718.Buttons.BUV_MALP1.MALP1VN = @[Common.718.MALP1VN] -Entities.gmod_subway_81-718.Buttons.BUV_MVD.MVDOTK = @[Common.718.MVDOTK] -Entities.gmod_subway_81-718.Buttons.BUV_MVD.MVDRP = @[Common.718.MVDRP] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2MSU = @[Common.718.MALP2MSU] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2800 = @[Common.718.MALP2800] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2975 = @[Common.718.MALP2975] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP250 = @[Common.718.MALP250] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2650 = @[Common.718.MALP2650] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP20 = @[Common.718.MALP20] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2BV = @[Common.718.MALP2BV] -Entities.gmod_subway_81-718.Buttons.BUV_MALP2.MALP2ITB = @[Common.718.MALP2ITB] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRTP1 = @[Common.718.MGRTP1] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRTP3 = @[Common.718.MGRTP3] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKHA = @[Common.718.MGRKHA] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKTA = @[Common.718.MGRKTA] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRTP2 = @[Common.718.MGRTP2] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRTP4 = @[Common.718.MGRTP4] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKHB = @[Common.718.MGRKHB] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKTB = @[Common.718.MGRKTB] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKRV = @[Common.718.MGRKRV] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRNV = @[Common.718.MGRNV] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRBV = @[Common.718.MGRBV] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRLK = @[Common.718.MGRLK] -Entities.gmod_subway_81-718.Buttons.BUV_MGR.MGRKRN = @[Common.718.MGRKRN] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUAKT = @[Common.718.MLUAKT] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUAXH = @[Common.718.MLUAXH] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUAVP = @[Common.718.MLUAVP] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUANZ = @[Common.718.MLUANZ] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUASS = @[Common.718.MLUASS] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUAPV = @[Common.718.MLUAPV] -Entities.gmod_subway_81-718.Buttons.BUV_MLUA.MLUALK = @[Common.718.MLUALK] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1V1 = @[Common.718.MUVK1V1] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1KT = @[Common.718.MUVK1KT] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1KH = @[Common.718.MUVK1KH] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1LK = @[Common.718.MUVK1LK] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1PV = @[Common.718.MUVK1PV] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1NZ = @[Common.718.MUVK1NZ] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK1.MUVK1SN = @[Common.718.MUVK1SN] -Entities.gmod_subway_81-718.Buttons.BUV_MIV.MIV33 = @[Common.718.MIV33] -Entities.gmod_subway_81-718.Buttons.BUV_MIV.MIVV1 = @[Common.718.MIVV1] -Entities.gmod_subway_81-718.Buttons.BUV_MIV.MIVSMA = @[Common.718.MIVSMA] -Entities.gmod_subway_81-718.Buttons.BUV_MIV.MIVSMB = @[Common.718.MIVSMB] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK2RTM = @[Common.718.MUVK2RTM] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK2RKT = @[Common.718.MUVK2RKT] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK2RP = @[Common.718.MUVK2RP] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK2OTK = @[Common.718.MUVK2OTK] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK275 = @[Common.718.MUVK275] -Entities.gmod_subway_81-718.Buttons.BUV_MUVK2.MUVK2VP = @[Common.718.MUVK2VP] - -Entities.gmod_subway_81-718.Buttons.PVZ.SF4Toggle = @[Common.718.SF4] -Entities.gmod_subway_81-718.Buttons.PVZ.SF27Toggle = @[Common.718.SF27] -Entities.gmod_subway_81-718.Buttons.PVZ.SF46Toggle = @[Common.718.SF46] -Entities.gmod_subway_81-718.Buttons.PVZ.SF12Toggle = @[Common.718.SF12] -Entities.gmod_subway_81-718.Buttons.PVZ.SF13Toggle = @[Common.718.SF13] -Entities.gmod_subway_81-718.Buttons.PVZ.SF45Toggle = @[Common.718.SF45] -Entities.gmod_subway_81-718.Buttons.PVZ.SF16Toggle = @[Common.718.SF16] -Entities.gmod_subway_81-718.Buttons.PVZ.SF44Toggle = @[Common.718.SF44] -Entities.gmod_subway_81-718.Buttons.PVZ.SF43Toggle = @[Common.718.SF43] -Entities.gmod_subway_81-718.Buttons.PVZ.SF14Toggle = @[Common.718.SF14] -Entities.gmod_subway_81-718.Buttons.PVZ.SF15Toggle = @[Common.718.SF15] -Entities.gmod_subway_81-718.Buttons.PVZ.SF25Toggle = @[Common.718.SF25] -Entities.gmod_subway_81-718.Buttons.PVZ.SF72Toggle = @[Common.718.SF72] -Entities.gmod_subway_81-718.Buttons.PVZ.SF29Toggle = @[Common.718.SF29] -Entities.gmod_subway_81-718.Buttons.PVZ.SF26Toggle = @[Common.718.SF26] -Entities.gmod_subway_81-718.Buttons.PVZ.SF42Toggle = @[Common.718.SF42] -Entities.gmod_subway_81-718.Buttons.PVZ.SF18Toggle = @[Common.718.SF18] -Entities.gmod_subway_81-718.Buttons.PVZ.SF20Toggle = @[Common.718.SF20] -Entities.gmod_subway_81-718.Buttons.PVZ.SF17Toggle = @[Common.718.SF17] -Entities.gmod_subway_81-718.Buttons.PVZ.SF19Toggle = @[Common.718.SF19] -Entities.gmod_subway_81-718.Buttons.PVZ.SF21Toggle = @[Common.718.SF21] -Entities.gmod_subway_81-718.Buttons.PVZ.SF22Toggle = @[Common.718.SF22] -Entities.gmod_subway_81-718.Buttons.PVZ.SF34Toggle = @[Common.718.SF34] -Entities.gmod_subway_81-718.Buttons.PVZ.SF35Toggle = @[Common.718.SF35] -Entities.gmod_subway_81-718.Buttons.PVZ.SF23Toggle = @[Common.718.SF23] -Entities.gmod_subway_81-718.Buttons.PVZ.SF24Toggle = @[Common.718.SF24] - -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-718.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-718.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-718.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -Entities.gmod_subway_81-718.Buttons.HelperPanel.SA6Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_81-718.Buttons.HelperPanel.SA24Set = @[Common.ALL.KDL] -Entities.gmod_subway_81-718.Buttons.HelperPanel.SB20Set = @[Common.ALL.Program1] -Entities.gmod_subway_81-718.Buttons.HelperPanel.SB21Set = @[Common.ALL.Program2] - -Entities.gmod_subway_81-718.Buttons.BZOS.SAB1Toggle = @[Common.BZOS.On] -Entities.gmod_subway_81-718.Buttons.BZOS.!VH1 = @[Common.BZOS.VH1] -Entities.gmod_subway_81-718.Buttons.BZOS.!VH2 = @[Common.BZOS.VH2] - -Entities.gmod_subway_81-718.Buttons.CabVent.PVK- = @[Common.CabVent.PVK-] -Entities.gmod_subway_81-718.Buttons.CabVent.PVK+ = @[Common.CabVent.PVK+] - -Entities.gmod_subway_81-718.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-718.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-718.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-718.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-718.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-718.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-718.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-718.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-718.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-718.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-718.Buttons.OtsekDoor1.OtsekDoor1 = @[Common.ALL.OtsekDoor1] -Entities.gmod_subway_81-718.Buttons.OtsekDoor2.OtsekDoor2 = @[Common.ALL.OtsekDoor2] -Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.EPKToggle = @[Common.ALL.EPV] -Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle = @[Common.ALL.DriverValveDisconnect] - -Entities.gmod_subway_81-718.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] - -Entities.gmod_subway_81-718.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] -Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_81-718.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] - -Entities.gmod_subway_81-718.Buttons.HVMeters.!I13 = @[Common.ALL.EnginesCurrent1] -Entities.gmod_subway_81-718.Buttons.HVMeters.!I24 = @[Common.ALL.EnginesCurrent2] -Entities.gmod_subway_81-718.Buttons.HVMeters.!HVVoltage = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-718.Buttons.HVMeters.!BatteryCurrent = @[Common.ALL.BatteryCurrent] -Entities.gmod_subway_81-718.Buttons.PneumaticPanels.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-718.Buttons.PneumaticPanels.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-718.Buttons.Left.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSPROV = @[Common.718.MPSPROV] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSAVR = @[Common.718.MPSAVR] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSTARS = @[Common.718.MPSTARS] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSX = @[Common.718.MPSX] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSNZ = @[Common.718.MPSNZ] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSNZR = @[Common.718.MPSNZR] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSPROV0 = @[Common.718.MPSPROV0] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSSK = @[Common.718.MPSSK] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPST = @[Common.718.MPST] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSXR = @[Common.718.MPSXR] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSU1 = @[Common.718.MPSU1] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSU2 = @[Common.718.MPSU2] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSVP = @[Common.718.MPSVP] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSVPR = @[Common.718.MPSVPR] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSVZ = @[Common.718.MPSVZ] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSXM = @[Common.718.MPSXM] -Entities.gmod_subway_81-719.Buttons.BUV_MPS.MPSU1R = @[Common.718.MPSU1R] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1MZK = @[Common.718.MALP1MZK] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1FM = @[Common.718.MALP1FM] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1400 = @[Common.718.MALP1400] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP150 = @[Common.718.MALP150] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1DIF = @[Common.718.MALP1DIF] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1650 = @[Common.718.MALP1650] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP10 = @[Common.718.MALP10] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1ARS = @[Common.718.MALP1ARS] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1ITA = @[Common.718.MALP1ITA] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1TR = @[Common.718.MALP1TR] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1SN = @[Common.718.MALP1SN] -Entities.gmod_subway_81-719.Buttons.BUV_MALP1.MALP1VN = @[Common.718.MALP1VN] -Entities.gmod_subway_81-719.Buttons.BUV_MVD.MVDOTK = @[Common.718.MVDOTK] -Entities.gmod_subway_81-719.Buttons.BUV_MVD.MVDRP = @[Common.718.MVDRP] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2MSU = @[Common.718.MALP2MSU] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2800 = @[Common.718.MALP2800] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2975 = @[Common.718.MALP2975] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP250 = @[Common.718.MALP250] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2650 = @[Common.718.MALP2650] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP20 = @[Common.718.MALP20] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2BV = @[Common.718.MALP2BV] -Entities.gmod_subway_81-719.Buttons.BUV_MALP2.MALP2ITB = @[Common.718.MALP2ITB] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRTP1 = @[Common.718.MGRTP1] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRTP3 = @[Common.718.MGRTP3] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKHA = @[Common.718.MGRKHA] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKTA = @[Common.718.MGRKTA] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRTP2 = @[Common.718.MGRTP2] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRTP4 = @[Common.718.MGRTP4] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKHB = @[Common.718.MGRKHB] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKTB = @[Common.718.MGRKTB] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKRV = @[Common.718.MGRKRV] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRNV = @[Common.718.MGRNV] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRBV = @[Common.718.MGRBV] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRLK = @[Common.718.MGRLK] -Entities.gmod_subway_81-719.Buttons.BUV_MGR.MGRKRN = @[Common.718.MGRKRN] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUAKT = @[Common.718.MLUAKT] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUAXH = @[Common.718.MLUAXH] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUAVP = @[Common.718.MLUAVP] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUANZ = @[Common.718.MLUANZ] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUASS = @[Common.718.MLUASS] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUAPV = @[Common.718.MLUAPV] -Entities.gmod_subway_81-719.Buttons.BUV_MLUA.MLUALK = @[Common.718.MLUALK] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1V1 = @[Common.718.MUVK1V1] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1KT = @[Common.718.MUVK1KT] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1KH = @[Common.718.MUVK1KH] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1LK = @[Common.718.MUVK1LK] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1PV = @[Common.718.MUVK1PV] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1NZ = @[Common.718.MUVK1NZ] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK1.MUVK1SN = @[Common.718.MUVK1SN] -Entities.gmod_subway_81-719.Buttons.BUV_MIV.MIV33 = @[Common.718.MIV33] -Entities.gmod_subway_81-719.Buttons.BUV_MIV.MIVV1 = @[Common.718.MIVV1] -Entities.gmod_subway_81-719.Buttons.BUV_MIV.MIVSMA = @[Common.718.MIVSMA] -Entities.gmod_subway_81-719.Buttons.BUV_MIV.MIVSMB = @[Common.718.MIVSMB] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK2RTM = @[Common.718.MUVK2RTM] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK2RKT = @[Common.718.MUVK2RKT] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK2RP = @[Common.718.MUVK2RP] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK2OTK = @[Common.718.MUVK2OTK] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK275 = @[Common.718.MUVK275] -Entities.gmod_subway_81-719.Buttons.BUV_MUVK2.MUVK2VP = @[Common.718.MUVK2VP] -Entities.gmod_subway_81-719.Buttons.PVZ.SF4Toggle = @[Common.718.SF4] -Entities.gmod_subway_81-719.Buttons.PVZ.SF27Toggle = @[Common.718.SF27] -Entities.gmod_subway_81-719.Buttons.PVZ.SF46Toggle = @[Common.718.SF46] -Entities.gmod_subway_81-719.Buttons.PVZ.SF12Toggle = @[Common.718.SF12] -Entities.gmod_subway_81-719.Buttons.PVZ.SF13Toggle = @[Common.718.SF13] -Entities.gmod_subway_81-719.Buttons.PVZ.SF45Toggle = @[Common.718.SF45] -Entities.gmod_subway_81-719.Buttons.PVZ.SF16Toggle = @[Common.718.SF16] -Entities.gmod_subway_81-719.Buttons.PVZ.SF44Toggle = @[Common.718.SF44] -Entities.gmod_subway_81-719.Buttons.PVZ.SF43Toggle = @[Common.718.SF43] -Entities.gmod_subway_81-719.Buttons.PVZ.SF14Toggle = @[Common.718.SF14] -Entities.gmod_subway_81-719.Buttons.PVZ.SF15Toggle = @[Common.718.SF15] -Entities.gmod_subway_81-719.Buttons.PVZ.SF25Toggle = @[Common.718.SF25] -Entities.gmod_subway_81-719.Buttons.PVZ.SF72Toggle = @[Common.718.SF72] -Entities.gmod_subway_81-719.Buttons.PVZ.SF56Toggle = @[Common.718.SF56] -Entities.gmod_subway_81-719.Buttons.PVZ.SF29Toggle = @[Common.718.SF29] -Entities.gmod_subway_81-719.Buttons.PVZ.SF26Toggle = @[Common.718.SF26] -Entities.gmod_subway_81-719.Buttons.PVZ.SF42Toggle = @[Common.718.SF42] -Entities.gmod_subway_81-719.Buttons.PVZ.SF18Toggle = @[Common.718.SF18] -Entities.gmod_subway_81-719.Buttons.PVZ.SF20Toggle = @[Common.718.SF20] -Entities.gmod_subway_81-719.Buttons.PVZ.SF17Toggle = @[Common.718.SF17] -Entities.gmod_subway_81-719.Buttons.PVZ.SF19Toggle = @[Common.718.SF19] -Entities.gmod_subway_81-719.Buttons.PVZ.SF21Toggle = @[Common.718.SF21] -Entities.gmod_subway_81-719.Buttons.PVZ.SF22Toggle = @[Common.718.SF22] -Entities.gmod_subway_81-719.Buttons.PVZ.SF34Toggle = @[Common.718.SF34] -Entities.gmod_subway_81-719.Buttons.PVZ.SF35Toggle = @[Common.718.SF35] -Entities.gmod_subway_81-719.Buttons.PVZ.SF23Toggle = @[Common.718.SF23] -Entities.gmod_subway_81-719.Buttons.PVZ.SF24Toggle = @[Common.718.SF24] - -Entities.gmod_subway_81-719.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-719.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-719.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-719.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-719.Buttons.RearPneumatic.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-719.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_81-719.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_81-719.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-719.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-719.Buttons.couch_cap_o.CouchCap = @[Common.ALL.CouchCap] -Entities.gmod_subway_81-719.Buttons.couch_cap.CouchCap = @[Common.ALL.CouchCap] - -Entities.gmod_subway_81-719.Buttons.Battery.VBToggle = @[Common.ALL.VB] - -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW -#Spawner: -Entities.gmod_subway_81-718.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-718.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-718.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-718.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-718.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-718.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-718.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-718.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-718.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-718.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] diff --git a/lua/metrostroi_data/languages/hu_720.lua b/lua/metrostroi_data/languages/hu_720.lua deleted file mode 100644 index 5a3963c..0000000 --- a/lua/metrostroi_data/languages/hu_720.lua +++ /dev/null @@ -1,421 +0,0 @@ -return [[ -#81-720 - -[hu] - -#######Buttons########### -#Cameras -Train.720.CameraCond = Légkeverő, IGLA -Train.720.CameraPPZ = PPZ -Train.720.CameraPV = VPU -Train.720.CameraVityaz = SAU "Vityaz" -Train.720.CameraKRMH = KRMSH és UAVA csapok -Train.720.CameraPVZ = PVZ - -#Common -Common.720.SF1 = SF1: Fő áramellátás -Common.720.SF2 = SF2: Fővezérlés -Common.720.SF3 = SF3: Szükségirányítás -Common.720.SF4 = SF4: BARS -Common.720.SF5 = SF5: BUP (vonatvezérlő egység) -Common.720.SF6 = SF6: BKCU (vezéráramkör kommutátor egység) -Common.720.SF7 = SF7: PPO (ASOTP) -Common.720.SF8 = SF8: Utastájékoztató -Common.720.SF9 = SF9: Rádióállomás -Common.720.SF10 = SF10: Kocsi irány -Common.720.SF11 = SF11: Mozgás irány -Common.720.SF12 = SF12: Tompított fényszóró -Common.720.SF13 = SF13: Távolsági fényszóró -Common.720.SF14 = SF14: Zárjelző lámpák -Common.720.SF15 = SF15: @[Common.703.VU3] -Common.720.SF16 = SF16: @[Common.703.VU1] -Common.720.SF17 = SF17: Fülke légkondícionáló -Common.720.SF18 = SF18: Nyomkarima kenés -Common.720.SF19 = SF19: Légfékkar fő áramellátás -Common.720.SF20 = SF20: Légfékkar tartalék áramellátás -Common.720.SF21 = SF21: Ajtó nyitás -Common.720.SF22 = SF22: Ajtó zárás - -Common.720.SFV1 = SF1: Kocsi vezérlő áramkör áramellátás -Common.720.SFV2 = SF2: Kocsi vezérlőegység áramellátás -Common.720.SFV3 = SF3: Vontatómotor vezérlőegység áramellátás -Common.720.SFV4 = SF4: Vontatómotor vezérlőegység vezérlés -Common.720.SFV5 = SF5: Szükség vontatómotor vezérlőegység vezérlés -Common.720.SFV6 = SF6: BUTP áramellátás -Common.720.SFV7 = SF7: Áramellátás -Common.720.SFV8 = SF8: BV vezérlés -Common.720.SFV9 = SF9: BV áramellátás -Common.720.SFV10 = SF10: PPO (ASOTP PCBK) -Common.720.SFV11 = SF11: Kompresszor -Common.720.SFV12 = SF12: Ajtó zárás -Common.720.SFV13 = SF13: Jobb oldali ajtók nyitása -Common.720.SFV14 = SF14: Bal oldali ajtók nyitása -Common.720.SFV15 = SF15: Átjáróajtók -Common.720.SFV16 = SF16: Utastájékoztató -Common.720.SFV17 = SF17: Vészhívó -Common.720.SFV18 = SF18: @[Common.ALL.Unsused1] -Common.720.SFV19 = SF19: Utastéri világítás áramellátás -Common.720.SFV20 = SF20: Tartalék utastéri világítás -Common.720.SFV21 = SF21: Sebességérzékelő -Common.720.SFV22 = SF22: Rögzítőfék -Common.720.SFV23 = SF23: Első szellőztető egység vezérlés -Common.720.SFV24 = SF24: Második szellőztető egység vezérlés -Common.720.SFV25 = SF25: Első szellőztető egység áramellátás -Common.720.SFV26 = SF26: Második szellőztető egység áramellátás -Common.720.SFV27 = SF27: Gerjesztő áramellátás -Common.720.SFV28 = SF28: Töltő kondenzátor áramellátás -Common.720.SFV29 = SF29: Áramszedő papucsok -Common.720.SFV30 = SF30: Vonal sémák és csipogó -Common.720.SFV31 = SF31: @[Common.ALL.Unsused1] -Common.720.SFV32 = SF32: @[Common.ALL.Unsused1] -Common.720.SFV33 = SF33: @[Common.ALL.Unsused1] - -Common.720.VentCMode = Szellőztetés mód -Common.720.VentHMode+ = Fűtés erejének növelése -Common.720.VentHMode- = Fűtés erejének csökkentése -Common.720.VentSMode- = Fülke szellőztető erejének növelése -Common.720.VentSMode+ = Fülke szellőztető erejének csökkentése - -Common.720.Pant1 = Első áramszedő papucs egység elengedés -Common.720.Pant2 = Második áramszedő papucs egység elengedés -Common.720.Vent1 = Első szellőztető egység -Common.720.Vent2 = Második szellőztető egység -Common.720.TorecDoors = Átjáróajtók -Common.720.BBER = Tartalék BBE -Common.720.BBE = BBE: Áramellátás -Common.720.CabLightStrength = Fülkevilágítás fényerősség -Common.720.AppLights = Hátfalszekrény világítás -Common.720.BARSBlock = Hibás BARS (ARS egység) blokkoló - -Common.720.Accel = Gyorsítás -Common.720.Forward = Előremenet -Common.720.Backward = Hátramenet -Common.720.Stand = Álló pozíció -Common.720.Ticker = Csipogó -Common.720.KAH = KAH: Tartalék BARS menet mód -Common.720.KAHK = @[Common.ALL.KAHK] -Common.720.ALS = ALS: ARS jelző üzemmód kapcsoló (ARS kikapcsolás) -Common.720.ALSK = ALS fedél -Common.720.FDepot = Kocsiszínből indulás -Common.720.HVoltage = Nincs nagyfeszültség -Common.720.PassScheme = Információs panel #old translation: "Vonal sémák" -Common.720.EmergencyCompressor = Tartalék kompresszor indítás gomb -Common.720.EnableBV = BV bekapcsolása -Common.720.DisableBV = BV kikapcsolása -Common.720.Ring = Vezérlés átvitele (csengő) -Common.720.R_Announcer = Utastájékoztató kihangosítása az utastérben -Common.720.R_Line = Vezető mikrofonjának engedélyezése -Common.720.R_Emer = Vészhívó -Common.720.R_Program1 = Utastájékoztatás lejátszása (program 1) -Common.720.EnableBVEmer = Tartalék BV engedélyezése -Common.720.EmergencyControls = Vezérlő áramkör megszakító kapcsoló -Common.720.Wiper = Ablaktörlők bekapcsolása - -Common.720.AccelRate = "Lejtő" mód engedélyezése -Common.720.EBrakeAdd = Segéd fék erejének növelése -Common.720.EBrakeRelease = Segéd fék erejének csökkentése -Common.720.EBrakeToggle = Segéd fék engedélyezése -Common.720.EmergencyBrake = Vészfék engedélyezése -Common.720.DoorClose = Ajtók zárása -Common.720.AttentionMessage = Üzenetnyugtázó gomb - - -Common.720.DoorSelectL = Bal oldali ajtók kiválasztása -Common.720.DoorSelectR = Jobb oldali ajtók kiválasztása -Common.720.DoorBlock = Ajtó vezérlés nélküli vezetés -Common.720.KDL = Bal oldali ajtók nyitása -Common.720.KDP = Jobb oldali ajtók nyitása - -Common.Vityaz.F1 = Vityaz: F1 -Common.Vityaz.F2 = Vityaz: Kövezkező oldal -Common.Vityaz.F3 = Vityaz: Előző oldal -Common.Vityaz.F4 = Vityaz: Elsődleges mód -Common.Vityaz.1 = Vityaz: 1 -Common.Vityaz.4 = Vityaz: 4 -Common.Vityaz.7 = Vityaz: 7 -Common.Vityaz.2 = Vityaz: 2 -Common.Vityaz.5 = Vityaz: 5 -Common.Vityaz.8 = Vityaz: 8 -Common.Vityaz.0 = Vityaz: 0 -Common.Vityaz.3 = Vityaz: 3 -Common.Vityaz.6 = Vityaz: 6 -Common.Vityaz.9 = Vityaz: 9 -Common.Vityaz.F5 = Vityaz: ZV -Common.Vityaz.F6 = Vityaz: Fel\Sebesség -Common.Vityaz.F7 = Vityaz: Le\Áramkörök -Common.Vityaz.F8 = Vityaz: Enter\Kocsi berendezés -Common.Vityaz.F9 = Vityaz: Kiválaszt\Kocsi berendezés irányító - -Common.720.EmerX1 = Tartalék X1 menet mód -Common.720.EmerX2 = Tartalék X2 menet mód -Common.720.EmerCloseDoors = Szükség ajtózárás -Common.720.EmergencyDoors = Szükség ajtó vezérlés engedélyezése -Common.720.BRU = BRU: Nagyfeszültségű leválasztó - -#gmod_subway_81-720 -#Buttons: - -Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode- = @[Common.720.VentCMode] @[Common.ALL.CCW] -Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+ = @[Common.720.VentCMode] @[Common.ALL.CW] -Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+ = @[Common.720.VentHMode+] -Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode- = @[Common.720.VentHMode-] -Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode- = @[Common.720.VentSMode-] -Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+ = @[Common.720.VentSMode+] - -Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set = @[Common.720.EmerX1] -Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set = @[Common.720.EmerX2] -Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet = @[Common.720.EmerCloseDoors] -Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle = @[Common.720.EmergencyDoors] - -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set = @[Common.Vityaz.F1] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set = @[Common.Vityaz.F2] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set = @[Common.Vityaz.F3] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set = @[Common.Vityaz.F4] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set = @[Common.Vityaz.1] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set = @[Common.Vityaz.4] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set = @[Common.Vityaz.7] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set = @[Common.Vityaz.2] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set = @[Common.Vityaz.5] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set = @[Common.Vityaz.8] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set = @[Common.Vityaz.0] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set = @[Common.Vityaz.3] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set = @[Common.Vityaz.6] -Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set = @[Common.Vityaz.9] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set = @[Common.Vityaz.F5] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set = @[Common.Vityaz.F6] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set = @[Common.Vityaz.F7] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set = @[Common.Vityaz.F8] -Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set = @[Common.Vityaz.F9] - -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle = @[Common.720.SF1] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle = @[Common.720.SF2] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle = @[Common.720.SF3] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle = @[Common.720.SF4] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle = @[Common.720.SF5] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle = @[Common.720.SF6] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle = @[Common.720.SF7] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle = @[Common.720.SF8] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle = @[Common.720.SF9] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle = @[Common.720.SF10] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle = @[Common.720.SF11] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle = @[Common.720.SF12] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle = @[Common.720.SF13] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle = @[Common.720.SF14] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle = @[Common.720.SF15] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle = @[Common.720.SF16] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle = @[Common.720.SF17] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle = @[Common.720.SF18] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle = @[Common.720.SF19] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle = @[Common.720.SF20] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle = @[Common.720.SF21] -Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle = @[Common.720.SF22] - -Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle = @[Common.720.Pant1] -Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle = @[Common.720.Pant2] -Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle = @[Common.720.Vent1] -Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle = @[Common.720.Vent2] -Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle = @[Common.ALL.CabLights] -Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle = @[Common.ALL.VF1] -Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle = @[Common.720.TorecDoors] -Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle = @[Common.720.BBER] -Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle = @[Common.720.BBE] -Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle = @[Common.ALL.MK] -Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle = @[Common.720.CabLightStrength] -Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle = @[Common.720.AppLights] -Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock- = @[Common.720.BARSBlock] @[Common.ALL.CCW] -Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+ = @[Common.720.BARSBlock] @[Common.ALL.CW] -Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle = @[Common.ARS.Freq] - -Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed = @[Common.ALL.LSD] -Entities.gmod_subway_81-720.Buttons.PUU.StandToggle = @[Common.720.Stand] @[Common.ALL.Unsused2] -Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle = @[Common.720.Ticker] -Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle = @[Common.720.KAH] -Entities.gmod_subway_81-720.Buttons.PUU.KAHkToggle = @[Common.720.KAHK] -Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle = @[Common.720.ALS] -Entities.gmod_subway_81-720.Buttons.PUU.ALSkToggle = @[Common.720.ALSK] -Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle = @[Common.720.FDepot] @[Common.ALL.Unsused2] -Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage = @[Common.720.HVoltage] -Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle = @[Common.720.PassScheme] -Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet = @[Common.720.EmergencyCompressor] -Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet = @[Common.720.EnableBV] -Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet = @[Common.720.DisableBV] -Entities.gmod_subway_81-720.Buttons.PUU.RingSet = @[Common.720.Ring] -Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set = @[Common.ALL.Program2] -Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle = @[Common.720.R_Announcer] -Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle = @[Common.720.R_Line] -Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet = @[Common.720.R_Emer] -Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set = @[Common.720.R_Program1] -Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet = @[Common.720.EnableBVEmer] -Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle = @[Common.720.EmergencyControls] -Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle = @[Common.720.Wiper] -Entities.gmod_subway_81-720.Buttons.PUU.!VDop = @[Common.ALL.SpeedAccept] -Entities.gmod_subway_81-720.Buttons.PUU.!VFact = @[Common.ALL.SpeedCurr] -Entities.gmod_subway_81-720.Buttons.PUU.!VPred = @[Common.ALL.SpeedAttent] -Entities.gmod_subway_81-720.Buttons.PUU.!VDop2 = @[Common.ALL.SpeedAccept] -Entities.gmod_subway_81-720.Buttons.PUU.!Acc = @[Common.720.Accel] -Entities.gmod_subway_81-720.Buttons.PUU.!Forw = @[Common.720.Forward] -Entities.gmod_subway_81-720.Buttons.PUU.!Back = @[Common.720.Backward] - -Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet = @[Common.720.AccelRate] -Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet = @[Common.720.EBrakeAdd] -Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet = @[Common.720.EBrakeRelease] -Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle = @[Common.720.EBrakeToggle] -Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle = @[Common.720.EmergencyBrake] -Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle = @[Common.720.DoorClose] -Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet = @[Common.720.AttentionMessage] -Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet = @[Common.ARS.KB] -Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet = @[Common.ARS.KVT] -Entities.gmod_subway_81-720.Buttons.PUR.HornBSet = @[Common.ALL.Horn] -Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet = @[Common.720.KDP] -Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp = @[Common.ALL.KDPL] - -Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle = @[Common.720.DoorSelectL] -Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle = @[Common.720.DoorSelectR] -Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle = @[Common.720.DoorBlock] -Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp = @[Common.ALL.KDLL] -Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet = @[Common.720.KDL] - -Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle = @[Common.720.SFV1] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle = @[Common.720.SFV2] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle = @[Common.720.SFV3] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle = @[Common.720.SFV4] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle = @[Common.720.SFV5] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle = @[Common.720.SFV6] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle = @[Common.720.SFV7] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle = @[Common.720.SFV8] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle = @[Common.720.SFV9] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle = @[Common.720.SFV10] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle = @[Common.720.SFV11] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle = @[Common.720.SFV12] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle = @[Common.720.SFV13] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle = @[Common.720.SFV14] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle = @[Common.720.SFV15] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle = @[Common.720.SFV16] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle = @[Common.720.SFV17] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle = @[Common.720.SFV18] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle = @[Common.720.SFV19] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle = @[Common.720.SFV20] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle = @[Common.720.SFV21] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle = @[Common.720.SFV22] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle = @[Common.720.SFV23] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle = @[Common.720.SFV24] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle = @[Common.720.SFV25] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle = @[Common.720.SFV26] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle = @[Common.720.SFV27] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle = @[Common.720.SFV28] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle = @[Common.720.SFV29] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle = @[Common.720.SFV30] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle = @[Common.720.SFV31] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle = @[Common.720.SFV32] -Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle = @[Common.720.SFV33] - -Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] - -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2USet = @[Common.IGLA.Button2Up] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2DSet = @[Common.IGLA.Button2Down] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLASR = @[Common.IGLA.IGLASR] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLARX = @[Common.IGLA.IGLARX] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] - -Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle = @[Common.ALL.KRMH] -Entities.gmod_subway_81-720.Buttons.BTO.UAVAToggle = @[Common.ALL.UAVA2] - -Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] - -Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor = @[Common.ALL.PassDoor] - -Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV = @[Common.ALL.HighVoltage] -Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3 = @[Common.ALL.EnginesCurrent1] -Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4 = @[Common.ALL.EnginesCurrent2] -Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder = @[Common.ALL.BCPressure] -Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-720.Buttons.GV.GVToggle = @[Common.720.BRU] - -Entities.gmod_subway_81-720.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-720.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-720.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_81-720.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_81-720.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_81-720.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] - -#gmod_subway_81-721 -Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-721.Buttons.GV.GVToggle = @[Common.720.BRU] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle = @[Common.720.SFV1] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle = @[Common.720.SFV2] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle = @[Common.720.SFV3] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle = @[Common.720.SFV4] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle = @[Common.720.SFV5] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle = @[Common.720.SFV6] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle = @[Common.720.SFV7] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle = @[Common.720.SFV8] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle = @[Common.720.SFV9] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle = @[Common.720.SFV10] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle = @[Common.720.SFV11] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle = @[Common.720.SFV12] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle = @[Common.720.SFV13] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle = @[Common.720.SFV14] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle = @[Common.720.SFV15] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle = @[Common.720.SFV16] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle = @[Common.720.SFV17] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle = @[Common.720.SFV18] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle = @[Common.720.SFV19] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle = @[Common.720.SFV20] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle = @[Common.720.SFV21] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle = @[Common.720.SFV22] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle = @[Common.720.SFV23] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle = @[Common.720.SFV24] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle = @[Common.720.SFV25] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle = @[Common.720.SFV26] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle = @[Common.720.SFV27] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle = @[Common.720.SFV28] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle = @[Common.720.SFV29] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle = @[Common.720.SFV30] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle = @[Common.720.SFV31] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle = @[Common.720.SFV32] -Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle = @[Common.720.SFV33] - -Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] - -#Spawner: - -Entities.gmod_subway_81-720.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-720.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-720.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-720.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-720.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name = @[Common.Spawner.SchemeInvert] -Entities.gmod_subway_81-720.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-720.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-720.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-720.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-720.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] -]] diff --git a/lua/metrostroi_data/languages/hu_722.lua b/lua/metrostroi_data/languages/hu_722.lua deleted file mode 100644 index 2c83173..0000000 --- a/lua/metrostroi_data/languages/hu_722.lua +++ /dev/null @@ -1,360 +0,0 @@ -return [[ -#81-722 - -[hu] - -#Cameras: -Train.722.Breakers = Automaták -Train.722.PU2_1 = Vezérlőpult -Train.722.PU2_2 = Tartalék panel -Train.722.Vityaz = SAU "VITYAZ-SP" monitor -Train.722.SARMAT = CIS rendszer monitor -Train.722.CabLights = Fülke világítás panel -Train.722.Disconnects = Leválasztó csapok -Train.722.KRMH = KRMSH és RVTB csapok - -#######Buttons########### -Common.722.MirrorHeating = Tükör fűtés -Common.722.EmergencyDrive = Szükségindítás, szükségvezérlés módban -Common.722.Microphone = Mikrofon bekapcsolása -Common.722.LRS = Rádióállomás szükségellátás az akkumulátorról -Common.722.LAVS = Alacsony fékvezetéki nyomás -Common.722.LRU = Vezérlő relé le van tiltva -Common.722.GlassWasher = Szélvédő mosó -Common.722.GlassCleaner = Ablaktörlő -Common.722.EmergencyBrakeTPlus = Vészfék (T+ mód) -Common.722.EmergencyBrakeTPlusK = "Vészfék" gomb fedél -Common.722.KRO = Menetirány - -Common.722.PSNToggle = "Akkumulátor töltése külső forrásból" engedélyezése -Common.722.BattOn = Vonat áramellátásának felkapcsolása -Common.722.BattOff = Vonat áramellátásának lekapcsolása -Common.722.TorecDoorUnlock = Átjáróajtók nyitása -Common.722.SCEnabled = Rövidzár be van kapcsolva -Common.722.LSOSD = Peronajtó nyitás lámpa - -Common.722.PassVent = Utastér szellőztetés -Common.722.VRU = Irányítás mód kapcsoló -Common.722.VADToggle = Ajtó reteszelés nélküli vezetés -Common.722.VAHToggle = Éberségi pedál nélküli vezetés -Common.722.EmergencyRadioPowerToggle = Tartalék rádióállomás áramellátás -Common.722.BARSMode = BARS mód kapcsoló -Common.722.PantSC = Áramszedő papucsok és rövidzáró eszköz - -Common.SARMAT.Up = SARMAT: Fel -Common.SARMAT.Down = SARMAT: Le -Common.SARMAT.Enter = SARMAT: Enter -Common.SARMAT.Esc = SARMAT: Esc -Common.SARMAT.F1 = SARMAT: F1 -Common.SARMAT.F2 = SARMAT: F2 -Common.SARMAT.F3 = SARMAT: F3 -Common.SARMAT.F4 = SARMAT: F4 -Common.SARMAT.Path = SARMAT: Irány -Common.SARMAT.Line = SARMAT: Vonal -Common.SARMAT.Zero = SARMAT: Kezdés az elejétől -Common.SARMAT.Start = SARMAT: Start - -#Autobreakers -Common.722.SF1 = SF1: Vonatvezeték (irányítás) -Common.722.SF2 = SF2: Aktív fülke -Common.722.SF3 = SF3: Fővezérlés -Common.722.SF4 = SF4: Szükségvezérlés -Common.722.SF5 = SF5: RVTB vezérlés -Common.722.SF6 = SF6: Fékkar áramellátás -Common.722.SF7 = SF7: Ajtó vezérlés -Common.722.SF8 = SF8: BARS 1 -Common.722.SF9 = SF9: BARS 2 -Common.722.UPO = SF: UPO1 -Common.722.SF10 = SF10: BRPI-M1 -Common.722.SF11 = SF11: BRPI-M2 -Common.722.SF12 = SF12: Tűzjelző -Common.722.SF13 = SF13: @[Common.722.PantSC] -Common.722.SF14 = SF14: Rádió kommunikáció 1 -Common.722.SF15 = SF15: Ráció kommunikáció 2 -Common.722.SF16 = SF16: CIS 1 (monitor) -Common.722.SF17 = SF17: CIS 2 (központi információs rendszer) -Common.722.SF18 = SF18: CIS 3 -Common.722.SF19 = SF19: BUKP, UPI -Common.722.SF20 = SF20: Monitor -Common.722.SF21 = SF21: Irány -Common.722.SF22 = SF22: Zárjelző lámpák áramellátása akkumulátorról -Common.722.SF23 = SF23: Fényszórók, zárjelző lámpák -Common.722.SF24 = SF24: Peronajtó lámpa kapcsoló -Common.722.SF25 = SF25: Fülke világítás -Common.722.SF26 = SF26: Fülke légkondícionáló -Common.722.SF27 = SF27: Ablaktörlő, szélvédő mosó, kürt - -Common.722.SF31 = SF31: Vonatvezeték -Common.722.SF32 = SF32: Vonatvezeték (irányítás) -Common.722.SF33 = SF33: Vezérlő áramkörök áramellátása -Common.722.SF34 = SF34: Bal oldal CIS -Common.722.SF35 = SF35: Jobb oldal CIS -Common.722.SF36 = SF36: Oldal visszajelző lámpák -Common.722.SF37 = SF37: Áremszedő papucs elengedés -Common.722.SF38 = SF38: Foglalt -Common.722.SF41 = SF41: Bal oldali ajtók nyitása -Common.722.SF42 = SF42: Jobb oldali ajtók nyitása -Common.722.SF43 = SF43: Ajtózáró -Common.722.SF44 = SF44: Átjáróajtók -Common.722.SF45 = SF45: Utastéri világítás áramellátás -Common.722.SF46 = SF46: Tartalék utastéri világítás -Common.722.SF47 = SF47: Első szellőztető egység -Common.722.SF48 = SF48: Második szellőztető egység -Common.722.SF49 = SF49: Számoló -Common.722.SF51 = SF51: Kocsi vezérlő egység -Common.722.SF52 = SF52: BODV -Common.722.SF53 = SF53: PSN (áramellátás) -Common.722.SF54 = SF54: Sűrített levegős szárító -Common.722.SF55 = SF55: BUFT (súrlódó fékvezérlő egység) -Common.722.SF56 = SF56: Inverter -Common.722.SF57 = SF57: Inverter fűtés -Common.722.SF58 = SF58: Kocsi vezérlő áramkör fő áramellátás -Common.722.SF59 = SF59: Kocsi vezérlő áramkör tartalék áramellátás - -#gmod_subway_81-722 -#Buttons: -Entities.gmod_subway_81-722.Buttons.PU1.MirrorHeatingSet = @[Common.722.MirrorHeating] -Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft2Set = @[Common.720.KDL] -Entities.gmod_subway_81-722.Buttons.PU1.DoorBackSet = @[Common.ALL.KDPH] -Entities.gmod_subway_81-722.Buttons.PU1.EmergencyDriveSet = @[Common.722.EmergencyDrive] -Entities.gmod_subway_81-722.Buttons.PU1.MicrophoneSet = @[Common.722.Microphone] -Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft1Set = @[Common.720.KDL] - -Entities.gmod_subway_81-722.Buttons.PU2.ARSToggle = @[Common.ALL.ARS] -Entities.gmod_subway_81-722.Buttons.PU2.ALSToggle = @[Common.ALL.ALS] -Entities.gmod_subway_81-722.Buttons.PU2.GlassWasherSet = @[Common.722.GlassWasher] -Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner+ = @[Common.722.GlassCleaner] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner- = @[Common.722.GlassCleaner] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusKToggle = @[Common.722.EmergencyBrakeTPlusK] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusSet = @[Common.722.EmergencyBrakeTPlus] -Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeToggle = @[Common.720.EmergencyBrake] -Entities.gmod_subway_81-722.Buttons.PU2.VigilanceSet = @[Common.ARS.KB] -Entities.gmod_subway_81-722.Buttons.PU2.Headlights+ = @[Common.ALL.VF] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.Headlights- = @[Common.ALL.VF] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.DoorSelectToggle = @[Common.ALL.VSD] -Entities.gmod_subway_81-722.Buttons.PU2.DoorClose+ = @[Common.720.DoorClose] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.PU2.DoorClose- = @[Common.720.DoorClose] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.PU2.DoorRightSet = @[Common.720.KDP] - -Entities.gmod_subway_81-722.Buttons.BI3.KRO+ = @[Common.722.KRO] @[Common.ALL.Up] -Entities.gmod_subway_81-722.Buttons.BI3.KRO- = @[Common.722.KRO] @[Common.ALL.Down] -Entities.gmod_subway_81-722.Buttons.BI3.RingSet = @[Common.ALL.Ring] -Entities.gmod_subway_81-722.Buttons.BI3.Compressor- = @[Common.ALL.MK] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.BI3.Compressor+ = @[Common.ALL.MK] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.BI3.!BrakeTrainLine = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-722.Buttons.BI3.!BrakeCylinder = @[Common.ALL.BCPressure] - -Entities.gmod_subway_81-722.Buttons.PPZB.PSNToggleSet = @[Common.722.PSNToggle] -Entities.gmod_subway_81-722.Buttons.PPZB.BattOnSet = @[Common.722.BattOn] -Entities.gmod_subway_81-722.Buttons.PPZB.BattOffSet = @[Common.722.BattOff] -Entities.gmod_subway_81-722.Buttons.PPZB.TorecDoorUnlockSet = @[Common.722.TorecDoorUnlock] -Entities.gmod_subway_81-722.Buttons.PPZB.SCEnable = @[Common.722.SCEnabled] -Entities.gmod_subway_81-722.Buttons.PPZB.SOSD = @[Common.722.LSOSD] - -Entities.gmod_subway_81-722.Buttons.PVM.PassLightToggle = @[Common.ALL.PassLights] -Entities.gmod_subway_81-722.Buttons.PVM.PassVent- = @[Common.722.PassVent] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.PassVent+ = @[Common.722.PassVent] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.VKFToggle = @[Common.ALL.VKF] -Entities.gmod_subway_81-722.Buttons.PVM.ParkingBrakeToggle = @[Common.ALL.ParkingBrake] -Entities.gmod_subway_81-722.Buttons.PVM.VRDToggle = @[Common.ARS.VRD] -Entities.gmod_subway_81-722.Buttons.PVM.SOSDEnableToggle = @[Common.ALL.VSOSD] -Entities.gmod_subway_81-722.Buttons.PVM.VRU- = @[Common.722.VRU] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.VRU+ = @[Common.722.VRU] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.VADToggle = @[Common.722.VADToggle] -Entities.gmod_subway_81-722.Buttons.PVM.VAHToggle = @[Common.722.VAHToggle] -Entities.gmod_subway_81-722.Buttons.PVM.EmergencyRadioPowerToggle = @[Common.722.EmergencyRadioPowerToggle] -Entities.gmod_subway_81-722.Buttons.PVM.BARSMode- = @[Common.722.BARSMode] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.BARSMode+ = @[Common.722.BARSMode] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.PantSC- = @[Common.722.PantSC] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.PVM.PantSC+ = @[Common.722.PantSC] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.PVM.RCARSToggle = @[Common.ALL.RCARS] - -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LRD = @[Common.ARS.LRD] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LPT = @[Common.ALL.BrT] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!RS = @[Common.722.LRS] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!AVS = @[Common.722.LAVS] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!LSD = @[Common.ALL.LSD] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!RU = @[Common.722.LRU] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!04 = @[Common.ARS.N4] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!00 = @[Common.ARS.0] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!40 = @[Common.ARS.40] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!60 = @[Common.ARS.60] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!70 = @[Common.ARS.70] -Entities.gmod_subway_81-722.Buttons.HelperLamps.!80 = @[Common.ARS.80] - -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatUpSet = @[Common.SARMAT.Up] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatDownSet = @[Common.SARMAT.Down] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEnterSet = @[Common.SARMAT.Enter] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEscSet = @[Common.SARMAT.Esc] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF1Set = @[Common.SARMAT.F1] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF2Set = @[Common.SARMAT.F2] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF3Set = @[Common.SARMAT.F3] -Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF4Set = @[Common.SARMAT.F4] - -Entities.gmod_subway_81-722.Buttons.BMP.SarmatPathSet = @[Common.SARMAT.Path] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatLineSet = @[Common.SARMAT.Line] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatZeroSet = @[Common.SARMAT.Zero] -Entities.gmod_subway_81-722.Buttons.BMP.SarmatStartSet = @[Common.SARMAT.Start] - -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber1Set = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber2Set = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber3Set = @[Common.ALL.RouteNumber3+] - -Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight- = @[Common.ALL.CabLights] @[Common.ALL.CCW] -Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight+ = @[Common.ALL.CabLights] @[Common.ALL.CW] -Entities.gmod_subway_81-722.Buttons.Lighting.PanelLightToggle = @[Common.ALL.PanelLights] - -Entities.gmod_subway_81-722.Buttons.PPZ.SF1Toggle = @[Common.722.SF1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF2Toggle = @[Common.722.SF2] -Entities.gmod_subway_81-722.Buttons.PPZ.SF3Toggle = @[Common.722.SF3] -Entities.gmod_subway_81-722.Buttons.PPZ.SF4Toggle = @[Common.722.SF4] -Entities.gmod_subway_81-722.Buttons.PPZ.SF5Toggle = @[Common.722.SF5] -Entities.gmod_subway_81-722.Buttons.PPZ.SF6Toggle = @[Common.722.SF6] -Entities.gmod_subway_81-722.Buttons.PPZ.SF7Toggle = @[Common.722.SF7] -Entities.gmod_subway_81-722.Buttons.PPZ.SF8Toggle = @[Common.722.SF8] -Entities.gmod_subway_81-722.Buttons.PPZ.SF9Toggle = @[Common.722.SF9] -Entities.gmod_subway_81-722.Buttons.PPZ.R_UPOToggle = @[Common.722.UPO] -Entities.gmod_subway_81-722.Buttons.PPZ.SF01Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF10Toggle = @[Common.722.SF10] -Entities.gmod_subway_81-722.Buttons.PPZ.SF11Toggle = @[Common.722.SF11] -Entities.gmod_subway_81-722.Buttons.PPZ.SF12Toggle = @[Common.722.SF12] -Entities.gmod_subway_81-722.Buttons.PPZ.SF13Toggle = @[Common.722.SF13] -Entities.gmod_subway_81-722.Buttons.PPZ.SF02Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF14Toggle = @[Common.722.SF14] -Entities.gmod_subway_81-722.Buttons.PPZ.SF15Toggle = @[Common.722.SF15] -Entities.gmod_subway_81-722.Buttons.PPZ.SF16Toggle = @[Common.722.SF16] -Entities.gmod_subway_81-722.Buttons.PPZ.SF17Toggle = @[Common.722.SF17] -Entities.gmod_subway_81-722.Buttons.PPZ.SF18Toggle = @[Common.722.SF18] -Entities.gmod_subway_81-722.Buttons.PPZ.SF19Toggle = @[Common.722.SF19] -Entities.gmod_subway_81-722.Buttons.PPZ.SF20Toggle = @[Common.722.SF20] -Entities.gmod_subway_81-722.Buttons.PPZ.SF21Toggle = @[Common.722.SF21] -Entities.gmod_subway_81-722.Buttons.PPZ.SF22Toggle = @[Common.722.SF22] -Entities.gmod_subway_81-722.Buttons.PPZ.SF23Toggle = @[Common.722.SF23] -Entities.gmod_subway_81-722.Buttons.PPZ.SF24Toggle = @[Common.722.SF24] -Entities.gmod_subway_81-722.Buttons.PPZ.SF25Toggle = @[Common.722.SF25] -Entities.gmod_subway_81-722.Buttons.PPZ.SF26Toggle = @[Common.722.SF26] -Entities.gmod_subway_81-722.Buttons.PPZ.SF27Toggle = @[Common.722.SF27] -Entities.gmod_subway_81-722.Buttons.PPZ.SF03Toggle = @[Common.ALL.Unsused1] -Entities.gmod_subway_81-722.Buttons.PPZ.SF04Toggle = @[Common.ALL.Unsused1] - -Entities.gmod_subway_81-722.Buttons.PVZ.SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-722.Buttons.PVZ.1:SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-722.Buttons.PVZ.SF32Toggle = @[Common.722.SF32] -Entities.gmod_subway_81-722.Buttons.PVZ.SF33Toggle = @[Common.722.SF33] -Entities.gmod_subway_81-722.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-722.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-722.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-722.Buttons.PVZ.SF37Toggle = @[Common.722.SF37] -Entities.gmod_subway_81-722.Buttons.PVZ.SF38Toggle = @[Common.722.SF38] -Entities.gmod_subway_81-722.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-722.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-722.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-722.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-722.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-722.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-722.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-722.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-722.Buttons.PVZ.SF49Toggle = @[Common.722.SF49] -Entities.gmod_subway_81-722.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-722.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-722.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-722.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-722.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] -Entities.gmod_subway_81-722.Buttons.PVZ.SF56Toggle = @[Common.722.SF56] -Entities.gmod_subway_81-722.Buttons.PVZ.SF57Toggle = @[Common.722.SF57] -Entities.gmod_subway_81-722.Buttons.PVZ.SF58Toggle = @[Common.722.SF58] -Entities.gmod_subway_81-722.Buttons.PVZ.SF59Toggle = @[Common.722.SF59] - -Entities.gmod_subway_81-722.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_81-722.Buttons.CabinDoorL.CabinDoorLeft = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-722.Buttons.CabinDoorR.CabinDoorRight = @[Common.ALL.CabinDoor] -Entities.gmod_subway_81-722.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-722.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_81-722.Buttons.Isolations.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.Isolations.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_81-722.Buttons.StopKran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-722.Buttons.StopKran.UAVAToggle = @[Common.ALL.UAVA2] -Entities.gmod_subway_81-722.Buttons.BTO.K29Toggle = @[Common.ALL.KRMH] -Entities.gmod_subway_81-722.Buttons.BTO.K9Toggle = @[Common.ALL.RVTB] - -#gmod_subway_81-723 -Entities.gmod_subway_81-723.Buttons.PVZ.SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-723.Buttons.PVZ.1:SF31Toggle = @[Common.722.SF31] -Entities.gmod_subway_81-723.Buttons.PVZ.SF32Toggle = @[Common.722.SF32] -Entities.gmod_subway_81-723.Buttons.PVZ.SF33Toggle = @[Common.722.SF33] -Entities.gmod_subway_81-723.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-723.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-723.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-723.Buttons.PVZ.SF37Toggle = @[Common.722.SF37] -Entities.gmod_subway_81-723.Buttons.PVZ.SF38Toggle = @[Common.722.SF38] -Entities.gmod_subway_81-723.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-723.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-723.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-723.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-723.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-723.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-723.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-723.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-723.Buttons.PVZ.SF49Toggle = @[Common.722.SF49] -Entities.gmod_subway_81-723.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-723.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-723.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-723.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-723.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] -Entities.gmod_subway_81-723.Buttons.PVZ.SF56Toggle = @[Common.722.SF56] -Entities.gmod_subway_81-723.Buttons.PVZ.SF57Toggle = @[Common.722.SF57] -Entities.gmod_subway_81-723.Buttons.PVZ.SF58Toggle = @[Common.722.SF58] -Entities.gmod_subway_81-723.Buttons.PVZ.SF59Toggle = @[Common.722.SF59] - -Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] - -Entities.gmod_subway_81-723.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-723.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] - - -#gmod_subway_81-724 -#Buttons: -Entities.gmod_subway_81-724.Buttons.PVZ.SF34Toggle = @[Common.722.SF34] -Entities.gmod_subway_81-724.Buttons.PVZ.SF35Toggle = @[Common.722.SF35] -Entities.gmod_subway_81-724.Buttons.PVZ.SF36Toggle = @[Common.722.SF36] -Entities.gmod_subway_81-724.Buttons.PVZ.SF41Toggle = @[Common.722.SF41] -Entities.gmod_subway_81-724.Buttons.PVZ.SF42Toggle = @[Common.722.SF42] -Entities.gmod_subway_81-724.Buttons.PVZ.SF43Toggle = @[Common.722.SF43] -Entities.gmod_subway_81-724.Buttons.PVZ.SF44Toggle = @[Common.722.SF44] -Entities.gmod_subway_81-724.Buttons.PVZ.SF45Toggle = @[Common.722.SF45] -Entities.gmod_subway_81-724.Buttons.PVZ.SF46Toggle = @[Common.722.SF46] -Entities.gmod_subway_81-724.Buttons.PVZ.SF47Toggle = @[Common.722.SF47] -Entities.gmod_subway_81-724.Buttons.PVZ.SF48Toggle = @[Common.722.SF48] -Entities.gmod_subway_81-724.Buttons.PVZ.SF51Toggle = @[Common.722.SF51] -Entities.gmod_subway_81-724.Buttons.PVZ.SF52Toggle = @[Common.722.SF52] -Entities.gmod_subway_81-724.Buttons.PVZ.SF53Toggle = @[Common.722.SF53] -Entities.gmod_subway_81-724.Buttons.PVZ.SF54Toggle = @[Common.722.SF54] -Entities.gmod_subway_81-724.Buttons.PVZ.SF55Toggle = @[Common.722.SF55] - -Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] - -Entities.gmod_subway_81-724.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_81-724.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] - -#Spawner: -Entities.gmod_subway_81-722.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_81-722.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_81-722.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_81-722.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_81-722.Spawner.Scheme.Name = @[Common.Spawner.Scheme] -Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name = @[Common.Spawner.SchemeInvert] -Entities.gmod_subway_81-722.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_81-722.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_81-722.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_81-722.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_81-722.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] - -]] diff --git a/lua/metrostroi_data/languages/hu_base.lua b/lua/metrostroi_data/languages/hu_base.lua deleted file mode 100644 index ad1d2b4..0000000 --- a/lua/metrostroi_data/languages/hu_base.lua +++ /dev/null @@ -1,396 +0,0 @@ -return [[ -#Base text for Hungarian language - -[hu] -lang = Magyar #Full language name -AuthorText = Fordítók: Xenox, Lackó #Author text - -#Workshop errors -Workshop.Title = Tartalom kezelő -Workshop.FilesMissing = Néhány kiegészítő fájl hiányzik, vagy hibás.\nHa a Műhelyből lett(ek) telepítve, próbáld meg kitörölni ezt a fájlt:\nGarrysMod/garrysmod/%s. -Workshop.FilesMissingLocaly = Néhány kiegészítő fájl hiányzik, vagy hibás. -Workshop.InstalledLocaly = Telepített (helyi) -Workshop.NotInstalledE = Nem telepített.\nIratkozz fel a kiegészítőre, és ellenőrizd a "Bővítmények" menüben. -Workshop.NotInstalled = Nem telepített. -Workshop.Disabled = Kikapcsolt.\nKapcsold be az "Bővítmények" menüben. -Workshop.Installed = Telepített -Workshop.Open = Műhely -Workshop.ErrorGithub = A Metrostroi GitHub verziója észlelhető. A jelenlegi Metrostroi verzió nem kompatibilis és nem működik a GitHub-os verzióval. -Workshop.ErrorLegacy = A Metrostroi egyik régi verziója észlelhető. A jelenlegi Metrostroi verzió nem kompatibilis és nem működik a régi verzióval. -Workshop.ErrorEnhancers = Ez a kiegészítő grafikus javításokat tartalmaz, amelyek esetleg ronthatják a játékélményt. -Workshop.Error1 = Ez a kiegészítő a Metrostroi régi szkriptjeit tartalmazza, amelyek zavarhatják a jelenlegieket. "Szkript hiba" és instabil működés léphet föl. -Workshop.ErrorOld = Régi modellek észlelhetők (81-702 és 81-717 régi modelljei). Ellenőrizd és töröld a régi Metrostroi fájlokat, távolítsd el a "cache", "download" és "downloads" mappákat a "garrysmod" könyvtárból. - -#Client settings -Panel.Admin = Admin -Panel.RequireThirdRail = Harmadik sín szükséges - -Panel.Client = Kliens -Panel.Language = Nyelv választás -Panel.DrawCams = Kamerák renderelése -Panel.DisableHUD = HUD kikapcsolása a vezető ülésben -Panel.DisableCamAccel = Kamera gyorsítás kikapcsolása -Panel.DisableHoverText = Felvillanó szövegek kikapcsolása -Panel.ScreenshotMode = Képernyőmentés mód (ALACSONY FPS) -Panel.ShadowsHeadlight = Fényszóró árnyékok bekapcsolása -Panel.RedLights = \nZárjelző lámpák dinamikus fényének bekapcsolása -Panel.ShadowsOther = \nEgyéb forrásokból származó árnyékok bekapcsolása -Panel.MinimizedShow = Ne töltse be az elemeket, \nha a program tálcán van -Panel.FOV = FOV -Panel.Z = Kamera magassága -Panel.RenderDistance = Renderelési távolság -Panel.ReloadClient = Kliens oldal újraindítása - -Panel.ClientAdvanced = Kliens (haladó) -Panel.DrawDebugInfo = Debug információk megjelenítése -Panel.DrawSignalDebugInfo = Jelzők debug információi -Panel.CheckAddons = Kiegészítők keresése -Panel.ReloadLang = Nyelvek újratöltése -Panel.SoftDraw = Vonatelemek betöltési ideje -Panel.SoftReloadLang = Ne töltsön be új spawnmenü-t - - - -#Common train -Train.Common.Camera0 = Vezető ülés -Train.Common.RouteNumber = Forgalmi szám -Train.Common.LastStation = Végállomás -Train.Common.HelpersPanel = Segédvezetői panel -Train.Common.UAVA = UAVA -Train.Common.PneumoPanels = Pneumatikus szelepek -Train.Common.Voltmeters = Volt- és ampermérők -Train.Common.CouplerCamera = Csatlás -Common.ARM.Monitor1 = Monitor 1 ARM -Train.Buttons.Sealed = Leplombált - -#Train entities -Entities.gmod_subway_base.Name = Metrókocsi alap -Entities.gmod_subway_81-502.Name = 81-502 (Ema-502 vezér) -Entities.gmod_subway_81-501.Name = 81-501 (Em-501 közbenső) -Entities.gmod_subway_81-702.Name = 81-702 (D vezér) -Entities.gmod_subway_81-702_int.Name = 81-702 (D közbenső) -Entities.gmod_subway_81-703.Name = 81-703 (E vezér) -Entities.gmod_subway_81-703_int.Name = 81-703 (E közbenső) -Entities.gmod_subway_ezh.Name = 81-707 (Ezh vezér) -Entities.gmod_subway_ezh1.Name = 81-708 (Ezh1 közbenső) -Entities.gmod_subway_ezh3.Name = 81-710 (Ezh3 vezér) -Entities.gmod_subway_em508t.Name = 81-508T (Em-508T közbenső) -Entities.gmod_subway_81-717_mvm.Name = 81-717 (Moszkvai vezér) -Entities.gmod_subway_81-717_mvm_custom.Name = 81-717 (Moszkvai egyedi) -Entities.gmod_subway_81-714_mvm.Name = 81-714 (Moszkvai közbenső) -Entities.gmod_subway_81-717_lvz.Name = 81-717 (Szentpétervári vezér) -Entities.gmod_subway_81-714_lvz.Name = 81-714 (Szentpétervári közbenső) -Entities.gmod_subway_81-718.Name = 81-718 (TISU vezér) -Entities.gmod_subway_81-719.Name = 81-719 (TISU közbenső) -Entities.gmod_subway_81-720.Name = 81-720 (Yauza vezér) -Entities.gmod_subway_81-721.Name = 81-721 (Yauza közbenső) -Entities.gmod_subway_81-722.Name = 81-722 (Yubileyniy vezér) -Entities.gmod_subway_81-723.Name = 81-723 (Yubileyniy közbenső) -Entities.gmod_subway_81-724.Name = 81-724 (Yubileyniy szabadonfutó) -Entities.gmod_subway_81-7036.Name = 81-7036 (nem működik) -Entities.gmod_subway_81-7037.Name = 81-7037 (nem működik) -Entities.gmod_subway_tatra_t3.Name = Tátra T3 - -#Train util entities -Entities.gmod_train_bogey.Name = Forgóváz -Entities.gmod_train_couple.Name = Csatlás - -#Other entities -Entities.gmod_track_pui.Name = PUI -Entities.gmod_track_mus_elektronika7.Name = "Electronika" óra -Entities.gmod_mus_clock_analog.Name = Analóg óra -Entities.gmod_track_clock_time.Name = Nagy térköz óra (idő) -Entities.gmod_track_clock_small.Name = Kicsi térköz óra -Entities.gmod_track_clock_interval.Name = Nagy térköz óra (térköz) -Entities.gmod_track_switch.Name = Váltó -Entities.gmod_track_powermeter.Name = Feszültségmérő -Entities.gmod_track_arm.Name = ARM DSCP -Entities.gmod_track_udochka.Name = Áram csatlakozó -Entities.gmod_train_spawner.Name = Vonat lehelyező -Entities.gmod_train_special_box.Name = Speciális csomag - -#Weapons -Weapons.button_presser.Name = Gombnyomó -Weapons.button_presser.Purpose = Pályákon lévő gombok megnyomására. -Weapons.button_presser.Instructions = Mutass a megnyomandó gombra, majd kattints az "Támadás" gombra. -Weapons.train_key.Name = Adminisztrátori kulcs -Weapons.train_key.Purpose = Pályákon levő adminisztrátori gombok megnyomására. -Weapons.train_key.Instructions = Mutass az adminisztrátori gombra, majd kattints az "Támadás" gombra. -Weapons.train_kv_wrench.Name = Irányváltó kulcs -Weapons.train_kv_wrench.Purpose = Metrókocsikban található gombok megnyomására való. -Weapons.train_kv_wrench.Instructions = Mutass a megnyomandó gombra a vonatban, majd kattints az "Támadás" gombra. -Weapons.train_kv_wrench_gold.Name = Az arany irányváltó kulcs - -Weapons.train_kv_wrench_gold.Purpose = @[Weapons.train_kv_wrench.Purpose] -Weapons.train_kv_wrench_gold.Instructions = @[Weapons.train_kv_wrench.Instructions] - -#Spawner common -Spawner.Title = Vonat lehelyező -Spawner.Spawn = Lehelyezés -Spawner.Close = Bezárás -Spawner.Trains1 = Megengedett kocsik száma -Spawner.Trains2 = Játékosonként -Spawner.WagNum = Kocsik száma -Common.Spawner.Texture = Külső festés -Common.Spawner.PassTexture = Belső festés -Common.Spawner.CabTexture = Fülke festés -Common.Spawner.Announcer = Utastájékoztató típusa -Common.Spawner.Type1 = 1-es típus -Common.Spawner.Type2 = 2-es típus -Common.Spawner.Type3 = 3-es típus -Common.Spawner.Type4 = 4-es típus -Common.Spawner.SpawnMode = Lehelyezési állapot -Common.Spawner.SpawnMode.Deadlock = Kihúzó -Common.Spawner.SpawnMode.Full = Üzemkész -Common.Spawner.SpawnMode.NightDeadlock = Kihúzó, éjszaka után -Common.Spawner.SpawnMode.Depot = Kikapcsolt -Spawner.Common.EType = Elektromos áramkörök típusa -Common.Spawner.Scheme = Vonal sémák -Common.Spawner.Random = Random -Common.Spawner.Old = Régi -Common.Spawner.New = Új -Common.Spawner.Type = Típus -Common.Spawner.SchemeInvert = Fordított vonal sémák - -#Coupler common -Common.Couple.Title = Csatlás menü -Common.Couple.CoupleState = Csatlás állapota -Common.Couple.Coupled = Csatolva -Common.Couple.Uncoupled = Nem csatolt -Common.Couple.Uncouple = Szétcsatol -Common.Couple.IsolState = Végelzáró csapok állapota -Common.Couple.Isolated = Zárt -Common.Couple.Opened = Nyitott -Common.Couple.Open = Nyitva -Common.Couple.Isolate = Zárva -Common.Couple.EKKState = EKK állapota (elektromos csatlás) -Common.Couple.Disconnected = Lecsatlakozva -Common.Couple.Connected = Csatlakozva -Common.Couple.Connect = Összeköt -Common.Couple.Disconnect = Szétkapcsol - -#Bogey common -Common.Bogey.Title = Forgóváz menü -Common.Bogey.ContactState = Áremszedők állapota -Common.Bogey.CReleased = Kiengedve -Common.Bogey.CPressed = Lenyomva -Common.Bogey.CPress = Lenyomás -Common.Bogey.CRelease = Elengedés -Common.Bogey.ParkingBrakeState = Rögzítőfék állapota -Common.Bogey.PBDisabled = Manuálisan kikapcsolva -Common.Bogey.PBEnabled = Bekapcsolt -Common.Bogey.PBEnable = Bekapcsol -Common.Bogey.PBDisable = Manuális kikapcsolás - -#Trains common -Common.ALL.Unsused1 = Nem használt -Common.ALL.Unsused2 = (Nem használt) -Common.ALL.Up = (fel) -Common.ALL.Down = (le) -Common.ALL.Left = (bal) -Common.ALL.Right = (jobb) -Common.ALL.CW = (óramutató járásával megegyezően) -Common.ALL.CCW = (óramutató járásával ellentétesen) -Common.ALL.VB = VB: Akkumulátor be/ki -Common.ALL.VSOSD = SOSD: Peronajtó nyitás lámpa -Common.ALL.VKF = VKF: Zárjelző lámpák áramellátása -Common.ALL.VB2 = (Alacsony feszültségű áramkörök) -Common.ALL.VPR = VPR: Fedélzeti rádióállomás -Common.ALL.VASNP = ASNP áramellátása -Common.ALL.UOS = RC-UOS: Sebességkorlátozó eszköz (EPV/EPK nélküli vezetéshez) -Common.ALL.VAH = VAH: Szükségmenet(RPB relé hiba) -Common.ALL.KAH = KAH: Szükségmenet gombja ARS nélküli vezetéshez -Common.ALL.KAHK = KAH fedél -Common.ALL.VAD = VAD: Tartalék ajtózárás felülírása (KD relé meghibásodása esetén) -Common.ALL.OVT = OVT: Pneumatikus fékek kikapcsolása -Common.ALL.VOVT = VOVT: Pneumatikus szelepfék kikapcsolása -Common.ALL.EmergencyBrakeValve = Vészfék -Common.ALL.ParkingBrake = Rögzítőfék -Common.ALL.VU = VU: Vonatvezérlés kapcsoló -Common.ALL.KDP = KDP: Jobb oldali ajtók nyitása -Common.ALL.KDPL = Jobb oldali ajtók kiválasztva -Common.ALL.KDPK = Jobb oldali ajtók gombfedele -Common.ALL.KDL = KDL: Bal oldali ajtók nyitása -Common.ALL.KDLL = Bal oldali ajtók kiválasztva -Common.ALL.KDLK = Bal oldali ajtók gombfedele -Common.ALL.KDLPK = Ajtó gombok fedele -Common.ALL.KRZD = KRZD: Tartalék ajtózáró -Common.ALL.VSD = Ajtó oldal választó -Common.ALL.Ring = Csengő -Common.ALL.VUD = VUD: Ajtónyitás engedélyező (Ajtózáró) -Common.ALL.KDPH = Utolsó kocsi jobb oldali ajtajainak nyitása -Common.ALL.VUD2 = VUD2: Segédvezetői ajtónyitás engedélyező -Common.ALL.Program1 = Program I -Common.ALL.Program2 = Program II -Common.ALL.VRP = VRP: Túlfeszültség relé visszaállítása -Common.ALL.VRPBV = VRP: Túlfeszültség relé visszaállítása, BV bekapcsolása -Common.ALL.KSN = KSN: Hibajelzés -Common.ALL.VMK = VMK: Kompresszor -Common.ALL.MK = Kompresszor -Common.ALL.VF1 = Tompított fényszóró -Common.ALL.VF2 = Távolsági fényszóró -Common.ALL.VF = Fényszóró kapcsoló -Common.ALL.VUS = VUS: Fényszórók (távolsági/tompított) -Common.ALL.GaugeLights = Műszerek világítása -Common.ALL.CabLights = Fülkevilágítás -Common.ALL.PassLights = Utastér világítás -Common.ALL.PanelLights = Műszerfal világítása -Common.ALL.RMK = RMK: Tartalék kompresszor -Common.ALL.KRP = KRP: Szükségindító -Common.ALL.VZP = VZP: Menet késleltetés kikapcsolása -Common.ALL.VZD = VZD: Ajtó késleltetés kikapcsolása -Common.ALL.VAV = VAV: Automatikus vonatvezérlés kapcsoló -Common.ALL.RouteNumber1+ = Forgalmi szám első karakterének növelése -Common.ALL.RouteNumber1- = Forgalmi szám első karakterének csökkentése -Common.ALL.RouteNumber2+ = Forgalmi szám második karakterének növelése -Common.ALL.RouteNumber2- = Forgalmi szám második karakterének csökkentése -Common.ALL.RouteNumber3+ = Forgalmi szám harmadik karakterének növelése -Common.ALL.RouteNumber3- = Forgalmi szám harmadik karakterének csökkentése -Common.ALL.LastStation+ = Következő végállomás -Common.ALL.LastStation- = Előző végállomás -Common.ALL.RRP = RP: Vörös túlfeszültség relé visszajelző (menet-/fékáram nem alakult ki) -Common.ALL.GRP = RP: Zöld túlfeszültség relé visszajelző (megakadályozza a motorok túláramát) -Common.ALL.RP = RP: Vörös túlfeszültség relé visszajelző (menet-/fékáram nem alakult ki vagy RP-s) -Common.ALL.SN = LSN: Hiba visszajelző lámpa (áramkörök nem működnek) -Common.ALL.PU = Csökkentett feszültségű mód visszajelző -Common.ALL.BrT = Vonat légfék üzemben -Common.ALL.BrW = Kocsi légfék üzemben -Common.ALL.ARS = ARS: Automatikus sebességszabályozó rendszer kapcsoló -Common.ALL.ARSR = ARS-R: Automatikus sebességszabályozó rendszer ARS-R mód kapcsoló -Common.ALL.ALS = ALS: Automatikus vonat jeladás -Common.ALL.RCARS = RC-ARS: ARS áramköreinek lekapcsolása -Common.ALL.RC1 = RC-1: ARS áramköreinek lekapcsolása -Common.ALL.EPK = ARS elektropneumatikus szelep (EPK) -Common.ALL.EPV = ARS elektropneumatikus szelep (EPV) -Common.ARS.LN = LN: Irányjelző -Common.ARS.KT = KT: Fék visszajelző lámpa -Common.ARS.VD = VD: Vezérlés kikapcsolva ARS által -Common.ARS.Freq = ALS dekóder kapcsoló -Common.ARS.FreqD = (fel 1/5, le 2/6) -Common.ARS.FreqU = (fel 2/6, le 1/5) -Common.ARS.VP = "Tartalék vonat" mód -Common.ARS.RS = RS: Sebesség egyenlőség (a következő szakasz sebességkorlátozása egyenlő vagy gyorsabb az aktuális értéknél) -Common.ARS.AB = ARS Automatikus blokkolás mód -Common.ARS.ABButton = ARS Automatikus blokkolás mód gomb -Common.ARS.ABDriver = (vezetői) -Common.ARS.ABHelper = (segédvezetői) -Common.ARS.AV = Elsődleges ARS-MP egység hiba -Common.ARS.AV1 = Tartalék ARS-MP egység hiba -Common.ARS.AB2 = Automatikus blokkolás mód gomb -Common.ARS.ARS = ARS mód -Common.ARS.LRD = LRD: Mozgatás engedély (ALS 0-ás jelzés esetén) -Common.ARS.VRD = VRD: Mozgatás engedély(ALS 0-ás jelzés esetén) -Common.ARS.KB = KB: Éberségi gomb/pedál -Common.ARS.KVT = KVT: Féknyugtázó gomb -Common.ARS.KVTR = KVT: ARS-R féknyugtázó gomb -Common.ARS.04 = OCh: Nincs ARS frekvencia -Common.ARS.N4 = NCh: Nincs ARS frekvencia -Common.ARS.0 = 0: ARS stop jelzés -Common.ARS.40 = Maximum megengedett sebesség 40 km/h -Common.ARS.60 = Maximum megengedett sebesség 60 km/h -Common.ARS.70 = Maximum megengedett sebesség 70 km/h -Common.ARS.80 = Maximum megengedett sebesség 80 km/h -Common.ALL.RCBPS = RC-BPS: Megfutamodás elleni egység kapcsoló -Common.BPS.On = Megfutamodás elleni egység üzem -Common.BPS.Err = Megfutamodás elleni egység hiba -Common.BPS.Fail = Megfutamodás elleni egység meghibásodás -Commom.NMnUAVA.NMPressureLow = Alacsony légvezetéki nyomás visszajelző -Commom.NMnUAVA.UAVATriggered = UAVA kiiktatva -Common.ALL.LSD = Vonat ajtó állapot visszajelző (ajtók zárva) -Common.ALL.L1w = Első vezeték visszajelző (menet mód) -Common.ALL.L2w = Második vezeték visszajelző (reosztát kontroller mozgás) -Common.ALL.L6w = Hatodik vezeték visszajelző (fék mód) -Common.ALL.Horn = Kürt -Common.ALL.DriverValveBLDisconnect = Fékvezeték elzáró csap -Common.ALL.DriverValveTLDisconnect = Töltővezeték elzáró csap -Common.ALL.DriverValveDisconnect = Légfék elzáró csap -Common.ALL.KRMH = KRMSH: Légfék vészeseti bekapcsoló -Common.ALL.RVTB = RVTB: Biztonsági fék szelep -Common.ALL.FrontBrakeLineIsolationToggle = Fékvezeték elzáró csap -Common.ALL.FrontTrainLineIsolationToggle = Töltővezeték elzáró csap -Common.ALL.RearTrainLineIsolationToggle = Töltővezeték elzáró csap -Common.ALL.RearBrakeLineIsolationToggle = Fékvezeték elzáró csap -Common.ALL.UAVA = UAVA: Automatikus autostop kikapcsoló\n(légvezetéki nyomás csökkentése esetén) -Common.ALL.UAVA2 = UAVA: Automatikus autostop kikapcsoló -Common.ALL.UAVAContact = UAVA kontakt reset -Common.ALL.OAVU = OAVU: AVU kikapcsolása -Common.ALL.LAVU = AVU bekapcsolva -Common.ALL.GV = Főkapcsoló -Common.ALL.AirDistributor = VRN: Levegőelosztó megszakító -Common.ALL.CabinDoor = Fülkeajtó -Common.ALL.PassDoor = Ajtó az utastérbe -Common.ALL.FrontDoor = Átjáróajtó -Common.ALL.RearDoor = Átjáróajtó -Common.ALL.OtsekDoor1 = Első hátfalszekrény nyitó fogantyú -Common.ALL.OtsekDoor2 = Második hátfalszekrény nyitó fogantyú -Common.ALL.CouchCap = Ülés kiemelése - -Common.ALL.UNCh = UNCh: Alacsony frekvenciás erősítő kapcsoló -Common.ALL.ES = ES: Vészhelyzeti kommunikációs kapcsoló -Common.ALL.GCab = Hangszóró: Kabinhangszóró kapcsoló -Common.ALL.UPO = UPO: Utastájékoztató -Common.ALL.R_Radio = Utastájékoztató -Common.ALL.AnnPlay = Utastájékoztató visszajelző lámpa - -#RRI -Train.Common.RRI = RRI: Rádió-relé utastájékoztató -Common.RRI.RRIUp = RRI: Fel -Common.RRI.RRIDown = RRI: Le -Common.RRI.RRILeft = RRI: Balra -Common.RRI.RRIRight = RRI: Jobbra -Common.RRI.RRIEnableToggle = RRI: Áramellátás -Common.RRI.RRIRewindSet2 = RRI: Előretekerés -Common.RRI.RRIRewindSet0 = RRI: Visszatekerés -Common.RRI.RRIAmplifierToggle = RRI: Erősítő -Common.RRI.RRIOn = RRI üzem visszajelző - -#ASNP -Train.Common.ASNP = ASNP -Common.ASNP.ASNPMenu = ASNP: Menü -Common.ASNP.ASNPUp = ASNP: Fel -Common.ASNP.ASNPDown = ASNP: Le -Common.ASNP.ASNPOn = ASNP: Áramellátás - -#PVK -Common.CabVent.PVK- = Fülkeszellőztetés erejének csökkentése -Common.CabVent.PVK+ = Fülkeszellőztetés erejének növelése - -#IGLA -Train.Common.IGLA = IGLA -Common.IGLA.Button1Up = IGLA: Első gomb fel -Common.IGLA.Button1 = IGLA: Első gomb -Common.IGLA.Button1Down = IGLA: Első gomb le -Common.IGLA.Button2Up = IGLA: Második gomb fel -Common.IGLA.Button2 = IGLA: Második gomb -Common.IGLA.Button2Down = IGLA: Második gomb le -Common.IGLA.Button23 = IGLA: Második és Harmadik gomb -Common.IGLA.Button3 = IGLA: Harmadik gomb -Common.IGLA.Button4 = IGLA: Negyedik gomb -Common.IGLA.IGLASR = IGLA: Áramellátás -Common.IGLA.IGLARX = IGLA: Nincs kapcsolat -Common.IGLA.IGLAErr = IGLA: Hiba -Common.IGLA.IGLAOSP = IGLA: Tűzoltó rendszer üzemben -Common.IGLA.IGLAPI = IGLA: Tűz -Common.IGLA.IGLAOff = IGLA: Nagyfeszültségű áramkörök ki - -#BZOS -Common.BZOS.On = Riasztó kapcsoló -Common.BZOS.VH1 = Riasztó bekapcsolva -Common.BZOS.VH2 = Riasztó kioldva -Common.BZOS.Engaged = Riasztó kioldva - -#Train helpers common -Common.ALL.SpeedCurr = Jelenlegi sebesség -Common.ALL.SpeedAccept = Megengedett sebesség -Common.ALL.SpeedAttent = Következő szakasz megengedett sebesség -Common.ALL.Speedometer = Sebességmérő -Common.ALL.BLTLPressure = Nyomás a légvezetékekben (piros: fékvezeték, fekete: töltővezeték) -Common.ALL.BCPressure = Fékhenger nyomás -Common.ALL.EnginesCurrent = Motor áramerősség (A) -Common.ALL.EnginesCurrent1 = Első vontatómotorok áramerőssége (A) -Common.ALL.EnginesCurrent2 = Második vontatómotorok áramerőssége (A) -Common.ALL.EnginesVoltage = Motor feszültség (kV) -Common.ALL.BatteryVoltage = Akkumulátor feszültség (V) -Common.ALL.BatteryCurrent = Akkumulátor áramerősség (A) -Common.ALL.HighVoltage = Magasfeszültség (kV) -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/it_502.lua b/lua/metrostroi_data/languages/it_502.lua index cb7019e..21232d6 100644 --- a/lua/metrostroi_data/languages/it_502.lua +++ b/lua/metrostroi_data/languages/it_502.lua @@ -194,8 +194,6 @@ Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesVoltage = @[Com Entities.gmod_subway_81-502.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] Entities.gmod_subway_81-502.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-502.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - #gmod_subway_81-501 Entities.gmod_subway_81-501.Buttons.AV.KPVUToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KPVUToggle] Entities.gmod_subway_81-501.Buttons.AV.KSDToggle = @[Entities.gmod_subway_81-502.Buttons.AV.KSDToggle] @@ -208,8 +206,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] @@ -244,9 +242,6 @@ Entities.gmod_subway_81-501.Buttons.BLTLPressure.!BLTLPressure = @[Com Entities.gmod_subway_81-501.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] - -Entities.gmod_subway_81-501.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - #Cameras: Train.502.AV = Switches Train.502.VBA = @[Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle] diff --git a/lua/metrostroi_data/languages/it_702.lua b/lua/metrostroi_data/languages/it_702.lua index 1c9bb6d..622aa74 100644 --- a/lua/metrostroi_data/languages/it_702.lua +++ b/lua/metrostroi_data/languages/it_702.lua @@ -14,14 +14,14 @@ Train.703.RCARS = RC-1: selezionatore circuiti ARS Train.703.AVU = Blocca AVU #Spawner -Spawner.707.Type = Tipo di pannello -Spawner.707.Type1 = Vecchio + RRI -Spawner.707.Type2 = Nuovo + ASNP -Spawner.710.RRI = Radio-relè annunciatore +Spawner.707.Type = Tipo di pannello #FIXME +Spawner.707.Type1 = Vecchio + RRI #FIXME +Spawner.707.Type2 = Nuovo + ASNP #FIXME +Spawner.710.RRI = Radio-relè annunciatore #FIXME #######Buttons########### #Common -Common.702.VZ1 = Valvola pneumatica №1 +Common.702.VZ1 = Valvola pneumatica №1 #FIXME!! Common.703.ParkingBrakeLeft = Rilascia freno di parcheggio Common.703.ParkingBrakeRight = Imposta freno di parcheggio Common.703.KSD = KSD: Pulsante di controllo interblocco porte @@ -32,7 +32,7 @@ Common.703.VU3 = Luci Cabina Common.703.AV = Interruttore principale (circuiti ad alta tensione) Common.703.LOn = Abilita illuminazione Common.703.LOff = Disabilita l'illuminazione -Common.703.KRR = KRR: Ruota RK nella prima posizione +Common.703.KRR = KRR: Ruota RK nella prima posizione #FIXME Common.703.RUT = RUT regolazione (accelerazione ridotta) Common.707.SEQ = Spia di controllo del controller reostato Common.707.TAH = TAH: Modalità di guida d'emergenza per la guida senza ARS diff --git a/lua/metrostroi_data/languages/it_717.lua b/lua/metrostroi_data/languages/it_717.lua index 05cb8b2..e865c84 100644 --- a/lua/metrostroi_data/languages/it_717.lua +++ b/lua/metrostroi_data/languages/it_717.lua @@ -742,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] diff --git a/lua/metrostroi_data/languages/it_718.lua b/lua/metrostroi_data/languages/it_718.lua index a213aa2..042bad4 100644 --- a/lua/metrostroi_data/languages/it_718.lua +++ b/lua/metrostroi_data/languages/it_718.lua @@ -5,19 +5,19 @@ return [[ #######Buttons########### #Cameras -Train.718.BUP = BUP -Train.718.PPZ = PPZ -Train.718.VPU = VPU +Train.718.BUP = BUP #FIXME +Train.718.PPZ = PPZ #FIXME +Train.718.VPU = VPU #FIXME #Common Common.718.SB4 = Verifica integrità dei circuiti Common.718.SB5 = Trasferimento dei controlli (Emettitore sonoro) Common.718.SB7K = copertura modalità di guida Common.718.SB7 = Modalità di guida -Common.718.SB12 = Abilita unità interruttori automatici -Common.718.SB13 = Disabilita unità interruttori automatici -Common.718.SB15 = Abilita l'alimentazione del treno -Common.718.SB16 = Disabilita l'alimentazione del treno +Common.718.SB12 = Enable automatic switches unit +Common.718.SB13 = Disable automatic switches unit +Common.718.SB15 = Enable train power supply +Common.718.SB16 = Disable train power supply Common.718.VTPR = Interuttore modalità di rilascio corrente dai collettori Common.718.RX1 = Guida d'emergenza 1 diff --git a/lua/metrostroi_data/languages/it_720.lua b/lua/metrostroi_data/languages/it_720.lua index 28a1481..41c7a4c 100644 --- a/lua/metrostroi_data/languages/it_720.lua +++ b/lua/metrostroi_data/languages/it_720.lua @@ -5,12 +5,12 @@ return [[ #######Buttons########### #Cameras -Train.720.CameraCond = Condizionatore d'aria, IGLA -Train.720.CameraPPZ = PPZ -Train.720.CameraPV = VPU -Train.720.CameraVityaz = SAU "Vityaz" -Train.720.CameraKRMH = Valvole KRMSH e UAVA -Train.720.CameraPVZ = PVZ +Train.720.CameraCond = Condizionatore d'aria, IGLA #FIXME +Train.720.CameraPPZ = PPZ #FIXME +Train.720.CameraPV = VPU #FIXME +Train.720.CameraVityaz = SAU "Vityaz" #FIXME +Train.720.CameraKRMH = Valvole KRMSH e UAVA #FIXME +Train.720.CameraPVZ = PVZ #FIXME #Common Common.720.SF1 = SF1: Alimentazione principale diff --git a/lua/metrostroi_data/languages/it_base.lua b/lua/metrostroi_data/languages/it_base.lua index a76b090..9399257 100644 --- a/lua/metrostroi_data/languages/it_base.lua +++ b/lua/metrostroi_data/languages/it_base.lua @@ -36,7 +36,6 @@ Panel.RedLights = Abilita le luci dinamiche\ndelle luci rosse Panel.ShadowsOther = Abilita le ombre dagli altri\nlight sources Panel.MinimizedShow = Non scaricare nessun elemento\nwhen minimizzato Panel.FOV = FOV -Panel.Z = Altezza della videocamera Panel.RenderDistance = Distanza di rendering Panel.ReloadClient = Ricarica lato utente @@ -45,7 +44,7 @@ Panel.DrawDebugInfo = Disegna le informazioni di debug Panel.CheckAddons = Verifica addons Panel.DrawSignalDebugInfo = Segnala informazioni di debug Panel.ReloadLang = Ricarica linguaggi -Panel.SoftDraw = Tempo di caricamento degli elementi del treno +Panel.SoftDraw = Elementi "smooth\nloading" percento Panel.SoftReloadLang = Non ricaricare uno spawnmenu diff --git a/lua/metrostroi_data/languages/kr_502.lua b/lua/metrostroi_data/languages/kr_502.lua index 68e7de8..5ef9f06 100644 --- a/lua/metrostroi_data/languages/kr_502.lua +++ b/lua/metrostroi_data/languages/kr_502.lua @@ -22,10 +22,10 @@ Common.502.VAK = AK: 비상 주행 모드 회로 연결 Common.502.LRU = 비상 주행 모드 회로 작동 중 #Spawner -Spawner.502.TypeNVL = NVL 사양 차량 -Spawner.502.TypeKVLO = KVL 사양 구형 차량 -Spawner.502.TypeKVLN = KVL 사양 신형 차량 -Spawner.502.EWagons = "E" 형식 객차 추가 +Spawner.502.TypeNVL = NVL 사양 차량 #FIXME +Spawner.502.TypeKVLO = KVL 사양 구형 차량#FIXME +Spawner.502.TypeKVLN = KVL 사양 신형 차량#FIXME +Spawner.502.EWagons = "E" 형식 객차 추가 #FIXME #gmod_subway_81-502 Entities.gmod_subway_81-502.Buttons.VBA.VBAToggle = 자동 운전 배터리 투입/차단 @@ -208,8 +208,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] diff --git a/lua/metrostroi_data/languages/kr_702.lua b/lua/metrostroi_data/languages/kr_702.lua index b3d8bde..45596a3 100644 --- a/lua/metrostroi_data/languages/kr_702.lua +++ b/lua/metrostroi_data/languages/kr_702.lua @@ -14,14 +14,14 @@ Train.703.RCARS = RC-1: ARS 회로 차단기 Train.703.AVU = AVU 블럭 #Spawner -Spawner.707.Type = 운전대 종류 -Spawner.707.Type1 = 구형 + RRI -Spawner.707.Type2 = 신형 + ASNP -Spawner.710.RRI = 무선 중계 안내방송기 +Spawner.707.Type = 운전대 종류 #FIXME +Spawner.707.Type1 = 구형 + RRI #FIXME +Spawner.707.Type2 = 신형 + ASNP #FIXME +Spawner.710.RRI = 무선 중계 안내방송기 #FIXME #######Buttons########### #Common -Common.702.VZ1 = 공압 밸브 №1 +Common.702.VZ1 = 공압 밸브 №1 #FIXME!! Common.703.ParkingBrakeLeft = 주차 제동 완해 Common.703.ParkingBrakeRight = 주차 제동 체결 Common.703.KSD = KSD: 출입문 연동 제어 버튼 diff --git a/lua/metrostroi_data/languages/kr_717.lua b/lua/metrostroi_data/languages/kr_717.lua index c011caa..2bcfdfd 100644 --- a/lua/metrostroi_data/languages/kr_717.lua +++ b/lua/metrostroi_data/languages/kr_717.lua @@ -742,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] diff --git a/lua/metrostroi_data/languages/kr_base.lua b/lua/metrostroi_data/languages/kr_base.lua index 3e99ae4..f071053 100644 --- a/lua/metrostroi_data/languages/kr_base.lua +++ b/lua/metrostroi_data/languages/kr_base.lua @@ -37,7 +37,6 @@ Panel.RedLights = 적색등의 다이나믹 라이트 사용 Panel.ShadowsOther = 기타 광원 그림자 활성 Panel.MinimizedShow = 창 최소화시 구성요소 언로드 하지 않기 Panel.FOV = 시야각(FOV) -Panel.Z = 시점 높이 Panel.RenderDistance = 렌더링 거리 Panel.ReloadClient = 사용자 시스템 다시 불러오기 @@ -46,7 +45,7 @@ Panel.DrawDebugInfo = 디버깅 정보 표시 Panel.DrawSignalDebugInfo = 신호 디버그 정보 Panel.CheckAddons = 애드온 스캔 Panel.ReloadLang = 언어 다시 불러오기 -Panel.SoftDraw = 차량 구성요소 로딩 시간 +Panel.SoftDraw = 구성 요소 "부드러운 로딩" 비율 Panel.SoftReloadLang = 스폰 메뉴 다시 불러오지 않기 diff --git a/lua/metrostroi_data/languages/pl_502.lua b/lua/metrostroi_data/languages/pl_502.lua index e846291..e0f3e99 100644 --- a/lua/metrostroi_data/languages/pl_502.lua +++ b/lua/metrostroi_data/languages/pl_502.lua @@ -166,7 +166,7 @@ Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -208,8 +208,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] diff --git a/lua/metrostroi_data/languages/pl_702.lua b/lua/metrostroi_data/languages/pl_702.lua index 1ab4ef1..ded4ea7 100644 --- a/lua/metrostroi_data/languages/pl_702.lua +++ b/lua/metrostroi_data/languages/pl_702.lua @@ -20,11 +20,6 @@ Spawner.707.Type2 = New + ASNP #FIXME Spawner.710.RRI = Radio-relay announcer #FIXME #######Buttons########### -Train.Buttons.ParkingBrake = %d%% -Train.Buttons.EnginesVoltage = %d V #NEW (volts) -Train.Buttons.CanAB = Autoblocking mode is available #NEW (automatic block signals (without ARS)) -Train.Buttons.InAB = In autoblocking mode #NEW (automatic block signals (without ARS)) - #Common Common.702.VZ1 = Pneumatic valve №1 #FIXME!! Common.703.ParkingBrakeLeft = Hamulec postojowy - hamowanie @@ -42,7 +37,6 @@ Common.703.RUT = Regulacja RUT (zmniejszone przyspieszenie) Common.707.SEQ = Kontrolka pracy RK Common.707.TAH = TAH: Przełącznik jazdy awaryjnej w ruchu bez ARS Common.710.RK = Kontrolka przejściowej pozycji RK -Common.710.LKVT = Attention light #NEW #FIXME Common.710.SAMMSchemeOff = Przycisk wyłączenia rozruchu w jeździe samoczynnej Common.710.SAMMStart = Przycisk rozruchu w jeździe samoczynnej @@ -96,7 +90,7 @@ Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -155,7 +149,7 @@ Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -191,9 +185,6 @@ Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -227,7 +218,7 @@ Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -292,7 +283,7 @@ Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -442,7 +433,7 @@ Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] @@ -619,7 +610,7 @@ Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] diff --git a/lua/metrostroi_data/languages/pl_base.lua b/lua/metrostroi_data/languages/pl_base.lua index e825986..f749782 100644 --- a/lua/metrostroi_data/languages/pl_base.lua +++ b/lua/metrostroi_data/languages/pl_base.lua @@ -31,16 +31,12 @@ Panel.DrawCams = Renderuj obraz z kamer Panel.DisableHUD = Wyłącz HUD na miejscu maszynisty Panel.DisableCamAccel = Wyłącz ruch kamery (wrażenie przyspieszenia) Panel.DisableHoverText = Wyłącz podpowiedzi przycisków -Panel.DisableHoverTextP = Disable additional information\nin tooltips #NEW #FIXME Panel.ScreenshotMode = Tryb fotografii (NISKI FPS!) Panel.ShadowsHeadlight = Włącz dynamiczne cienie (lampy) Panel.RedLights = Enable dynamic light\nof red lights Panel.ShadowsOther = Włącz dynamiczne cienie (inne źródła) Panel.MinimizedShow = Nie zwalniaj zasobów podczas minimalizacji -Panel.PanelLights = Enable dynamic lights\nfrom control panel lamps #NEW -Panel.RouteNumber = Route number #NEW Panel.FOV = FOV (pole widzenia) -Panel.Z = Camera height #NEW Panel.RenderDistance = Odległość rysowania Panel.ReloadClient = Przeładuj zasoby (klient) @@ -55,8 +51,6 @@ Panel.SoftReloadLang = Nie przeładowywuj spawnmenu #Common train - -#Cameras Train.Common.Camera0 = Miejsce maszynisty Train.Common.RouteNumber = Numer brygady Train.Common.LastStation = Stacja końcowa @@ -66,56 +60,7 @@ Train.Common.PneumoPanels = Pneumatic valves #FIXME Train.Common.Voltmeters = Voltmeters and amperemeters #FIXME Train.Common.CouplerCamera = Coupler #FIXME Common.ARM.Monitor1 = Monitor ARM 1 - Train.Buttons.Sealed = Zaplombowane -Train.Buttons.Active = Active #NEW -Train.Buttons.Auto = Auto #NEW -Train.Buttons.On = On #NEW -Train.Buttons.Off = Off #NEW -Train.Buttons.Closed = Closed #NEW -Train.Buttons.Opened = Opened #NEW -Train.Buttons.Disconnected = Disconnected #NEW -Train.Buttons.Connected = Connected #NEW -Train.Buttons.UAVAOff = Control circuits is open #NEW (OFF) -Train.Buttons.UAVAOn = Control circuits is closed #NEW (ON) -Train.Buttons.Freq1/5 = 1/5 autoblocking #NEW -Train.Buttons.Freq2/6 = 2/6 ALS-ARS #NEW -Train.Buttons.Left = Left #NEW -Train.Buttons.Right = Right #NEW -Train.Buttons.Low = Low #NEW -Train.Buttons.High = High #NEW #FIXME -Train.Buttons.LFar = Bright #NEW #FIXME (headlights) -Train.Buttons.LNear = Dim #NEW #FIXME (headlights) -Train.Buttons.0 = 0 #NEW -Train.Buttons.1 = 1 #NEW -Train.Buttons.2 = 2 #NEW -Train.Buttons.3 = 3 #NEW -Train.Buttons.4 = 4 #NEW -Train.Buttons.Forward = Forward #NEW -Train.Buttons.Back = Backward #NEW -Train.Buttons.VentHalf = 1/2 of speed #NEW (of ventilation) -Train.Buttons.VentFull = Full speed #NEW (of ventilation) -Train.Buttons.VTRF = Forward oriented wagons #NEW -Train.Buttons.VTRB = Back oriented wagons #NEW -Train.Buttons.VTR1 = Even wagons #NEW -Train.Buttons.VTR2 = Odd wagons #NEW -Train.Buttons.VTRH1 = First half of train #NEW -Train.Buttons.VTRH2 = Second half of train #NEW -Train.Buttons.VTRAll = All wagons #NEW - -Train.Buttons.BatteryVoltage = %d V #NEW -Train.Buttons.HighVoltage = %d V #NEW -Train.Buttons.BatteryCurrent = %d A #NEW -Train.Buttons.EnginesCurrent = %d A #NEW -Train.Buttons.Speed = %d km/h #NEW -Train.Buttons.SpeedAll = %d km/h\nSpeed limit: %s km/h #NEW #FIXME -Train.Buttons.SpeedLimit = %s km/h #NEW -Train.Buttons.SpeedLimitNext = %s km/h #NEW -Train.Buttons.04 = NF #NEW (no frequency) -Train.Buttons.BCPressure = %.1f bar -Train.Buttons.BLTLPressure = TL: %.1f\nBL: %.1f bar #NEW (TL: Train line, BL: Brake line acronyms) -Train.Buttons.Locked = Locked #NEW -Train.Buttons.Unlocked = Unlocked #NEW #Train entities Entities.gmod_subway_base.Name = Baza pociągu metra diff --git a/lua/metrostroi_data/languages/ru_502.lua b/lua/metrostroi_data/languages/ru_502.lua index ecd7427..d949af7 100644 --- a/lua/metrostroi_data/languages/ru_502.lua +++ b/lua/metrostroi_data/languages/ru_502.lua @@ -166,7 +166,7 @@ Entities.gmod_subway_81-502.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-502.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-502.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-502.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-502.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-502.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -206,8 +206,8 @@ Entities.gmod_subway_81-501.Buttons.AV1.VU3Toggle = @[Common.703.V Entities.gmod_subway_81-501.Buttons.VU.VUToggle = @[Common.ALL.VU] -Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!GRP = @[Common.ALL.RRP] +Entities.gmod_subway_81-501.Buttons.Main.!RRP = @[Common.ALL.GRP] Entities.gmod_subway_81-501.Buttons.Main.!SD = @[Common.703.SD] Entities.gmod_subway_81-501.Buttons.Main.LOnSet = @[Common.703.LOn] Entities.gmod_subway_81-501.Buttons.Main.LOffSet = @[Common.703.LOff] @@ -243,7 +243,7 @@ Entities.gmod_subway_81-501.Buttons.BCPressure.!BCPressure = @[Com Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] Entities.gmod_subway_81-501.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_81-501.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] +Entities.gmod_subway_81-501.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights1] #Cameras: Train.502.AV = Выключатели diff --git a/lua/metrostroi_data/languages/ru_508.lua b/lua/metrostroi_data/languages/ru_508.lua deleted file mode 100644 index fe27a31..0000000 --- a/lua/metrostroi_data/languages/ru_508.lua +++ /dev/null @@ -1,132 +0,0 @@ -return [[ -#81-508/509 - -[ru] - -#######Buttons########### -#Common -Common.508.50V = +50В: Питание дополнительных потребителий -Common.508.UKS = Работа устройства ограничения скорости -Common.508.UKSDisconnect = Кран отключения устройства ограничения скорости -Common.508.Heaters = Включение отопления салонов - - -#gmod_subway_em508 -Entities.gmod_subway_em508.Spawner.Texture.Name = @[Common.Spawner.Texture] -Entities.gmod_subway_em508.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] -Entities.gmod_subway_em508.Spawner.CabTexture.Name = @[Common.Spawner.CabTexture] -Entities.gmod_subway_em508.Spawner.Announcer.Name = @[Common.Spawner.Announcer] -Entities.gmod_subway_em508.Spawner.Announcer.1 = @[Spawner.710.RRI] -Entities.gmod_subway_em508.Spawner.SpawnMode.Name = @[Common.Spawner.SpawnMode] -Entities.gmod_subway_em508.Spawner.SpawnMode.1 = @[Common.Spawner.SpawnMode.Full] -Entities.gmod_subway_em508.Spawner.SpawnMode.2 = @[Common.Spawner.SpawnMode.Deadlock] -Entities.gmod_subway_em508.Spawner.SpawnMode.3 = @[Common.Spawner.SpawnMode.NightDeadlock] -Entities.gmod_subway_em508.Spawner.SpawnMode.4 = @[Common.Spawner.SpawnMode.Depot] - -Entities.gmod_subway_em508.Buttons.AVMain.AVToggle = @[Common.703.AV] -Entities.gmod_subway_em508.Buttons.Battery.VBToggle = @[Common.ALL.VB] @[Common.ALL.VB2] -Entities.gmod_subway_em508.Buttons.AV1.VU1Toggle = @[Common.703.VU1] -Entities.gmod_subway_em508.Buttons.AV1.VU2Toggle = @[Common.703.VU2] -Entities.gmod_subway_em508.Buttons.AV1.VU3Toggle = @[Common.703.VU3] -Entities.gmod_subway_em508.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] -Entities.gmod_subway_em508.Buttons.50V.50VToggle = @[Common.508.50V] -Entities.gmod_subway_em508.Buttons.PassHeaters.HPassToggle = @[Common.508.Heaters] - -Entities.gmod_subway_em508.Buttons.Lamps.!GRP = @[Common.ALL.GRP] -Entities.gmod_subway_em508.Buttons.Lamps.!LSN = @[Common.ALL.SN] -Entities.gmod_subway_em508.Buttons.Lamps.!RRP = @[Common.ALL.RRP] -Entities.gmod_subway_em508.Buttons.Lamps.!Speedometer1 = @[Common.ALL.Speedometer] -Entities.gmod_subway_em508.Buttons.Lamps.!Speedometer2 = @[Common.ALL.Speedometer] -Entities.gmod_subway_em508.Buttons.Lamps.!SD = @[Common.703.SD] -Entities.gmod_subway_em508.Buttons.Lamps.!UKS = @[Common.508.UKS] -Entities.gmod_subway_em508.Buttons.Lamps.KU16Toggle = @[Common.ALL.VF2] -Entities.gmod_subway_em508.Buttons.Main1.KU8Set = @[Common.ALL.KSN] -Entities.gmod_subway_em508.Buttons.Main1.KU10Set = @[Common.ALL.KRZD] -Entities.gmod_subway_em508.Buttons.Main1.KU9Set = @[Common.ALL.VRP] -Entities.gmod_subway_em508.Buttons.Main1.KU2Toggle = @[Common.ALL.VUD] -Entities.gmod_subway_em508.Buttons.Main1.KU15Set = @[Common.ALL.RMK] -Entities.gmod_subway_em508.Buttons.Main1.KU1Toggle = @[Common.ALL.VMK] -Entities.gmod_subway_em508.Buttons.Main1.KU11Set = @[Common.703.KSD] -Entities.gmod_subway_em508.Buttons.Main1.KU4Set = @[Common.703.LOn] -Entities.gmod_subway_em508.Buttons.Main1.KU5Set = @[Common.703.LOff] -Entities.gmod_subway_em508.Buttons.Main1.UV1Set = @[Common.702.VZ1] -Entities.gmod_subway_em508.Buttons.Main1.KU6Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508.Buttons.Main1.KU7Set = @[Common.ALL.KDP] -Entities.gmod_subway_em508.Buttons.Main1.KU6KToggle = @[Common.ALL.KDLPK] - -Entities.gmod_subway_em508.Buttons.KU14.KU14Set = @[Common.ALL.KRP] -Entities.gmod_subway_em508.Buttons.KU10R.KU10RSet = @[Common.ALL.KRZD] -Entities.gmod_subway_em508.Buttons.AVU.OtklAVUToggle = @[Common.ALL.OAVU] -Entities.gmod_subway_em508.Buttons.AVU.!AVULight = @[Common.ALL.LAVU] -Entities.gmod_subway_em508.Buttons.KRR.KRRSet = @[Common.703.KRR] -Entities.gmod_subway_em508.Buttons.VU.VUToggle = @[Common.ALL.VU] - -Entities.gmod_subway_em508.Buttons.DriverMicrophone.R_Program1Set = @[Common.ALL.Program1] - -Entities.gmod_subway_em508.Buttons.HelperPanel.KU13Set = @[Common.ALL.KDL] -Entities.gmod_subway_em508.Buttons.HelperPanel.KU3Toggle = @[Common.ALL.VUD2] -Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program1HSet = @[Common.ALL.Program1] -Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program2HSet = @[Common.ALL.Program2] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIDown = @[Common.RRI.RRIDown] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRILeft = @[Common.RRI.RRILeft] -Entities.gmod_subway_em508.Buttons.RRIScreen.RRIRight = @[Common.RRI.RRIRight] -Entities.gmod_subway_em508.Buttons.RRI.RRIEnableToggle = @[Common.RRI.RRIEnableToggle] -Entities.gmod_subway_em508.Buttons.RRI.RRIRewindSet2 = @[Common.RRI.RRIRewindSet2] -Entities.gmod_subway_em508.Buttons.RRI.RRIRewindSet0 = @[Common.RRI.RRIRewindSet0] -Entities.gmod_subway_em508.Buttons.RRI.RRIAmplifierToggle = @[Common.RRI.RRIAmplifierToggle] -Entities.gmod_subway_em508.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPMenuSet = @[Common.ASNP.ASNPMenu] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPUpSet = @[Common.ASNP.ASNPUp] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPDownSet = @[Common.ASNP.ASNPDown] -Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPOnToggle = @[Common.ASNP.ASNPOn] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1USet = @[Common.IGLA.Button1Up] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1Set = @[Common.IGLA.Button1] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1DSet = @[Common.IGLA.Button1Down] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2USet = @[Common.IGLA.Button2Up] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2Set = @[Common.IGLA.Button2] -Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2DSet = @[Common.IGLA.Button2Down] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLASR = @[Common.IGLA.IGLASR] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLARX = @[Common.IGLA.IGLARX] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAErr = @[Common.IGLA.IGLAErr] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOSP = @[Common.IGLA.IGLAOSP] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAPI = @[Common.IGLA.IGLAPI] -Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOff = @[Common.IGLA.IGLAOff] - - -Entities.gmod_subway_em508.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] -Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] -Entities.gmod_subway_em508.Buttons.UAVAPanel.UKSDisconnectToggle = @[Common.508.UKSDisconnect] -Entities.gmod_subway_em508.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] -Entities.gmod_subway_em508.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] -Entities.gmod_subway_em508.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] -Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.RearPneumatic.RearTrainLineIsolationToggle = @[Common.ALL.RearTrainLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.RearPneumatic.RearBrakeLineIsolationToggle = @[Common.ALL.RearBrakeLineIsolationToggle] -Entities.gmod_subway_em508.Buttons.GV.GVToggle = @[Common.ALL.GV] -Entities.gmod_subway_em508.Buttons.AirDistributor.AirDistributorDisconnectToggle = @[Common.ALL.AirDistributor] -Entities.gmod_subway_em508.Buttons.PassengerDoor.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508.Buttons.PassengerDoor1.PassengerDoor = @[Common.ALL.PassDoor] -Entities.gmod_subway_em508.Buttons.FrontDoor.FrontDoor = @[Common.ALL.FrontDoor] -Entities.gmod_subway_em508.Buttons.RearDoor.RearDoor = @[Common.ALL.RearDoor] -Entities.gmod_subway_em508.Buttons.CabinDoor.CabinDoor = @[Common.ALL.CabinDoor] - -Entities.gmod_subway_em508.Buttons.BLTLPressure.!BLTLPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_em508.Buttons.BCPressure.!BCPressure = @[Common.ALL.BCPressure] -Entities.gmod_subway_em508.Buttons.HVMeters.!EnginesVoltage = @[Common.ALL.EnginesVoltage] -Entities.gmod_subway_em508.Buttons.HVMeters.!EnginesCurrent = @[Common.ALL.EnginesCurrent] -Entities.gmod_subway_em508.Buttons.BatteryVoltage.!BatteryVoltage = @[Common.ALL.BatteryVoltage] - -Entities.gmod_subway_em508t.Buttons.PanelLamp.PanelLampToggle = @[Common.ALL.PanelLights] - -Entities.gmod_subway_em508.Buttons.Route.RouteNumber1+ = @[Common.ALL.RouteNumber1+] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber2+ = @[Common.ALL.RouteNumber2+] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber1- = @[Common.ALL.RouteNumber1-] -Entities.gmod_subway_em508.Buttons.Route.RouteNumber2- = @[Common.ALL.RouteNumber2-] -Entities.gmod_subway_em508.Buttons.LastStation.LastStation+ = @[Common.ALL.LastStation+] -Entities.gmod_subway_em508.Buttons.LastStation.LastStation- = @[Common.ALL.LastStation-] -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages/ru_702.lua b/lua/metrostroi_data/languages/ru_702.lua index 9100022..cf7c0d0 100644 --- a/lua/metrostroi_data/languages/ru_702.lua +++ b/lua/metrostroi_data/languages/ru_702.lua @@ -20,11 +20,6 @@ Spawner.707.Type2 = Новая + АСНП Spawner.710.RRI = Радиорелейный информатор #######Buttons########### -Train.Buttons.ParkingBrake = %d%% -Train.Buttons.EnginesVoltage = %d В -Train.Buttons.CanAB = Доступен переход в режим АБ -Train.Buttons.InAB = В режиме АБ - #Common Common.702.VZ1 = Кнопка принудительного срабатывания вентиля замещения №1 Common.703.ParkingBrakeLeft = Растормозить ручной тормоз @@ -42,7 +37,6 @@ Common.703.RUT = Регулировка РУТ(Пониженн Common.707.SEQ = Лампа вращения РК Common.707.TAH = Тумблер аварийного хода для движения без АРС Common.710.RK = Лампа нахождения РК в промежуточной позиции -Common.710.LKVT = Лампа бдительности Common.710.SAMMSchemeOff = Кнопка выключения тяги автоведения Common.710.SAMMStart = Кнопка пуска от автоведения @@ -96,7 +90,7 @@ Entities.gmod_subway_81-702.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -156,7 +150,7 @@ Entities.gmod_subway_81-702_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-702_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-702_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-702_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-702_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-702_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -192,9 +186,6 @@ Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle = @[Common.ALL.VPR] Entities.gmod_subway_81-703.Buttons.Main.RRP = @[Common.ALL.RRP] Entities.gmod_subway_81-703.Buttons.Main.GRP = @[Common.ALL.GRP] Entities.gmod_subway_81-703.Buttons.Main.SD = @[Common.703.SD] -Entities.gmod_subway_81-703.Buttons.Main.SDW = @[Common.502.SDW] -Entities.gmod_subway_81-703.Buttons.Main.PP1 = @[Common.ALL.L1w] -Entities.gmod_subway_81-703.Buttons.Main.PP6 = @[Common.ALL.L6w] Entities.gmod_subway_81-703.Buttons.Main.KU4Set = @[Common.703.LOn] Entities.gmod_subway_81-703.Buttons.Main.KU5Set = @[Common.703.LOff] Entities.gmod_subway_81-703.Buttons.Main.KU9Set = @[Common.ALL.VRP] @@ -228,7 +219,7 @@ Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -293,7 +284,7 @@ Entities.gmod_subway_81-703_int.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_81-703_int.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-703_int.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-703_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-703_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-703_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -443,7 +434,7 @@ Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] @@ -620,7 +611,7 @@ Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft = @[Common.703.ParkingBrakeLeft] Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight = @[Common.703.ParkingBrakeRight] Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle = @[Common.ALL.EPK] diff --git a/lua/metrostroi_data/languages/ru_717.lua b/lua/metrostroi_data/languages/ru_717.lua index 72a3dfb..59b5110 100644 --- a/lua/metrostroi_data/languages/ru_717.lua +++ b/lua/metrostroi_data/languages/ru_717.lua @@ -34,8 +34,6 @@ Spawner.717.RingType = Тип звонка Spawner.717.BPSNType = Тип БПСН #######Buttons########### -Train.Buttons.RZP = Сработала защита БПСН - #Common Common.717.VBD = Выключатель блокировки дверей от АСНП Common.717.UPPS = Выключатель системы УППС @@ -88,9 +86,9 @@ Common.717.A49 = А49: Аварийное освещение Common.717.A27 = А27: Управление освещением салона, освещение кабины, сигнализация тормоза, зелёная лампа РП Common.717.A72 = А72: Синхронизация вентиля замещения №1 Common.717.A50 = А50: Контактор освещения -Common.717.AV3 = АВ3: Резервное питание вентиляции +Common.717.AV3 = АВ3: Резервное питание венлиляции Common.717.AV3S = АВ3: Резервное питание радиостанции -Common.717.AV2 = АВ2: Основное питание вентиляции +Common.717.AV2 = АВ2: Основное питание венлиляции Common.717.AV4 = АВ4: Управление I группой вентиляции Common.717.AV5 = АВ5: Управление II группой вентиляции Common.717.AV6 = АВ6: Управление резервной группой вентиляции @@ -235,7 +233,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLKVC = @[Common.717.K Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLRS = @[Common.ARS.RS] Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLVD = @[Common.717.LVD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLST = @[Common.717.LST] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_1.!LampLEKK = @[Common.717.LEKK] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer1 = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!Speedometer2 = @[Common.ALL.Speedometer] @@ -259,7 +256,6 @@ Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLEKK = @[Common.717.G Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLN = @[Common.ARS.LN] Entities.gmod_subway_81-717_mvm.Buttons.Block2_2.!LampLRS = @[Common.ARS.RS] -Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!Speedometer = @[Common.ALL.Speedometer] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LSD = @[Common.ALL.LSD] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LOch = @[Common.ARS.0]\n@[Common.ARS.04] Entities.gmod_subway_81-717_mvm.Buttons.Block2_3.!LN = @[Common.ARS.LN]\n@[Common.ARS.40] @@ -538,7 +534,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.DriverValveTLDisconnect.DriverValveTLDis Entities.gmod_subway_81-717_mvm.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -562,9 +558,7 @@ Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VBToggle = @[Common.ALL.VB] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:VBToggle = @[Common.ALL.VB] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1P:RC1Toggle = @[Common.ALL.RC1] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC1Toggle = @[Common.ALL.RC1] -Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2P:RC1Toggle = @[Common.ALL.RC1] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:RC2Toggle = @[Common.717.RC2] Entities.gmod_subway_81-717_lvz.Buttons.Battery_R.2:RC2Toggle = @[Common.717.RC2] Entities.gmod_subway_81-717_lvz.Buttons.Battery_C.1:VAUToggle = @[Common.717.VAU] @@ -748,7 +742,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KRZDSet Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:VozvratRPSet = @[Common.ALL.VRPBV] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!GreenRPLight3 = @[Common.ALL.GRP] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!RZPLight3 = @[Common.717.RZPL] -Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.KVP] +Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.!LKVPLight3 = @[Common.717.RZPL] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:OtklAVUToggle = @[Common.ALL.OAVU] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:ConverterProtectionSet = @[Common.717.ConverterProtection] Entities.gmod_subway_81-717_lvz.Buttons.Block5_6_old_paksd.3:KSNSet = @[Common.ALL.KSN] @@ -957,7 +951,7 @@ Entities.gmod_subway_81-717_lvz.Buttons.DriverValveBLDisconnect.DriverValveBLDis Entities.gmod_subway_81-717_lvz.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveBLDisconnect] Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle = @[Common.ALL.FrontTrainLineIsolationToggle] @@ -1054,10 +1048,6 @@ Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_mvm.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] -Entities.gmod_subway_81-714_mvm.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] -Entities.gmod_subway_81-714_mvm.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #gmod_subway_81-714_lvz Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle = @[Common.ALL.FrontBrakeLineIsolationToggle] @@ -1132,11 +1122,6 @@ Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveBLD Entities.gmod_subway_81-714_lvz.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle = @[Common.ALL.DriverValveTLDisconnect] Entities.gmod_subway_81-714_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-714_lvz.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - #Spawner: Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name = @[Common.Spawner.Announcer] Entities.gmod_subway_81-717_mvm.Spawner.Scheme.Name = @[Common.Spawner.Scheme] diff --git a/lua/metrostroi_data/languages/ru_718.lua b/lua/metrostroi_data/languages/ru_718.lua index f850b13..89f76ea 100644 --- a/lua/metrostroi_data/languages/ru_718.lua +++ b/lua/metrostroi_data/languages/ru_718.lua @@ -9,11 +9,6 @@ Train.718.BUP = БУП Train.718.PPZ = ППЗ Train.718.VPU = ВПУ -Train.Buttons.LHalf = Пониженная -Train.Buttons.LFull = Полная -Train.Buttons.HL5 = Несбор схемы -Train.Buttons.HL6 = Сработала защита или минимальный ток -Train.Buttons.HL7 = Сработала защита ББЭ #Common Common.718.SB4 = Проверка сбора схемы Common.718.SB5 = Передача управления (звонок) @@ -58,7 +53,7 @@ Common.718.SF8 = SF8: Управление дверьми Common.718.SF11 = SF11: Управление вентилятором II группы Common.718.SF10 = SF10: Управление вентилятором I группы Common.718.SF7 = SF7: ББЭ, Мотор-компрессор -Common.718.SF50 = SF50: Скоростемер +Common.718.SF50 = SF50: Скоростимер Common.718.SF76 = SF76: Пожарная сигнализация Common.718.SF73 = SF73: Гребнесмазыватель Common.718.SF3 = SF3: Вагонное питание, ЦУВ @@ -556,7 +551,7 @@ Entities.gmod_subway_81-718.Buttons.DriverValveDisconnect.DriverValveDisconnectT Entities.gmod_subway_81-718.Buttons.Stopkran.EmergencyBrakeValveToggle = @[Common.ALL.EmergencyBrakeValve] Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAToggle = @[Common.ALL.UAVA] -Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVACToggle = @[Common.ALL.UAVAContact] +Entities.gmod_subway_81-718.Buttons.UAVAPanel.UAVAContactSet = @[Common.ALL.UAVAContact] Entities.gmod_subway_81-718.Buttons.RRI.!RRIOn = @[Common.RRI.RRIOn] Entities.gmod_subway_81-718.Buttons.RRIScreen.RRIUp = @[Common.RRI.RRIUp] @@ -690,11 +685,6 @@ Entities.gmod_subway_81-719.Buttons.couch_cap.CouchCap Entities.gmod_subway_81-719.Buttons.Battery.VBToggle = @[Common.ALL.VB] -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryVoltage = @[Common.ALL.BatteryVoltage] #NEW -Entities.gmod_subway_81-719.Buttons.Voltages.!BatteryCurrent = @[Common.ALL.BatteryCurrent] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BCPressure = @[Common.ALL.BLTLPressure] #NEW -Entities.gmod_subway_81-719.Buttons.Pressures.!BLTLPressure = @[Common.ALL.BCPressure] #NEW - #Spawner: Entities.gmod_subway_81-718.Spawner.Texture.Name = @[Common.Spawner.Texture] Entities.gmod_subway_81-718.Spawner.PassTexture.Name = @[Common.Spawner.PassTexture] diff --git a/lua/metrostroi_data/languages/ru_720.lua b/lua/metrostroi_data/languages/ru_720.lua index 72654aa..734813b 100644 --- a/lua/metrostroi_data/languages/ru_720.lua +++ b/lua/metrostroi_data/languages/ru_720.lua @@ -12,13 +12,6 @@ Train.720.CameraVityaz = САУ "Витязь" Train.720.CameraKRMH = Краны КРМШ и УАВА Train.720.CameraPVZ = ПВЗ -Train.Buttons.Heating = Обогрев -Train.Buttons.Vent = Вентиляция -Train.Buttons.Cooling = Охлаждение -Train.Buttons.BARS1 = БАРС1 -Train.Buttons.BARS2 = БАРС2 -Train.Buttons.BARS12 = БАРС1 и БАРС2 - #Common Common.720.SF1 = SF1: Питание общее Common.720.SF2 = SF2: Управление основное @@ -95,7 +88,7 @@ Common.720.AppLights = Освещение аппаратного отсе Common.720.BARSBlock = Блокировка неисправных БАРСов Common.720.Accel = Текущее ускорение -Common.720.Forward = Движение вперёд +Common.720.Forward = Движение вепрёд Common.720.Backward = Движение назад Common.720.Stand = Стоянка Common.720.Ticker = Включение бегущей строки в салоне @@ -116,7 +109,7 @@ Common.720.R_Emer = Включение экстренной свя Common.720.R_Program1 = Пуск записи (программа 1) Common.720.EnableBVEmer = Резервное включение БВ Common.720.EmergencyControls = Выключатель резервного включения цепей управления -Common.720.Wiper = Включение стеклоочистителя +Common.720.Wiper = Включение стекло-очистителя Common.720.AccelRate = Включение режима "Подъём" Common.720.EBrakeAdd = Увеличение уставки резервного тормоза @@ -262,7 +255,7 @@ Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle = @[Common.7 Entities.gmod_subway_81-720.Buttons.PUU.!VDop = @[Common.ALL.SpeedAccept] Entities.gmod_subway_81-720.Buttons.PUU.!VFact = @[Common.ALL.SpeedCurr] Entities.gmod_subway_81-720.Buttons.PUU.!VPred = @[Common.ALL.SpeedAttent] -Entities.gmod_subway_81-720.Buttons.PUU.!VFact2 = @[Common.ALL.SpeedCurr] +Entities.gmod_subway_81-720.Buttons.PUU.!VDop2 = @[Common.ALL.SpeedAccept] Entities.gmod_subway_81-720.Buttons.PUU.!Acc = @[Common.720.Accel] Entities.gmod_subway_81-720.Buttons.PUU.!Forw = @[Common.720.Forward] Entities.gmod_subway_81-720.Buttons.PUU.!Back = @[Common.720.Backward] diff --git a/lua/metrostroi_data/languages/ru_722.lua b/lua/metrostroi_data/languages/ru_722.lua index e01f950..d335c27 100644 --- a/lua/metrostroi_data/languages/ru_722.lua +++ b/lua/metrostroi_data/languages/ru_722.lua @@ -11,21 +11,7 @@ Train.722.Vityaz = Монитор САУ "ВИТЯЗЬ-СП" Train.722.SARMAT = Монитор системы ЦИС Train.722.CabLights = Пульт освещения Train.722.Disconnects = Концевые краны -Train.722.KRMH = Краны КРМШ и РВТБ - -Train.Buttons.BattOn = Батарея включена -Train.Buttons.BattOff = Батарея выключается -Train.Buttons.VentEmer = Аварийное -Train.Buttons.VentAuto = Автоматическое -Train.Buttons.Vent1/2 = Половина вентиляторов -Train.Buttons.VentAll = Все вентиляторы - -Train.Buttons.VRUAH = Аварийный ход -Train.Buttons.VRUOn = Ручное включение -Train.Buttons.PantSC = Включение короткозамыкателя -Train.Buttons.DoorCloseA = Автоматическое закрытие (с сигналом) -Train.Buttons.DoorCloseM = Ручное закрытие (без сигнала) -Train.Buttons.AHActive = Активно резервное управление +Train.722.KRMH = Краны КРМШ и РВТБ #######Buttons########### Common.722.MirrorHeating = Включение отопления зеркал diff --git a/lua/metrostroi_data/languages/ru_base.lua b/lua/metrostroi_data/languages/ru_base.lua index 89e1f38..939e354 100644 --- a/lua/metrostroi_data/languages/ru_base.lua +++ b/lua/metrostroi_data/languages/ru_base.lua @@ -31,17 +31,12 @@ Panel.DrawCams = Отрисовывать камеры Panel.DisableHUD = Откл. HUD в кресле машиниста Panel.DisableCamAccel = Откл. симуляцию качания головы Panel.DisableHoverText = Откл. всплывающий текст -Panel.DisableHoverTextP = Откл. дополнительную информацию\nв всплывающем тексте Panel.ScreenshotMode = Режим съёмки (НИЗКИЙ ФПС) Panel.ShadowsHeadlight = Вкл. тени от фар Panel.RedLights = Вкл. динамический свет от\nкрасных фар Panel.ShadowsOther = Вкл. тени от остальных\nисточников света -Panel.PanelSprites = Вкл. отображение спрайтов\nна пульте Panel.MinimizedShow = Не выгружать элементы\nпри сворачивании -Panel.PanelLights = Вкл. динамический свет от\nламп на пульте -Panel.RouteNumber = Номер маршрута Panel.FOV = Поле зрения -Panel.Z = Высота камеры Panel.RenderDistance = Дальность прорисовки Panel.ReloadClient = Перезагрузить клиентскую часть @@ -56,8 +51,6 @@ Panel.SoftReloadLang = Не перезагружать спавнменю #Common train - -#Cameras Train.Common.Camera0 = Место машиниста Train.Common.RouteNumber = Номер маршрута Train.Common.LastStation = Конечная станция @@ -67,57 +60,7 @@ Train.Common.PneumoPanels = Краны разобщения и ЭПК Train.Common.Voltmeters = Вольтметры и амперметры Train.Common.CouplerCamera = Сцепка Common.ARM.Monitor1 = Монитор 1 АРМ - Train.Buttons.Sealed = Запломбировано -Train.Buttons.Active = Активен -Train.Buttons.Auto = Автоматически -Train.Buttons.On = Включен -Train.Buttons.Off = Отключен -Train.Buttons.Closed = Закрыт -Train.Buttons.Opened = Открыт -Train.Buttons.Disconnected = Разъединён -Train.Buttons.Connected = Соединён -Train.Buttons.UAVAOff = Цепи управления разомкнуты -Train.Buttons.UAVAOn = Цепи управления замкнуты -Train.Buttons.Freq1/5 = 1/5 АБ -Train.Buttons.Freq2/6 = 2/6 АЛС-АРС -Train.Buttons.Left = Левые -Train.Buttons.Right = Правые -Train.Buttons.Low = Слабо -Train.Buttons.High = Сильно -Train.Buttons.LFar = Дальний свет -Train.Buttons.LNear = Ближний свет -Train.Buttons.0 = 0 -Train.Buttons.1 = 1 -Train.Buttons.2 = 2 -Train.Buttons.3 = 3 -Train.Buttons.4 = 4 -Train.Buttons.Forward = Вперед -Train.Buttons.Back = Назад -Train.Buttons.VentHalf = 1/2 скорости -Train.Buttons.VentFull = Полная скорость -Train.Buttons.VTRF = Прямо ориентированные вагоны -Train.Buttons.VTRB = Обратно ориентированные вагоны -Train.Buttons.VTR1 = Чётные вагоны -Train.Buttons.VTR2 = Нечётные вагоны -Train.Buttons.VTRH1 = Первая половина -Train.Buttons.VTRH2 = Вторая половина -Train.Buttons.VTRAll = Все вагоны - -Train.Buttons.BatteryVoltage = %d В -Train.Buttons.HighVoltage = %d В -Train.Buttons.BatteryCurrent = %d А -Train.Buttons.EnginesCurrent = %d А -Train.Buttons.Speed = %d км/ч -Train.Buttons.SpeedAll = %d км/ч\nОграничение:%s км/ч -Train.Buttons.SpeedLimit = %s км/ч -Train.Buttons.SpeedLimitNext = %s км/ч -Train.Buttons.Acceleration = % 4.2f м/с -Train.Buttons.04 = ОЧ -Train.Buttons.BCPressure = %.1f кгс/см² -Train.Buttons.BLTLPressure = НМ: %.1f\nТМ: %.1f кгс/см² -Train.Buttons.Locked = Заблокирован -Train.Buttons.Unlocked = Разблокирован #Train entities Entities.gmod_subway_base.Name = База метропоездов @@ -181,9 +124,9 @@ Weapons.train_kv_wrench_gold.Purpose = @[Weapons.train_kv_wrench.Purpose] Weapons.train_kv_wrench_gold.Instructions = @[Weapons.train_kv_wrench.Instructions] #Spawner common -Spawner.Title = Спавнер поездов -Spawner.Spawn = Создать -Spawner.Close = Закрыть +Spawner.Title = Спавнер поездов #FIXME +Spawner.Spawn = Создать #FIXME +Spawner.Close = Закрыть #FIXME Spawner.Trains1 = Разрешено ваг. Spawner.Trains2 = На человека Spawner.WagNum = Количество вагонов @@ -200,12 +143,12 @@ Common.Spawner.SpawnMode.Deadlock = Тупик Common.Spawner.SpawnMode.Full = Запущен полностью Common.Spawner.SpawnMode.NightDeadlock = Ночной отстой Common.Spawner.SpawnMode.Depot = Депо -Spawner.Common.EType = Тип электросхем #FIXME +Spawner.Common.EType = Тип электросхем Common.Spawner.Scheme = Схема в салоне -Common.Spawner.Random = Случайно -Common.Spawner.Old = Старые -Common.Spawner.New = Новые -Common.Spawner.Type = Тип +Common.Spawner.Random = Случайно #FIXME +Common.Spawner.Old = Старые #FIXME +Common.Spawner.New = Новые #FIXME +Common.Spawner.Type = Тип #FIXME Common.Spawner.SchemeInvert = Инвертировать наддверные схемы #Coupler common @@ -260,7 +203,7 @@ Common.ALL.KAHK = Крышка кнопки КАХ Common.ALL.VAD = ВАД: Выключатель аварийный дверей Common.ALL.OVT = ОВТ: Отключение вентильных тормозов Common.ALL.VOVT = ВОВТ: Выключатель отключения вентильных тормозов -Common.ALL.EmergencyBrakeValve = Стоп-кран +Common.ALL.EmergencyBrakeValve = Стопкран Common.ALL.ParkingBrake = Стояночный тормоз Common.ALL.VU = ВУ: Выключатель управления Common.ALL.KDP = КДП: Открытие правых дверей @@ -339,7 +282,6 @@ Common.ARS.VRD = ВРД: Выключатель р Common.ARS.KB = КБ: Кнопка бдительности Common.ARS.KVT = КВТ: Кнопка восприятия торможения Common.ARS.KVTR = КВТ: Кнопка восприятия торможения при работе от АРС-Р -Common.ARS.AO = АО: Сигнал абсолютной остановки Common.ARS.04 = ОЧ: Лампа отсутствия частоты Common.ARS.N4 = НЧ: Лампа отсутствия частоты Common.ARS.0 = 0: Лампа разрешённой скорости 0 км\ч diff --git a/lua/metrostroi_data/languages_/_unfinished/cz_base.lua b/lua/metrostroi_data/languages_/_unfinished/cz_base.lua deleted file mode 100644 index 07701df..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/cz_base.lua +++ /dev/null @@ -1,53 +0,0 @@ -return [[ -{ - "Lang": "cz", - "Name": "Čeština", - "Panel.Admin": "Admin", - "Panel.Client": "Klient", - "Panel.DrawDebugInfo": "Zobrazit informace pro vývojáře", - "Panel.DisableCamAccel": "Vypnout akceleraci pohledu", - "Panel.DisableHoverText": "Vypnout vysvětlivky", - - "Entities.gmod_subway_base.Name": "Vozová základna", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (vložený vůz)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717 (MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717 (LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714 (MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714 (LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (nefunguje)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (nefunguje)", - "Entities.gmod_subway_81-720.Name": "81-720 (čelní vůz)", - "Entities.gmod_subway_81-721.Name": "81-721 (vložený vůz)", - "Entities.gmod_subway_81-722.Name": "81-722 (čelní vůz)", - "Entities.gmod_subway_81-723.Name": "81-723 (vložený vůz s pohonem)", - "Entities.gmod_subway_81-724.Name": "81-724 (vložený vůz bez pohonu)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ež", - "Entities.gmod_subway_ezh1.Name": "Ež1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 (vložený vůz)", - "Entities.gmod_subway_ezh3.Name": "Ež3", - "Entities.gmod_subway_ezh3ru1.Name": "Ež3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508T", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "Vlak řízený počítačem", - - "Entities.gmod_train_bogey.Name": "Podvozek vlaku", - "Entities.gmod_train_couple.Name": "Spřáhlo", - - "Entities.gmod_track_pui.Name": "PUI (Programovatelné zobrazovací zařízení)", - "Entities.gmod_track_mus_elektronika7.Name": "Digitální hodiny", - "Entities.gmod_mus_clock_analog.Name": "Analogové hodiny", - "Entities.gmod_track_clock_time.Name": "Velké intervalové hodiny(čas)", - "Entities.gmod_track_clock_small.Name": "Malé intervalové hodiny", - "Entities.gmod_track_clock_interval.Name": "Velké intervalové hodiny(interval)", - "Entities.gmod_track_switch.Name": "Výhybka", - "Entities.gmod_track_powermeter.Name": "Měříč výkonu", - "Entities.gmod_track_controller.Name": "Track controller", - "Entities.gmod_track_udochka.Name": "Pohyblivý napájecí kabel", - "Entities.gmod_train_spawner.Name": "Spawner vozů metra" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/cz_buttons_717.lua deleted file mode 100644 index a11aa8d..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "cz", - "Name": "Čeština", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Zavření dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Otevřít levé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Start hlášení (Program 2)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Start hlášení (Program 1)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: Odpojovač řídicích obvodů ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Baterie zapnuto/vypnuto", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Odpojovač obvodů omezovače rychlosti", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Stěrač", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Ventil brzdiče", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Zesilovač nízké frekvence", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: Vlakový rozhlas ve vozech", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Vlakový rozhlas v kabině", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Vlakový rozhlas", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Start hlášení (Program 1)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Start hlášení (Program 2)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Tlačítka bdělosti", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Pneumatický ventil #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Zavření dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Otevřít levé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "Krytka KDL", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "VDL: Otevřít levé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "Krytka VDL", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Dveře předvolba", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: Dveře nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Radiostanice", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Korekce zátěže relé", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Zelené světlo přehřátí relé (zabraňuje nadproudu trakčních motorů)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatický odpojovač řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Kontrolka měniče vysokého napětí", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Stav nouze-požár (přehřátí reostatu)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Ochranný měnič", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Porucha řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Zvonek", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automatická regulace rychlosti", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Automatická lokomotivní signalizace", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Vypnutí automatického odpojovače relé (porucha AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "Vypnutí pneumatické brzdy", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Osvětlení vozu", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Osvětlení kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Osvětlení Panel", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Dekodér: Přepínač kódování frekvencí ALS (1/5 nebo 2/6)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Cedule \"ODBRZDI PARKOVACÍ BRZDU\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Parkovací brzda", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: První tlačítko", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Druhé tlačítko", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Třetí tlačítko", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Čtvrté tlačítko", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Napájení obvodů řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Kompresor", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "Měnič", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Kompresor nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: Kontrola stabilizace napětí ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "GVD №\nČíslo turnusu", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "TRASA №\nČíslo trasy", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "DOBA JÍZDY\nCelková doba jízdy", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "INT\nInterval", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "HOD\nHodina", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "MIN\nMinuta", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "SEK\nSekunda", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Čas příjezdu", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Název stanice", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Rychloměr", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Indikátor poruchy (Nelze zkompletovat jističe)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: Červené světlo přetížení relé (Nelze zkompletovat jističe)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Funkce reostatu kontroléru", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: Indikátor brzdění ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: Odpojení trakce", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Vysoké napětí není dostupné", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OČ: Bez kódu", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: Kód 0 (Návěst zastavení)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Rychlost 40 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Rychlost 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Rychlost 70 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Rychlost 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Signalizace zavření dveří (dveře jsou zavřeny)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Signalizace zavření dveří (dveře jsou zavřeny)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Brzdy v chodu", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Trakční motory v chodu", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Kontrolka směru jízdy", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Předvěst (rychlost v dalším oddílu je stejná nebo vyšší)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Brzdový válec", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Napájecí-brzdové potrubí (červená: brzdové potrubí, černá: hlavní potrubí)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: Odpojovač řídicích obvodů ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Odpojovač obvodů omezovače rychlosti", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Baterie zapnuto/vypnuto", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: Nahoru", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: Dolů", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Zapnout", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Zadní dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "Voltmetr vysokého napětí (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Ampérmetr (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Elektrické rozvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Elektrické rozvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Vyp. řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Baterie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Osv.kabina, kontr. MR, park. brzda", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Ovládání dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Ovládání kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 Vlak. obvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 Baterie ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 Elektrické rozvody ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 Napájení ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 Brzda ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Osvětlení kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 Napájení VR (IGLA/BIS)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Přídrž PBO", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Vypnutí DIP a osvětlení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Nouzové zapnutí kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Relé nouzového řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Vytápění kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 J-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 J-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 J-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Korekce zátěže relé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Rádiová komunikace", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Rádiový přenos", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 ASNP", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 B-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Pneumatické ventily #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 LS 2, LS 5", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Ruční brzdění", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Stykač kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Motor HK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Nouzové řízení vozidla", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Nouzové řízení (kompresory KNŘ)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Napájení trakčních motorů", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Osvětlení interiéru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Osvětlení nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Dobíjení baterie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Otevř. pravé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Otevř. levé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Zavírání dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Dveřní signalizace", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Zavírání nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Červené světlo pravé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Červené světlo levé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Bílá světla (klopená)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Bílá světla (dálková)", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Rychlobrzda", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Předešlí směr jízdy", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Další směr jízdy", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Turnus: Zvýšit 2. číslo", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Turnus: Snížit 2. číslo", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Turnus: Zvýšit 1. číslo", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Turnus: Snížit 1. číslo", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Světla", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Světla dálková", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Přepínač nouzové jízdy (porucha relé pedálu bdělosti)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Přepínač nouzového zavření dveří (porucha relé tlačítka dveří)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Nouzové řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "Tlačítko nouzové jízdy", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "Krytka TNJ", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Vytápění kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Otevřít pravé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "Krytka KDP", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Pneumatická brzda", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Elektrické rozvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Elektrické rozvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Vyp. řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Baterie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Osv.kabina, kontr. MR, park. brzda", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Ovládání dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Ovládání kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 Vlak. obvody", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 Baterie ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 Elektrické rozvody ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 Napájení ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 Brzda ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Osvětlení kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 Napájení VR (IGLA/BIS)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Přídrž PBO", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Vypnutí DIP a osvětlení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Nouzové zapnutí kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Relé nouzového řízení", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Vytápění kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 J-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 J-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 J-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Korekce zátěže relé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Rádiová komunikace", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Rádiový přenos", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 ASNP", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 B-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Pneumatické ventily #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 LS 2, LS 5", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Ruční brzdění", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Stykač kompresoru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Motor HK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Nouzové řízení vozidla", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Nouzové řízení (kompresory KNŘ)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Napájení trakčních motorů", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Osvětlení interiéru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Osvětlení nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Dobíjení baterie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Otevř. pravé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Otevř. levé dveře", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Zavírání dveří", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Dveřní signalizace", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Zavírání nouze", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Červené světlo pravé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Červené světlo levé", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Bílá světla (klopená)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Bílá světla (dálková)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Rychloměr", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Signalizace zavření dveří (dveře jsou zavřeny)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NČ: Bez kódu", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: Kód 0 (Návěst zastavení)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Předvěst (rychlost v dalším oddílu je stejná nebo vyšší)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Rychlost 40 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Rychlost 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Rychlost 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Rychlost 70 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Kontrolka reostatu kontroléru", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: Odpojení trakce", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: Indikátor brzdění ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "LRP: Červené světlo přetížení relé (Nelze zkompletovat jističe)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Vysoké napětí není dostupné", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Trakční motory v chodu", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Brzdy v chodu", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Dveře kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Reverz vzad", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Reverz vpřed", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: Univerzální Automatický Vypínač Autostopu (vypnutí autostopu)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Univerzální Automatický Vypínač Autostopu (obnovení kontaktů)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "Ventil EPV", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Pomoc při řízení soupravy", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parkovací brzda", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Odpojit vzduchový rozdělovač", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Zadní dveře", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Osvětlení interiéru", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Baterie", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 Napájení VR (IGLA/BIS)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Ovládání kompresoru", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Motor HK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Napájení trakčních motorů", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Parkovací brzda", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Odpojit vzduchový rozdělovač", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Přední dveře", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Baterie zapnuto/vypnuto", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Vyp. řízení", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Osv.kabina, kontr. MR, park. brzda", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Dobíjení baterie", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 Vlak. obvody", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Dveřní signalizace", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Otevř. pravé dveře", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Otevř. levé dveře", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Zavírání dveří", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Zavírání nouze", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Přídrž PBO", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Vypnutí DIP a osvětlení", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 J-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Nouzové řízení", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Korekce zátěže reléé", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Kompresor nouze", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Kompresor", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "Měnič", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 J-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 J-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Korekce zátěže relé", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 B-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Pneumatické ventily #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 LS 2, LS 5", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Ruční brzdění", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Stykač kompresoru", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Nouzové zapnutí kompresoru", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Nouzové řízení vozidla", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Relé nouzového řízení" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_720.lua b/lua/metrostroi_data/languages_/_unfinished/cz_buttons_720.lua deleted file mode 100644 index e8b019b..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_720.lua +++ /dev/null @@ -1,220 +0,0 @@ -return [[ -{ - "Lang": "cz", - "Name": "Čeština", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set": "Vityaz: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set": "Vityaz: Následující strana", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set": "Vityaz: Předešlá strana", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set": "Vityaz: Hlavní strana", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set": "Vityaz: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set": "Vityaz: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set": "Vityaz: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set": "Vityaz: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set": "Vityaz: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set": "Vityaz: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set": "Vityaz: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set": "Vityaz: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set": "Vityaz: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set": "Vityaz: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set": "Vityaz: Smazat", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set": "Vityaz: Nahoru\\Rychlost", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set": "Vityaz: Dolů\\Proudy", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set": "Vityaz: Zadat\\Vybavení vozu", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set": "Vityaz: Vybrat\\Správa vybavení vozu", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set": "Nouzová J-1", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set": "Nouzová J-2", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet": "Dveře nouze", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle": "Rezervní dveře", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-": "Chod ventilace: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+": "Chod ventilace: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+": "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-": "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-": "Intenzita ventilace: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+": "Intenzita ventilace: -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle": "SF1: Napájení obvodů řízení", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle": "SF2: Napájení BUV (ovládání vozu)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle": "SF3: Napájení BUTP (ovládánáí trakčních motorů)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle": "SF4: Řízení BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle": "SF5: Nouzové řízení BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle": "SF6: Napájení BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle": "SF7: BBE", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle": "SF8: Řízení BV", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle": "SF9: Napájení BV (přetížení relé)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle": "SF11: Kompresor", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle": "SF12: Zavření dveří", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle": "SF13: Otevřít levé dveře", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle": "SF14: Otevřít pravé dveře", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle": "SF15: Přední dveře", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle": "SF16: Vlakový rozhlas", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle": "SF17: Nouzové spojení", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle": "SF18: Rezerva", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle": "SF19: Napájení osvětlení interiéru", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle": "SF20: Osvětlení nouze", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle": "SF21: Senzor rychlosti", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle": "SF22: Parkovací brzda", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle": "SF23: Ovládání ventilace 1. skupiny", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle": "SF24: Ovládání ventilace 2. skupiny", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle": "SF25: Napájení ventilace 1. skupiny", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle": "SF26: Napájení ventilace 2. skupiny", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle": "SF27: Napájení zdroje", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle": "SF28: Napájení ZKK", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle": "SF29: Sběrač proudu", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle": "SF30: Směrová tabule", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle": "SF31: Rezerva", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle": "SF32: Rezerva", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle": "SF33: Rezerva", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet": "ASNP: Nahoru", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet": "ASNP: Dolů", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Zapnout", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder": "Brzdový válec", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle": "SF1: Hlavní napájení", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle": "SF2: Hlavní řízení", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle": "SF3: Nouzové řízení", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle": "SF4: BARS", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle": "SF5: BUP", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle": "SF6: BKCU", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle": "SF7: BARS", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle": "SF8: Vlakový rozhlas", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle": "SF9: Radiostanice", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle": "SF10: Pozice vozu", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle": "SF11: Směr jízdy", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle": "SF12: Světla 1. skupina", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle": "SF13: Světla 2. skupina", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle": "SF14: Parkovací světla", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle": "SF15: Osvětlení kabiny", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle": "SF16: Topné těleso", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle": "SF17: Klimatizace kabiny", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle": "SF18: Mazaní okolků", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle": "SF19: Napájení hlavního KRM", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle": "SF20: Nouzové napájení KRM", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle": "SF21: Otevírání dveří", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle": "SF22: Zavírání dveří", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle": "KRMSH (ventil brzdiče)", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV": "Voltmeter (kV)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3": "Napájení trakčních motorů 1. skupiny (A)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4": "Napájení trakčních motorů 2. skupiny (A)", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor": "Zadní dveře", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor": "Zadní dveře", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle": "Odpojení sběrače proudů 1. skupiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle": "Odpojení sběrače proudů 2. skupiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle": "Ventilace 1. skupina", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle": "Ventilace 2. skupina", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle": "Osvětlení interiéru", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle": "Osvětlení kabiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle": "Světla 1. skupina", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle": "Světla 2. skupina", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle": "Parkovací brzda", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle": "Přední dveře", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle": "Nouzové zapnutí BBE", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle": "BBE", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle": "Kompresor", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle": "Napájení osvětlení kabiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle": "Osvětlení vybavení vozu", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-": "Blokování nefunkčních jednotek BARS: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+": "Blokování nefunkčních jednotek BARS: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle": "Baterie zapnuto/vypnuto", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle": "Dekodér ALS", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery": "Napájení obvodů řízení", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight": "Dveře kabiny", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft": "Dveře kabiny", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle": "Dveře levé (předvolba)", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle": "Dveře pravé (předvolba)", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle": "Blokování dveří", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp": "Činnost tlačítka levých dveří", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet": "Levé dveře", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed": "Signalizace zavření dveří", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle": "Zastavení", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle": "Tachograf", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle": "KAH: Tlačítko nouzové jízdy", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle": "ALS: Automatická lokomotivní signalizace", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle": "Odjezd z depa", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage": "Vysoké napětí není dostupné", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle": "Schéma metra nad dveřmi", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet": "Kompresor nouze", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet": "Zapnutí ochrany (přetížení relé)", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet": "Odpojení BV (přetížení relé)", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet": "Zvonek", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set": "Start hlášení (Program 2)", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle": "Vlakový rozhlas", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle": "Linka", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet": "Nouzové spojení", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set": "Start hlášení (Program 1)", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet": "Rezervní obnova BV", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle": "Nouzové řízení", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle": "Stěrač", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop": "Povolená rychlost", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact": "Aktuální rychlost", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred": "Předvěst", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2": "Povolená rychlost", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "Akcelerace", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "Jízda vpřed", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "Jízda vzad", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateToggle": "Míra akcelerace", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "Náhradní brzda (brzdění)", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "Náhradní brzda (odbrzdění)", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "Náhradní brzda", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle": "Rychlobrzda", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle": "Zavření dveří", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet": "Upozornění na zprávu", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet": "Bdělost", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet": "Upozornění na brzdu", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet": "Houkačka", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet": "Pravé dveře", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp": "Činnost tlačítka pravých dveří", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine": "Červená: brzdové potrubí, Černá: hlavní potrubí", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor": "Přední dveře", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor": "Zadní dveře", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle": "Baterie zapnuto/vypnuto", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle": "SF1: Napájení obvodů řízení", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle": "SF2: Napájení BUV (ovládání vozů)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle": "SF3: Napájení BUTP (ovládání tračkních motorů)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle": "SF4: Řízení BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle": "SF5: Nouzové řízení BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle": "SF6: Napájení BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle": "SF7: BBE", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle": "SF8: Řízení BV", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle": "SF9: Napájení BV (přetížení relé)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle": "SF11: Kompresor", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle": "SF12: Zavření dveří", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle": "SF13: Otevřít levé dveře", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle": "SF14: Otevřít pravé dveře", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle": "SF15: Přední dveře", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle": "SF16: Vlakový rozhlas", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle": "SF17: Nouzové spojení", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle": "SF18: Rezerva", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle": "SF19: Napájení osvětlení interiéru", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle": "SF20: Osvětlení nouze", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle": "SF21: Senzor rychlosti", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle": "SF22: Parkovací brzda", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle": "SF23: Ovládání ventilace 1. skupiny", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle": "SF24: Ovládání ventilace 2. skupiny", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle": "SF25: Napájení ventilace 1. skupiny", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle": "SF26: Napájení ventilace 2. skupiny", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle": "SF27: Napájení zdroje", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle": "SF28: Napájení ZKK", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle": "SF29: Sběrač proudů", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle": "SF30: Směrová tabule", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle": "SF31: Rezerva", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: Rezerva", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: Rezerva", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Izolační ventil hlavního potrubí" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/cz_buttons_ezh3.lua deleted file mode 100644 index 68f9f1a..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/cz_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang": "cz", - "Name": "Čeština", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Záchraná brzda", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Zadní dveře", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: Baterie zapnuto/vypnuto (nízkonapětová)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Vlakový rozhlas: Menu", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Vlakový rozhlas: Nahoru", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Vlakový rozhlas: Dolů", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Vlakový rozhlas: Zapnout", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Dveře kabiny", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Přední dveře", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Izolační ventil hlavního potrubí", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Izolační ventil brzdového potrubí", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NČ: Bez kódu", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: Kód 0 (Návěst zastavení)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "Rychlost 40 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "Rychlost 60 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "Rychlost 70 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "Rychlost 80 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Rychloměr (km/h)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Ampérmetr (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Voltmetr (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Napětí baterie řízení(V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Brzdový válec", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Napájecí-brzdové potrubí (červená: brzdové potrubí, černá: hlavní potrubí)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "Kompresor", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: Vypnutí trakce", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: Rozjezd", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: Korekce", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lamp: Jízda-Brzda", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lamp: Operační stav SAMM", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamp: Zapnuta činná jednotka SAMM", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: Zapnutí systému", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: Činná jednotka", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: J-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: Dohnat", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: Souhlas", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: Porucha řízení", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Start hlášení (Program 1)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Start hlášení (Program 2)", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Přepínač: Světla (dolů)/Světla dálková (nahoru)", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Přepínač: Osvětlení přístojů", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Spínač: Nouzová jízda", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: Zapnout osvětlení", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: Vypnout osvětlení", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: Signalizace zavření dveří", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: Tlačítko bdělosti", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB: Tlačítko bdělosti", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lamp: Funkce reostatu kontroléru", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: Automatická regulace rychlosti", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: Zesilovač nízké frekvence", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD: Zavření dveří", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Vlakový rozhlas", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: Automatická lokomotivní signalizace", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: Korekce zátěže relé", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Zvonek", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Tlačítko: Osvětlení kabiny", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: Dveře nouze", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: Otevřít pravé dveře", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: Otevřít levé dveře", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: Tlačítko nouzové jízdy", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Kompresor nouze", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: Nouzové řízení", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: Radiostanice", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Vlakový rozhlas v kabině", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "ZS: Vlakový rozhlas ve vozech", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Unused Switch", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Unused Switch", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Vlakový rozhlas v pořádku", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: Osvětlení kabiny", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: Osvětlení nouze (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: Vytápění kabiny (3kWt)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: Automatický spínač (vysokonapětový)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: Odpojovač řídicích obvodů ARS", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: Univerzální Automatický Vypínač Autostopu (vypnutí autostopu)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Univerzální Automatický Vypínač Autostopu (obnovení kontaktů)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: Řízení", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: Otevřít levé dveře", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: Zavření dveří", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "Ventil EPK", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: Řízení", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkovací brzda", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Parkovací brzda", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Odpojit vzduchový rozdělovač", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Záchraná brzda", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: Baterie zapnuto/vypnuto (nízkonapětová)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "Hlavní vypínač", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Zadní dveře", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "Pojistky hlavního vypínače", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "Skříňka s zařízeními pro dobíjení baterie a dveřního rozdělovače", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "Topné těleso", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Přední dveře", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: Osvětlení kabiny", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: Osvětlení nouze (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: Vytápění kabiny (3kWt)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkovací brzda", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Parkovací brzda", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Dveře kabiny", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Dveře z kabiny do interiéru", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: Červené světlo přetížení relé (Nelze zkompletovat jističe)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: Zelené světlo přehřátí relé (zabraňuje nadproudu trakčních motorů)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Signalizace zavření dveří", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Přepínač: Otevřít levé dveře", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Přepínač: Signalizace zavření dveří", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Přepínač: Korekce zátěže relé", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Spínač: Porucha řízení", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Přepínač: Zavření dveří", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Přepínač: Kompresor", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: Zapnout osvětlení", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: Vypnout osvětlení", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Přepínač: Kompresor nouze", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: Otevřít pravé dveře", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: Dveře nouze", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: Automatický spínač (vysokonapětový)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: Řízení", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Napájení obvodů řízení", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: Zavření dveří", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: Otevřít levé dveře", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Ventil brzdového potrubí", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Ventil hlavního potrubí", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Odpojit vzduchový rozdělovač" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/cz_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/cz_spawner.lua deleted file mode 100644 index b941656..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/cz_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "cz", - "Name": "Čeština", - - "Spawner.Title": "Spawner vozů metra", - "Spawner.Trains1": "Typ vozů metra", - "Spawner.Trains2": "Maximum pro tebe", - "Spawner.WagNum": "Počet vozů", - "Spawner.AutoCouple": "Automaticky spřáhnout vozy", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Textura vozu", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Textura interiéru", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Textura kabiny", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Hlásič", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Zapalovač", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "Panel ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Standartní(obdelníkové žárovky)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Standartní(kruhové žárovky)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kyjevská/Petrohradská ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Stará ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Typ brzdiče", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Maska čela", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 nárazník 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 nárazník 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Retro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "Světla LED", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "Typ statického měniče", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Starý vysokotónový zvuk", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Starý středotónový zvuk", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Standartní(Petrohrad)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Standartní(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Standartní", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kyjevský", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Starý", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Standartní 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Standartní 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Bez zvuku (BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Zvuk řídicího kontroléru", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Nový model kontroléru", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "Petrohradská houkačka", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Zvuk zvonku ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Starý", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Standartní s nízkým tónem", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Standartní s vysokým tónem", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Standartní přerušovaný s nízkým tónem", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Standartní přerušovaný s vysokým tónem", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Tlak v hlavním potrubí", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Zapnout baterii", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Zapnout všechny jističe", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Zapnout náhodné jističe", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Otevřít levé dveře", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Otevřít pravé dveře", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Zapnout hlavní vypínač", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Parkovací brzda", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Typ postranních žárovek", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Horizontální", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Vertikální", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "Znak Mytišči", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Madla", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Stará", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Nová", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Sedadla", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Stará", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Nová", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Osvětlení interiéru", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Jističe na pravé straně", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Reklamy", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Bez reklam", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Textura vozu", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Textura interiéru", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Textura kabiny", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Hlásič", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Schéma metra nad dveřmi", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Obrátit schéma metra", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Tlak v hlavním potrubí", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Zapnout baterii", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Zapnout hlavní vypínač", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Jističe na POV budou zapnuty náhodně", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Zapnout všechny potřebné jističe", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Vypnout všechny jističe (jako v depu)", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Jističe na POS budou zapnuty náhodně", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Otevřít levé dveře", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Otevřít pravé dveře", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Textura vozu", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Textura interiéru", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Textura kabiny", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Hlásič", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Schéma metra nad dveřmi", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Obrátit schéma metra", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Tlak v hlavním potrubí", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Zapnout baterii", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Zapnout všechny jističe", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Zapnout náhodné jističe", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Otevřít levé dveře", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Otevřít pravé dveře", - - "Spawner.Close": "Zavřít", - "Spawner.Spawn": "Hotovo" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/de_base.lua b/lua/metrostroi_data/languages_/_unfinished/de_base.lua deleted file mode 100644 index 20e795a..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/de_base.lua +++ /dev/null @@ -1,53 +0,0 @@ -return [[ -{ - "Lang": "de", - "Name": "Deutsch", - "Panel.Admin": "Admin", - "Panel.Client": "Client", - "Panel.DrawDebugInfo": "Draw debugging info", - "Panel.DisableCamAccel": "Deaktivere Bewegende Camera", - "Panel.DisableHoverText": "Deaktivere Info Text", - - "Entities.gmod_subway_base.Name": "U-Bahn Basis", - "Entities.gmod_subway_81-703.Name": "E (Triebkopf)", - "Entities.gmod_subway_81-703_2.Name": "E (Zwischenwagen)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (Dummy)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (Dummy)", - "Entities.gmod_subway_81-720.Name": "81-720 (Triebkopf)", - "Entities.gmod_subway_81-721.Name": "81-721 (Zwischenwagen)", - "Entities.gmod_subway_81-722.Name": "81-722 (Triebkopf)", - "Entities.gmod_subway_81-723.Name": "81-723 (Zwischenwagen mit Motor)", - "Entities.gmod_subway_81-724.Name": "81-724 (Zwischenwagen ohne Motor)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 (Zwischenwagen)", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508t", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "KI Zug", - - "Entities.gmod_train_bogey.Name": "Drehgestell", - "Entities.gmod_train_couple.Name": "Kupplung", - - "Entities.gmod_track_pui.Name": "PUI Uhr", - "Entities.gmod_track_mus_elektronika7.Name": "Digitale Uhr", - "Entities.gmod_mus_clock_analog.Name": "Analoge Uhr", - "Entities.gmod_track_clock_time.Name": "Grosser Uhr", - "Entities.gmod_track_clock_small.Name": "Kleiner Intervallanzeiger", - "Entities.gmod_track_clock_interval.Name": "Grosser Intervallanzeiger", - "Entities.gmod_track_switch.Name": "Weichenbox", - "Entities.gmod_track_powermeter.Name": "Messgeraet", - "Entities.gmod_track_controller.Name": "Gleis Kontroller", - "Entities.gmod_track_udochka.Name": "Elektrischer Kontakt", - "Entities.gmod_train_spawner.Name": "Zug Spawner" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/de_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/de_buttons_717.lua deleted file mode 100644 index 9780c33..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/de_buttons_717.lua +++ /dev/null @@ -1,288 +0,0 @@ -return [[ -{ - "Lang": "de", - "Name": "Deutsch", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Tueren schliessen", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Programm 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Programm 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS Schalkreise abschalten", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Batterie an/aus", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Geschwindigkeitsbegrenzungs Geraet", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Schweibenwischer", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Zugdruckventil", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Bremsdruckventil", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Niederfrequenzverstaerker", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "Lautsprecher im Wagen einschalten", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Lautsprecher im Fuehrerstand einschalten", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Fahrgast Informations System", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Programm 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Programm 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Sicherheitsschalter", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Pneumatisches Ventil Nr.1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Tueren Schliessen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL Knopf Abdeckung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL Knopf Abdeckung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Tuerseite auswaehlen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: Zwangsschliessen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Schalte Funkgeraet ein", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Setze Wagonrelay zuruek", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Gruene Ueberladungsrelay-Lampe (schuetzt die Motoren vor zu hoher Spannung)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatischer steuerung deaktivierer aktiv", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Hochspannungs-Transformator kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Brandgefahr (Relays ueberhitzen)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Transformatorschutz", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Ausfallanzeige", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Ring", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automatische Geschwindigkeitskontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Automatische Zug Signalisierung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Deaktiviere automatisches steuerungs Relay(fehler der AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(platzhalter) Notbremse", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Wagenbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Fuehrerstandbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Steuerungsbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Decodierer: ALS Frequenz waehler 1/5 oder 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Schild \"LoeSE DIE PARKBREMSE\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Parkbremse", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Zugdruckkreislauf Ventil", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: Erster Taster", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Zweiter Taster", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Dritter Taster", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Vierter Taster", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Kontrollschaltkreis Volt", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Schalte Kompressor an", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Zug Spannung", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Notfall Kompressor Starten", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS stabile voltanzahl check", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Tachometer", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Ausfallanzeigenlicht (Fehler beim initialisieren der Schaltkreise)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: ueberladungsleuchte (Fehler beim initialisieren der Schaltkreise)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Rheostat kontroll Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS Bremsleuchte", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: ARS Motor deaktivierungsleuchte", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Hochspannung nicht vorhanden (Kein kontakt zur Stromschiene)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: Keine ARS Frequenz", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: ARS Stop signal", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Geschwindigkeitslimit 40 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Geschwindigkeitslimit 60 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Geschwindigkeitslimit 70 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Geschwindigkeitslimit 80 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Tuerleuchte (Tueren sind geschlossen)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Tuerleuchte (Tueren sind geschlossen)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Bremse aktiviert", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Motor aktiviert", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Richtungs signal", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Geschwindigkeitsleuchte(Naechste Geschwindigkeitsbegrenzung ist gleich oder groeЯer als die momentane)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Bremszylinderdruck", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Luftdruck in Pneumatischem System (Rot: Bremskreislauf, Schwarz: Zugkreislauf)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: ARS Schaltkreise trennen", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Geschwindigkeitslimit Geraet", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Batterie an/aus", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremskreislauf Ventil", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugkreislauf Ventil", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menue", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: Hoch", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: Runter", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Einschalten", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Hecktuer", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "Hochspannungs Voltmeter (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Ampermeter (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Zug leitung 6 kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Zug leitung 10AS kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Zug leitung 10AK kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Schalte Batteriespannung zu den Kontrollschaltkreisen ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Schalte DIP und Beleuchtung ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Tuerkontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Motor-kompressor kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC Netzteil", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V Spannungsleitung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS Zug Leitung 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V Spannungsleitung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS bremsen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Zugkontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Schalte DIP und Beleuchtung ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Schalte DIP und Beleuchtung aus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Schalte Notfall Kompressor ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Zug Leitung 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Fuehrerstandsheistung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Setze Wagonrelay zuruek", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Funkgeraet", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Funklauschen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 Mittelwagen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Pneumatische Ventile Nr.1 und Nr.2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Anfahr/Brems schaltkreis kontrolle, Zug Leitung 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Manuelles Elektrisches bremsen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Schalte KK ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Rheostat kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Notfallkontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Notfall Zug Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Spannungsschaltkreis modus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Wagonbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "Рђ49 Notfallbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Batterie Laden", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Oeffne Tueren rechts", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Schliesse Tueren", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Tueralarm", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Zwangsschliessen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Rote Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Rote Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Weisse Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Weisse Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Notbremse", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Vorheriges schild", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Naechstes schild", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Zugnummer: Erhoehe Zweite Nummer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Zugnummer: Senke Zweite Nummer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Zugnummer: Erhoehe Erste Nummer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Zugnummer: Senke Erste Nummer", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Scheinwerfer", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Fernlicht", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Notfallfahrt (Fehler beim initialisieren des RPB Relays)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Notfall Tuerschliessungs Mechanismus (Fehler des KD Relays)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Notfall Start knopf", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "Aktiviere Notfallfahrt", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH Knopfabdeckung", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Fuehrerstandsheitzung eingeschaltet", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Oeffne Tueren rechts", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP Knopfabdeckung", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Bremskontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Zug Leitung 6 Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Zug Leitung 10AS Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Zug Leitung 10AK Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Aktiviere Batterie fuer Steuerungsschaltkreise", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Aktiviere DIP und Belechtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Tuerkontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Kompressor kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC Stromversorgung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V Spannungsleitung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS Zug Leitung 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V Spannungsleitung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS bremsen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Zug Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Schalte DIP und Beleuchtung ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Schalte DIP und Beleuchtung aus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Notfallkompressor einschalten", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Zug Leitung 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Fuehrerstandsheizung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Setze Wagonrelay zuruek", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Funkgeraet", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Funklauschen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 Zwischenwagen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Pneumatische Ventile Nr.1 und Nr.2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Anfahr/Brems-relay kontrolle, Zug Leitung 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Manuelles Elektrisches bremsen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Schalte KK ein", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Rheostat steuerung fuer Motorspannung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Notfallkontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Notfall Zug Kontrolle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Spannungsschaltkreismodus auswaehlen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Wagenbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "Рђ49 Notfallbeleuchtung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Batterie Laden", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Oeffne Tueren rechts", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Schliesse Tueren", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Tuerwarnung", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Zwangsschliessen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Rote Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Rote Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Weisse Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Weisse Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Tachometer", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Tuerleuchte(Tueren sind geschlossen)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: Keine ARS Frequenz", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Geschwindigkeitsleuchte(Naechste Geschwindigkeitsbegrenzung ist gleich oder groeЯer als die momentane)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Geschwindigkeitsbegrenzung 40 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Geschwindigkeitsbegrenzung 60 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Geschwindigkeitsbegrenzung 80 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Geschwindigkeitsbegrenzung 60 kmh", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Rheostat kontroll Lampe", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: ARS Motor deaktivierungsleuchte", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: ARS Bremsleuchte", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: ueberladungsleuchte (Fehler beim initialisieren der Schaltkreise)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Hochspannung nicht vorhanden (Kein kontakt zur Stromschiene)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Motor aktiviert", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Bremsen aktiviert", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Fuehrerstandstuer", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Fahrtrichtungsschalter Rueckwaerts", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Fahrtrichtungsschalter Forwaerts", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: Automatisches Zugbremssystem ausschalten(Verhindert das abbremsen des Zuges nach dem ueberfahren eines Signals mit der Stellung Stop)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Automatisches Zugbremssystem (Setze Kontakte zurueck)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV Oeffne Ventil", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Zeige die Hilfe (Englisch)", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parkbremse", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremskrislauf schliessventil", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckkreislauf schliessventil", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Schalte Druckluftverteiler ab", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "Hochspannungsschalter", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremskrislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckkreislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Hecktuer", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Bremskrislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Zugdruckkreislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Wagenbeleuchtung", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Schalte Batterie fuer kontrollschaltkreise ein", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Kompressorkontrolle", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Rheostat kontrolle", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Spannungsschaltkreis modus", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremskrislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugdruckkreislauf schliessventil", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Parkbremse", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Schalte Druckluftverteiler ab", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Fronttuer", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Batterie an/aus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Zug Leitung 10AK kontrolle", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Schalte DIP und Beleuchtung ein", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Batterie Laden", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC Spannungsversorgung", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Tueralarm", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Oeffne Tueren rechts", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Oeffne Tueren links", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Schliesse Tueren", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Zwangsschliessen", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Schalte DIP und Beleuchtung ein", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Schalte DIP und Beleuchtung aus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Notfallstart Knopf", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Setze Wagonrelay zurueck", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Notfallkompressor starten", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Schalte Kompressor ein", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Zugspannung", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Setze Wagonrelay zurueck", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Pneumatisches Ventil Nr.1 und Nr.2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Anfahr/Brems schaltkreis kontrolle, Zug Leitung 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Manuelles Elektisches bremsen", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Schalte KK ein", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Notfallkompressor starten", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Notfallsteuerung", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Zug Leitung 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/de_buttons_720.lua b/lua/metrostroi_data/languages_/_unfinished/de_buttons_720.lua deleted file mode 100644 index e94469f..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/de_buttons_720.lua +++ /dev/null @@ -1,220 +0,0 @@ -return [[ -{ - "Lang": "de", - "Name": "Deutsch", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set": "Vityaz: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set": "Vityaz: Naechster Bildschirm", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set": "Vityaz: Vorheriger Bildschirm", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set": "Vityaz: Haupt", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set": "Vityaz: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set": "Vityaz: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set": "Vityaz: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set": "Vityaz: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set": "Vityaz: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set": "Vityaz: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set": "Vityaz: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set": "Vityaz: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set": "Vityaz: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set": "Vityaz: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set": "Vityaz: Loeschen", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set": "Vityaz: Hoch\\Geschwindigkeit", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set": "Vityaz: Runter\\Stromsaerke", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set": "Vityaz: Eingeben\\Wagen equipment", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set": "Vityaz: Auswaehlen\\Wagen equipment kontrolle", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set": "Notfall X-1", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set": "Notfall X-2", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet": "Zwangschliessen", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle": "Notausgaenge", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-": "Belueftungs Kapazitaet: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+": "Belueftungs Kapazitaet: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+": "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-": "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-": "Belueftungs Staerke +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+": "Belueftungs Staerke -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle": "SF1: Kontrolliere Spannung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle": "SF2: BUV Spannung (Zugmitte)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle": "SF3: BUTP Spannung (Zugfront)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle": "SF4: BUTP Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle": "SF5: BUTP Notfall Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle": "SF6: BUTP Spannung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle": "SF7: BBE (Zugeigenes Netzeil)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle": "SF8: BV Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle": "SF9: BV Spannung (Wagen relay)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle": "SF11: Kompressor", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle": "SF12: Tueren schliessen", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle": "SF13: Oeffne Tueren links", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle": "SF14: Oeffne Tueren rechts", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle": "SF15: Front Tuer", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle": "SF16: Fahrgast Informations System", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle": "SF17: Notfall Sprechanlage", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle": "SF18: (Platzhalter)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle": "SF19: Wagenbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle": "SF20: Notfall Wagenbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle": "SF21: Geschwindigkeits Sensor", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle": "SF22: Parkbremse", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle": "SF23: Erste Ventilatorgruppe Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle": "SF24: Zweite Ventilatorgruppe Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle": "SF25: Schalte erste Ventilatorgruppe ein", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle": "SF26: Schalte zweite Ventilatorgruppe ein", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle": "SF27: Pre-Bremseinstellung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle": "SF28: ZKK Spannung", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle": "SF29: Stromabnehmer", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle": "SF30: Linienplan", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle": "SF31: (Platzhalter)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle": "SF32: (Platzhalter)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle": "SF33: (Platzhalter)", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menue", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet": "ASNP: Hoch", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet": "ASNP: Runter", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Einschalten", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder": "Bremszylinder", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle": "SF1: Zugspannung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle": "SF2: Hauptschalter", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle": "SF3: Notfall Kontrolle", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle": "SF4: BARS (ARS)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle": "SF5: BUP (Zugkontrolle)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle": "SF6: BKCU (Steuergeraetkommunikation)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle": "SF7: BARS (ARS unit)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle": "SF8: Fahrgast Informations System", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle": "SF9: Radiostation", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle": "SF10: Wagen orientation", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle": "SF11: Richtung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle": "SF12: Erste Scheinwerfergruppe", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle": "SF13: Zweite Scheinwerfergruppe", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle": "SF14: Markierungsleuchten", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle": "SF15: Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle": "SF16: Heizung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle": "SF17: Fuehrerstandsbelueftung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle": "SF18: Radschmierung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle": "SF19: Hauptspannung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle": "SF20: Notfallspannung", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle": "SF21: Tueren Oeffnen", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle": "SF22: Tueren Schliessen", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle": "KRMSH", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor": "Wagontuer", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV": "Voltmeter (kV)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3": "Erste Motorgruppe Stromstaerke (A)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4": "Zweite Motorgruppe Stromstaerke (A)", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle": "Hochspannungsschalter", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor": "Tuer", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor": "Tuer", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle": "Schalte erste Stromabnehmergruppe aus", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle": "Schalte zweite Stromabnehmergruppe aus", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle": "Erste Ventilator gruppe", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle": "Zweite Ventilator gruppe", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle": "Wagonbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle": "Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle": "Erste Scheinwerfergruppe", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle": "Zweite Scheinwerfergruppe", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle": "Parkbremse", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle": "Front Tuer", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle": "Schalte Notfal BBE ein", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle": "BBE", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle": "Kompressor", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle": "Fuehrerstandsbeleuchtungs Spannung", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle": "Wagen beleuchtung", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-": "Defektes BARS (ARS) blocke: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+": "Defektes BARS (ARS) blocke: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle": "Batterie an/aus", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle": "ALS decodierer", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery": "Schalkreis Spannung", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor": "Wagenbeleuchtung", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight": "Fuehrerstandstuer", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft": "Fuehrerstandstuer", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle": "Waehle aus linke Tueren", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle": "Waehle aus rechte Tueren", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle": "Tuerkontrolle", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp": "Linker Tueren Check", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet": "Tueren Links", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed": "Tueren geschlossen", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle": "Bleib", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle": "Ticker", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle": "KAH", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle": "ALS", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle": "Verlassen des Depots", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage": "Keine Hochspannung", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle": "Linienplan", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet": "Notfall Kompressor", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet": "Aktiviere Ueberladungs schutz", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet": "Deaktiviere BV", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet": "Ring", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set": "Programm 2", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle": "Fahrgast Informations System", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle": "Linie", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet": "Notfall Sprechanlage", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set": "Programm 1", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet": "Notfall BV neustart", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle": "Norfall Kontrolle", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle": "Scheibenwischer", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop": "Hoechsgeschwindigkeit", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact": "Momentane Geschwindigkeit", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred": "Vorbeugende Geschwindigkeit", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2": "Erlaubte Geschwindigkeit", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "Beschleunigung", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "Forwaerts", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "Rueckwaerts", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateToggle": "Beschleunigungsrate", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "Hilfs-Bremse", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "Hilfs-Loesen", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "Hilfs-Bremse", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle": "Notbremse", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle": "Schliesse Tueren", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet": "Nachrichtenwahrnehmung", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet": "Achtung", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet": "Bremswahrnehmung", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet": "Hupe", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet": "Tueren Rechts", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp": "Rechter Tueren Check", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine": "Rot: Bremskreislauf, Schwarz: Zugkreislauf", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle": "Hauptschalter", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor": "Front Tuer", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor": "Rueck Tuer", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle": "Batterie an/aus", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle": "SF1: Kontrollspannung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle": "SF2: BUV BUV Spannung (Zugmitte)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle": "SF3: BUTP Spannung (Zugfront)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle": "SF4: BUTP Kontrolle", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle": "SF5: BUTP Notfall Kontrolle", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle": "SF6: BUTP Spannung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle": "SF7: BBE (Zugeigenes Netzeil)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle": "SF8: BV Kontrolle", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle": "SF9: BV Spannung (Wagen relay)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle": "SF11: Kompressor", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle": "SF12: Tueren Schliessen", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle": "SF13: Oeffne Tueren Links", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle": "SF14: Oeffne Tueren Rechts", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle": "SF15: Front Tuer", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle": "SF16: Fahrgast Informations System", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle": "SF17: Notfall Sprechanlage", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle": "SF18: (Platzhalter)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle": "SF19: Wagonbeleuchtungsspannung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle": "SF20: Notfallwagonbeleuchtung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle": "SF21: Geschwindigkeitssensor", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle": "SF22: Parkbremse", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle": "SF23: Erste Ventilatorgruppe Kontrolle", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle": "SF24: Zweite Ventilatorgruppe Kontrolle", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle": "SF25: Schalte erste Ventilatorgruppe ein", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle": "SF26: Schalte zweite Ventilatorgruppe ein", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle": "SF27: Pre-Bremseinstellung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle": "SF28: ZKK Spannung", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle": "SF29: Stromabnehmer", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle": "SF30: Linienplan", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle": "SF31: (Platzhalter)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: (Platzhalter)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: (Platzhalter)", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugdruckventil" -} -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages_/_unfinished/de_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/de_buttons_ezh3.lua deleted file mode 100644 index bca9b1a..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/de_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang": "de", - "Name": "Deutsch", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Notbremse", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Wagentuer", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Bremsdruckventil", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Zugdruckventil", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: Batterie an/aus (Niedrigspannung)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Ansager: Menue", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Ansager: Hoch", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Ansager: Runter", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Ansager: An", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Fuehrerstandstuer", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Fronttuer", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "Hochspannungsschalter", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NCh: Keine Ars Frequenz", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: ARS Stop Signal", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "Geschwindigkeitslimit 40 kmh", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "Geschwindigkeitslimit 60 kmh", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "Geschwindigkeitslimit 70 kmh", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "Geschwindigkeitslimit 80 kmh", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Tachometer (km/h)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Amperemeter (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Voltmeter (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Batterie Voltanzahl(V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Bremsdruck", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Luftdruck in Pneumatischem System (Rot: Bremskreislauf, Schwarz: Zugkreislauf)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "Schalte Kompressor ein", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: Deaktiviere Automatisches Fahren", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: Start", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: Neustart", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lampe: Fahren-Bremsen", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lampe: SAMM Aktiviert", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamp: Aktiviere SAMM Kontrolleinheit", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: Aktiviere automatisches Fahren", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: Kontrolleinheit", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: Aufholen", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: Genehmigung", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: Ausfall", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Programm 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Programm 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Fahrlicht/Fernlicht)", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Armaturenbeleuchtung", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Notfall Fahren", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: Schalte Licht ein", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: Schalte Licht aus", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: Trsignalisierungsprfung", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: Bremsenwahrnehmungstaste", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB: Warnungs Knopf", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lampe: Rehostat Kontroller", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: Automatische Geschwindigkeitskontrolle", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: Niedrigfrequenzverstaerker", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD: Schliesse Tueren", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Fahrgast Informations System", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: Automatische Zug Signalisierung", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: Setze Wagonrelay zuruek", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Pfeifen", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Fuehrerstandbeleuchtung", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: Zwangsschliessen", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: Oeffne Tueren rechts", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: Oeffne Tueren links", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: Notfallfahrt", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Notfall Kompressor Starten", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: Notfallstartknopf", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: Funk", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Lautsprecher im Fuehrerstand einschalten", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "ZS: Lautsprecher im Wagon einschalten", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Platzhalter", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Platzhalter", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Fahrgast informations System funktioniert", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: Notfallbeleuchtung (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: Fuehrerstandsheizung (3kWt)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: Automatischer Schalter (Hochspannung)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: ARS Relay", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: Automatisches Zugbremssystem ausschalten(Verhindert das abbremsen des Zuges nach dem ueberfahren eines Signals mit der Stellung Stop)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Automatisches Zugbremssystem (Setze Kontakte zurueck)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: Aktiviere Zugkontrolle", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: Oeffne Tueren links", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: Schliesse Tueren", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "EPK Oeffne Ventil", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: Aktiviere Zugkontrolle", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkbremse", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Parkbremse", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Schalte Druckluftverteiler ab", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Notbremse", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: Battery on/off (low voltage)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "Hochspannungschalter", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zugdruckventil", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Bremsdruckventil", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Wagentuer", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "Hochspannungssicherungen", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "Batterie- und Steuerungs-Schaltkreise", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "Heizung", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Fronttuer", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: Fuehrerstandsbeleuchtung", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: Notfallbeleuchtung (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: Fuehrerstandsheizung (3kWt)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkbremse", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Parkbremse", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Fuehrerstandstuer", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Wagentuer", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: Rote Ueberladungsrelay-Lampe (schuetzt die Motoren vor zu hoher Spannung)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: Gruene Ueberladungsrelay-Lampe (schuetzt die Motoren vor zu hoher Spannung)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Tueren geschlossen)", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Oeffne Tueren links", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Tuerkontrolle", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Setze Wagonrelay zuruek", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Ausfallschalter", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Schliesse Tueren", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Kompressor", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: Schalte Wagonbeleuchtung ein", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: Schalte Wagonbeleuchtung aus", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Switch: Notfallkompressor starten", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: Oeffne Tueren rechts", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: Zwangsschliessen", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: Automat (Hochspannungs Schalter)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: Aktiviere Zugkontrolle", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Kontrolliere die Voltanzahl der Schaltkreise", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: Schliesse Tueren", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: Oeffne Tueren links", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Bremsdruckventil", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Zugdruckventil", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Schalte Druckluftverteiler ab" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/de_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/de_spawner.lua deleted file mode 100644 index 44b8f5e..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/de_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "de", - "Name": "Deutsch", - - "Spawner.Title": "Zug spawner", - "Spawner.Trains1": "Zuege", - "Spawner.Trains2": "Maximale Anzahl fuer dich", - "Spawner.WagNum": "Wagen", - "Spawner.AutoCouple": "Automatisches kuppeln der Wagons", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Ausfuehrung", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Passagiertextur", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Fuehrerstandstextur", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Ansagegeraet", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Feuerzeug", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "ARS Konsolentyp", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Normal(eckige lampen)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Normal(runde lampen)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kiev/St.Petersburg", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Alte ARS Ausfuehrung", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Bremshebel", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Front", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 Stossstange 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 Stossstange 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Retro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "LED", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "BPSN typ", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Alter hoher ton", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Alter mittlerer ton", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Normal(aus St.Petersburg)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Normal(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Normal", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kiew", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Alt", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Normal 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Normal 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Kein Ton(BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Steuerungston", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Neues Kontroller Modell", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "St.Petersburg Warnsignal", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Pfeifton", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Alt", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Normal tiefer ton", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Normal hoher ton", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Normal alternierender tiefer ton", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Normal alternierender hoher ton", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Zug Luftdruck", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Relays eingeschaltet", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Zufaellige Relays einschalten", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Oeffne Tueren links", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Oeffne Tueren rechts", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Hochspannungs Schalter", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Parkbremse", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Tuersignal lampen", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Horizontal", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Vertikal", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "MVM Schild", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Haltestangen style", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Alt", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Neu", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Sitz style", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Alt", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Neu", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Lampen style", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Relays Rechts", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Werbung", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Werbung 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Werbung 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Werbung 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Keine Werbung", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Ausfuehrung", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Passagiertextur", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Fuehrerstandstextur", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Ansagegeraet", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Linien schema", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Tausche schema", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Zug Luftdruck", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Hochspannungschalter", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Schalte zufaellige Zugsicherungrelays ein", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Schalte alle Zugsicherungrelays ein", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Schalte alle Zugsicherungs Relays aus", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Zufaellige Relays in Mittelwagen", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Oeffne Tueren links", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Oeffne Tueren rechts", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Ausfuehrung", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Passagiertextur", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Fuehrerstandstextur", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Ansagegeraet", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Linien schema", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Tausche schema", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Zug Luftdruck", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Schalte zufaellige Zugsrelays ein", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Schalte zufaellige Relays ein", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Oeffne Tueren links", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Oeffne Tueren rechts", - - "Spawner.Close": "Schliessen", - "Spawner.Spawn": "Fertig" -} -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages_/_unfinished/fin_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/fin_buttons_717.lua deleted file mode 100644 index 50c3c10..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/fin_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "FIN", - "Name": "FINLAND", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door ohjaus toggle (close doors)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Vasemmanpuoleiset ovet auki", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Ohjelma 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Ohjelma 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS-piirit pois", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Akusto päälle/pois", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Nopeudenrajoituslaite", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Pyyhkijä", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Ohjausventtiilin irroitus", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Jarrujohdon irroitus", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Matala taajuusvahvistin", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: Äänet vaunussa päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Loudspeaker: Äänet ohjaamossa päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Radioinffo: Ilmoitukset(sisäänrakennettu)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Ohjelma 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Ohjelma 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Huomio nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Paineilman venttiili #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Ovilukon asento (sulje ovet)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Vasemmanpuoleiset ovet auki", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL nappulan kansi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Vasemmanpuoleiset ovet auki", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL nappulan kansi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Ovien puoli", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Radioasemat päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Ylikuormituksen resetoinnin rele", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Viherä ylikuormituksen valo (estää moottoreiden \"ylivirtauksen\")", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automaattisen ohjauksen sammutus aktiivinen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Suurjännitemuuntimen ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Palohälytys (reostaatti ylikuumenee)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Muuntimen suojaus", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Failure indication button", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Hälytys äänimerkki", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automaattinen nopeudenvalvonta", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Kulunvalvonta", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Sammuta automaattisen ohjausyksikön rele (vikatila AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(placeholder) Hätäjarrun kytkin", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Matkustamon valot", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Ohjaamo valo", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Paneeli valot", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Decoder: ALS taajuuskytkin 1/5 tai 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Sign \"VAPAUTA KÄSIJARRU\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Käsijarru", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Junaohausventtiili", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: Ensimmäinen nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Toinen nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Kolmas nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Neljäs nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Hallitse ohjauspiirin jännitteitä", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Moottori kompressori päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Train power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Moottorikompressorin hätä käynnistys", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS stabiloitu jännite tarkastus", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nReitti numero", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\nn numero", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nAikataulun totaalinen aika(?)", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nJunien aikaväli", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nTunnit", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinuutit", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSekunnit", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Saapumis ajat", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Aseman nimi", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Nopeusmittari", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Vian merkkiovalo (tehopiirit eivät onnistuneet kokoontumaan)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: Punainen ylikuormituksen valo (tehopiirit eivät onnistuneet kasaantumaan)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Reostaattisäätimen liikevalo", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS jarrutuksen merkkivalo", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: ARS moottorin sammutusilmaisin", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Korkeajännite ei ole saatavilla", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: Ei ARS taajuutta", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: ARS pysähtymis singaali", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Nopeusrajoitus 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Nopeusrajoitus 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Nopeusrajoitus 70 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Nopeusrajoitus 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Ovi valot (ovet ovat kiinni)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Ovi valot (ovet ovat kiinni)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Jarrut kiinni", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Moottorit päällä", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Suuntaussingaali", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Nopeuden \"tasa-arvo\" (sueraavan segmentin nopeusrajoitus on yhtä suuri tai suurempi kuin nykyinen)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Jarrusylintereiden paine", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Paine penumaattisissa linjoissa (punainen: \"jarruviiva\", musta: junan)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: ARS piirien irroitus", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Nopeudenrajouituslaite", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Akusto päälle/pois", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "jarrujohdon eristysventtiili", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Junajohdon eristysventtiili", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Valikko", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: Ylös", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: Alas", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Taka-ovi", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "HV volttimittari (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Totaalinen ampeerimittari(A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Juna johto 6 ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Juna johto 10AS Ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Juna johto 10AK ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Kytke virta akkuvirtapiiriin", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Ovien hallinta", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Moottorikompressorin ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC virtalähde", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V virtalähde", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS junajohto 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V jännitelähde", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS jarrutus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Junan ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Ohjaamo valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Sammuta DIP and valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Moottorikompressorin hätäkäynnistys", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Juna johto 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Ohjaamon lämmitys", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Ylikuormituksen resetointi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Radioviestintä", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Radiolägetykset", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 Välivaunu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Paineilma venttiilit #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Ohjaus 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Manuaalinen sähkojarru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Käynnistä KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Reostaattisäätimen moottorin teho", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Hätäohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Junan hätäohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Virtakytkin kytketty moottorin tehoon", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Matkustamon valot", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Hätä valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Akun lataus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Ovet kiinni", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Ovi hälytys", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Ovien hätäsulku", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Punainen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Punainen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Valkoinen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Valkoinen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "HV kytkin", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Hätäjarru", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Edellinen kilpi", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Seuraava kilpi", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "linja : Lisää 2. numeroa", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Linja: Vähennä 2. numeroa", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Linja: Lisää 1. numeroa", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Linja: Vähennä 1. numeroa", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Ajovalojen kytkin", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Ajovalot pitkät/lyhyet", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Hätä ajo modi (vika RPB releessä)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Hätäoven sulkian ylikuormittuminen (vikaf KD releessä)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Hätäkäynnistys nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "Hätä ajo nappi", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH nappulan suoja", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Ohjaamolämmitys aktiivinen", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Oikeanopuoleiset ovet auki", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP nappulan suoja", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Ilmajarrun ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Juna johdon 6 ohjus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Juna johdon 10AS ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Juna johdon 10AK ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Käynnistä akustonvirta ohjauspiireihin", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Ovien ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Moottorikompressorin ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC virta", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V virta", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS junajohto 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V virta", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS jarrutus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Junan ohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Ohjaamo valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Sammuta DIP ja valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Hätämoottorikompressori päälle", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Junajohto 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Ohjaamon lämmitys", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Ylikuormituksen resetointi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Radioviestintä", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Radiolägetykset", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 Välivaunu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Paineilma venttiilit #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Ajo/jarru ohjaus, juna johto 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Manuaalinen sähköjarru", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Käynnistä KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Reostaattisen moottorin teho", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Hätäohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Junan hätäohjaus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Virroitin kytkeytyy moottoriin tehoon", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Matkustamon valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Hätä valaistus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Akuston lataus", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Avaa oikeanpuoleiset ovet", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Avaa vasemmanpuoleiset ovet", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Sulje ovet", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Ovi hälytys", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Ovien hätäsulkeutuminen", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Punainen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Punainen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Valkoinen lamppu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Valkoinen lamppu", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Nopeusmittari", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Ovien tila valo (ovet ovat kiinni)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: Ei ARS taajuutta", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: ARS pysähtymis singaali", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Nopeuden tasa-arvo (seuraavan singaalin nopeusrajoitus on yhtä suuri tai suurempi kuin nykyinen)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Rajoitus 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Rajoitus 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Rajoitus 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Rajoitus 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Reostaattiohauksen valo", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: ARS Moottorin sammutusilmaisin", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: ARS Jarrutusilmaisin", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: Punainen ylikuormituksen valo (tehopiirit eivät onnistuneet kasaantumaan)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Korkeajännite ei ole saatavilla", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Moottorit ovat \"mukana\"", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Jarrut kiinni", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Ohjaamo ovi", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Suunta taakse", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Suunta eteen", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: Automaattinen pysähdys pois päältä", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Automaattisen pysähdyksen resetointi)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV Irroita venttiili", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Junan ohjekirja", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Käsijarru", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": " Jarruventtiilin vipu", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": " Junaventtiilin vipu", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Poista ilmansyöttö", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "HV kytkin", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Jarrun eristysventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Junajarrun eristysventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Jarrun eristysventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Junajarrun ohjausventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Matkustamon valot", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Kytke akusto päälle ohjaamaan piirejä", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Moottorikompressorin ohjaus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Reostaattisen moottorin teho", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Virroittimen tila kytkeytyy moottorin tehoon", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Jarrun eristysventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Junajarrun eristysventtiili", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Käsijarru", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disabloi ilmansyöttö", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Etuovi", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Akusto päälle/pois", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 junajohdon 10AK ohjaus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Akuston lataus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Ovi hälytys", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Oikeanopuoleiset ovet", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Vasemmanpuoleiset ovet", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Ovet kiinni", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Ovet kiinni hätäkatkaisia", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Käynnistä DIP ja valaistus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Sammuta DIP ja valaistus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Hätä käynnistyksen nappi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": " Ylikuormituksen resetointi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Moottorikompressorin hätäkäynnistys", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Moottorikompressori päälle ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Junan virtalähde", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Ylikuormituksen resetointi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Paineilman venttiilit #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Veto/jarru piiri ohjaus, juna johto 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Manuaalinen sähkojarru", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Käynnistä KK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Käynnistä hätämoottorikompressori", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Hätäohjaus", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Juna johto 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/fin_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/fin_buttons_ezh3.lua deleted file mode 100644 index 1a76de0..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/fin_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang": "fin", - "Name": "Suomi", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Hätäjarru", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Taka-ovi", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Junajohdon irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: Akusto päälle/pois (matala voltti)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Junajarrun irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Kuuluttaja: Menu", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Kuuluttaja: Ylös", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Kuuluttaja: Alas", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Kuuluttaja: Käynnistä", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Ohjaamon ovi", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Etu ovi", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "HV kytkin", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Junajohdon irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NCh: No ARS taajuutta", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: ARS pysähtymis singaali", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "Nopeusrajoitus 40 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "Nopeusrajoitus 60 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "Nopeusrajoitus 80 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "Nopuesrajoitus 60 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Nopeusmittari (km/h)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Moottoreiden totaalinen amppeerimäärä (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Totaalinen volttimäärä (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Akuston volttimäärä junan ohjauksessa(V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Jarrusylintereiden paine", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Paine paineilmajohdoissa (punainen: jarrujohto, musta: junajohto)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "Käynnistä moottorikompressori", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: Sammuta ajomodi", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: Käynnistys", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: Resetointi", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lamppu: Veto-Jarrutus", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lamppu: Työ status SAMM", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamppu: SAMMM toteutusyksikkö käytössä", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: Automaattiajo päälle", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: Suoritusyksikkö", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: Saavuttaa", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: Lupa", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: Vian osoituspainike", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Ohjelma 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Ohjelma 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Kytkin: Lähivalot(alhaalla)/Pitkätvalot(ylhäällä)", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Kytkin: Mittarien valaistus", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Kytkin: Hätäkytkin", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: Valaistus päälle", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: Valaistus pois päältä", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: Ovien tarkastus", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: jarrun havainnointipainike", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB:Huomio-painike", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lamppu: RK kehruu", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: Nopeuden kulunvalvonta", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: Alhainen taajuusvahvistin", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD:Ovilukko (sulje ovet)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Radioinformator: Kuuluttaja (sisäänrakennettu)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: Kulunvalvonta", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: Ylikuormittuksen resetointi", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Kello", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Kytkin: Ohjaamo valo", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: Ovien hätäsulku", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: Avaa oikeanpuoleiset ovet", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: Vasemmanpuoleiset ovet auki", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: Ajamisen hätäpainnike", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Moottorikompressorin hätäkäynnistys", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: Hätkäynnistyksen painike", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: Radioaseman aktivointi", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Loudspeaker: Äänet ohjaamossa päälle", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "ZS: Äänet vaunuissa päälle", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Käyttämätön kytkin", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Käyttämätön kytkin", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Ilmoittajan työn ilmaisin", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: Ohjaamon valo", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: Hätävalaistus (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: Ohjaamon lämmitys (3kWt)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: Automaattinen kytkin(korkeajännite)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: ARS-katkaisija", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: Automaattisen hätäjarrun disablointi (disablointi)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Automaattisen hätäjarrun disablointi(resetointi)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: Junaohjaus päälle", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: Vasemmanpuoleiset ovet auki", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: Ovilukon kytkin (ovet kiinni)", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "EPK irroita venttiili", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: Junaohjaus päälle", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Käsijarrun pyörä", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Käsijarrun pyörä", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disabloi ilmansyöttö", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Hätäjarru", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: Akusto päälle/pois (matala jännite)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Junajohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "HV kytkin", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Matkustamon ovi", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "HV sulakkeet estävät", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "Laatikko, jossa on akuston lataus ja ovien paineanturit", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "Lämmitys", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Etu-ovi", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: Ohjaamon valo", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: Hätävalaistus (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: Ohjaamon lämmitys (3kWt)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Käsijarrun pyörä", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Käsijarrun pyörä", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Ohjaamon ovi", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Matkustamon ovi", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: Punainen ylikuormituksen relevalo (virtapiirit eivät onnistuneet kasaantumaan)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: Vihreä ylikuormituksen valo (estää moottoreiden ylivirtauksen)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Sininen ovien tila valo (ovet ovat kiinni)", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Kytkin: Avaa vasemmanpuoleiset ovet", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Kytkin: Singaalisaatio (Ovien hallinan testaaminen)", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Kytkin: Ylikuormittumisen resetointi", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Kytkin: Rikkinäisen vaunun havaitseminen", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Kytkin: Ovien hallinta (sulje ovet)", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Kytkin: Kompressori päälle", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: Matkustamovalot päälle", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: Matkustamovalot pois", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Kytkin: Moottorikompressorin hätäkäynnistäminen", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: Avaa oikeanpuoleiset ovet", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: Ovien hätäsulku", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: Automaattikytkin (Korkeajännite)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: Aktivoi junaohjaus", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Ohjauspiirien jännite", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: Ovilukko (sulje ovet)", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: Avaa vasemmanpuoleiset ovet", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Jarrujohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Junajohdon irroitusventtiili", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disabloi ilmansyöttö" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/fr_base.lua b/lua/metrostroi_data/languages_/_unfinished/fr_base.lua deleted file mode 100644 index 111b216..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/fr_base.lua +++ /dev/null @@ -1,53 +0,0 @@ -return [[ -{ - "Lang": "fr", - "Name": "French", - "Panel.Admin": "Admin", - "Panel.Client": "Client", - "Panel.DrawDebugInfo": "Draw debugging info", - "Panel.DisableCamAccel": "Disable cam acceleration", - "Panel.DisableHoverText": "Disable hover text", - - "Entities.gmod_subway_base.Name": "Subway base", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (intermédiaire)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (ne fonctionne pas)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (ne fonctionne pas)", - "Entities.gmod_subway_81-720.Name": "81-720 (locomotive)", - "Entities.gmod_subway_81-721.Name": "81-721 (intermédiaire)", - "Entities.gmod_subway_81-722.Name": "81-722 (locomotive)", - "Entities.gmod_subway_81-723.Name": "81-723 (intermédiaire motorisé)", - "Entities.gmod_subway_81-724.Name": "81-724 (wagon intermédiaire)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 intermédiaire", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508t", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "train IA", - - "Entities.gmod_train_bogey.Name": "Bogie de train", - "Entities.gmod_train_couple.Name": "Couple", - - "Entities.gmod_track_pui.Name": "Horloge PUI", - "Entities.gmod_track_mus_elektronika7.Name": "Horloge Électrique", - "Entities.gmod_mus_clock_analog.Name": "Horloge Analogique ", - "Entities.gmod_track_clock_time.Name": "Horloge des Grandes Intervales (temps)", - "Entities.gmod_track_clock_small.Name": "Horloge de petites intervales", - "Entities.gmod_track_clock_interval.Name": " Horloge des Grandes Intervales (intervales)", - "Entities.gmod_track_switch.Name": "Aiguillage", - "Entities.gmod_track_powermeter.Name": "Voltmètre", - "Entities.gmod_track_controller.Name": "Controleur de rails", - "Entities.gmod_track_udochka.Name": "Connecteur électrique", - "Entities.gmod_train_spawner.Name": "Outil d'apparition de trains" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/fr_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/fr_buttons_717.lua deleted file mode 100644 index 21c7be7..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/fr_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "fr", - "Name": "french", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Contrôle des portes(fermer les portes)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Portes gauches", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Programme 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Programme 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS déconnecter les circuits ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Batterie on/off", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Limiteur de vitesse", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Essuie-glace", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Valve pilote (déconnecter la valve)", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Déconnecter la valve de freinage", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Amplifieur de basses fréquences", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: Activer le son des wagons", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Loudspeaker: Activer le son dans la cabine", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Radioinformator: Annonceur (en dev)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Programme 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Programme 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Bouton d'attention", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Valve pneumatique #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Contrôle des portes (fermer les portes)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Ouvrir les portes gauche", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL Couvre-bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Ouvrir les portes gauche ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL Couvre-Bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Sélectionner le côté d'ouverture des portes", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: Fermetures de portes d'urgence", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Activer la radio", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Remettre a zéro le relai de l'overload ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Lampe vertr de l'overload (évite de surcharger les moteurs", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatic control disabler active", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Controle du Haut Voltage ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP:Prévention incendie (rhéostat en surchauffe)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Protection du converteur", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Bouton affichant l\"erreur", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Sonette", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Régulation automatique de la vitesse", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Signalement de la locomotive automatique", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Désactiver le contrôle automatique, désactiver les relais (erreur de l'AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(pour rester en place) Frein d'urgence", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Lumière des wagons", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Lumières de la cabine", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Lumières du panneau", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Decoder: Fréquence de l'ALS 1/5 ou 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Panneau \"ENLEVER LE FREIN DE PARKING\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Frein de parking", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Déconnecter la valve(train line)", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: Premier Bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Deuxième Bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Troisième bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Quatrième bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Contrôle du voltage des circuits", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Démarrer le compresseur du moteur", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Envoyer de l'énergie vers les wagons", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Démarrage d'urgence du compresseur du moteur", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: (ARS) Vérifier la tension stable de l'ars", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nNuméro de route", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\n° de chemin", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTemps total du parcours", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nInterale entre les trains", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nHeure", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSeconde", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Temps d'arrivée", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Nom de la station", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Compteur de vitesse", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Lumière indiquant une erreur ( les circuits d'alimentation n'ont pas réussis a s'assembler)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: Lumière rouge indiquant un overload des relais ( les circuits d'alimentation n'ont pas réussis a s'assembler )", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Lumière de contrôle des rhéostats", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS Indicateur de freinage ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: Indicateur de l'état des moteurs ARS (off) ", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Haut voltage non disponible", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: Aucune fréquence ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: ARS Signe stop", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Limite de vitesse 40 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Limite de vitesse 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Limite de vitesse de 70 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Limite de vitesse 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Lumière d'état des portes (les portes sont fermées)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Lumière d'état des portes (les portes sont fermées ", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Freins engagés", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Moteurs engagés", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Signal de direction", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Lumière d'égalité des vitesses (la vitesse du prochain segment est égale ou supérieure que celle de maintenant)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Pression du cylindre des freins", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Pression des valves pneumatiques (rouge: freinage, noir: ligne du train)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: Déconnecter les circuits ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Limitations de vitesses", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Batterie on/off", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Valve d'isolation (Brake line) ", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Valve d'isolation (Train line)", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: haut", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: bas", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Allumer", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Porte arrière", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "Voltmètre de haut voltage (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Ampèremètre (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Train wire control 6 ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Train wire 10AS control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Allumer la batterie pour les circuits", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 Interim wagon", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": " switcheur HV", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Frein d'urgence", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Panneau précédent", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Panneau Suivant", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Route: Augmenter le second nombre", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Route: Descendre le second nombre", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Route: Augmenter le premier nombre", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Route: Descendre le premier nombre", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Phares", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Phares puissants", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Mode de conduite d'urgence ", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Fermeture d'urgence des portes (erreur du relai KD)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Bouton de démarrage d'urgence", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "Bouton de conduite d'urgence", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH Couvre bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Activer le chauffage", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Ouvrir les portes droites", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP Couvre bouton", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Contrôle des freins pneumatiques", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Train wire 6 control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Train wire 10AS control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "Contrôle du train (VU)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 Interim wagon", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: Compteur", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: ARS signal stop", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Lumière d'égalité des vitesses (la vitesse du prochain segment est égale ou supérieure que celle de maintenant)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Limite de vitesse 40km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Limite de vitesse 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Limite de vitesse 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Limite de vitesse 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Lampe de contrôle du rhéostat", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: Indicateur de l'arret des moteurs ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: Indicateur de freinage ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: Lumière rouge d'overload des relais, les circuits n'ont pas réussis a s'assembler", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Haut voltage non disponible", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Moteurs engagés", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Freins engagés", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Porte de cabine", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Marche arrière", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Marche avant", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": " Porte passager", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA:Désactivateur de l'arrêt automatique lors du dépassement des feux rouges", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Réinitialiser les contacts de l'UAVA", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": " Valve de déconnection de l'EPV", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Afficher de l'aide concernant la conduite du train", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parking brake Frein de parking", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": " Valve d'isolation des freins", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Valve d'isolation du train", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Désactiver le distributeur d'air", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "Switcheur HV", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Valve d'isolation des freins", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Valve d'isolation du train", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Porte arrière", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": " Valve de déconnection des freins", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": " Valve de déconnection du (train line)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": " Valve d'isolation de la ligne de frein", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": " Valve d'isolation de la ligne de train", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Frein de parking", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Désactiver le distributeur d'air", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Porte de devant", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Batterie on/off", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Bouton de démarrage d'urgence", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Remettre a zéro le relai overload", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": " Démarrage d'urgence des compresseurs du moteur", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Allumer le compresseur du moteur", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Envoyer de l'électricité dans le train", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Train wire 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/fr_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/fr_spawner.lua deleted file mode 100644 index e411518..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/fr_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "fr", - "Name": "French", - - "Spawner.Title": "Outil d'apparition de trains", - "Spawner.Trains1": "Trains", - "Spawner.Trains2": "Maximum pour toi", - "Spawner.WagNum": "Wagons", - "Spawner.AutoCouple": "Coupler automatiquement les wagons", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Apparence", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Apparence intérieure", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Apparence de la cabine", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Annonceur", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Lighter", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "Type d'interface ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Standard(lampes carrées)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Standard(lampes rondes)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kiev/SPB", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Ancien ARS(compteur à aiguilles)", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Type de levier de frein", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Type de pare-chocs", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 avant 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 avant 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Rétro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "LED", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "Type de BPSN", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Ancien son ton haut ", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": " Ancien son ton moyen ", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Standard(de SPB)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Standard(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Standard", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kiev", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Ancien", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Standard 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Standard 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Aucun son(BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Son du controlleur ", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Nouveau modèle de controlleur", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "klaxon SPB ", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Sonette", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Ancien", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Standard, ton bas", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Standard, ton haut", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Standard intermittent et ton bas", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Standard intermittent et ton haut", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Valve(train line)", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Activateur de circuit(ON)", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Activateur de circuit(au hasard)", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Portes Gauches Ouvertes", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": " Portes Droite Ouvertes ", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Switcheur HV", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Frein de Parking", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Types de lampes(Compteurs)", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Horizontal", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Vertical", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "Signe MVM", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Handrails type", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Vieux", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Neuf", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Type de sièges", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Vieux", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Neuf", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Type de Lampes(Intérieure)", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Activateur de circuits droite", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Type de klaxon", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Aucun", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Apparence", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Apparence intérieure", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Apparence de la cabine", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Annonceur", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Schéma de la ligne", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Inverser le schéma", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Valve(Train line)", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Switcheur HV", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Activateurs de circuit du train(random)", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Activer tous les activateurs de circuit ", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Désactiver tous les activateurs", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Activateurs de circuits aléatoires(wagon)", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Ouvrir les portes gauche", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Ouvrir les portes droite", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Apparence", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Apparence intérieure", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Apparence de la cabine", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Annonceur", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Schéma de la ligne", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Inverser le schéma", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Valve(Train line)", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Batterie", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Activer tous les activateurs de circuits", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Activateur de circuit (random)", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Ouvrir les portes gauches", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Ouvrir les portes droites", - - "Spawner.Close": "Fermer", - "Spawner.Spawn": "Fini !" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/kr_base.lua b/lua/metrostroi_data/languages_/_unfinished/kr_base.lua deleted file mode 100644 index bd88643..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/kr_base.lua +++ /dev/null @@ -1,52 +0,0 @@ -return [[ -{ - "Lang": "kr", - "Name": "Korean", - "Panel.Admin": "관리자", - "Panel.Client": "사용자", - "Panel.DrawDebugInfo": "디버깅 정보 표시", - "Panel.DisableCamAccel": "시점 흔들림 끄기", - "Panel.DisableHoverText": "주석 텍스트 끄기", - - "Entities.gmod_subway_base.Name": "Subway base", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (중간 객차)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (작동 안함)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (작동 안함)", - "Entities.gmod_subway_81-720.Name": "81-720 (선두차)", - "Entities.gmod_subway_81-721.Name": "81-721 (중간 객차)", - "Entities.gmod_subway_81-722.Name": "81-722 (선두차)", - "Entities.gmod_subway_81-723.Name": "81-723 (중간 동력 객차)", - "Entities.gmod_subway_81-724.Name": "81-724 (중간 무동력 객차)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 (중간차)", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508t", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "AI 차량", - - "Entities.gmod_train_bogey.Name": "대차", - "Entities.gmod_train_couple.Name": "연결기", - - "Entities.gmod_track_pui.Name": "PUI 시계", - "Entities.gmod_track_mus_elektronika7.Name": "전자 시계", - "Entities.gmod_mus_clock_analog.Name": "아날로그 시계", - "Entities.gmod_track_clock_time.Name": "대형 배차간격 시계(시간)", - "Entities.gmod_track_clock_small.Name": "소형 배차간격 시계", - "Entities.gmod_track_clock_interval.Name": "대형 배차간격 시계(배차간격)", - "Entities.gmod_track_switch.Name": "선로 분기기", - "Entities.gmod_track_powermeter.Name": "전력계", - "Entities.gmod_track_udochka.Name": "급전 커넥터", - "Entities.gmod_train_spawner.Name": "열차 스포너" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/kr_buttons_717.lua deleted file mode 100644 index 9c6619f..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "kr", - "Name": "Korean", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: 좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "안내방송 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "안내방송 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS 회로 차단", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: 배터리 투입/차단", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: 속도 제한 장치", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "와이퍼", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "직통관 차단 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "제동관 차단 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: 저주파 증폭기", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: 객실 내부 방송 재생", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "스피커: 운전실 내부 방송 재생", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "안내방송기 전원 (내장)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "안내방송 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "안내방송 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: 확인 버튼", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: 공압 밸브 #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: 좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL 버튼 커버", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: 좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL 버튼 커버", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "출입문 방향 선택", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: 출입문 강제 닫힘", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: 무선국 활성화", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "과전류 계전기 리셋", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: 과전류 계전기 확인등(녹색) (추진장치 과전류 방지)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: 자동 제어 해제기 활성화", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: 고전압 변류기 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: 화재 경고 (가변 저항 과열)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "변류기 보호", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: 고장 확인 버튼", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "부저", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: 자동 속도 제한", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: 자동 차량 신호 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "자동 제어 해제기 비활성화 (AVU 고장)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(기능 없음) 비상 제동 투입", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "객실 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "운전석 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "운전대 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "디코더: ALS 주파수 절환 1/5 또는 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "표지 \"주차 제동 완해\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "주차 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: 버튼 1", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: 버튼 2", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: 버튼 3", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: 버튼 4", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "제어 회로 전압", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "공기 압축기 기동", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: 차량 전원 공급 장치", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "공기 압축기 강제 기동", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS 전압 안정 검사", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\n열번", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\n경로 번호", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\n총 운행 시간", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\n배차 간격", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\n시", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\n분", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\n초", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "도착 시각", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "역명", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "속도계", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: 고장 표시등 (전원 회로 연결 실패)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: 과전류 계전기 확인등 (적색) (전원 회로 연결 실패)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: 가변저항 제어기 동작 확인등", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS 제동 표시등", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: ARS 추진장치 정지 표시등", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: 고전압 집전 불가", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: ARS 신호 없음", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: ARS 정지 신호", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "속도 제한 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "속도 제한 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "속도 제한 70 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "속도 제한 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: 출입문 닫힘 확인등", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: 출입문 닫힘 확인등", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: 제동 작동", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: 추진장치 작동", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: 방향 신호", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: 속도 유지등", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "제동통 압력", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "공기관 압력 (적색: 제동관 압력, 흑색: 주 공기관 압력)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: ARS 회로 차단", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: 속도 제한 장치", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: 배터리 투입/차단", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: 메뉴", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: 위", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: 아래", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: 켜기", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "관통문(뒤)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "HV 전압계 (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "총 전류계 (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 차량 회로 6 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 차량 회로 10AS 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 차량 회로 10AK 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 제어 회로용 배터리 전원 투입", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 DIP 기동/점등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 출입문 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 공기 압축기 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS 차량 회로 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU 차량 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 운전실 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 부수 객차 DIP 기동/점등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 DIP 차단/소등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 공기 압축기 강제 기동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 차량 회로 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 운전실 난방", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 과전류 계전기 리셋", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 무선 통신", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 무선 방송", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 부수 객차", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 공압 밸브 #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 운전/제동 회로 제어, 차량 회로 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 수동 전기 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 부수 객차 공기 압축기 접촉기 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 가변 저항 제어기 모터 전원", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 비상 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 차량 비상 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 전원 회로 스위치 모터 전원", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 실내 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 비상등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 배터리 충전", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 우측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 출입문 닫힘", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 출입문 알람", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 출입문 강제 닫힘", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 적색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 적색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 백색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 백색등", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "객실문", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "비상 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "이전 방향막", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "다음 방향막", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "열번: 십의 자리 증가", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "열번: 십의 자리 감소", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "열번: 일의 자리 증가", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "열번: 일의 자리 감소", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "헤드라이드 점등", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: 헤드라이트 상향", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: 비상 운전 모드 (RPB 계전기 고장)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: 출입문 강제 닫힘 무시 (KD 계전기 고장)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: 비상 기동 버튼", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "비상 운전 버튼", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH 버튼 커버", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "운전실 난방 작동", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: 우측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP 버튼 커버", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "공압 제동 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 차량 회로 6 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 차량 회로 10AS 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 차량 회로 10AK 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 제어 회로용 배터리 전원 투입", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 DIP 기동/점등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 출입문 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 공기 압축기 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS 차량 회로 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V 전원 공급", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU 차량 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 운전실 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 부수 객차 DIP 기동/점등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 DIP 차단/소등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 공기 압축기 강제 기동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 차량 회로 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 운전실 난방", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 과전류 계전기 리셋", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 무선 통신", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 무선 방송", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 부수 객차", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 공압 밸브 #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 운전/제동 회로 제어, 차량 회로 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 수동 전기 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 부수 객차 공기 압축기 접촉기 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 가변 저항 제어기 모터 전원", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 비상 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 차량 비상 제어", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 전원 회로 스위치 모터 전원", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 실내 조명", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 비상등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 배터리 충전", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 우측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 출입문 닫힘", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 출입문 알람", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 출입문 강제 닫힘", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 적색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 적색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 백색등", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 백색등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "속도계", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: 출입문 닫힘 확인등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: ARS 신호 없음", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: ARS 정지 신호", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: 속도 유지등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "속도 제한 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "속도 제한 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "속도 제한 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "속도 제한 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: 가변저항 제어기 동작 확인등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: ARS 추진장치 정지 표시등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: ARS 제동 표시등", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: 과전류 계전기 확인등 (적색) (전원 회로 연결 실패)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: 고전압 집전 불가", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: 추진장치 작동", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: 제동 작동", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "운전실문", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "역전간 후퇴", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "역전간 전진", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "객실문", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: 범용 자동 정지 장치 비활성 (자동 정지 비활성)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: 범용 자동 정지 장치 비활성 (복귀)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV 차단 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "열차 운전 도움말 보기", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "주차 제동", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "공압 제어기 비활성", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "관통문(뒤)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "제동관 차단 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 실내 조명", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 제어 회로용 배터리 전원 투입", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 공기 압축기 제어", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 가변 저항 제어기 모터 전원", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 전원 회로 스위치 모터 전원", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "주차 제동", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "공압 제어기 비활성", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "관통문(앞)", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: 배터리 투입/차단", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 차량 회로 10AK 제어", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 DIP 기동/점등", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 배터리 충전", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC 전원 공급", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 출입문 알람", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 우측 출입문 열림", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 좌측 출입문 열림", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 출입문 닫힘", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 출입문 강제 닫힘", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 부수 객차 DIP 기동/점등", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 DIP 차단/소등", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: 비상 기동 버튼", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "과전류 계전기 리셋", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "공기 압축기 강제 기동", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "공기 압축기 기동", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: 차량 전원 공급 장치", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 과전류 계전기 리셋", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 공압 밸브 #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 운전/제동 회로 제어, 차량 회로 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 수동 전기 제동", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 부수 객차 공기 압축기 접촉기 제어", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 공기 압축기 강제 기동", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 비상 제어", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 차량 회로 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_720.lua b/lua/metrostroi_data/languages_/_unfinished/kr_buttons_720.lua deleted file mode 100644 index cfacb42..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_720.lua +++ /dev/null @@ -1,220 +0,0 @@ -return [[ -{ - "Lang": "kr", - "Name": "Korean", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set": "Vityaz: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set": "Vityaz: 다음 화면", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set": "Vityaz: 이전 화면", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set": "Vityaz: 메인", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set": "Vityaz: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set": "Vityaz: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set": "Vityaz: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set": "Vityaz: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set": "Vityaz: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set": "Vityaz: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set": "Vityaz: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set": "Vityaz: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set": "Vityaz: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set": "Vityaz: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set": "Vityaz: 삭제", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set": "Vityaz: 위\\속도", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set": "Vityaz: 아래\\전류", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set": "Vityaz: 입력\\객차별 상태", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set": "Vityaz: 선택\\객차별 상태 제어", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set": "비상 X-1", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set": "비상 X-2", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet": "출입문 강제 닫힘", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle": "비상문", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-": "냉난방기 운전 모드: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+": "냉난방기 운전 모드: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+": "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-": "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-": "냉난방 세기: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+": "냉난방 세기: -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle": "SF1: 제어 회로 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle": "SF2: BUV 전원 (객차 제어 유닛)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle": "SF3: BUTP 전원 (추진장치 제어 유닛)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle": "SF4: BUTP 제어", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle": "SF5: BUTP 비상 제어", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle": "SF6: BUTP 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle": "SF7: BBE (내부 전원 공급 유닛)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle": "SF8: BV 제어", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle": "SF9: BV 전원 (계전기 과부하)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle": "SF11: 공기 압축기", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle": "SF12: 출입문 닫힘", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle": "SF13: 좌측 출입문 열림", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle": "SF14: 우측 출입문 열림", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle": "SF15: 관통문 잠금", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle": "SF16: 안내방송기", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle": "SF17: 비상 통화 장치", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle": "SF18: (기능 없음)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle": "SF19: 객실 조명 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle": "SF20: 객실 비상 조명 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle": "SF21: 속도 센서", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle": "SF22: 비상 제동", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle": "SF23: 냉난방기 1번 그룹 제어", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle": "SF24: 냉난방기 2번 그룹 제어", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle": "SF25: 냉난방기 1번 그룹 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle": "SF26: 냉난방기 2번 그룹 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle": "SF27: 제동 유도기 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle": "SF28: ZKK 전원", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle": "SF29: 집전기", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle": "SF30: 노선도 & 안내기", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle": "SF31: (기능 없음)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle": "SF32: (기능 없음)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle": "SF33: (기능 없음)", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet": "ASNP: 메뉴", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet": "ASNP: 위", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet": "ASNP: 아래", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle": "ASNP: 전원", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder": "제동관", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle": "SF1: 주 전원", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle": "SF2: 주 제어", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle": "SF3: 비상 제어", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle": "SF4: BARS (ARS 유닛)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle": "SF5: BUP (차량 제어 유닛)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle": "SF6: BKCU (제어 회로 정류 유닛)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle": "SF7: BARS (ARS 유닛)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle": "SF8: 안내방송기", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle": "SF9: 무선국", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle": "SF10: 객차 방향", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle": "SF11: 진행 방향", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle": "SF12: 전조등 1번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle": "SF13: 전조등 2번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle": "SF14: 마커등", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle": "SF15: 운전실 조명", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle": "SF16: 난방기", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle": "SF17: 운전실 에어컨", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle": "SF18: 살사 장치", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle": "SF19: 주 KRM 전원 (직통관)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle": "SF20: 비상 KRM 전원 (직통관)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle": "SF21: 출입문 열림", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle": "SF22: 출입문 닫힘", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle": "KRMSH (직통관 차단 밸브)", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor": "객실문", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV": "총 전압계 (kV)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3": "추진장치 1번 그룹 전류 (A)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4": "추진장치 2번 그룹 전류 (A)", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 차단 밸브", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor": "관통문(뒤)", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor": "관통문(뒤)", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle": "집전기 1번 그룹 비활성", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle": "집전기 2번 그룹 비활성", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle": "환풍기 1번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle": "환풍기 2번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle": "객실 조명", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle": "운전실 조명", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle": "전조등 1번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle": "전조등 2번 그룹", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle": "주차 제동", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle": "관통문 잠금", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle": "비상 BBE 기동", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle": "BBE (내부 전원 공급 유닛)", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle": "공기 압축기", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle": "운전실 조명 전원", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle": "객실 조명 장치", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-": "BARS 고장 (ARS 유닛) 차단: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+": "BARS 고장 (ARS 유닛) 차단: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle": "배터리 투입/차단", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle": "ALS 디코더", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery": "제어 회로 전압", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor": "객실문", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight": "운전실문", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft": "운전실문", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle": "좌측 출입문 선택", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle": "우측 출입문 선택", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle": "출입문 제어 스위치", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp": "좌측 출입문 버튼 작동", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet": "좌측 출입문", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed": "출입문 닫힘", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle": "유지", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle": "안내기", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle": "KAH", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle": "ALS", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle": "기지 출고", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage": "고전압 집전 불가", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle": "노선도", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet": "비상 공기 압축기", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet": "보호기 작동 (계전기 과부하)", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet": "BV 차단 (계전기 과부하)", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet": "부저", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set": "안내방송 2", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle": "안내방송기", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle": "노선", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet": "비상 통화 장치", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set": "안내방송 1", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet": "비상 BV 복구", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle": "비상 제어", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle": "와이퍼", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop": "제한 속도", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact": "현재 속도", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred": "제한 속도 예고", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2": "제한 속도", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "가속", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "전진", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "후진", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateToggle": "가속도", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "(보조) 제동", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "(보조) 완해", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "보조 제동", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle": "비상 제동", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle": "출입문 닫힘", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet": "메세지 확인", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet": "확인", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet": "제동 확인", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet": "경적", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet": "우측 출입문", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp": "우측 출입문 버튼 동작", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine": "적색: 제동관 압력, 흑색: 주 공기관 압력", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor": "관통문(앞)", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor": "관통문(뒤)", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle": "배터리 투입/차단", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle": "SF1: 제어 회로 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle": "SF2: BUV 전원 (객차 제어 유닛)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle": "SF3: BUTP 전원 (추진장치 제어 유닛)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle": "SF4: BUTP 제어", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle": "SF5: BUTP 비상 제어", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle": "SF6: BUTP 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle": "SF7: BBE (내부 전원 공급 유닛)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle": "SF8: BV 제어", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle": "SF9: BV 전원 (계전기 과부하)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle": "SF11: 공기 압축기", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle": "SF12: 출입문 닫힘", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle": "SF13: 좌측 출입문 열림", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle": "SF14: 우측 출입문 열림", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle": "SF15: 관통문 잠금", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle": "SF16: 안내방송기", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle": "SF17: 비상 통화 장치", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle": "SF18: (기능 없음)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle": "SF19: 객실 조명 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle": "SF20: 객실 비상 조명 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle": "SF21: 속도 센서", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle": "SF22: 주차 제동", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle": "SF23: 냉난방기 1번 그룹 제어", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle": "SF24: 냉난방기 2번 그룹 제어", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle": "SF25: 냉난방기 1번 그룹 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle": "SF26: 냉난방기 2번 그룹 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle": "SF27: 제동 유도기 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle": "SF28: ZKK 전원", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle": "SF29: 집전기", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle": "SF30: 노선도 & 안내기", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle": "SF31: (기능 없음)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: (기능 없음)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: (기능 없음)", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 해방 밸브" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/kr_buttons_ezh3.lua deleted file mode 100644 index 3a8e764..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/kr_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang": "kr", - "Name": "Korean", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "비상 제동", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "관통문(뒤)", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "제동관 차단 밸브", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: 배터리 투입/차단 (저전압)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 해방 밸브", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 해방 밸브", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "안내방송기: 메뉴", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "안내방송기: 위", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "안내방송기: 아래", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "안내방송기: 전원", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "객실문", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "객실문", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "운전실문", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "관통문(앞)", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 차단 밸브", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NCh: ARS 신호 없음", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: ARS 정지 신호", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "속도 제한 40 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "속도 제한 60 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "속도 제한 80 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "속도 제한 60 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "속도계 (km/h)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "총 전류계 (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "총 전압계 (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "차량 제어 용 배터리 전압(V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "제동통 압력", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "공기관 압력 (red: 제동관 압력, black: 주 공기관 압력)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "공기 압축기 기동", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: 운전 종료", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: 시작", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: 리셋", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lamp: 상용 제동", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lamp: SAMM 작동 상태", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamp: SAMM 실행 유닛 작동", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: 자동 운전 시작", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: 실행 유닛", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: 따라 잡기", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: 권한", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: 고장 확인 버튼", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "안내방송 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "안내방송 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Switch: 하향등 (아래)/상향등 (위)", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Switch: 조명 측정기", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Switch: 비상 운전", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: 조명 켜기", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: 조명 끄기", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: 출입문 신호 전달 확인", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: 제동 확인 버튼", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB: 확인 버튼", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lamp: RK 회전 중", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: 자동 속도 제한", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: 저주파 증폭기", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "안내방송기 전원 (내장형)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: 자동 차량 신호 제어", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: 과전류 계전기 리셋", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "부저", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Switch: 운전실 조명", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: 출입문 강제 닫힘", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: 우측 출입문 열림", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: 좌측 출입문 열림", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: 비상 운전 버튼", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "공기 압축기 강제 기동", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: 비상 기동 버튼", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: 무선국 활성화", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "스피커: 운전실 내부 방송 재생", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "ZS: 객실 내부 방송 재생", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "(기능 없음)", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "(기능 없음)", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "안내방송기 작동 확인등", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: 운전실 조명", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: 비상등 (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: 운전실 난방 (3kWt)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: 자동 스위치 (고전압)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: ARS 차단기", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: 범용 자동 정지 장치 비활성 (자동 정지 비활성)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet": "UAVA: 범용 자동 정지 장치 비활성 (복귀)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: 차량 제어 활성화", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: 좌측 출입문 열림", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "EPK 차단 밸브", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: 차량 제어 활성화", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "주차 제동 핸들", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "주차 제동 핸들", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "공압 제어기 비활성", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "비상 제동", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: 배터리 투입/차단 (저전압)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "제동관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "고전압 스위치", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "제동관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "객실문", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "고전압 퓨즈 함", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "배터리 충전/출입문 압력 제어기 함", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "난방기", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "관통문(앞)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: 운전실 조명", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: 비상등 (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: 운전실 난방 (3kWt)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "주차 제동 핸들", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "주차 제동 핸들", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "운전실문", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "객실문", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "객실문", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: 과전류 계전기 확인등 (적색) (전원 회로 연결 실패)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: 과전류 계전기 확인등 (녹색) (추진장치 과전류 방지)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "출입문 닫힘 확인등", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Switch: 좌측 출입문 열림", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Switch: 신호 전달 (출입문 제어 확인)", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Switch: 과전류 계전기 리셋", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Switch: 고장 확인 스위치", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Switch: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Switch: 공기 압축기 기동", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: 실내 조명 켜기", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: 실내 조명 끄기", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Switch: 공기 압축기 강제 기동", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: 우측 출입문 열림", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: 출입문 강제 닫힘", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: 자동 스위치 (고전압)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: 차량 제어 활성화", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "제어 회로 전압", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: 출입문 제어 스위치 (출입문 닫힘)", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: 좌측 출입문 열림", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "제동관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "주 공기관 차단 밸브", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "공압 제어기 비활성" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/kr_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/kr_spawner.lua deleted file mode 100644 index db526c2..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/kr_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "kr", - "Name": "Korean", - - "Spawner.Title": "열차 스포너", - "Spawner.Trains1": "현재 열차 수", - "Spawner.Trains2": "최대 량수", - "Spawner.WagNum": "차량 량수", - "Spawner.AutoCouple": "객차 간 자동 연결", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "도색", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "객실 내장재", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "운전대 재질", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "안내방송", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "라이터", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "ARS 패널 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "기본(사각형 램프)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "기본(원형 램프)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "키예프(Kiev)/SPB", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "구형 ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "제동변 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "전면부 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 범퍼 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 범퍼 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "복고풍(Retro)", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "LED 전조등", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "BPSN 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "높은 톤의 구형 사운드", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "중간 톤의 구형 사운드", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "기본(SPB)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "기본(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "기본", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "키예프(Kiev)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "구형", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "기본 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "기본 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "소리 없음(BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "주간 제어기 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "종류 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "종류 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "종류 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "새로운 주간 제어기 모델", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "SPB 경적", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "부저 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "구형 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "낮은 톤의 기본 부저 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "높은 톤의 기본 부저 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "간헐적으로 낮은 톤의 기본 부저 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "간헐적으로 높은 톤의 기본 부저 소리", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "주 공기관 압력", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "배터리", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "모든 차량의 차단기를 활성화 함", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "차단기의 상태를 무작위로 함", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "좌측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "우측 출입문 열림", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "고전압 스위치", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "주차 제동", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "외부 출입문 확인등 배열", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "수평", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "수직", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "MVM 마크", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "객실 손잡이 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "구형", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "신형", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "좌석 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "구형", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "신형", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "객실 조명 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "종류 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "종류 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "종류 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "운전석 배전반 우측 배치", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "차내 광고 종류", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "종류 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "종류 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "종류 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "광고 없음", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "도색", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "객실 내장재", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "운전대 재질", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "안내 방송", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "노선도 종류", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "역방향 노선도", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "주 공기관 압력", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "배터리", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "고전압 스위치", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "운전석 배전반의 차단기 상태를 무작위로 함", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "모든 차량의 차단기를 활성화 함", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "모든 차량의 차단기를 비활성화 함(기지 입고 상태)", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "모든 차량의 차단기 상태를 무작위로 함", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "좌측 출입문 열림", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "우측 출입문 열림", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "도색", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "객실 내장재", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "운전대 재질", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "안내방송", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "노선도 종류", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "역방향 노선도", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "주 공기관 압력", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "배터리", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "모든 차량의 차단기를 활성화 함", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "차단기의 상태를 무작위로 함", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "좌측 출입문 열림", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "우측 출입문 열림", - - "Spawner.Close": "닫기", - "Spawner.Spawn": "완료" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/mypatch.patch b/lua/metrostroi_data/languages_/_unfinished/mypatch.patch deleted file mode 100644 index 03552e2..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/mypatch.patch +++ /dev/null @@ -1,527 +0,0 @@ -diff --git a/lua/metrostroi_data/languages/en_base.lua b/lua/metrostroi_data/languages/en_base.lua -index 831a705..8874874 100644 ---- a/lua/metrostroi_data/languages/en_base.lua -+++ b/lua/metrostroi_data/languages/en_base.lua -@@ -7,6 +7,12 @@ return [[ - "Panel.DrawDebugInfo": "Draw debugging info", - "Panel.DisableCamAccel": "Disable cam acceleration", - "Panel.DisableHoverText": "Disable hover text", -+ "Panel.DrawCams": "Render cameras", -+ "Panel.FOV": "Field of view", -+ -+ "Train.Common.Camera0": "Driver seat", -+ -+ "Train.Buttons.Sealed": "Sealed", - - "Entities.gmod_subway_base.Name": "Subway base", - "Entities.gmod_subway_81-703.Name": "E", -diff --git a/lua/metrostroi_data/languages/en_buttons_720.lua b/lua/metrostroi_data/languages/en_buttons_720.lua -index 73e5e54..efd4b8a 100644 ---- a/lua/metrostroi_data/languages/en_buttons_720.lua -+++ b/lua/metrostroi_data/languages/en_buttons_720.lua -@@ -215,6 +215,22 @@ - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", -- "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve" -+ "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", -+ -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button UP", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button DOWN", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button UP", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button DOWN", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLARX": "IGLA: RX", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", -+ "Entities.gmod_subway_81-720.Buttons.PUU.KAHkToggle": "KAH button cover", -+ "Entities.gmod_subway_81-720.Buttons.PUU.ALSkToggle": "ALS button cover", -+ "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet": "Acceleration rate(Slope mode)" - } - ]] -diff --git a/lua/metrostroi_data/languages/ru_base.lua b/lua/metrostroi_data/languages/ru_base.lua -index 72cc4c3..1cf405f 100644 ---- a/lua/metrostroi_data/languages/ru_base.lua -+++ b/lua/metrostroi_data/languages/ru_base.lua -@@ -7,6 +7,12 @@ return [[ - "Panel.DrawDebugInfo": "Отображать отладочную информацию", - "Panel.DisableCamAccel": "Откл. симуляцию качания головы", - "Panel.DisableHoverText": "Откл. всплывающий текст", -+ "Panel.DrawCams": "Отрисовывать камеры", -+ "Panel.FOV": "Поле зрения", -+ -+ "Train.Common.Camera0": "Место машиниста", -+ -+ "Train.Buttons.Sealed": "Запломбировано", - - "Entities.gmod_subway_base.Name": "База метропоездов", - "Entities.gmod_subway_81-703.Name": "E", -@@ -48,6 +54,41 @@ return [[ - "Entities.gmod_track_powermeter.Name": "Измеритель напряжения", - "Entities.gmod_track_controller.Name": "Диспечерский пульт(не работает)", - "Entities.gmod_track_udochka.Name": "Удочка", -- "Entities.gmod_train_spawner.Name": "Спавнер поездов" -+ "Entities.gmod_train_spawner.Name": "Спавнер поездов", -+ -+ "Train.703.VU": "Выключатель управления", -+ "Train.703.Breakers1" : "Батареи", -+ "Train.703.Breakers2" : "Автоматы", -+ "Train.703.RCARS" : "РЦ-АРС", -+ "Train.703.Left" : "Панель помощника", -+ "Train.703.Parking" : "УАВА и ручной тормоз", -+ "Train.703.ASNP" : "АСНП", -+ "Train.703.IGLA" : "ИГЛА", -+ "Train.717.Breakers1": "Центральные автоматы", -+ "Train.717.VB1": "Панель с РЦ", -+ "Train.717.Breakers2": "Правые автоматы", -+ "Train.717.VB2": "Нижняя панель с РЦ", -+ "Train.717.UAVA": "УАВА", -+ "Train.717.Pneumo": "Пневматические краны", -+ "Train.717.Helpers": "Пульт помощника", -+ "Train.717.Block4": "4 блок", -+ "Train.717.IGLA": "ИГЛА", -+ "Train.717.ASNP" : "АСНП", -+ "Train.720.CameraCond": "Панель кондиционеров", -+ "Train.720.CameraPPZ": "Панель поездной защиты", -+ "Train.720.CameraPV": "Панель вспомогательных кнопок", -+ "Train.720.CameraASNP": "АСНП", -+ "Train.720.CameraVityaz": "САУ Витязь", -+ "Train.720.CameraKRMH": "Кран КРМШ", -+ "Train.720.CameraPVZ": "Панель вагонной защиты", -+ "Train.722.Breakers": "Автоматы поездной защиты", -+ "Train.722.PU2_1": "Панель кнопок", -+ "Train.722.PU2_2": "Панель выключателей", -+ "Train.722.Vityaz": "Экран САУ Витязь", -+ "Train.722.SARMAT": "Экран БМЦИК Сармат", -+ "Train.722.CabLights": "Панель освещения кабины", -+ "Train.722.Route": "Установка номера маршрута", -+ "Train.722.Disconnects": "Концевые краны", -+ "Train.722.KRMH": "Выключатель КРМШ и РВТБ" - } - ]] -diff --git a/lua/metrostroi_data/languages/ru_buttons_717.lua b/lua/metrostroi_data/languages/ru_buttons_717.lua -index 81017b6..80c134f 100644 ---- a/lua/metrostroi_data/languages/ru_buttons_717.lua -+++ b/lua/metrostroi_data/languages/ru_buttons_717.lua -@@ -14,7 +14,7 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Клапан разобщения", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "УНЧ: Усилитель низких частот", -- "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ЗС: Звук в салоне", -+ "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ЭС: Контроль экстренной связи\nES: Emergency communication control", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Громкоговоритель", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Радиоинформатор (встроеный)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Программа 1", -@@ -45,7 +45,6 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Освещение кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Освещение пульта", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Дешифратор: Переключение режима приёмных катушек 1/5 или 2/6", -- "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Табличка \"ОТПУСТИ СТОЯНОЧНЫЙ ТОРМОЗ\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", -@@ -66,25 +65,6 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Station name", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Индикатор скорости\nSpeed indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности\nLSN: Failure indicator light (power circuits failed to assemble)", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "ЛхРК: Лампа хода реостатного контроллера\nLhRK: Rheostat controller motion light", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "ЛКТ: Контроль тормоза\nLKT: ARS braking indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей\nLKVD: ARS engine shutdown indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей\nLKVC: High voltage not available", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: Сигнал АРС остановки\n0: ARS stop signal", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "ЛСТ: Лампа сигнализации торможения\nLST: Brakes engaged", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "ЛВД: Лампа включения двигателей\nLVD: Engines engaged", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "ЛН: Лампа направления\nLN: Direction signal", -- "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "ЛРС: Лампа равенства скоростей\nLRS: Speed equality light (next segment speed limit equal or greater to current)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Давление в тормозных цилиндрах (ТЦ)\nBrake cylinder pressure", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)\nPressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "РЦ-1: Разъединитель цепей АРС", -@@ -150,12 +130,6 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Предыдущая надпись", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Следующая надпись", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Маршрут: Увеличить число 2", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Маршрут: Уменьшить число 2", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Маршрут: Увеличить число 1", -- "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Маршрут: Уменьшить число 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Выключатель фар", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "ВУС: Выключатель усиленого света ходовых фар", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "ВАХ: Включение аварийного хода (неисправность реле педали безопасности)", -@@ -215,24 +189,6 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 White lamp", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Индикатор скорости\nSpeed indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "ОЧ: Отсутствие частоты АРС\nNCh: No ARS frequency", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: Сигнал АРС остановки\n0: ARS stop signal", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "ЛРС: Лампа равенства скоростей\nLRS: Speed equality light (next segment speed limit equal or greater to current)", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "70: Ограничение скорости 70 км/ч\nSpeed limit 60 kph", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "РК: Лампа хода реостатного контроллера\nRK: Rheostat controller motion light", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "ЛКВД: Контроль выключения двигателей\nLKVD: ARS engine shutdown indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "ЛКТ: Контроль тормоза\nLKT: ARS braking indicator", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей\nLKVC: High voltage not available", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "ЛВД: Лампа включения двигателей\nLVD: Engines engaged", -- "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "ЛСТ: Лампа сигнализации торможения\nLST: Brakes engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Реверсор назад", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Реверсор вперёд", -@@ -292,6 +248,71 @@ return [[ - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Emergency control", -- "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Train wire 18" -+ "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Train wire 18", -+ -+ -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer1": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer2": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARSOch": "ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS0": "0: Сигнал АРС остановки\n0: ARS stop signal", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS40": "40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS60": "60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS70": "70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS80": "80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD1": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD2": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLVD": "1: Лампа включения двигателей", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLHRK": "2: Лампа хода реостатного контроллера", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLST": "6: Лампа сигнализации торможения", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLRD": "ДВ", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampRP": "РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности\nLSN: Failure indicator light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей\nLKVD: ARS engine shutdown indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKT": "ЛКТ: Контроль тормоза\nLKT: ARS braking indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampDV": "ДВ", -+ "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA23": "ИГЛА: Вторая и третья кнопка", -+ "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAFire": "ИГЛА: Пожар", -+ "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Неисправность", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer1": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer2": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARSOch": "ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS0": "0: Сигнал АРС остановки\n0: ARS stop signal", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS40": "40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS60": "60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS70": "70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS80": "80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD1": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD2": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLHRK": "ЛхРК: Лампа хода реостатного контроллера\nLhRK: Rheostat controller motion light", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampRP": "РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности\nLSN: Failure indicator light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLN": "ЛН: Лампа направления\nLN: Direction signal", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей\nLKVD: ARS engine shutdown indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKT": "ЛКТ: Контроль тормоза\nLKT: ARS braking indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей\nLKVC: High voltage not available", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLRS": "ЛРС: Лампа равенства скоростей\nLRS: Speed equality light (next segment speed limit equal or greater to current)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLVD": "ЛВД: Лампа включения двигателей\nLVD: Engines engaged", -+ "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLST": "ЛСТ: Лампа сигнализации торможения\nLST: Brakes engaged", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer1": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer2": "Индикатор скорости\nSpeed indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARSOch": "ОЧ: Отсутствие частоты АРС\nOCh: No ARS frequency", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS0": "0: Сигнал АРС остановки\n0: ARS stop signal", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS40": "40: Ограничение скорости 40 км/ч\nSpeed limit 40 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS60": "60: Ограничение скорости 60 км/ч\nSpeed limit 60 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS70": "70: Ограничение скорости 70 км/ч\nSpeed limit 70 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS80": "80: Ограничение скорости 80 км/ч\nSpeed limit 80 kph", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD1": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD2": "ЛСД: Сигнализация дверей\nLSD: Door state light (doors are closed)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLVD": "ЛВД: Лампа включения двигателей", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLHRK": "2: Лампа хода реостатного контроллера", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLST": "6: Лампа сигнализации торможения", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampRP": "РП: Красная лампа реле перегрузки\nRP: Red overload relay light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности\nLSN: Failure indicator light (power circuits failed to assemble)", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей\nLKVD: ARS engine shutdown indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKT": "ЛКТ: Контроль тормоза\nLKT: ARS braking indicator", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLEKK": "ГЛЕБ: Лампа работы Глеба", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLN": "ЛН: Лампа направления\nLN: Direction signal", -+ "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLRS": "ЛРС: Лампа равенства скоростей\nLRS: Speed equality light (next segment speed limit equal or greater to current)" - } - ]] -diff --git a/lua/metrostroi_data/languages/ru_buttons_720.lua b/lua/metrostroi_data/languages/ru_buttons_720.lua -index 7cbe27d..b00c86a 100644 ---- a/lua/metrostroi_data/languages/ru_buttons_720.lua -+++ b/lua/metrostroi_data/languages/ru_buttons_720.lua -@@ -161,7 +161,6 @@ return [[ - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "Ускорение", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "Движение вперёд", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "Движение назад", -- "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateToggle": "Темп разгона", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "(резервный) Тормоз", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "(резервный) Отпуск", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "Тормоз резервный", -@@ -215,6 +214,22 @@ return [[ - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: Резерв", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: Резерв", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", -- "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали" -+ "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", -+ -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП(Сработка огнетушителей)", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ(Пожар)", -+ "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", -+ "Entities.gmod_subway_81-720.Buttons.PUU.KAHkToggle": "Крышка кнопки КАХ", -+ "Entities.gmod_subway_81-720.Buttons.PUU.ALSkToggle": "Крышка кнопки АЛС", -+ "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet": "Темп разгона(Режим подъём)" - } - ]] -diff --git a/lua/metrostroi_data/languages/ru_buttons_ezh3.lua b/lua/metrostroi_data/languages/ru_buttons_ezh3.lua -index 08c50f9..1078b41 100644 ---- a/lua/metrostroi_data/languages/ru_buttons_ezh3.lua -+++ b/lua/metrostroi_data/languages/ru_buttons_ezh3.lua -@@ -74,7 +74,6 @@ return [[ - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "КРП: Кнопка резервного пуска\nKRP: Emergency start button", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "ВПР: Включение поездной радиосвязи\nVPR: Radiostation enable", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Громкоговоритель\nLoudspeaker: Sound in cabin enable", -- "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "Радиоинформатор: Звук в салоне\nZS: Sound in wagons enable", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Незаведенный тумблер", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Незаведенный тумблер", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Индикатор работы программы информатора", -@@ -135,6 +134,21 @@ return [[ - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей\nVDL: Left doors open", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали\nTrain line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали\nBrake line disconnect valve", -- "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя" -+ "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", -+ -+ -+ "Entities.gmod_subway_ezh3.Buttons.Main.Custom1Toggle": "Незаведенный тумблер", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП(Сработка огнетушителей)", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ(Пожар)", -+ "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл" - } - ]] -diff --git a/lua/metrostroi_data/languages/ru_spawner.lua b/lua/metrostroi_data/languages/ru_spawner.lua -index 015d43c..08a7fa4 100644 ---- a/lua/metrostroi_data/languages/ru_spawner.lua -+++ b/lua/metrostroi_data/languages/ru_spawner.lua -@@ -7,7 +7,7 @@ return [[ - "Spawner.Trains1": "Поездов", - "Spawner.Trains2": "Максимально", - "Spawner.WagNum": "Вагонов", -- "Spawner.AutoCouple": "Автоматически сцепить\nвагоны","Entities.gmod_subway_em.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей\nVDL: Left doors open", -+ "Spawner.AutoCouple": "Автоматически сцепить вагоны", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Окраска салона", -@@ -41,10 +41,6 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Стандартный 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Стандартный 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Беззвучный(БПН-115)", -- "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Звук контроллера", -- "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Тип 1", -- "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Тип 2", -- "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Тип 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Новая модель ГРКВ", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Звук звонка", -@@ -53,13 +49,13 @@ return [[ - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Стандартный с высоким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Стандартный прерывистый с низким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Стандартный прерывистый с высоким тоном", -- "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Давление напорной\nмагистрали", -+ "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Вкл. все автоматики", -- "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Автоматики будут\nвключены случайно", -+ "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Открыть правые двери", -- "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Вкл. главный\nвыключатель", -+ "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Вкл. главный выключатель", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Вкл. стояночный тормоз", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Тип бортовых ламп", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Горизнонтальные", -@@ -87,14 +83,14 @@ return [[ - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Наддверные схемы", -- "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Инвертировать\nнаддверные схемы", -- "Entities.gmod_subway_81-720.Spawner.NM.Name": "Давление напорной\nмагистрали", -+ "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Инвертировать наддверные схемы", -+ "Entities.gmod_subway_81-720.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Вкл. БРУ(ГВ)", -- "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Автоматики на ПВЗ бу-\nдут включены случайно", -- "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Вкл. все\nпоездные автоматики", -- "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Выкл. автоматики\nкак в депо", -- "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Автоматики на ППЗ бу-\nдут включены случайно", -+ "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Автоматики на ПВЗ бу- дут включены случайно", -+ "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Вкл. все поездные автоматики", -+ "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Выкл. автоматики как в депо", -+ "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Автоматики на ППЗ бу- дут включены случайно", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Открыть правые двери", - -@@ -103,14 +99,127 @@ return [[ - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Наддверные схемы", -- "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Инвертировать\nнаддверные схемы", -- "Entities.gmod_subway_81-722.Spawner.NM.Name": "Давление напорной\nмагистрали", -+ "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Инвертировать наддверные схемы", -+ "Entities.gmod_subway_81-722.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Вкл. все автоматики", -- "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Автоматики будут\nвключены случайно", -+ "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Открыть правые двери", - -+ -+ "Entities.gmod_subway_ezh.Spawner.Texture.Name": "Окраска кузова", -+ "Entities.gmod_subway_ezh.Spawner.PassTexture.Name": "Окраска салона", -+ "Entities.gmod_subway_ezh.Spawner.CabTexture.Name": "Окраска кабины", -+ "Entities.gmod_subway_ezh.Spawner.Announcer.Name": "Информатор", -+ "Entities.gmod_subway_ezh.Spawner.HornType.Name": "Питерский тифон", -+ "Entities.gmod_subway_ezh.Spawner.NM.Name": "Давление напорной магистрали", -+ "Entities.gmod_subway_ezh.Spawner.Battery.Name": "Вкл. батарею", -+ "Entities.gmod_subway_ezh.Spawner.AV8B.Name": "Вкл. АВ8Б", -+ "Entities.gmod_subway_ezh.Spawner.DoorsL.Name": "Открыть левые двери", -+ "Entities.gmod_subway_ezh.Spawner.DoorsR.Name": "Открыть правые двери", -+ "Entities.gmod_subway_ezh.Spawner.GV.Name": "Вкл. главный выключатель", -+ -+ "Entities.gmod_subway_em508.Spawner.Texture.Name": "Окраска кузова", -+ "Entities.gmod_subway_em508.Spawner.PassTexture.Name": "Окраска салона", -+ "Entities.gmod_subway_em508.Spawner.CabTexture.Name": "Окраска кабины", -+ "Entities.gmod_subway_em508.Spawner.Announcer.Name": "Информатор", -+ "Entities.gmod_subway_em508.Spawner.HornType.Name": "Питерский тифон", -+ "Entities.gmod_subway_em508.Spawner.NM.Name": "Давление напорной магистрали", -+ "Entities.gmod_subway_em508.Spawner.Battery.Name": "Вкл. батарею", -+ "Entities.gmod_subway_em508.Spawner.AV8B.Name": "Вкл. АВ8Б", -+ "Entities.gmod_subway_em508.Spawner.DoorsL.Name": "Открыть левые двери", -+ "Entities.gmod_subway_em508.Spawner.DoorsR.Name": "Открыть правые двери", -+ "Entities.gmod_subway_em508.Spawner.GV.Name": "Вкл. главный выключатель", -+ -+ "Entities.gmod_subway_ezh3.Spawner.Texture.Name": "Окраска кузова", -+ "Entities.gmod_subway_ezh3.Spawner.PassTexture.Name": "Окраска салона", -+ "Entities.gmod_subway_ezh3.Spawner.CabTexture.Name": "Окраска кабины", -+ "Entities.gmod_subway_ezh3.Spawner.Announcer.Name": "Информатор", -+ "Entities.gmod_subway_ezh3.Spawner.HornType.Name": "Питерский тифон", -+ "Entities.gmod_subway_ezh3.Spawner.NM.Name": "Давление напорной магистрали", -+ "Entities.gmod_subway_ezh3.Spawner.Battery.Name": "Вкл. батарею", -+ "Entities.gmod_subway_ezh3.Spawner.AV8B.Name": "Вкл. АВ8Б", -+ "Entities.gmod_subway_ezh3.Spawner.DoorsL.Name": "Открыть левые двери", -+ "Entities.gmod_subway_ezh3.Spawner.DoorsR.Name": "Открыть правые двери", -+ "Entities.gmod_subway_ezh3.Spawner.GV.Name": "Вкл. главный выключатель", -+ -+ "Entities.gmod_subway_81-717_lvz.Spawner.Texture.Name": "Окраска кузова", -+ "Entities.gmod_subway_81-717_lvz.Spawner.PassTexture.Name": "Окраска салона", -+ "Entities.gmod_subway_81-717_lvz.Spawner.CabTexture.Name": "Окраска кабины", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Announcer.Name": "Информатор", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Lighter.Name": "Присутствие зажигалки", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Cran.Name": "Тип крана", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Cran.1": "334", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Cran.2": "013", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.Name": "Тип маски", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.1": "1-4-1", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.2": "Spawner.717.MaskType.4L", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.3": "2-2", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.4": "2-2-2", -+ "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.5": "1-3-1", -+ "Entities.gmod_subway_81-717_lvz.Spawner.LED.Name": "Светодиодные фары", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.Name": "Тип БПСН", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.1": "Старый звук с высоким тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.2": "Старый звук с средним тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.3": "Стандартный(из СПБ)", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.4": "Стандартный(ТКЛ)", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.5": "Стандартный", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.6": "Киевский", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.7": "Старый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.8": "Стандартный 2", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.9": "Стандартный 3", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.10": "Беззвучный(БПН-115)", -+ "Entities.gmod_subway_81-717_lvz.Spawner.NewKV.Name": "Новая модель ГРКВ", -+ "Entities.gmod_subway_81-717_lvz.Spawner.HornType.Name": "Питерский тифон", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.Name": "Звук звонка", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.1": "Старый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.2": "Стандартный с низким тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.3": "Стандартный с высоким тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.4": "Стандартный прерывистый с низким тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.RingType.5": "Стандартный прерывистый с высоким тоном", -+ "Entities.gmod_subway_81-717_lvz.Spawner.NM.Name": "Давление напорной магистрали", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Battery.Name": "Вкл. батарею", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Switches.Name": "Вкл. все автоматики", -+ "Entities.gmod_subway_81-717_lvz.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", -+ "Entities.gmod_subway_81-717_lvz.Spawner.DoorsL.Name": "Открыть левые двери", -+ "Entities.gmod_subway_81-717_lvz.Spawner.DoorsR.Name": "Открыть правые двери", -+ "Entities.gmod_subway_81-717_lvz.Spawner.GV.Name": "Вкл. главный выключатель", -+ "Entities.gmod_subway_81-717_lvz.Spawner.PB.Name": "Вкл. стояночный тормоз", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.Name": "Тип бортовых ламп", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.1": "Горизнонтальные", -+ "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.2": "Вертикальные", -+ "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.Name": "Тип поручней", -+ "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.1": "Старый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.2": "Новый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.Name": "Тип сидушек", -+ "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.1": "Старый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.2": "Новый", -+ "Entities.gmod_subway_81-717_lvz.Spawner.LampType.Name": "Тип ламп", -+ "Entities.gmod_subway_81-717_lvz.Spawner.LampType.1": "Тип 1", -+ "Entities.gmod_subway_81-717_lvz.Spawner.LampType.2": "Тип 2", -+ "Entities.gmod_subway_81-717_lvz.Spawner.LampType.3": "Тип 3", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Breakers.Name": "Автоматики справа", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.Name": "Вид рекламы", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.1": "Тип 1", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.2": "Тип 2", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.3": "Тип 3", -+ "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.4": "Без реклам", -+ -+ "Entities.gmod_subway_81-703.Spawner.Texture.Name": "Окраска кузова", -+ "Entities.gmod_subway_81-703.Spawner.PassTexture.Name": "Окраска салона", -+ "Entities.gmod_subway_81-703.Spawner.CabTexture.Name": "Окраска кабины", -+ "Entities.gmod_subway_81-703.Spawner.Announcer.Name": "Информатор", -+ "Entities.gmod_subway_81-703.Spawner.HornType.Name": "Питерский тифон", -+ "Entities.gmod_subway_81-703.Spawner.NM.Name": "Давление напорной магистрали", -+ "Entities.gmod_subway_81-703.Spawner.Battery.Name": "Вкл. батарею", -+ "Entities.gmod_subway_81-703.Spawner.AV8B.Name": "Вкл. АВ8Б", -+ "Entities.gmod_subway_81-703.Spawner.DoorsL.Name": "Открыть левые двери", -+ "Entities.gmod_subway_81-703.Spawner.DoorsR.Name": "Открыть правые двери", -+ "Entities.gmod_subway_81-703.Spawner.GV.Name": "Вкл. главный выключатель", -+ -+ -+ - "Spawner.Close": "Закрыть", - "Spawner.Spawn": "Готово" - } diff --git a/lua/metrostroi_data/languages_/_unfinished/nl_base.lua b/lua/metrostroi_data/languages_/_unfinished/nl_base.lua deleted file mode 100644 index 2711005..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/nl_base.lua +++ /dev/null @@ -1,52 +0,0 @@ -return [[ -{ - "Lang": "nl", - "Name": "Nederlands", - "Panel.Admin": "Admin", - "Panel.Client": "Client", - "Panel.DrawDebugInfo": "Activeer debug hints", - "Panel.DisableCamAccel": "Deactiveer camera acceleratie", - "Panel.DisableHoverText": "Deactiveer zwevende labels", - - "Entities.gmod_subway_base.Name": "Metrotrein basis", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (tussenrijtuig)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (werkt niet)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (werkt niet)", - "Entities.gmod_subway_81-720.Name": "81-720 (stuurstandrijtuig)", - "Entities.gmod_subway_81-721.Name": "81-721 (tussenrijtuig)", - "Entities.gmod_subway_81-722.Name": "81-722 (stuurstandrijtuig)", - "Entities.gmod_subway_81-723.Name": "81-723 (tussenrijtuig motor)", - "Entities.gmod_subway_81-724.Name": "81-724 (tussenrijtuig)", - "Entities.gmod_subway_e.Name": "E (old)", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508 (stuurstandrijtuig)", - "Entities.gmod_subway_em508_int.Name": "Em-508 (tussenrijtuig)", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508T", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "AI trein", - - "Entities.gmod_train_bogey.Name": "Trein draaistel", - "Entities.gmod_train_couple.Name": "Koppeling", - - "Entities.gmod_track_pui.Name": "PUI klok", - "Entities.gmod_track_mus_elektronika7.Name": "Elektronische klok", - "Entities.gmod_mus_clock_analog.Name": "Analoge klok", - "Entities.gmod_track_clock_time.Name": "Grote interval klok(tijd)", - "Entities.gmod_track_clock_small.Name": "Kleine interval klok", - "Entities.gmod_track_clock_interval.Name": "Grote interval klok(interval)", - "Entities.gmod_track_switch.Name": "Wissel bestuurder", - "Entities.gmod_track_powermeter.Name": "Energie meter", - "Entities.gmod_track_udochka.Name": "Hoog-voltage verbindingsstuk", - "Entities.gmod_train_spawner.Name": "Trein spawner" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/nl_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/nl_buttons_717.lua deleted file mode 100644 index 52ab14c..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/nl_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "nl", - "Name": "Nederlands", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Open deuren aan linkerkant", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Programma 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Programma 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: Koppel ARS circuits los", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Batterij inschakelen/uitschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Snelheidsbegrenzing", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Ruitenwisser", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Bestuurdershendel verbindingsklep", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Remleiding verbindingsklep", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Versterker lage frequentie", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: Luidsprekers in de wagon inschakelen/uitschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Loudspeaker: Luidspreker in cabine inschakelen/uitschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Radioinformator: Omroeper (ingebouwd)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Programma 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Programma 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Attentieknop", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Pneumatische klep #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Open deuren aan linkerkant", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL knop afdekklepje", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Open deuren aan linkerkant", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL knop afdekklepje", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Selecteer zijde waar deuren opengaan", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: Noodknop deuren dicht", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Radioapparatuur inschakelen/uitschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Reset overbelastingsrelais", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Groene overbelastingsrelais lamp (voorkomt teveel stroom in de motoren)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatische besturingsdeactivatie actief", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Hoog-voltage omvormer besturing", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Brandgevaar (rijweerstanden oververhit)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Bescherming omvormer", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Storingsindicatie knop ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Bel", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automatische snelheidsregulatie", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Automatische locomotief signalering", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Schakel automatische besturingsdeactivatie relais uit (Storing AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(placeholder) Schakelaar noodrem", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Wagonverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Cabineverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Paneelverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Decoder: ALS frequentie schakelaar 1/5 of 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Bord \"DEACTIVEER PARKEERREM\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Parkeerrem", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Treinleiding verbindingsklep", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: Knop één", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Knop twee", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Knop drie", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Knop vier", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Voltage besturingscircuits", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Schakel compressor in", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Trein krachtvoeding", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Compressor noodactivatie", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS voltage check", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Snelheidsindicator", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Storingsindicatie lamp (krachtcircuits konden niet worden samengevoegd)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: Rode overbelastingsrelais lamp (krachtcircuits konden niet worden samengevoegd)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Indicatielicht rijweerstandmechanisme in beweging ", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS rem indicatielicht", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: ARS motordeactivatie indicatielicht", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Hoog-voltage niet beschikbaar", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: Geen ARS frequentie", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: ARS stopteken", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Snelheidslimiet 40 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Snelheidslimiet 60 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Snelheidslimiet 70 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Snelheidslimiet 80 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Lamp deurstatus (deuren zijn dicht)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Lamp deurstatus (deuren zijn dicht)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Remmen geactiveerd", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Motoren geactiveerd", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Richtingssignaal", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Gelijke snelheid lamp (volgende snelheidslimiet gelijk of groter dan huidige)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Druk in remcilinders", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Druk in pneumatische leidingen (rood: remleiding, zwart: treinleiding)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: Koppel ARS circuits los", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Snelheidsbegrenzing", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Batterij inschakelen/uitschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: Omhoog", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: Omlaag", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Inschakelen", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Achterdeur", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Totale ampéragemeter (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Besturing signaaldraad 6", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Besturing signaaldraad 10AS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Besturing signaaldraad 10AK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Verbind besturingscircuits met batterij", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Schakel krachtvoeding en verlichting in (trein)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Deurbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Compressormotor besturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS signaaldraad 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS Rem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Treinbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Cabineverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Schakel krachtvoeding en verlichting in (wagon)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Schakel krachtvoeding en verlichting uit", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Compressor noodactivatie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Signaaldraad 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Cabineverwarming", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Reset overbelastingsrelais", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Radio communicatie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Radio uitzending", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 Omroeper", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Pneumatische klep #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Gas/rem besturing, signaaldraad 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Handmatige elektrische rem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Activeer compressor", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Rijweerstand schakelaarmotor voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Noodbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Trein noodbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Krachtcircuits schakelmotor voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Interieurverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Noodverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Opladen batterij", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Open deuren aan rechterkant", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Open deuren aan linkerkant", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Deuren dicht", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Deur waarschuwing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Nood deuren dicht", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Rode lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Rode lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Witte lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Witte lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "HV schakelaar", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Noodrem", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Bord: Vorige", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Bord: Volgende", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Route: Verhoog 2de cijfer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Route: Verlaag 2de cijfer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Route: Verhoog 1ste cijfer", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Route: Verlaag 1ste cijfer", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Koplampen aan/uit", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Koplampen helder/gedimd", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Noodbesturing (storing RPB relais)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Nood deuren dicht (storing KD relais)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Noodstart knop", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "Noodbesturing knop", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH afdekklepje", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Cabineverwarming actief", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Deuren aan rechterkant open", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP afdekklepje", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Luchtrem besturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Besturing signaaldraad 6", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Besturing signaaldraad 10AS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Besturing signaaldraad 10AK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Verbind besturingscircuits met batterij", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Schakel krachtvoeding en verlichting in (trein)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Deurbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Besturing compressor", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS signaaldraad 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS rem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Treinbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Cabineverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Schakel krachtvoeding en verlichting in (wagon)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Schakel krachtvoeding en verlichting uit", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Compressor noodactivatie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Signaaldraad 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Cabineverwarming", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Reset overbelastingsrelais", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Radio communicatie", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Radio uitzending", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 Tussenwagon", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Pneumatische klep #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Gas/rem besturing, signaaldraad 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Handmatige elektrische rem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Activeer compressor", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Rijweerstand schakelmotor voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Noodbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Trein noodbesturing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Krachtcircuits schakelmotor voeding", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Interieurverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Noodverlichting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Opladen batterij", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Open deuren aan rechterkant", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Open deuren aan linkerkant", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Deuren dicht", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Deur waarschuwing", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Nood deuren dicht", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Rode lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Rode lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Witte lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Witte lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Snelheidsindicator", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Lamp deurstatus (Deuren zijn dicht)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: Geen ARS frequentie", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: ARS stopteken", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Gelijke snelheid indicatielamp (volgende snelheidslimiet gelijk of groter dan huidige)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Snelheidslimiet 40 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Snelheidslimiet 60 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Snelheidslimiet 70 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Snelheidslimiet 80 km/u", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Indicatielicht rijweerstandmechanisme in beweging", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: ARS motordeactivatie indicatielicht", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: ARS rem indicatielicht", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: Rode overbelastingsrelais lamp (krachtcircuits konden niet worden samengevoegd)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Hoog-voltage niet beschikbaar", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Motoren geactiveerd", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Remmen geactiveerd", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Cabinedeur", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Rijrichting achteruit", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Rijrichting vooruit", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universele Automatische Autostop Deactiveerder (deactiveer autostop)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: Universele Automatische Autostop Deactiveerder (reset contacten)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV verbindingsklep", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Toon uitleg voor besturing van de trein (engelstalig)", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parkeerrem", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Deactiveer luchtdrukverdeler", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "HV schakelaar", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Achterdeur", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Interieurverlichting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Verbind besturingscircuits met batterij", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Besturing compressor", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Rijweerstand schakelmotor voeding", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Krachtcircuits schakelmotor voeding", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Parkeerrem", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Deactiveer luchtdrukverdeler", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Voordeur", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Batterij inschakelen/uitschakelen", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Besturing signaaldraad 10AK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Schakel krachtvoeding en verlichting in (trein)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Opladen batterij", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC voeding", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Deur waarschuwing", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Open deuren aan rechterkant", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Open deuren aan linkerkant", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Deuren dicht", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Nood deuren dicht", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Schakel krachtvoeding en verlichting in (wagon)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Schakel krachtvoeding en verlichting uit", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Noodstart knop", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Reset overbelastingsrelais", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Compressor noodactivatie", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Schakel compressor in", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Trein krachtvoeding", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Reset overbelastingsrelais", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Pneumatische klep #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Gas/rem besturing, signaaldraad 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Handmatige elektrische rem", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Activeer compressor", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Compressor noodactivatie", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Noodbesturing", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Signaaldraad 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/nl_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/nl_buttons_ezh3.lua deleted file mode 100644 index dfae31c..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/nl_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang": "nl", - "Name": "Nederlands", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Noodrem", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Achterdeur", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Remleiding verbindingsklep", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Treinleiding verbindingsklep", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: Batterij inschakelen/uitschakelen (laag voltage)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Omroeper: Menu", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Omroeper: Omhoog", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Omroeper: Omlaag", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Omroeper: Schakel in", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Cabinedeur", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Voordeur", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "HV Schakelaar", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NCh: Geen ARS frequentie", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: ARS stopteken", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "Snelheidslimiet 40 km/u", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "Snelheidslimiet 60 km/u", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "Snelheidslimiet 70 km/u", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "Snelheidslimiet 80 km/u", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Snelheidsindicator (km/u)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Totale motor ampérage (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Totale voltage (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Batterijvoltage treinbesturing (V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Luchtdruk in remcilinders", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Luchtdruk in pneumatische leidingen (rood: remleiding, zwart: treinleiding)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "Schakel compressor in", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: Deactiveer autodrive", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: Start", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: Reset", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lamp: Rem/Gas", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lamp: Werkstatus SAMM", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamp: SAMM uitvoerings eenheid ingeschakeld", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: Activeer autodrive", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: Uitvoerings eenheid", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: Inhalen", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: Toestemming", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: Storingsindicatie knop", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Programma 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Programma 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Switch: Dimlicht/Grootlicht", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Switch: Verlichting meters", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Switch: Noodbesturing", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: Schakel interieurverlichting in", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: Schakel interieurverlichting uit", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: Deuren statuscontrole", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: Reset ARS rem", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB: Attentieknop", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lamp: Indicatielicht rijweerstandmechanisme in beweging", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: Automatische snelheidsregulatie", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: Versterker lage frequentie", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Radioinformator: Omroeper (ingebouwd)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: Automatische locomotief signalering", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: Reset overbelastingsrelais", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Bel", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Switch: Cabineverlichting", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: Nood deuren dicht", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: Open deuren aan rechterkant", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: Open deuren aan linkerkant", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: Noodbesturing knop", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Compressor noodactivatie", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: Noodstart knop", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: Radioapparatuur inschakelen/uitschakelen", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Loudspeaker: Luidspreker in cabine inschakelen/uitschakelen", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle": "ZS: Luidsprekers in de wagon inschakelen/uitschakelen", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Ongebruikte schakelaar", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Ongebruikte schakelaar", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Omroeper in gebruik", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: Cabineverlichting", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: Noodverlichting (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: Cabineverwarming (3kW)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: Automatische schakelaar (Hoog voltage)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: ARS stroomonderbreker", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universele Automatische Autostop Deactiveerder (deactiveer autostop)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet": "UAVA: UAVA: Universele Automatische Autostop Deactiveerder (reset contacten)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: Treinbesturing", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: Open deuren aan linkerkant", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "EPK verbindingsklep", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: Treinbesturing", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkeerrem", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Parkeerrem", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Deactiveer luchtdrukverdeler", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Noodrem", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: Batterij inschakelen/uitschakelen (laag voltage)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "HV schakelaar", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Treinleiding isolatieklep", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Remleiding isolatieklep", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Passagiersdeur", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "HV zekeringenkast", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "Kast met apparatuur voor opladen batterij en verspreiding van luchtdruk voor deuren", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "Verwarming", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Voordeur", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: Cabineverlichting", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: Noodverlichting (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: Cabineverwarming (3kW)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Parkeerrem", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Parkeerrem", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Cabinedeur", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Passagiersdeur", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: Rode overbelastingsrelais lamp (krachtcircuits konden niet worden samengevoegd)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: Groene overbelastingsrelais lamp (voorkomt teveel stroom in de motoren)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Blauwe lamp deurstatus (deuren zijn dicht)", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Switch: Open deuren aan linkerkant", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Switch: Deuren statuscontrole", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Switch: Reset overbelastingsrelais", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Switch: Storingsindicatie schakelaar", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Switch: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Switch: Schakel compressor in", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: Schakel interieurverlichting in", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: Schakel interieurverlichting uit", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Switch: Compressor noodactivatie", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: Open deuren rechterkant", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: Nood deuren dicht", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: Automatische schakelaar (Hoog voltage)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: Treinbesturing", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Voltage besturingscircuits", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: Deuren open of dicht(doet alle deuren dicht)", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: Open deuren aan linkerkant", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Remleiding verbindingsklep", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Remleiding verbindingsklep", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Deactiveer luchtdrukverdeler" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/nl_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/nl_spawner.lua deleted file mode 100644 index 6e0aa50..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/nl_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "nl", - "Name": "Nederlands", - - "Spawner.Title": "Trein spawner", - "Spawner.Trains1": "Trein", - "Spawner.Trains2": "Maximum voor jou", - "Spawner.WagNum": "Aantal wagons", - "Spawner.AutoCouple": "Koppel wagons automatisch", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Kleurstelling", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Interieur", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Cabine interieur", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Omroeper", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Aansteker", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "Model ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Standaard(vierkante lampen)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Standard(ronde lampen)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kiev/SPB", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Oude ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Remhendel type", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Voorkant", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 bumper 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 bumper 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Retro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "LED", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "BPSN type", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Oud hoge toon", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Oud medium toon", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Standaard(SPB)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Standaard(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Standaard", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kiev", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Oud", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Standaard 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Standaard 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Geen geluid(BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Controller geluid", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Nieuw controller model", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "SPB toeter", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Bel geluid", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Oud", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Standaard met lage toon", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Standaard met hoge toon", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Standaard onderbroken met lage toon", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Standaard onderbroken met hoge toon", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Treinleiding", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Batterij", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Stoppen ingeschakeld", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Willekeurige stoppen", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Open deuren linkerkant", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Open deuren rechterkant", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Hoog-voltage schakelaar", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Parkeerrem", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Type signaallampen", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Horizontaal", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Verticaal", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "MVM teken", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Handvaten model", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Oud", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Nieuw", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Stoel model", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Oud", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Nieuw", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Verlichting type", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Stoppen rechterkant", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Advertenties type", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Geen advertenties", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Kleurstelling", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Interieur", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Cabine interieur", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Omroeper", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Dienstregeling", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Keer dienstregeling om", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Treinleiding", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Batterij", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Hoog-voltage schakelaar", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Willekeurige stoppen (trein)", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Activeer alle stoppen", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Deactiveer stoppen als in depot", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Willekeurige stoppen (wagon)", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Open deuren linkerkant", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Open deuren rechterkant", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Kleurstelling", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Interieur", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Cabin interieur", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Omroeper", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Dienstregeling", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Keer dienstregeling om", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Treinleiding", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Batterij", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Activeer alle stoppen", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Willekeurige stoppen", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Open deuren linkerkant", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Open deuren rechterkant", - - "Spawner.Close": "Sluiten", - "Spawner.Spawn": "Klaar" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/pl_base.lua b/lua/metrostroi_data/languages_/_unfinished/pl_base.lua deleted file mode 100644 index 1e39669..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/pl_base.lua +++ /dev/null @@ -1,52 +0,0 @@ -return [[ -{ - "Lang": "pl", - "Name": "polski", - "Panel.Admin": "Admin", - "Panel.Client": "Klient", - "Panel.DrawDebugInfo": "Rysuj debuginfo", - "Panel.DisableCamAccel": "Wyłącz ruch kamery przy przyspieszeniu", - "Panel.DisableHoverText": "Wyłącz tekst pod kursorem", - - "Entities.gmod_subway_base.Name": "Baza pociągu", - "Entities.gmod_subway_81-703.Name": "81-703 (końcowy)", - "Entities.gmod_subway_81-703_2.Name": "81-703 (środkowy)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717 (MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717 (LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714 (MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714 (LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (nie działa)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (nie działa)", - "Entities.gmod_subway_81-720.Name": "81-720 (końcowy)", - "Entities.gmod_subway_81-721.Name": "81-721 (środkowy)", - "Entities.gmod_subway_81-722.Name": "81-722 (końcowy)", - "Entities.gmod_subway_81-723.Name": "81-723 (środkowy toczny)", - "Entities.gmod_subway_81-724.Name": "81-724 (środkowy napędowy)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh (ARS-MP)", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 (środkowy)", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508t", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "Pociąg SI", - - "Entities.gmod_train_bogey.Name": "Wózek szynowy", - "Entities.gmod_train_couple.Name": "Sprzęg", - - "Entities.gmod_track_pui.Name": "Zegar PUI", - "Entities.gmod_track_mus_elektronika7.Name": "Zegar \"Electronica\"", - "Entities.gmod_mus_clock_analog.Name": "Zegar analogowy", - "Entities.gmod_track_clock_time.Name": "Duży zegar interwałowy (czas)", - "Entities.gmod_track_clock_small.Name": "Mały zegar interwałowy", - "Entities.gmod_track_clock_interval.Name": "Duży zegar interwałowy (interwał)", - "Entities.gmod_track_switch.Name": "Rozjazd", - "Entities.gmod_track_powermeter.Name": "Kilowatomierz", - "Entities.gmod_track_udochka.Name": "Łącznik WN (udochka)", - "Entities.gmod_train_spawner.Name": "Spawner pociągów" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_717.lua b/lua/metrostroi_data/languages_/_unfinished/pl_buttons_717.lua deleted file mode 100644 index a82e7ae..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_717.lua +++ /dev/null @@ -1,297 +0,0 @@ -return [[ -{ - "Lang": "pl", - "Name": "polski", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Sterowanie drzwiami (zamykanie)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Zapowiedź 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Zapowiedź 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: Odłączenie obwodów ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Baterie akumulatorów", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Urządzenie ograniczenia prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Wycieraczka", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Zawór odłączający", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Zawór dwudrożny przewodu zasilającego", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Wzmacniacz niskich częstotliwości", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ZS: Nagłośnienie klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Głośnik (dźwięk w kabinie)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Zapowiedzi głosowe (wbudowane)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Zapowiedź 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Zapowiedź 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Czuwak (przycisk)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Zawór pneumatyczny #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Przełącznik sterowania drzwiami (zamykanie)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "Klapka przycisku KDL", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "Klapka przycisku KDL", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Wybór strony otwierania drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "RZD: Awaryjne zamykanie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Załączanie radiostacji", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Odblokowanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Zadziałanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatyczny wyłącznik sterowania", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: Przetwornica WN", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Kontrolka sygnalizacji pożaru", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Ochrona przetwornicy", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Sygnalizacja usterki", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Dzwonek", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automatyczna regulacja prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Automatyczna sygnalizacja pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Wyłączanie automatycznego odcinania sterowania (niesprawność AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(placeholder) Hamulec awaryjny", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Oświetlenie klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Oświetlenie kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Oświetlenie pulpitu", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Dekoder: Przełącznik trybu ALS (1/5 lub 2/6)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ParkingBrakeSignToggle": "Tabliczka \"ZWOLNIJ HAMULEC POSTOJOWY\"", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Hamulec postojowy", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Zawór dwudrożny przewodu zasilającego", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: Przycisk pierwszy", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Przycisk drugi", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Przycisk trzeci", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Przycisk czwarty", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Zasilanie obwodu sterowania", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Włączanie sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Zasilanie systemów pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Awaryjne załączenie sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: Sprawdzenie stabilizowanego napięcia ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!Speedometer": "Wskaźnik prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSN": "LSN: Kontrolka sygnalizacji niesprawności", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampRP": "RP: Kontrolka przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLHRK": "LhRK: Ruch reostatu", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKT": "LKT: ARS -- hamowanie", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVD": "LKVD: ARS -- wyłączenie silników", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLKVC": "LKVC: Kontrolka stycznika WN", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARSOch": "OCh: Brak częstotliwości ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS0": "0: Sygnał ARS zatrzymania", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS40": "Ograniczenie prędkości do 40 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS60": "Ograniczenie prędkości do 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS70": "Ograniczenie prędkości do 70 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!ARS80": "Ograniczenie prędkości do 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD1": "LSD: Sygnalizacja drzwi (drzwi zamknięte)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLSD2": "LSD: Sygnalizacja drzwi (drzwi zamknięte)", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLST": "LST: Kontrolka sygnalizacji hamowania", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLVD": "LVD: Kontrolka działania silników", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLN": "LN: Kontrolka kierunku", - "Entities.gmod_subway_81-717_mvm.Buttons.ARS.!LampLRS": "LRS: Kontrolka równości ograniczeń prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Ciśnienie w cylindach hamulcowych", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Ciśnienie w zbiorniku (czarna) i przewodzie głównym (czerwona)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: Odłączenie obwodów ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Urządzenie ograniczenia prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Bateria akumulatorów", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: W górę", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: W dół", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Włączenie", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Przednie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "Woltomierz WN [kV]", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Amperomierz [A]", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Sterowanie przewodem 6", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Sterowanie przewodem 10AS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Sterowanie przewodem 10AK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Włączenie akumulatorów baterii", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Włączenie DIP (komplementarnej jednostki zasilania) i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Sterowanie drzwiami", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Sterowanie sprężarką", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 Zasilanie stycznika obwodów WN", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 Zasilanie 12 V systemu ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 Przewód ARS 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 Zasilanie 75 V systemu ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 Hamowanie ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Sterowanie pociągiem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Oświetlenie kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS (jednostka prędkościomierza)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Włączenie DIP i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Wyłączenie DIP i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Awaryjne załączanie sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Przewód 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Ogrzewanie kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Odblokowywanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Łączność radiowa", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Nadawanie radiowe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 ASNP: Automatyczny czytnik numeru pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Zawory pneumatyczne #1 i #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Sterowanie jazdą i hamowaniem, przewód 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Ręczne hamowanie elektrodynamiczne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Zasilanie stycznika sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Zasilanie silnika reostatu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Sterowanie awaryjne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Awaryjne sterowanie pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Zasilanie silnika przełącznika kułakowego", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Oświetlenie klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Oświetlenie awaryjne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Ładowanie baterii", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Otwieranie prawych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Otwieranie lewych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Zamykanie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Dzwonek drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Awaryjne zamykanie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Reflektor czerwony", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Reflektor czerwony", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Reflektory białe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Reflektory białe", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Drzwi do klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "Wyłącznik główny", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Hamulec awaryjny", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.PrevSign": "Następna tablica", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.NextSign": "Poprzednia tablica", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2P": "Linia: Zwiększ drugą cyfrę", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num2M": "Linia: Zmniejsz drugą cyfrę", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1P": "Linia: Zwiększ pierwszą cyfrę", - "Entities.gmod_subway_81-717_mvm.Buttons.InfoTableSelect.Num1M": "Linia: Zmniejsz pierwszą cyfrę", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Wyłącznik świateł", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Przyciemnianie świateł jezdnych", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Jazda awaryjna (uszkodzenie przekaźnika czuwaka)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Awaryjne zamykanie drzwi (uszkodzony przekaźnik sterowania drzwiami)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Rozruch rezerwowy", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "KAH: Jazda awaryjna", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "Klapka przycisku KAH", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Kontrola ogrzewania", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Otwieranie prawych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "Klapka przycisku KDP", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Kontrola hamulca pneumatycznego", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Sterowanie przewodem 6", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Sterowanie przewodem 10AS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Sterowanie przewodem 10AK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Włączenie akumulatorów baterii", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Włączenie DIP (komplementarnej jednostki zasilania) i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Sterowanie drzwiami", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Sterowanie sprężarką", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 Zasilanie stycznika obwodów WN", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 Zasilanie 12 V systemu ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 Przewód ARS 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 Zasilanie 75 V systemu ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 Hamowanie ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Sterowanie pociągiem", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Oświetlenie kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 Włączenie IGLA/BIS (jednotki prędkościomierza)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Włączenie DIP i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Wyłączenie DIP i oświetlenia", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Awaryjne załączanie sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Przewód 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Ogrzewanie kabiny", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Odblokowywanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Łączność radiowa", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Nadawanie radiowe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 ASNP: Automatyczny czytnik numeru pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Zawory pneumatyczne #1 i #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Sterowanie jazdą i hamowaniem, przewód 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Ręczne hamowanie elektrodynamiczne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Zasilanie stycznika sprężarki", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Zasilanie silnika reostatu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Sterowanie awaryjne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Awaryjne sterowanie pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Zasilanie silnika przełącznika kułakowego", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Oświetlenie klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Oświetlenie awatyjne", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Ładowanie baterii", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Otwieranie prawych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Otwieranie lewych drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Zamykanie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Dzwonek drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Awaryjne zamykanie drzwi", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Reflektor czerwony", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Reflektor czerwony", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Reflektory białe", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Reflektory białe", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!Speedometer": "Wskaźnik prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LSD": "LSD: Sygnalizacja drzwi (drzwi zamknięte)", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LOCh": "NCh: Brak częstotliwości ARS", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L0": "0: Sygnał ARS zatrzymania", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRS": "LRS: Kontrolka równości prędkości", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L40": "Ograniczenie prędkości do 40 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L60": "Ograniczenie prędkości do 60 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L80": "Ograniczenie prędkości do 70 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!L70": "Ograniczenie prędkości do 80 km/h", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRK": "RK: Ruch reostatu", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LEKK": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LPU": "", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVD": "LKVD: ARS -- wyłączenie silników", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKT": "LKT: ARS -- hamowanie", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LRP": "RP: Kontrolka przekaźnika nadmiarowego", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LKVC": "LKVC: Brak zasilania WN", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LVD": "LVD: Silniki załączone", - "Entities.gmod_subway_81-717_mvm.Buttons.OldARS.!LST": "LST: Sygnalizacja hamowania", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Drzwi do klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Nawrotnik -- w tył", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Nawrotnik -- naprzód", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Drzi do klasy", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: (wyłączenie autostopu)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAContactSet": "UAVA: (odblokowanie przekaźników)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV: zawór elektropneumatyczny", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Pomoc w prowadzeniu pociągu", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Hamulec postojowy", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Blokada dystrybutora powietrza", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "Wyłącznik główny", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Przednie drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Zawór dwudrożny przewodu głównego", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Zawór dwudrożny przewodu zasilającego", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Oświetlenie klasy", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Włączenie akumulatorów baterii", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 Włączenie IGLA/BIS (jednostki prędkościomierza)", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Sterowanie sprężarką", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Zasilanie silnika reostatu", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Zasilanie silnika przełącznika kułakowego", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Hamulec postojowy", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Blokada dystrybutora powietrza", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Przednie drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Baterie akumulatorów", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Sterowanie przewodem 10AK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Włączenie DIP (komplementarnej jednostki zasilania) i oświetlenia", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Ładowanie baterii", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 Zasilanie stycznika obwodów WN", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Dzwonek drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Otwieranie prawych drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Otwieranie lewych drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Zamykanie drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Awaryjne zamykanie drzwi", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Włączenie DIP i oświetlenia", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Wyłączenie DIP i oświetlenia", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Rozruch awaryjny", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Oblokowanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Awaryjne załączanie sprężarki", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Włączanie sprężarki", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Zasilanie systemów pociągu", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Odblokowanie przekaźnika nadmiarowego", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ASNP: Automatyczny czytnik numeru pociągu", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Zawory pneumatyczne #1 i #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Sterowanie jazdą i hamowaniem, przewód 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Ręczne hamowanie elektrodynamiczne", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Zasilanie stycznika sprężarki", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Awaryjne załączanie sprężarki", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle" : "A39 Sterowanie awaryjne", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle" : "A14 Przewód 18" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_720.lua b/lua/metrostroi_data/languages_/_unfinished/pl_buttons_720.lua deleted file mode 100644 index d42173b..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_720.lua +++ /dev/null @@ -1,220 +0,0 @@ -return [[ -{ - "Lang" : "pl", - "Name" : "Polish", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set" : "Vityaz: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set" : "Vityaz: Następny ekran", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set" : "Vityaz: Poprzedni ekran", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set" : "Vityaz: Tryb zasadniczy", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set" : "Vityaz: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set" : "Vityaz: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set" : "Vityaz: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set" : "Vityaz: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set" : "Vityaz: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set" : "Vityaz: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set" : "Vityaz: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set" : "Vityaz: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set" : "Vityaz: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set" : "Vityaz: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set" : "Vityaz: Usuń", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set" : "Vityaz: W górę\\Prędkość", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set" : "Vityaz: W dół\\Prądy", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set" : "Vityaz: Wprowadzanie\\Wyposażenie wagonów", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set" : "Vityaz: Wybór\\Sterowanie wyposażeniem wagonów", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set" : "X-1 rezerwowy", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set" : "X-2 rezerwowy", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet" : "Awaryjne zamykanie drzwi", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle" : "Drzwi awaryjne", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-" : "Tryb pracy wentylatora: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+" : "Tryb pracy wentylatora: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+" : "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-" : "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-" : "Moc wentylatora: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+" : "Moc wentylatora: -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle" : "SF1: Zasilanie obwodów sterowania wagonu", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle" : "SF2: Zasilanie BUV (jednostki sterowania wagonu)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle" : "SF3: Zasilanie BUTP (jednostki sterowania silnikami)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle" : "SF4: Sterowanie BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle" : "SF5: Awaryjne sterowanie BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle" : "SF6: Zasilanie BUTP", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle" : "SF7: BBE (zasilanie pokładowe)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle" : "SF8: Sterowanie BV (przekaźnik nadmiarowy)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle" : "SF9: Zasilanie BV (przekaźnik nadmiarowy)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle" : "SF10: PPO (ochrona przeciwpożarowa)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle" : "SF11: Sprężarka", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle" : "SF12: Zamknięcie drzwi", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle" : "SF13: Otwarcie drzwi lewych", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle" : "SF14: Otwarcie drzwi prawych", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle" : "SF15: Przednie drzwi", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle" : "SF16: Zapowiedzi głosowe", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle" : "SF17: Radiowa linia awaryjna", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle" : "SF18: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle" : "SF19: Zasilanie oświetlenia klasy", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle" : "SF20: Awaryjne oświetlenie klasy", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle" : "SF21: Czujnik prędkości", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle" : "SF22: Hamulec postojowy", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle" : "SF23: Sterowanie wentylatorami: pierwsza grupa", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle" : "SF24: Sterowanie wentylatorami: druga grupa", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle" : "SF25: Zasilanie wentylatorów: pierwsza grupa", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle" : "SF26: Zasilanie wentylatorów: druga grupa", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle" : "SF27: Zasilanie wzbudnicy", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle" : "SF28: Zasilanie ZKK", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle" : "SF29: Odbieraki prądu", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle" : "SF30: Tablice świetlne", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle" : "SF31: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle" : "SF32: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle" : "SF33: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet" : "ASNP: Menu", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet" : "ASNP: W górę", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet" : "ASNP: W dół", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle" : "ASNP: Włączenie", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder" : "Cylinder hamulcowy", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle" : "SF1: Zasilanie ogólne", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle" : "SF2: Sterowanie zasadnicze", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle" : "SF3: Sterowanie rezerwowe", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle" : "SF4: BARS (blok ARS)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle" : "SF5: BUP (jednostka sterowania pociągiem)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle" : "SF6: BKCU (jednostka komutacji sieci sterowania)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle" : "SF7: BARS (blok ARS)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle" : "SF8: Zapowiedzi głosowe", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle" : "SF9: Radiostacja", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle" : "SF10: Orientacja wagonu", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle" : "SF11: Zwrot jazdy", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle" : "SF12: Reflektory grupy pierwszej", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle" : "SF13: Reflektory grupy drugiej", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle" : "SF14: Światła obrysowe", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle" : "SF15: Oświetlenie kabiny", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle" : "SF16: Ogrzewanie", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle" : "SF17: Klimatyzacja kabiny", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle" : "SF18: Smarowanie obrzeży kół", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle" : "SF19: Zasilanie główne KRM (kranu hamulca)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle" : "SF20: Zasilanie rezerwowe KRM (kranu hamulca)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle" : "SF21: Otwieranie drzwi", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle" : "SF22: Zamykanie drzwi", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle" : "KRMSh (driver disconnect valve)", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV" : "Woltomierz WN [kV]", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3" : "Prąd pierwszej grupy silników [A]", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4" : "2nd engine group current [A]", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle" : "Wyłącznik główny", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle" : "Zawór przedogu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor" : "Drzwi tylne", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor" : "Drzwi tylne", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle" : "Odłączenie pierwszej grupy odbieraków", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle" : "Odłączenie drugiej grupy odbieraków", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle" : "Pierwsza grupa wentylacji", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle" : "Druga grupa wentylacji", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle" : "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle" : "Oświetlenie klasy", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle" : "Oświetlenie kabiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle" : "Reflektory grupy pierwszej", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle" : "Reflektory grupy drugiej", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle" : "Hamulec postojowy", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle" : "Drzwi przednie", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle" : "Turning on emergency BBE", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle" : "BBE (zasilanie pokładowe)", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle" : "Sprężarka", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle" : "Moc oświetlenia kabiny", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle" : "Oświetlenie urządzeń wagonu", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle" : "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-" : "Blokada uszkodzonych bloków ARS: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+" : "Blokada uszkodzonych bloków ARS: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle" : "Wyłącznik baterii", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle" : "Dekoder ALS", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery" : "Woltomierz baterii akumulatorów", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight" : "Drzwi do kabiny", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft" : "Drzwi do kabiny", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle" : "Wybór lewych drzwi", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle" : "Wybór prawych drzwi", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle" : "Blokada drzwi", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp" : "Praca przycisku lewych drzwi", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet" : "Drzwi lewe", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed" : "Drzwi są zamknięte", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle" : "Postój", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle" : "Tablica ledowa", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle" : "KAH", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle" : "ALS", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle" : "Wyjazd z zajezdni", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage" : "Sieć trakcyjna", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle" : "Tablica nad drzwiami", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet" : "Sprężarka rezerwowa", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet" : "Włączenie ochrony", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet" : "Wyłączenie BV (przekaźnika nadmiarowego)", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet" : "Przekazanie sterowania (dzwonek)", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set" : "Zapowiedź 2", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle" : "Zapowiedzi głosowe", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle" : "Linia", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet" : "Radiowa sieć awaryjna", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set" : "Zapowiedź 1", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet" : "Rezerwowe odblokowanie BV", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle" : "Sterowanie rezerwowe", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle" : "Wycieraczka", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop" : "Prędkość dopuszczalna", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact" : "Prędkość rzeczywista", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred" : "Prędkość zalecana", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2" : "Prędkość dopuszczalna", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc" : "Przyspieszenie", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw" : "Jazda naprzód", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back" : "Jazda w tył", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateToggle" : "Przyspieszenie", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet" : "(rezerwowy) Hamulec", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet" : "(rezerwowy) Luzowanie", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle" : "Hamulec rezerwowy", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle" : "Hamulec awaryjny", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle" : "Zamknięcie drzwi", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet" : "Message perception", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet" : "Attention", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet" : "Czujnik hamowania", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet" : "Sygnał", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet" : "Drzwi prawe", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp" : "Praca przycisku prawych drzwi", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine" : "Czerwona - przewód gł., czarna - przewód zas.", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle" : "Wyłącznik główny", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor" : "Drzwi przednie", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor" : "Drzwi tylne", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle" : "Baterie akumulatorów", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle" : "SF1: Zasilanie obwodów sterowania wagonu", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle" : "SF2: Zasilanie BUV (wagon controlling unit)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle" : "SF3: Zasilanie BUTP (engines controlling unit)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle" : "SF4: Sterowanie BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle" : "SF5: Awaryjne sterowanie BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle" : "SF6: Zasilanie BUTP", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle" : "SF7: BBE (zasilanie pokładowe)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle" : "SF8: Sterowanie BV", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle" : "SF9: Zasilanie BV (przekaźnik nadmiarowy)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle" : "SF10: PPO (ochrona przeciwpożarowa)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle" : "SF11: Sprężarka", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle" : "SF12: Zamykanie drzwi", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle" : "SF13: Otwieranie lewych drzwi", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle" : "SF14: Otwieranie prawych drzwi", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle" : "SF15: Drzwi przednie", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle" : "SF16: Zapowiedzi głosowe", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle" : "SF17: Radiowa sieć awaryjna", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle" : "SF18: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle" : "SF19: Zasilanie oświetlenia klasy", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle" : "SF20: Awaryjne oświetlenie klasy", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle" : "SF21: Czujnik prędkości", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle" : "SF22: Hamulec postojowy", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle" : "SF23: Sterowanie wentylatorami: pierwsza grupa", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle" : "SF24: Sterowanie wentylatorami: druga grupa", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle" : "SF25: Zasilanie wentylatorów: pierwsza grupa", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle" : "SF26: Zasilanie wentylatorów: druga grupa", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle" : "SF27: Zasilanie wzbudnicy", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle" : "SF28: Zasilanie ZKK", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle" : "SF29: Odbieraki prądu", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle" : "SF30: Tablice świetlne", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle" : "SF31: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle" : "SF32: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle" : "SF33: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_ezh3.lua b/lua/metrostroi_data/languages_/_unfinished/pl_buttons_ezh3.lua deleted file mode 100644 index de1e591..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/pl_buttons_ezh3.lua +++ /dev/null @@ -1,140 +0,0 @@ -return [[ -{ - "Lang" : "pl", - "Name" : "polski", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle" : "Hamulec awaryjny", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor" : "Drzwi tylne", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle" : "Zawór dwudrożny przewodu głównego", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle" : "Zawór dwudrożny przewodu zasilającego", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle" : "AB: Włącznik akumulatorów baterii", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle" : "Zawór przewodu zasilającegosprzęgu powietrznego", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet" : "Informator: Menu", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet" : "Informator: W górę", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet" : "Informator: W dół", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle" : "Informator: Włączenie", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor" : "Drzwi do kabiny", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor" : "Drzwi przednie", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle" : "Wyłącznik główny", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH" : "ОЧ: Kontrolka braku sygnału ARS", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0" : "0: Kontrolka sygnału zatrzymania ARS", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40" : "40: Kontrolka ograniczenia prędkości do 40 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60" : "60: Kontrolka ograniczenia prędkości do 60 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70" : "70: Kontrolka ograniczenia prędkości do 70 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80" : "80: Kontrolka ograniczenia prędkości do 80 km/h", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer" : "Wskaźnik prędkości [km/h]", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter" : "Amperomierz WN [А]", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter" : "Woltomierz WN [kV]", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage" : "Napięcie akumulatorów baterii [V]", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder" : "Ciśnienie w cylindrach hamulcowych", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure" : "Ciśnienie w zbiorniku (czarna) i przewodzie głównym (czerwona)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle" : "VMK: Włączenie sprężarki", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set" : "САММ: Wyłączenie rozruchu", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set" : "САММ: Start", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set" : "САММ: Reset", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1" : "Kontrolka: Jazda-hamowanie", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2" : "Kontrolka: Działanie САММ", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3" : "Kontrolka: Włączona jednostka wykonawcza САММ", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle" : "САММ: Włączenie sytemu automatycznego prowadzenia składu", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle" : "САММ: Jednostka wykonawcza", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set" : "САММ: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set" : "САММ: Doganianie rozkładu", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set" : "САММ: Zezwolenie", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet" : "КСН: Sygnalizacja usterki", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set" : "Zapowiedź 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set" : "Zapowiedź 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle" : "Przyciemnianie świateł jezdnych", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle" : "Oświetlenie przyrządów", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle" : "Jazda awaryjna", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet" : "Włączanie oświetlenia", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet" : "Wyłączanie oświetlenia", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet" : "KSD: Sprawdzanie sygnalizacji drzwi", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet" : "КВТ: Kasowanie hamowania ARS", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet" : "КB: Czuwak (przycisk)", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp" : "LHRK: Ruch reostatu", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle" : "АRS: Automatyczna regulacja prędkości", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle" : "UNCh: Wzmacniacz niskich częstotliwości", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle" : "VUD: Włącznik sterowania drzwiami", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle" : "Zapowiedzi głosowe (wbudowane)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle" : "АLS: Automatyczna sygnalizacja pociągu", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet" : "KVRP: Odblokowanie przekaźnika nadmiarowego", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet" : "Dzwonek", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle" : "Oświetlenie kabiny", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet" : "KRZD: Awaryjne zamykanie drzwi", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet" : "KDP: Otwieranie prawych drzwi", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet" : "KDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet" : "KAH: Jazda awaryjna", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet" : "Awaryjne załączanie sprężarki", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet" : "KRP: Rozruch awaryjny", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle" : "VPR: Załączenie radiostacji", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle" : "Głośnik (dźwięk w kabinie)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_ZSToggle" : "ZS: Nagłośnienie klasy", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set" : "Nieużywany przełącznik", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set" : "Nieużywany przełącznik", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay" : "Odtwarzanie zapowiedzi", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle" : "VU3: Oświetlenie kabiny", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle" : "VU2: Awaryjne oświetlenie (45 V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle" : "VU1: Ogrzewanie kabiny (3 kW)\n", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle" : "АV-8B: Wyłącznik automatyczny WN", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle" : "RC_ARS: Odłączenie obwodów ARS", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle" : "UAVA: Wyłączenie autostopu", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAContactSet" : "UAVA: odblokowanie przekaźników", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle" : "VU: Wyłącznik sterowania", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet" : "VDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle" : "VUD2: Włącznik sterowania drzwiami", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle" : "EPV: Zawór elektropneumatyczny", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle" : "VU: Sterowanie pociągiem", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft" : "Powrót koła hamulca ręcznego", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight" : "Powrót koła hamulca ręcznego", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle" : "Blokada dystrybutora powietrza", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle" : "Hamulec awaryjny", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle" : "AB: Włącznik akumulatorów baterii (obwody wspomagające NN)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle" : "Wyłącznik główny", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle" : "Zawór przewodu zasilającego sprzęgu powietrznego", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle" : "Zawór przewodu głównego sprzęgu powietrznego", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor" : "Drzwi do klasy", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse" : "Blok bezpieczników WN", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays" : "Skrzynia aparatów ładowania baterii akumulatorów i dystrybucji powietrza do siłowników drzwi", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater" : "Farelka", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor" : "Drzwi przednie", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle" : "VU3: Oświetlenie kabiny\n", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle" : "VU2: Awaryjne oświetlenie (45 V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle" : "VU1: Ogrzewanie kabiny (3 kW)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft" : "Powrót koła hamulca ręcznego", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight" : "Powrót koła hamulca ręcznego", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1" : "Drzwi do kabiny", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor" : "Drzwi do klasy", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP" : "RP: Obwody mocy nie załączyły się", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP" : "RP: Zadziałanie przekaźnika nadmiarowego", - "Entities.gmod_subway_em508t.Buttons.Main.!SD" : "SD: Sygnalizacja drzwi", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet" : "Otwieranie lewych drzwi", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet" : "KSD: Sprawdzanie sygnalizacji drzwi", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet" : "VozvratRP: Odblokowanie przekaźnika nadmiarowego", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet" : "Sygnalizacja usterki", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle" : "Włącznik sterowania drzwiami", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle" : "Włącznik sprężarki", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet" : "KU4: Włączanie oświetlenia", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet" : "KU5: Wyłączanie oświetlenia", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet" : "Awaryjne załączanie sprężarki", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet" : "KDP: Otwieranie prawych drzwi", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet" : "KU10: Awaryjne zamykanie drzwi", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle" : "АV-8B: Wyłącznik automatyczny WN", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle" : "VU: Wyłącznik sterowania", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage" : "Napięcie obwodów sterowania", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle" : "VUD2: Włącznik sterowania drzwiami", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet" : "VDL: Otwieranie lewych drzwi", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle" : "Zawór dwudrożny przewodu głównego", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle" : "Zawór dwudrożny przewodu zasilającego", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle" : "Blokada dystrybutora powietrza" -} -]] diff --git a/lua/metrostroi_data/languages_/_unfinished/pl_spawner.lua b/lua/metrostroi_data/languages_/_unfinished/pl_spawner.lua deleted file mode 100644 index f39eda3..0000000 --- a/lua/metrostroi_data/languages_/_unfinished/pl_spawner.lua +++ /dev/null @@ -1,117 +0,0 @@ -return [[ -{ - "Lang": "pl", - "Name": "polski", - - "Spawner.Title": "Spawner ", - "Spawner.Trains1": "Składów", - "Spawner.Trains2": "Maks.", - "Spawner.WagNum": "Wagonów", - "Spawner.AutoCouple": "Połącz wagony", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Wygląd klasy", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Wygląd kabiny", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Dźwięk zapowiedzi", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Niezbędnik maszynisty", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "Typ panelu ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Standardowy (kwadratowe kontrolki)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Standardowy (okrągłe kontrolki)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kijowski/Petersburski", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Stary panel ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Rodzaj kranu hamulca", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Typ maski", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1, zderzak 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1, zderzak 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Retro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "Reflektory ledowe", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "Typ BPSN", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Stary dźwięk, ton wysoki", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Stary dźwięk, ton niski", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Standardowy (Petersburg)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Standardowy (TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Standardowy", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kijów", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Stary", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Standardowy 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Standardowy 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Bez dźwięku (BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.Name": "Dźwięk nastawnika jazdy", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.KVSnd.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Nowy model nastawnika", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "Syrena Petersburska", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Dźwięk dzwonka", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Stary", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Standardowa, ton niski", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Standardowa, ton wysoki", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Standardowy przerywany, ton niski", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Standardowy przerywany, ton wysoki", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Ciśnienie przewodu zasilającego", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Wł. baterie", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Wł. wszystkie bezpieczniki", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Losowe ust. bezpieczników", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Drzwi lewe otwarte", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Drzwi prawe otwarte", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Wł. wyłącznik główny", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Hamulec postojowy zaciągnięty", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Typ lamp bocznych", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Poziome", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Pionowe", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "Znak MVM", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Poręcze", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Stare", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Nowe", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Sedzenia", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Stare", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Nowe", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Lampy w klasie", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Bezpieczniki z prawej", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Reklamy", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Typ 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Typ 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Typ 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Bez reklam", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Wygląd klasy", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Wygląd kabiny", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Dźwięk zapowiedzi", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Schematy nad drzwiami", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Odwrócone schematy", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Ciśnienie przewodu zas.", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Wł. baterie", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Wł. wyłącznik główny", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Losowe ust. bezpieczników", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Wł. wszystkie bezpieczniki", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Wył. wszystkie bezpieczniki", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Losowe ust. bezpieczników wagonu", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Drzwi lewe otwarte", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Drzwi prawe otwarte", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Wygląd klasy", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Wygląd kabiny", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Dźwięk zapowiedzi", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Schematy nad drzwiami", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Odwrócone schematy", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Ciśnienie przewodu zas.", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Wł. baterie", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Wł. wszystkie bezpieczniki", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Losowe ust. bezpieczników", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Drzwi lewe otwarte", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Drzwi prawe otwarte", - - "Spawner.Close": "Zamknij", - "Spawner.Spawn": "Gotowe" -} -]] diff --git a/lua/metrostroi_data/languages_/en_base.lua b/lua/metrostroi_data/languages_/en_base.lua deleted file mode 100644 index b83b2b6..0000000 --- a/lua/metrostroi_data/languages_/en_base.lua +++ /dev/null @@ -1,94 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - "Panel.Admin": "Admin", - "Panel.Client": "Client", - "Panel.DrawDebugInfo": "Draw debugging info", - "Panel.DisableCamAccel": "Disable cam acceleration", - "Panel.DisableHoverText": "Disable hover text", - "Panel.DrawCams": "Render cameras", - "Panel.FOV": "Field of view", - - "Train.Common.Camera0": "Driver seat", - - "Train.Buttons.Sealed": "Sealed", - - "Entities.gmod_subway_base.Name": "Subway base", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (intermediate)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(MVM)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(LVZ)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(MVM)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(LVZ)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (doesn't work)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (doesn't work)", - "Entities.gmod_subway_81-720.Name": "81-720 (head)", - "Entities.gmod_subway_81-721.Name": "81-721 (intermediate)", - "Entities.gmod_subway_81-722.Name": "81-722 (head)", - "Entities.gmod_subway_81-723.Name": "81-723 (intermediate motor)", - "Entities.gmod_subway_81-724.Name": "81-724 (intermediate trailer)", - "Entities.gmod_subway_e.Name": "E", - "Entities.gmod_subway_em.Name": "Em", - "Entities.gmod_subway_ema.Name": "Ema", - "Entities.gmod_subway_ezh.Name": "Ezh", - "Entities.gmod_subway_ezh1.Name": "Ezh1", - "Entities.gmod_subway_em508.Name": "Em-508", - "Entities.gmod_subway_em508_int.Name": "Em-508 (intermediate)", - "Entities.gmod_subway_ezh3.Name": "Ezh3", - "Entities.gmod_subway_ezh3ru1.Name": "Ezh3 RU1", - "Entities.gmod_subway_ema508t.Name": "Em-508t", - "Entities.gmod_subway_tatra_t3.Name": "Tatra T3", - "Entities.gmod_subway_ai.Name": "AI train", - - "Entities.gmod_train_bogey.Name": "Train bogey", - "Entities.gmod_train_couple.Name": "Couple", - - "Entities.gmod_track_pui.Name": "PUI clock", - "Entities.gmod_track_mus_elektronika7.Name": "Electronika clock", - "Entities.gmod_mus_clock_analog.Name": "Analog clock", - "Entities.gmod_track_clock_time.Name": "Big interval clock(time)", - "Entities.gmod_track_clock_small.Name": "Small interval clock", - "Entities.gmod_track_clock_interval.Name": "Big interval clock(interval)", - "Entities.gmod_track_switch.Name": "Track switch", - "Entities.gmod_track_powermeter.Name": "Power meter", - "Entities.gmod_track_controller.Name": "Track controller", - "Entities.gmod_track_udochka.Name": "Electric connector", - "Entities.gmod_train_spawner.Name": "Train spawner", - - "Train.703.VU": "Train-control", - "Train.703.Breakers1" : "Batteries", - "Train.703.Breakers2" : "Circuit breakers", - "Train.703.RCARS" : "RC-ARS", - "Train.703.Left" : "Helper panel", - "Train.703.Parking" : "UAVA and parking brake", - "Train.703.ASNP" : "ASNP", - "Train.703.IGLA" : "IGLA", - "Train.717.Breakers1": "Middle side circuit breakers", - "Train.717.VB1": "Panel with RC", - "Train.717.Breakers2": "Right side circuit breakers", - "Train.717.VB2": "Bottom panel with RC", - "Train.717.UAVA": "UAVA", - "Train.717.Pneumo": "Pneumatic valves", - "Train.717.Helpers": "Helper panel", - "Train.717.Block4": "4th block", - "Train.717.IGLA": "IGLA", - "Train.717.ASNP" : "ASNP", - "Train.720.CameraCond": "Conditioners panel", - "Train.720.CameraPPZ": "Train protection panel", - "Train.720.CameraPV": "Auxiliary buttons panel", - "Train.720.CameraASNP": "ASNP", - "Train.720.CameraVityaz": "SAU Vityaz", - "Train.720.CameraKRMH": "KRMSH valve", - "Train.720.CameraPVZ": "Wagon protection panel", - "Train.722.Breakers": "Train protection circuit breakers", - "Train.722.PU2_1": "Buttons panel", - "Train.722.PU2_2": "Disablers panel", - "Train.722.Vityaz": "SAU Vityaz-SP screen", - "Train.722.SARMAT": "BM CIK SARMAT screen", - "Train.722.CabLights": "Cabin ligting panel", - "Train.722.Route": "Setting route number", - "Train.722.Disconnects": "Isolation valves", - "Train.722.KRMH": "KRMSH & RVTB disabler" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_703.lua b/lua/metrostroi_data/languages_/en_buttons_703.lua deleted file mode 100644 index dcd84c9..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_703.lua +++ /dev/null @@ -1,142 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - - "Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program1Set": "Program 1", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program2Set": "Program 2", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.VDLSet": "VDL: Open left doors", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_81-703.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_81-703.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle": "RST: Radiostation", - "Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-703.Buttons.Back2.!HVFuses": "HV fuses block", - "Entities.gmod_subway_81-703.Buttons.Back2.!DVR": "The box with the door pressure diffuser", - "Entities.gmod_subway_81-703.Buttons.Main.RK": "Lamp: Rheostat controller is spinning", - "Entities.gmod_subway_81-703.Buttons.Main.GreenRP": "Lamp: Green overload relay light (overload relay open on current train)", - "Entities.gmod_subway_81-703.Buttons.Main.RedRP": "Lamp: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-703.Buttons.Main.Blue": "Lamp: Door state light (doors are closed)", - "Entities.gmod_subway_81-703.Buttons.Main.DIPonSet": "Swithcer: Turn interior lights on", - "Entities.gmod_subway_81-703.Buttons.Main.DIPoffSet": "Swithcer: Turn interior lights off (ring)", - "Entities.gmod_subway_81-703.Buttons.Main.VozvratRPSet": "KU: Reset overload relay", - "Entities.gmod_subway_81-703.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_81-703.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_81-703.Buttons.Main.KSDSet": "KSD: Door state control(Door check)", - "Entities.gmod_subway_81-703.Buttons.Main.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_81-703.Buttons.Main.KDLSet": "KDL: Open left doors", - "Entities.gmod_subway_81-703.Buttons.Main.KU1Toggle": "MK: Turn motor-compressor on", - "Entities.gmod_subway_81-703.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_81-703.Buttons.Main.KRPSet": "KRP: Emergency start", - "Entities.gmod_subway_81-703.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_81-703.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_81-703.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_81-703.Buttons.AVMain.AV8BToggle": "Circuit braker (High voltage auxiliary circuits)", - "Entities.gmod_subway_81-703.Buttons.Lamp.L_3Toggle": "Lamp: Gauges lighting", - "Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-703.Buttons.VU.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_81-703.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-703.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_81-703.Buttons.PneumaticPanels.!CylinderPressure": "Brake manometer: Brake cylinder pressure", - "Entities.gmod_subway_81-703.Buttons.Battery.VBToggle": "VB: Battery on/off (Low voltage circuits)", - "Entities.gmod_subway_81-703.Buttons.Battery.R_RadioToggle": "Announcer (+50V)", - "Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPMenuSet": "Announcer: Menu", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPUpSet": "Announcer: Up", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPDownSet": "Announcer: Down", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPOnToggle": "Announcer: Turn on", - "Entities.gmod_subway_81-703.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_81-703.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-703.Buttons.KRR.KRRToggle": "KRR: Button of enabling reversers", - "Entities.gmod_subway_81-703.Buttons.VU4.VUSToggle": "Switcher: Near Headlights/Far Headlights", - "Entities.gmod_subway_81-703.Buttons.CabinDoor.CabinDoor1": "Cabin door", - "Entities.gmod_subway_81-703.Buttons.Tsepi.!BatteryVoltage": "Control circuits voltage", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button up", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button down", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button up", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button down", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLARX": "IGLA: RX", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", - "Entities.gmod_subway_81-703.Buttons.Back1.R_UNchToggle": "UNCh: Low frequency amplifier (passenger announcer sound)", - "Entities.gmod_subway_81-703.Buttons.Back1.IGLAToggle": "ASOTP: IGLA", - "Entities.gmod_subway_81-703.Buttons.Back1.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake wheel", - "Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake wheel", - "Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-703.Buttons.Speedometer.!Speedometer": "Speedometer", - "Entities.gmod_subway_81-703.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - - - "Entities.gmod_subway_81-703_2.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.R_Program1Set": "Program 1", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.R_Program2Set": "Program 2", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VDLSet": "VDL: Open left doors", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VUD2LToggle": "VUD2 lock", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_81-703_2.Buttons.PneumaticPanels.!CylinderPressure": "Brake manometer: Brake cylinder pressure", - "Entities.gmod_subway_81-703_2.Buttons.Battery.VBToggle": "VB: Battery on/off (Low voltage circuits)", - "Entities.gmod_subway_81-703_2.Buttons.Battery.R_RadioToggle": "Announcer (+50V)", - "Entities.gmod_subway_81-703_2.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_81-703_2.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_81-703_2.Buttons.AV2.RSTToggle": "RST: Radiostation", - "Entities.gmod_subway_81-703_2.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-703_2.Buttons.VU4.VUSToggle": "Switcher: Near Headlights/Far Headlights", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_81-703_2.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_81-703_2.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_81-703_2.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - "Entities.gmod_subway_81-703_2.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_81-703_2.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-703_2.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-703_2.Buttons.Tsepi.!BatteryVoltage": "Battery voltage", - "Entities.gmod_subway_81-703_2.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-703_2.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-703_2.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake wheel", - "Entities.gmod_subway_81-703_2.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake wheel", - "Entities.gmod_subway_81-703_2.Buttons.Back2.!HVFuses": "HV fuses block", - "Entities.gmod_subway_81-703_2.Buttons.Back2.!DVR": "The box with the door pressure diffuser", - "Entities.gmod_subway_81-703_2.Buttons.Main.RK": "Lamp: Rheostat controller is spinning", - "Entities.gmod_subway_81-703_2.Buttons.Main.GreenRP": "Lamp: Green overload relay light (overload relay open on current train)", - "Entities.gmod_subway_81-703_2.Buttons.Main.RedRP": "Lamp: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-703_2.Buttons.Main.Blue": "Lamp: Door state light (doors are closed)", - "Entities.gmod_subway_81-703_2.Buttons.Main.DIPonSet": "Swithcer: Turn interior lights on", - "Entities.gmod_subway_81-703_2.Buttons.Main.DIPoffSet": "Swithcer: Turn interior lights off", - "Entities.gmod_subway_81-703_2.Buttons.Main.VozvratRPSet": "VRP: Reset overload relay", - "Entities.gmod_subway_81-703_2.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_81-703_2.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_81-703_2.Buttons.Main.KSDSet": "KSD: Door state control(Door check)", - "Entities.gmod_subway_81-703_2.Buttons.Main.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_81-703_2.Buttons.Main.KDLSet": "KDL: Open left", - "Entities.gmod_subway_81-703_2.Buttons.Main.KU1Toggle": "MK: Turn motor-compressor on", - "Entities.gmod_subway_81-703_2.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_81-703_2.Buttons.Main.KRPSet": "KRP: Emergency start", - "Entities.gmod_subway_81-703_2.Buttons.KRR.KRRToggle": "KRR: Button of enabling reversers", - "Entities.gmod_subway_81-703_2.Buttons.Back1.R_ZSToggle": "ZS: Switch loudspeaker amplification, the sound in the train", - "Entities.gmod_subway_81-703_2.Buttons.Back1.IGLAToggle": "ASOTP: IGLA", - "Entities.gmod_subway_81-703_2.Buttons.Back1.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-703_2.Buttons.CabinDoor.CabinDoor1": "Cabin door", - "Entities.gmod_subway_81-703_2.Buttons.Lamp.L_3Toggle": "Lamp: Gauges lighting", - "Entities.gmod_subway_81-703_2.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-703_2.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-703_2.Buttons.AVMain.AV8BToggle": "AV-8B: Circuit breaker (High voltage auxiliary circuits)", - "Entities.gmod_subway_81-703_2.Buttons.VU.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_81-703_2.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-703_2.Buttons.Speedometer.!Speedometer": "Speedometer", -"Entities.gmod_subway_81-703_2.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_717.lua b/lua/metrostroi_data/languages_/en_buttons_717.lua deleted file mode 100644 index e76c115..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_717.lua +++ /dev/null @@ -1,318 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "VDL: Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Program 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Program 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS circuits disconnect", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "RC-UOS: Speed Limitation Device", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Wiper", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Brake lever disconnect valve", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "UNCh: Low frequency amplifier", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ES: Emergency communication control", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Loudspeaker: Sound in cabin enable", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Radioinformator: Announcer (built-in)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Program 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Program 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "KB: Attention button", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "VZ1: Pneumatic valve #1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "KDL: Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "KDL button cover", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "KDL: Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "KDL button cover", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Select doors side", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "VPR: Radiostation enable", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Reset overload relay", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "RP: Green overload relay light (prevents overcurrent of engines)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "AVU: Automatic control disabler active", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "LKVP: High-voltage converter control", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "LSP: Fire emergency (rheostat overheat)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Converter protection", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Ring", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "ARS: Automatic speed regulation", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "ALS: Automatic locomotive signalling", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "Turn off automatic control disable relay (failure of AVU)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(placeholder) Emergency brake toggle", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Interior lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Cabin lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Gauges lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Decoder: ALS frequency switcher (down - 1/5, up - 2/6)", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "IGLA: Third button", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "IGLA: Fourth button", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Battery voltage", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Turn motor-compressor on", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "BPSN: Train power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS stabilized voltage check", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Brake cylinder pressure", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "RC-1: ARS circuits disconnect", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "RC-UOS: Speed Limitation Device", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "ASNP: Up", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "ASNP: Down", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Turn on", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Train wire 6 control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Train wire 10AS control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Headlights toggle", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "VUS: Head lights bright/dim", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "VAH: Emergency driving mode (failure of RPB relay)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "VAD: Emergency door close override (failure of KD relay)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "KRP: Emergency start button", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "KAH: Emergency drive button", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "KAH button cover", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Heater control", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "KDP button cover", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Pneumatic brake control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Train wire 6 control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Train wire 10AS control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Reverser back", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Reverser forward", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler (reset contacts)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "EPV disconnect valve", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Show help on driving the train", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "START: Emergency start button", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Reset overload relay", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Turn motor-compressor on", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "BPSN: Train power supply", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 Train wire 18", - - - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer1": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer2": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARSOch": "OCh: No ARS frequency", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD1": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD2": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLVD": "1: Engines engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLHRK": "2: Rheostat controller motion lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLST": "6: Brakes engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLRD": "DV", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSN": "LSN: Failure indicator light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKVD": "LKVD: ARS engine shutdown indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKT": "LKT: ARS braking indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampDV": "DV", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA23": "IGLA: Second and third buttons", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAFire": "IGLA: Fire", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer1": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer2": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARSOch": "OCh: No ARS frequency", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD1": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD2": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLHRK": "LhRK: Rheostat controller motion light", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSN": "LSN: Failure indicator light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLN": "LN: Direction signal", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVD": "LKVD: ARS engine shutdown indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKT": "LKT: ARS braking indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVC": "LKVC: High voltage not available", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLRS": "LRS: Speed equality light (next segment speed limit equal or greater to current)", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLVD": "LVD: Engines engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLST": "LST: Brakes engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer1": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer2": "Speed indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARSOch": "OCh: No ARS frequency", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD1": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD2": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLVD": "LVD: Engines engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLHRK": "LhRK: Rheostat controller motion light", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLST": "LST: Brakes engaged", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSN": "LSN: Failure indicator light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVD": "LKVD: ARS engine shutdown indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVC": "LKVC: High voltage not available", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKT": "LKT: ARS braking indicator", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLEKK": "GLEB: Gleb working lamp", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLN": "LN: Direction signal", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLRS": "LRS: Speed equality light (next segment speed limit equal or greater to current)" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_717_lvz.lua b/lua/metrostroi_data/languages_/en_buttons_717_lvz.lua deleted file mode 100644 index 63e078a..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_717_lvz.lua +++ /dev/null @@ -1,293 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - - "Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel.VDLSet": "VDL: Left doors open", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:RC1Toggle": "RC-1: ARS circuits disconnect", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:BPSToggle": "RC-BPS: Anti-rolling", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:BUDToggle": "BUD: Doors control unit", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:VRDToggle": "VRD: Allow movement(when 0 on ALS)", - "Entities.gmod_subway_81-717_lvz.Buttons.VRD1.VRDToggle": "VRD: Allow movement(when 0 on ALS)", - "Entities.gmod_subway_81-717_lvz.Buttons.Wiper.WiperToggle": "Wiper", - "Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_UNchToggle": "UNCh: Low frequency amplifier", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_ZSToggle": "ES: Emergency communication control", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_GToggle": "Loudspeaker: Sound in cabin enable", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_UPOToggle": "UPO: Announcer", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.2:KVTSet": "KB: Attention button", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VZ1Set": "VZ1: Pneumatic valve #1", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLSet": "KDL: Open left doors", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLKToggle": "KDL button cover", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLRSet": "KDL: Open left doors", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLRKToggle": "KDL button cover", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.DoorSelectToggle": "Select doors side", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VozvratRPSet": "Reset overload relay", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.GreenRPLight": "RP: Green overload relay light (overload relay open on current train)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.AVULight": "AVU: Automatic control disabler active", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.LKVPLight": "LKVP: High-voltage converter control", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.SPLight": "LSP: Fire emergency (rheostat overheat)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ConverterProtectionSet": "Converter protection", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.DIPoffSet": "Ring", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ARSToggle": "ARS: Automatic speed regulation", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ALSToggle": "ALS: Automatic locomotive signalling", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.TormATToggle": "(placeholder) Emergency brake toggle", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.OtklAVUToggle": "OtklAVU: Turn off automatic control disable relay (failure of AVU)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_1Toggle": "Interior lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_2Toggle": "Cabin lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_3Toggle": "Gauges lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA23": "IGLA: Second and third buttons", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA3Set": "IGLA: Third button", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA4Set": "IGLA: Fourth button", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.!IGLAFire": "IGLA: Fire", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A61Toggle": "A61 Train wire 6 control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A55Toggle": "A55 Train wire 10AS control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:VUToggle": "VU Train control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A5Toggle": "A5 Interim wagon", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_81-717_lvz.Buttons.PneumaticPanels.!CylinderPressure": "Brake cylinder pressure", - "Entities.gmod_subway_81-717_lvz.Buttons.PneumaticPanels.!LinePressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.BPSToggle": "RC-BPS: Anti-rolling", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.RC1Toggle": "RC-1: ARS circuits disconnect", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.BUDToggle": "BUD: Doors control unit", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!Speedometer1": "Speed indicator", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!Speedometer2": "Speed indicator", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSOch": "NCh: No ARS frequency", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSD1": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSD2": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLVD": "1: Engines engaged", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLHRK": "2: Rheostat controller motion lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLST": "6: Brakes engaged", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLRD": "LRD: Move permission(when 0 on ALS)", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSN": "LSN: Failure indicator light (power circuits failed to assemble)", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLKVD": "LKVD: ARS engine shutdown indicator", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLKT": "LKT: ARS braking indicator", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampDV": "DV: Rotational sensor", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!SpeedFact1": "Speed", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!SpeedFact2": "Speed", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL20": "NCh: No ARS frequency", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-717_lvz.Buttons.RearDoor.RearDoor": "Front door", - "Entities.gmod_subway_81-717_lvz.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-717_lvz.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_81-717_lvz.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A61Toggle": "Train wire 6 control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A55Toggle": "Train wire 10AS control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A54Toggle": "Train wire 10AK control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A56Toggle": "Turn on battery power to control circuits", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A21Toggle": "A21 Door control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A43Toggle": "A43 ARS 12V power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A45Toggle": "A45 ARS train wire 10AU", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A42Toggle": "A42 ARS 75V power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A41Toggle": "A41 ARS braking", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.VUToggle": "VU Train control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A64Toggle": "A64 Cabin lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A14Toggle": "A14 Train wire 18", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A75Toggle": "A75 Cabin heating", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A62Toggle": "A62 Radio communications", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A29Toggle": "A29 Radio broadcasting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A5Toggle": "A5 Interim wagon", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A44Toggle": "A44 Emergency train control", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.L_5Toggle": "А49 Emergency lighting", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A7Toggle": "A7 Red lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A9Toggle": "A9 Red lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A46Toggle": "A46 White lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A47Toggle": "A47 White lamp", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.L_4Toggle": "Headlights toggle", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VUSToggle": "VUS: Headlights bright/dim", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VADToggle": "VAD: Emergency door close override (failure of KD relay)", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VAHToggle": "VAH: Emergency driving mode (failure of RPB relay)", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KRPSet": "KRP: Emergency start button", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KDPSet": "KDP: Right doors open", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KDPKToggle": "KDP button cover", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.PN": "Pneumatic brake control", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.!Voltage": "Battery voltage", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.VMKToggle": "Turn motor-compressor on", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.BPSNonToggle": "BPSN: Train power supply", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.ARS13Set": "ARS 13V: ARS stabilized voltage check", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-717_lvz.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!K16": "NCh: No ARS frequency", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!OS": "0: ARS stop signal", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!AVT": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI1": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI2": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARSOch": "NCh: No ARS frequency", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS0": "0: ARS stop signal", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS40": "Speed limit 40 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS60": "Speed limit 60 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS70": "Speed limit 70 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS80": "Speed limit 80 kph", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KHSet": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KSZDSet": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VAVToggle": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VZPToggle": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-717_lvz.Buttons.Reverser.KVReverserDown": "Reverser back", - "Entities.gmod_subway_81-717_lvz.Buttons.Reverser.KVReverserUp": "Reverser forward", - "Entities.gmod_subway_81-717_lvz.Buttons.EPKDisconnect.EPKToggle": "EPV disconnect valve", - "Entities.gmod_subway_81-717_lvz.Buttons.Help.ShowHelp": "Show help on driving the train", - "Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Brake lever disconnect valve", - "Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-717_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - - - - "Entities.gmod_subway_81-714_lvz.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-714_lvz.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A56Toggle": "A56 Turn on battery power to control circuits", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-714_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-714_lvz.Buttons.Battery.VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A54Toggle": "A54 Train wire 10AK control", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A27Toggle": "A27 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A24Toggle": "A24 Battery charging", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A53Toggle": "A53 KVC power supply", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A13Toggle": "A13 Door alarm", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A32Toggle": "A32 Open right doors", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A31Toggle": "A31 Open left doors", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A16Toggle": "A16 Close doors", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A12Toggle": "A12 Emergency door close", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A50Toggle": "A50 Turn on DIP and lighting", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A51Toggle": "A51 Turn off DIP and lighting", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A1Toggle": "A1 X-1", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.KRPSet": "START: Emergency start button", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.VozvratRPSet": "Reset overload relay", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.VMKToggle": "Turn motor-compressor on", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.BPSNonToggle": "BPSN: Train power supply", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A2Toggle": "A2 X-2", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A3Toggle": "A3 X-3", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A17Toggle": "A17 Reset overload relay", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A6Toggle": "A6 T-1", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A8Toggle": "A8 Pneumatic valves #1, #2", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A20Toggle": "A20 Drive/brake circuit control, train wire 20", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A25Toggle": "A25 Manual electric braking", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A22Toggle": "A22 Turn on KK", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A23Toggle": "A23 Emergency motor-compressor turn on", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A39Toggle": "A39 Emergency control", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A14Toggle": "A14 Train wire 18" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_720.lua b/lua/metrostroi_data/languages_/en_buttons_720.lua deleted file mode 100644 index ba21341..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_720.lua +++ /dev/null @@ -1,237 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set": "Vityaz: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set": "Vityaz: Next screen", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set": "Vityaz: Previous screen", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set": "Vityaz: Main", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set": "Vityaz: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set": "Vityaz: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set": "Vityaz: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set": "Vityaz: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set": "Vityaz: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set": "Vityaz: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set": "Vityaz: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set": "Vityaz: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set": "Vityaz: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set": "Vityaz: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set": "Vityaz: Erase", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set": "Vityaz: Up\\Speed", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set": "Vityaz: Down\\Currents", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set": "Vityaz: Input\\Wagon equipment", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set": "Vityaz: Select\\Wagon equipment controlling", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set": "Emergency X-1", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set": "Emergency X-2", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet": "Emergency door close", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle": "Emergency doors", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-": "Fan operation mode: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+": "Fan operation mode: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+": "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-": "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-": "Fan strength: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+": "Fan strength: -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle": "SF1: Control circuits power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle": "SF2: BUV Power (wagon controlling unit)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle": "SF3: BUTP Power (engines controlling unit)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle": "SF4: BUTP Controlling", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle": "SF5: BUTP Emergency control", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle": "SF6: BUTP Power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle": "SF7: BBE (onboard power supply unit)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle": "SF8: BV controlling", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle": "SF9: BV power (overload relay)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle": "SF11: Motor-compressor", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle": "SF12: Doors closing", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle": "SF13: Doors open left", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle": "SF14: Doors open right", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle": "SF15: Front doors", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle": "SF16: Announcer", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle": "SF17: Emergency intercom", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle": "SF18: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle": "SF19: Passenger lighting power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle": "SF20: Emergency passenger lighting", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle": "SF21: Speed sensor", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle": "SF22: Parking brake", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle": "SF23: 1st fan group controlling", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle": "SF24: 2nd fan group controlling", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle": "SF25: 1st fan group power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle": "SF26: 2nd fan group power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle": "SF27: Exciter power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle": "SF28: ZKK power", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle": "SF29: Current collectors", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle": "SF30: Line schemes & ticker", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle": "SF31: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle": "SF32: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle": "SF33: (placeholder)", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet": "ASNP: Menu", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet": "ASNP: Up", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet": "ASNP: Down", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle": "ASNP: Turn on", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder": "Brake cylinder", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle": "SF1: Main power", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle": "SF2: Main control", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle": "SF3: Emergency control", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle": "SF4: BARS (ARS unit)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle": "SF5: BUP (train controlling unit)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle": "SF6: BKCU (control circuits commutation unit)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle": "SF7: BARS (ARS unit)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle": "SF8: Announcer", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle": "SF9: Radiostation", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle": "SF10: Wagon orientation", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle": "SF11: Movement direction", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle": "SF12: 1st headlights group", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle": "SF13: 2nd headlights group", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle": "SF14: Red lights", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle": "SF15: Cabin lighting", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle": "SF16: Heater", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle": "SF17: Cabin air conditioner", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle": "SF18: Flange lubrication", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle": "SF19: Main KRM power (brake lever)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle": "SF20: Emergency KRM power (brake lever)", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle": "SF21: Doors opening", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle": "SF22: Doors closing", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle": "KRMSH (brake lever disconnect valve)", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV": "Total voltmeter (kV)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3": "1st engine group current (A)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4": "2nd engine group current (A)", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor": "Rear door", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle": "Disable 1st current collectors group", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle": "Disable 2nd current collectors group", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle": "1st ventilation group", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle": "2nd ventilation group", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle": "Passenger lighting", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle": "Cabin lighting", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle": "1st headlights group", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle": "2nd headlights group", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle": "Front doors", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle": "Turning on emergency BBE", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle": "BBE (onboard power supply unit)", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle": "Motor-compressor", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle": "Cabin lighting power", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle": "Wagon equipment lighting", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-": "Broken BARS (ARS unit) blocking: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+": "Broken BARS (ARS unit) blocking: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle": "Battery on/off", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle": "ALS decoder", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery": "Control circuits voltage", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight": "Cabin door", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft": "Cabin door", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle": "Select left doors", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle": "Select right doors", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle": "Doors locking: Emergency door close override", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp": "Left doors button work", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet": "Left doors", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed": "Doors are closed", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle": "Stay", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle": "Ticker", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle": "KAH", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle": "ALS", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle": "Depature from depot", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage": "No high voltage", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle": "Line schemes", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet": "Emergency compressor", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet": "Turn on protection (overload relay)", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet": "Disable BV (overload relay)", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet": "Ring", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set": "Program 2", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle": "Announcer", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle": "Line", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet": "Emergency intercom", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set": "Program 1", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet": "Emergency BV recovery", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle": "Emergency control", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle": "Wiper", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop": "Allowed speed", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact": "Actual speed", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred": "Preventive speed", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2": "Allowed speed", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "Acceleration", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "Moving forward", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "Moving backward", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "(auxiliary) Brake", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "(auxiliary) Release", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "Auxiliary brake", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle": "Emergency brake", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle": "Close doors", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet": "Message perception", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet": "Attention", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet": "Braking perception", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet": "Horn", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet": "Right doors", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp": "Right doors button work", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine": "Red - brake line, black - train line", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle": "Battery on/off", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle": "SF1: Control circuits power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle": "SF2: BUV Power (wagon controlling unit)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle": "SF3: BUTP Power (engines controlling unit)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle": "SF4: BUTP Controlling", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle": "SF5: BUTP Emergency control", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle": "SF6: BUTP Power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle": "SF7: BBE (onboard power supply unit)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle": "SF8: BV controlling", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle": "SF9: BV power (overload relay)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle": "SF10: PPO", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle": "SF11: Motor-compressor", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle": "SF12: Doors closing", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle": "SF13: Doors open left", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle": "SF14: Doors open right", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle": "SF15: Front doors", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle": "SF16: Announcer", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle": "SF17: Emergency intercom", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle": "SF18: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle": "SF19: Passenger lighting power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle": "SF20: Emergency passenger lighting", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle": "SF21: Speed sensor", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle": "SF22: Parking brake", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle": "SF23: 1st fan group controlling", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle": "SF24: 2nd fan group controlling", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle": "SF25: 1st fan group power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle": "SF26: 2nd fan group power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle": "SF27: Exciter power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle": "SF28: ZKK power", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle": "SF29: Current collectors", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle": "SF30: Line schemes & ticker", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle": "SF31: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: (placeholder)", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button UP", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button DOWN", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button UP", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button DOWN", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLARX": "IGLA: RX", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHkToggle": "KAH button cover", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSkToggle": "ALS button cover", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet": "Acceleration rate(Slope mode)", - - "Entities.gmod_subway_81-720.Buttons.BTO.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_722.lua b/lua/metrostroi_data/languages_/en_buttons_722.lua deleted file mode 100644 index 93a5642..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_722.lua +++ /dev/null @@ -1,219 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - - "Entities.gmod_subway_81-722.Buttons.StopKran.UAVAToggle": "Autostop disabler", - "Entities.gmod_subway_81-722.Buttons.StopKran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_81-722.Buttons.PU2.ARSToggle": "ARS: Automatic speed regulation", - "Entities.gmod_subway_81-722.Buttons.PU2.ALSToggle": "ALS: Automatic locomotive signalling", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassWasherSet": "Glass washer", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner+": "Wiper(up)", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner-": "Wiper(down)", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusKToggle": "Emergency brake button cover \"T+\"", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusSet": "Emergency brake \"T+\"", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeToggle": "Emergency braking", - "Entities.gmod_subway_81-722.Buttons.PU2.VigilanceSet": "Attention", - "Entities.gmod_subway_81-722.Buttons.PU2.Headlights+": "Headlights(up)", - "Entities.gmod_subway_81-722.Buttons.PU2.Headlights-": "Headlights(down)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorSelectToggle": "Select doors side", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorClose+": "Door closing(up)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorClose-": "Door closing(down)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorRightSet": "Open right doors", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatUpSet": "SARMAT: Up", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatDownSet": "SARMAT: Down", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEnterSet": "SARMAT: Enter", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEscSet": "SARMAT: Esc", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF1Set": "SARMAT: F1", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF2Set": "SARMAT: F2", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF3Set": "SARMAT: F3", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF4Set": "SARMAT: F4", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LRD": "LRD: Move permission(when 0 on ALS)", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LPT": "LPT: Pneumatic brakes lamp", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!RS": "P/C: Emergency radiostation power lamp", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!AVS": "ABC Low train line pressure lamp", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LSD": "LSD: Door state light (doors are closed)", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!RU": "RU: Turning off control relay lamp", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!04": "NCh: No ARS frequency (0 kph)", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!00": "0: Speed limit 0 kph", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!40": "40: Speed limit 40 kph", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!60": "60: Speed limit 60 kph", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!70": "70: Speed limit 70 kph", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!80": "80: Speed limit 80 kph", - "Entities.gmod_subway_81-722.Buttons.CabinDoorL.CabinDoorLeft": "Cabin door", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatPathSet": "SARMAT: Track", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatLineSet": "SARMAT: Line", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatZeroSet": "SARMAT: >0<", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatStartSet": "SARMAT: Start", - "Entities.gmod_subway_81-722.Buttons.BTO.K29Toggle": "KRMSH (driver disconnect valve)", - "Entities.gmod_subway_81-722.Buttons.BTO.K9Toggle": "RVTB: Reserved valve of safeness brake", - "Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber1Set": "First number", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber2Set": "Second number", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber3Set": "Third number", - "Entities.gmod_subway_81-722.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLightToggle": "Cabin lighting", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight-": "Cabin lighting(leftward)", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight+": "Cabin lighting(rightward)", - "Entities.gmod_subway_81-722.Buttons.Lighting.PanelLightToggle": "Panel lighting", - "Entities.gmod_subway_81-722.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-722.Buttons.PU1.MirrorHeatingSet": "Mirrors heater", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft2Set": "Left doors", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorBackSet": "Open right doors of last wagon", - "Entities.gmod_subway_81-722.Buttons.PU1.EmergencyDriveSet": "Emergency drive", - "Entities.gmod_subway_81-722.Buttons.PU1.MicrophoneSet": "Microphone", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft1Set": "Left doors", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF1Toggle": "SF1:Train power line (controlling)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF2Toggle": "SF2:Active cabin", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF3Toggle": "SF3:Main control", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF4Toggle": "SF4:Reserved control", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF5Toggle": "SF5:RVTB control", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF6Toggle": "SF6:Brake lever power", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF7Toggle": "SF7:Doors (controlling)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF8Toggle": "SF8:BARS 1 (ARS unit)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF9Toggle": "SF9:BARS 2 (ARS unit)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF00Toggle": "SF00:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF01Toggle": "SF01:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF10Toggle": "SF10:BRPI-M1 (Parameter registration unit)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF11Toggle": "SF11:BRPI-M2 (Parameter registration unit)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF12Toggle": "SF12:Fire system", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF13Toggle": "SF13:Current collector, grounding", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF02Toggle": "SF02:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF14Toggle": "SF14:Radiostation 1", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF15Toggle": "SF15:Radiostation 2", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF16Toggle": "SF16:CIS 1 (central informing system)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF17Toggle": "SF17:CIS 2 (central informing system)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF18Toggle": "SF18:CIS 3 (central informing system)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF19Toggle": "SF19:BUKP, UPI (train announce device)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF20Toggle": "SF20:Monitor", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF21Toggle": "SF21:Orientation", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF22Toggle": "SF22:Red lamp", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF23Toggle": "SF23:Headlights, red lamp", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF24Toggle": "SF24:SOSD (station doors opening lamp)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF25Toggle": "SF25:Cabin lighting", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF26Toggle": "SF26:Cabin air conditioner", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF27Toggle": "SF27:Wiper, glass washer, horn", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF03Toggle": "SF03:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF04Toggle": "SF04:", - "Entities.gmod_subway_81-722.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_81-722.Buttons.CabinDoorR.CabinDoorRight": "Cabin door", - "Entities.gmod_subway_81-722.Buttons.PPZB.PSNToggleSet": "Batteries charging", - "Entities.gmod_subway_81-722.Buttons.PPZB.BattOnSet": "Enable train power line", - "Entities.gmod_subway_81-722.Buttons.PPZB.BattOffSet": "Disable train power line", - "Entities.gmod_subway_81-722.Buttons.PPZB.TorecDoorUnlockSet": "Unlock end doors", - "Entities.gmod_subway_81-722.Buttons.PPZB.SCEnable": "Grounding", - "Entities.gmod_subway_81-722.Buttons.PPZB.SOSD": "SOSD (station doors opening lamp)", - "Entities.gmod_subway_81-722.Buttons.Isolations.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-722.Buttons.Isolations.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-722.Buttons.BI3.KRO+": "Movement direction(up)", - "Entities.gmod_subway_81-722.Buttons.BI3.KRO-": "Movement direction(down)", - "Entities.gmod_subway_81-722.Buttons.BI3.RingSet": "Ring", - "Entities.gmod_subway_81-722.Buttons.BI3.Compressor-": "Compressors(-)", - "Entities.gmod_subway_81-722.Buttons.BI3.Compressor+": "Compressors(+)", - "Entities.gmod_subway_81-722.Buttons.BI3.!BrakeCylinder": "Brake cylinder", - "Entities.gmod_subway_81-722.Buttons.BI3.!BrakeTrainLine": "Red - brake line, black - train line", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF31Toggle": "SF31:Train power wire", - "Entities.gmod_subway_81-722.Buttons.PVZ.1:SF31Toggle": "SF31:Train power wire", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF32Toggle": "SF32:Train power line (controlling)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF33Toggle": "SF33:Control circuits power", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF34Toggle": "SF34:Left CIS", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF35Toggle": "SF35:Right CIS", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF36Toggle": "SF36:Bort signalling (lamps)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF37Toggle": "SF37:Disable current collectors", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF38Toggle": "SF38:Reserve", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF41Toggle": "SF41:Doors open left", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF42Toggle": "SF42:Doors open right", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF43Toggle": "SF43:Doors close", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF44Toggle": "SF44:End doors", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF45Toggle": "SF45:Interior lighting power", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF46Toggle": "SF46:Emergency interior lighting", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF47Toggle": "SF47:1st ventilation group", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF48Toggle": "SF48:2nd ventilation group", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF49Toggle": "SF49:Counter", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF51Toggle": "SF51:BUV (wagon controlling unit)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF52Toggle": "SF52:BODV (power of rotational sensor processing unit)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF53Toggle": "SF53:PSN (power supply)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF54Toggle": "SF54:Air dryer", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF55Toggle": "SF55:BUFT (friction brake controlling unit)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF56Toggle": "SF56:Inverter - inverter", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF57Toggle": "SF57:Inverter - heating", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF58Toggle": "SF58:Main CUV (wagon control circuits)", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF59Toggle": "SF59:Reserved CUV (wagon control circuits)", - "Entities.gmod_subway_81-722.Buttons.PVM.PassLightToggle": "Interior lighting", - "Entities.gmod_subway_81-722.Buttons.PVM.PassVent-": "Interior ventilation(-)", - "Entities.gmod_subway_81-722.Buttons.PVM.PassVent+": "Interior ventilation(+)", - "Entities.gmod_subway_81-722.Buttons.PVM.VKFToggle": "VKF (red lamps disabler)", - "Entities.gmod_subway_81-722.Buttons.PVM.ParkingBrakeToggle": "Parking brake", - "Entities.gmod_subway_81-722.Buttons.PVM.VRDToggle": "VRD: Allow movement(when 0 on ALS)", - "Entities.gmod_subway_81-722.Buttons.PVM.SOSDEnableToggle": "SOSD (station doors opening lamp)", - "Entities.gmod_subway_81-722.Buttons.PVM.VRU-": "VRU(-) (enable control relay)", - "Entities.gmod_subway_81-722.Buttons.PVM.VRU+": "VRU(+) (enable control relay)", - "Entities.gmod_subway_81-722.Buttons.PVM.VADToggle": "Driving w/o doors control", - "Entities.gmod_subway_81-722.Buttons.PVM.VAHToggle": "Driving w/o attention pedal", - "Entities.gmod_subway_81-722.Buttons.PVM.EmergencyRadioPowerToggle": "Emergency radiostation power", - "Entities.gmod_subway_81-722.Buttons.PVM.BARSMode-": "BARS modes(leftward)", - "Entities.gmod_subway_81-722.Buttons.PVM.BARSMode+": "BARS modes(rightward)", - "Entities.gmod_subway_81-722.Buttons.PVM.PantSC-": "Current collectors & grounding(-)", - "Entities.gmod_subway_81-722.Buttons.PVM.PantSC+": "Current collector & grounding(+)", - "Entities.gmod_subway_81-722.Buttons.PVM.RCARSToggle": "RC ARS (ARS circuits disconnect)", - - "Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-723.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-723.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF31Toggle": "SF31:Train power wire", - "Entities.gmod_subway_81-723.Buttons.PVZ.1:SF31Toggle": "SF31:Train power wire", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF32Toggle": "SF32:Train power line (controlling)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF33Toggle": "SF33:Control circuits power", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF34Toggle": "SF34:Left CIS", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF35Toggle": "SF35:Right CIS", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF36Toggle": "SF36:Bort signalling (lamps)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF37Toggle": "SF37:Disable current collectors", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF38Toggle": "SF38:Reserve", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF41Toggle": "SF41:Doors open left", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF42Toggle": "SF42:Doors open right", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF43Toggle": "SF43:Doors close", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF44Toggle": "SF44:End doors", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF45Toggle": "SF45:Interior lighting power", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF46Toggle": "SF46:Emergency interior lighting", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF47Toggle": "SF47:1st ventilation group", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF48Toggle": "SF48:2nd ventilation group", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF49Toggle": "SF49:Counter", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF51Toggle": "SF51:BUV (wagon controlling unit)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF52Toggle": "SF52:BODV (power of rotational sensor processing unit)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF53Toggle": "SF53:PSN (power supply)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF54Toggle": "SF54:Air dryer", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF55Toggle": "SF55:BUFT (friction brake controlling unit)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF56Toggle": "SF56:Inverter - inverter", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF57Toggle": "SF57:Inverter - heating", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF58Toggle": "SF58:Main CUV (wagon control circuits)", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF59Toggle": "SF59:Reserved CUV (wagon control circuits)", - - "Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-724.Buttons.RearDoor.RearDoor": "Rear door", - "Entities.gmod_subway_81-724.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF34Toggle": "SF34:Left CIS", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF35Toggle": "SF35:Right CIS", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF36Toggle": "SF36:Bort signalling (lamps)", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF41Toggle": "SF41:Doors open left", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF42Toggle": "SF42:Doors open right", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF43Toggle": "SF43:Doors close", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF44Toggle": "SF44:End doors", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF45Toggle": "SF45:Interior lighting power", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF46Toggle": "SF46:Emergency interior lighting", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF47Toggle": "SF47:1st ventilation group", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF48Toggle": "SF48:2nd ventilation group", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF51Toggle": "SF51:BUV (wagon controlling unit)", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF52Toggle": "SF52:BODV (power of rotational sensor processing unit)", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF53Toggle": "SF53:Reserve", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF54Toggle": "SF54:Reserve", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF55Toggle": "SF55:BUFT (friction brake controlling unit)" -} -]] \ No newline at end of file diff --git a/lua/metrostroi_data/languages_/en_buttons_em508.lua b/lua/metrostroi_data/languages_/en_buttons_em508.lua deleted file mode 100644 index f644f1a..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_em508.lua +++ /dev/null @@ -1,157 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - - "Entities.gmod_subway_em508.Buttons.Back.BackDoor": "Rear door", - "Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program1Set": "Program 1", - "Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program2Set": "Program 2", - "Entities.gmod_subway_em508.Buttons.HelperPanel.VDLSet": "VDL: Left doors open", - "Entities.gmod_subway_em508.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_em508.Buttons.AV2.RSTToggle": "RST: Radiostation", - "Entities.gmod_subway_em508.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_em508.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_em508.Buttons.AVU.AVULight": "Lamp: Automatic control disabler is active", - "Entities.gmod_subway_em508.Buttons.AVU.OtklAVUToggle": "OtklAVU: Turn off automatic control disable relay (failure of AVU)", - "Entities.gmod_subway_em508.Buttons.Back2.!HVFuses": "HV fuses block", - "Entities.gmod_subway_em508.Buttons.Back2.!Relays": "The box with the devices for battery recharging and door pressure diffuser", - "Entities.gmod_subway_em508.Buttons.Back2.!Heater": "The heater", - "Entities.gmod_subway_em508.Buttons.Main.DoorSelectToggle": "Switcher:Select doors side", - "Entities.gmod_subway_em508.Buttons.Main.DIPonSet": "Swithcer:Turn interior lights on", - "Entities.gmod_subway_em508.Buttons.Main.DIPoffSet": "Swithcer:Turn interior lights off", - "Entities.gmod_subway_em508.Buttons.Main.VozvratRPSet": "VRP:Reset overload relay", - "Entities.gmod_subway_em508.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_em508.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_em508.Buttons.Main.KSDSet": "KSD: Door state controle(Door check)", - "Entities.gmod_subway_em508.Buttons.Main.KDPSet": "KDP: Right doors open", - "Entities.gmod_subway_em508.Buttons.Main.KDLSet": "KDL: Left doors open", - "Entities.gmod_subway_em508.Buttons.Main.RezMKSet": "RMC: Emergency motor-compressor enabling", - "Entities.gmod_subway_em508.Buttons.Main.KU1Toggle": "MK: Turn motor-compressor on", - "Entities.gmod_subway_em508.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_em508.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_em508.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting", - "Entities.gmod_subway_em508.Buttons.AV1.VU1Toggle": "VU1: Cabin heater", - "Entities.gmod_subway_em508.Buttons.Back1.!ULSPM": "UESPM (Emergency intercom)", - "Entities.gmod_subway_em508.Buttons.Back1.!TonalARS": "Ring", - "Entities.gmod_subway_em508.Buttons.Back1.!PressureRelay": "Pressure controller", - "Entities.gmod_subway_em508.Buttons.Back1.!Reproductor": "Speaker", - "Entities.gmod_subway_em508.Buttons.Back1.!LVFuses": "Shield with low-voltage fuses", - "Entities.gmod_subway_em508.Buttons.Back1.R_UNchToggle": "Announcer control", - "Entities.gmod_subway_em508.Buttons.Lamp.L_3Toggle": "Lamp: Gauges lighting", - "Entities.gmod_subway_em508.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_em508.Buttons.VU.VUToggle": "VU: Train control", - "Entities.gmod_subway_em508.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_em508.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_em508.Buttons.LAMPS.SN": "Lamp: Overload relay light (overload relay open on current train)", - "Entities.gmod_subway_em508.Buttons.LAMPS.RedRP": "Lamp: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_em508.Buttons.LAMPS.SD": "Lamp: SD door state light (doors are open)", - "Entities.gmod_subway_em508.Buttons.LAMPS.GreenRP": "Lamp: Green overload relay light", - "Entities.gmod_subway_em508.Buttons.LAMPS.UKS": "Speed control device UKS-20M", - "Entities.gmod_subway_em508.Buttons.LAMPS.Red": "Lamp: The heater is on", - "Entities.gmod_subway_em508.Buttons.LAMPS.AGS": "Lamp: AGS (Automatic Creast Greaser)", - "Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_em508.Buttons.PneumaticPanels.!CylinderPressure": "Brake cylinder pressure", - "Entities.gmod_subway_em508.Buttons.Battery.VBToggle": "VB: Battery on/off", - "Entities.gmod_subway_em508.Buttons.Battery.R_RadioToggle": "Announcer power (+50V)", - "Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPMenuSet": "Announcer: Menu", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPUpSet": "Announcer: Up", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPDownSet": "Announcer: Down", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPOnToggle": "Announcer: Turn on", - "Entities.gmod_subway_em508.Buttons.VU1.KRPSet": "RRP: Emergency start", - "Entities.gmod_subway_em508.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button up", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button down", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button up", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button down", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLARX": "IGLA: RX", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", - "Entities.gmod_subway_em508.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.PrevSign": "Previous sign", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.NextSign": "Next sign", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num2P": "Route: Increase 2nd number", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num2M": "Route: Decrease 2nd number", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num1P": "Route: Increase 1st number", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num1M": "Route: Decrease 1st number", - "Entities.gmod_subway_em508.Buttons.Front.FrontDoor": "Front door", - "Entities.gmod_subway_em508.Buttons.KRR.KRRSet": "KRR: Button of enabling reversers", - "Entities.gmod_subway_em508.Buttons.AGS.VUSToggle": "Switcher: Near Headlights(down)/Far Headlights (up)", - "Entities.gmod_subway_em508.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_em508.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake", - "Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake", - "Entities.gmod_subway_em508.Buttons.AVMain.AV8BToggle": "AV-8B: Circuit breaker (High voltage auxiliary circuits)", - "Entities.gmod_subway_em508.Buttons.Back3.!RTM": "Remote radio with dispatcher", - "Entities.gmod_subway_em508.Buttons.Back3.!ULSPMSpeaker": "Emergency intercom speaker block", - "Entities.gmod_subway_em508.Buttons.Back3.!Amplifier": "Amplifier unit of train station", - "Entities.gmod_subway_em508.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_em508.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - - - "Entities.gmod_subway_em508_int.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_em508_int.Buttons.Back.BackDoor": "Rear door", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.R_Program1Set": "Program 1", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.R_Program2Set": "Program 2", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.VDLSet": "VDL: Left doors open", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_em508_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_em508_int.Buttons.Battery.VBToggle": "AB: Battery on/off", - "Entities.gmod_subway_em508_int.Buttons.Battery.R_RadioToggle": "Announcer power (+50V)", - "Entities.gmod_subway_em508_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_em508_int.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_em508_int.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - "Entities.gmod_subway_em508_int.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508_int.Buttons.VU1.KRPSet": "RRP: Emergency start", - "Entities.gmod_subway_em508_int.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_em508_int.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_em508_int.Buttons.Front.FrontDoor": "Front door", - "Entities.gmod_subway_em508_int.Buttons.Tsepi.!BatteryVoltage": "Battery voltage", - "Entities.gmod_subway_em508_int.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_em508_int.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.PrevSign": "Previous sign", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.NextSign": "Next sign", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num2P": "Route: Increase 2nd number", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num2M": "Route: Decrease 2nd number", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num1P": "Route: Increase 1st number", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num1M": "Route: Decrease 1st number", - "Entities.gmod_subway_em508_int.Buttons.Back2.!HVFuses": "HV fuses block", - "Entities.gmod_subway_em508_int.Buttons.Back2.!Relays": "The box with the devices for battery recharging and door pressure diffuser", - "Entities.gmod_subway_em508_int.Buttons.Back2.!Heater": "The heater", - "Entities.gmod_subway_em508_int.Buttons.Main.GreenRP": "Lamp: Green overload relay light", - "Entities.gmod_subway_em508_int.Buttons.Main.RedRP": "Lamp: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_em508_int.Buttons.Main.SD": "Lamp: SD door state light (doors are open)", - "Entities.gmod_subway_em508_int.Buttons.Main.DIPonSet": "Switcher: Turn interior lights on", - "Entities.gmod_subway_em508_int.Buttons.Main.DIPoffSet": "Switcher: Turn interior lights off", - "Entities.gmod_subway_em508_int.Buttons.Main.VozvratRPSet": "VRP: Reset overload relay", - "Entities.gmod_subway_em508_int.Buttons.Main.KSNSet": "KSN: Forced activation of the RP on the faulty wagon (Malfunction signaling)", - "Entities.gmod_subway_em508_int.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_em508_int.Buttons.Main.KDPSet": "KDP: Right doors open", - "Entities.gmod_subway_em508_int.Buttons.Main.KDLSet": "KDL: Left doors open", - "Entities.gmod_subway_em508_int.Buttons.Main.KU1Toggle": "MK: Turn motor-compressor on", - "Entities.gmod_subway_em508_int.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU1Toggle": "VU1: Cabin heater", - "Entities.gmod_subway_em508_int.Buttons.AVMain.AV8BToggle": "AV-8B: Circuit breaker (High voltage auxiliary circuits)", - "Entities.gmod_subway_em508_int.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_em508_int.Buttons.Lamp.L_3Toggle": "Lamp: Gauges lighting", - "Entities.gmod_subway_em508_int.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_em508_int.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_em508_int.Buttons.VU.VUToggle": "VU: Train control", - "Entities.gmod_subway_em508_int.Buttons.PneumaticPanels.!CylinderPressure": "Brake cylinder pressure", - "Entities.gmod_subway_em508_int.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake", - "Entities.gmod_subway_em508_int.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake", - "Entities.gmod_subway_em508_int.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_ezh.lua b/lua/metrostroi_data/languages_/en_buttons_ezh.lua deleted file mode 100644 index 2e9d0ac..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_ezh.lua +++ /dev/null @@ -1,148 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - "Entities.gmod_subway_ezh.Buttons.HelperPanel.VDLSet": "VDL: Left doors open", - "Entities.gmod_subway_ezh.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_ezh.Buttons.Meters.!TotalVoltmeter": "HV voltmeter (kV)", - "Entities.gmod_subway_ezh.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_ezh.Buttons.AV2.R_RadioToggle": "+50V: Announcer, RRI block ", - "Entities.gmod_subway_ezh.Buttons.AV2.RSTToggle": "RST: Radiostation", - "Entities.gmod_subway_ezh.Buttons.AV2.UOSToggle": "UOS: Speed limitation tumbler", - "Entities.gmod_subway_ezh.Buttons.AB1.AB1Set": "Switch ARS unit to AB mode(drivers button)", - "Entities.gmod_subway_ezh.Buttons.KAH.KAHToggle": "TAH: Emergency Drive Mode", - "Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_ezh.Buttons.AVU.AVULight": "Lamp: AVU is turned on (Automatic control disabler)", - "Entities.gmod_subway_ezh.Buttons.AVU.OtklAVUToggle": "Turn off automatic control disable relay (failure of AVU)", - "Entities.gmod_subway_ezh.Buttons.Main.DIPonSet": "Turn interior lights on", - "Entities.gmod_subway_ezh.Buttons.Main.DIPoffSet": "Turn interior lights off (Ring)", - "Entities.gmod_subway_ezh.Buttons.Main.KDPSet": "KDP: Right doors open", - "Entities.gmod_subway_ezh.Buttons.Main.KDLSet": "KDL: Left doors open", - "Entities.gmod_subway_ezh.Buttons.Main.DoorSelectToggle": "Select doors side", - "Entities.gmod_subway_ezh.Buttons.Main.KVTSet": "KVT: Brake reception button (ARS Cancel)", - "Entities.gmod_subway_ezh.Buttons.Main.VUSToggle": "Switcher: Near Headlights(down)/Far Headlights (up)", - "Entities.gmod_subway_ezh.Buttons.Main.ALSToggle": "Switcher: ALS", - "Entities.gmod_subway_ezh.Buttons.Main.ALSFreqToggle": "Switch: Decoder (Down - ARS 2/6, up - ARS 1/5)", - "Entities.gmod_subway_ezh.Buttons.Main.ARSToggle": "Switcher: Automatic speed regulation", - "Entities.gmod_subway_ezh.Buttons.Main.KU1Toggle": "Turn motor-compressor on", - "Entities.gmod_subway_ezh.Buttons.Main.KSNSet": "SN: Failure indication button", - "Entities.gmod_subway_ezh.Buttons.Main.VozvratRPSet": "KU9: Reset overload relay", - "Entities.gmod_subway_ezh.Buttons.Main.R_Program1Set": "Announcer: Program 1", - "Entities.gmod_subway_ezh.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_ezh.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_ezh.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_ezh.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_ezh.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_ezh.Buttons.Back1.!RignARS": "ARS tonal device", - "Entities.gmod_subway_ezh.Buttons.Back1.!USPM": "UESPM (Emergency intercom)", - "Entities.gmod_subway_ezh.Buttons.Back1.!AK": "Pressure controller", - "Entities.gmod_subway_ezh.Buttons.Back1.!LVP": "Shield with low-voltage fuses", - "Entities.gmod_subway_ezh.Buttons.RC1.RC1Toggle": "RCR: ARS Circuit Breaker", - "Entities.gmod_subway_ezh.Buttons.Lamp.L_3Toggle": "Lamp: Gauges lighting", - "Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_ezh.Buttons.VU.VUToggle": "VU: Train control", - "Entities.gmod_subway_ezh.Buttons.VU.RezMKSet": "KU15: Motor Compressor emergency toggle", - "Entities.gmod_subway_ezh.Buttons.VU.KRPSet": "Emergency start", - "Entities.gmod_subway_ezh.Buttons.FrontDoor.FrontDoor": "Front door", - "Entities.gmod_subway_ezh.Buttons.AB2.AB2Set": "Switch ARS unit to AB mode(helpers button)", - "Entities.gmod_subway_ezh.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_ezh.Buttons.PneumaticPanels.!BrakeCylinder": "Brake manometer: Brake cylinder pressure", - "Entities.gmod_subway_ezh.Buttons.Battery.VBToggle": "AB: Battery on/off", - "Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPMenuSet": "Announcer: Menu", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPUpSet": "Announcer: Up", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPDownSet": "Announcer: Down", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPOnToggle": "Announcer: Turn on", - "Entities.gmod_subway_ezh.Buttons.Tsepi.!BatteryVoltage": "Battery voltage", - "Entities.gmod_subway_ezh.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L80": "Speed limit 80 kph", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L70": "Speed limit 70 kph", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L60": "Speed limit 60 kph", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L40": "Speed limit 40 kph", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L0": "0: Speed limit 0 kph", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!LNF": "OCh: No ARS frequency", - "Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_ezh.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button up", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button down", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button up", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button down", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLARX": "IGLA: SR", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", - "Entities.gmod_subway_ezh.Buttons.Lamps.!RedRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!LPU": "Sequence (Verifying the inclusion of machines in the run and braking mode when there is no high voltage)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!VD": "VD: Engines engaged (indicates the presence of voltage on the 1 train wire)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!KT": "KT: Brake control (efficient brakes)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!AB": "AB: Work in auto-lock mode (ARS is disabled)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!Doors": "Doors: door state light (doors are open)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!LN": "LN: Direction signal", - "Entities.gmod_subway_ezh.Buttons.Lamps.!Sbor": "Lamp SBOR: Failure indicator light (power circuits failed to assemble)", - "Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle": "EPK disconnect valve", - "Entities.gmod_subway_ezh.Buttons.AVMain.AV8BToggle": "AV-8B: Circuit breaker (High voltage auxiliary circuits)", - "Entities.gmod_subway_ezh.Buttons.KRR.KRRToggle": "KRR: Button of enabling reversers", - "Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake", - "Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake", - "Entities.gmod_subway_ezh.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - - - "Entities.gmod_subway_ezh1.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_ezh1.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_ezh1.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_ezh1.Buttons.PneumaticPanels.!CylinderPressure": "Brake manometer: Brake cylinder pressure", - "Entities.gmod_subway_ezh1.Buttons.Battery.VBToggle": "AB: Battery on/off", - "Entities.gmod_subway_ezh1.Buttons.Meters.!TotalVoltmerer": "HV voltmeter (kV)", - "Entities.gmod_subway_ezh1.Buttons.Meters.!TotalAmpermeter": "Total ampermeter (A)", - "Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_ezh1.Buttons.RearDoor.RearDoor": "Passenger door", - "Entities.gmod_subway_ezh1.Buttons.Tsepi.!BatteryVoltage": "Battery voltage", - "Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_ezh1.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh1.Buttons.Back2.!HVFuses": "HV fuses block", - "Entities.gmod_subway_ezh1.Buttons.Back2.!Relays": "The box with the devices for battery recharging and door pressure diffuser", - "Entities.gmod_subway_ezh1.Buttons.Back2.!Heater": "The heater", - "Entities.gmod_subway_ezh1.Buttons.Main.RedRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_ezh1.Buttons.Main.GreenRP": "RP: Green overload relay light (overload relay open on current train)", - "Entities.gmod_subway_ezh1.Buttons.Main.SD": "Blue door state light (doors are closed)", - "Entities.gmod_subway_ezh1.Buttons.Main.DIPonSet": "KU4: Turn interior lights on", - "Entities.gmod_subway_ezh1.Buttons.Main.DIPoffSet": "KU5: Turn interior lights off", - "Entities.gmod_subway_ezh1.Buttons.Main.VozvratRPSet": "Switcher: Reset overload relay", - "Entities.gmod_subway_ezh1.Buttons.Main.KSNSet": "Turn motor-compressor on", - "Entities.gmod_subway_ezh1.Buttons.Main.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_ezh1.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_ezh1.Buttons.Main.KDLSet": "KU12: Open left doors", - "Entities.gmod_subway_ezh1.Buttons.Main.KU1Toggle": "Switcher: Turn motor-compressor on", - "Entities.gmod_subway_ezh1.Buttons.Main.VUD1Toggle": "Switcher: Doors control toggle (close doors)", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU3Toggle": "VU3: Cabin lighting", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_ezh1.Buttons.AVMain.AV8BToggle": "AV-8B: Circuit breaker (High voltage auxiliary circuits)", - "Entities.gmod_subway_ezh1.Buttons.CabinDoor.CabinDoor1": "Cabin door", - "Entities.gmod_subway_ezh1.Buttons.Front.FrontDoor": "Front door", - "Entities.gmod_subway_ezh1.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh1.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - "Entities.gmod_subway_ezh1.Buttons.GV.GVToggle": "GV: HV switch", - "Entities.gmod_subway_ezh1.Buttons.VU.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_ezh1.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_ezh1.Buttons.HelperPanel.VDLSet": "VDL: Open left doors", - "Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake", - "Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake", - "Entities.gmod_subway_ezh1.Buttons.PneumaticManometer.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)" -} -]] diff --git a/lua/metrostroi_data/languages_/en_buttons_ezh3.lua b/lua/metrostroi_data/languages_/en_buttons_ezh3.lua deleted file mode 100644 index ff59a55..0000000 --- a/lua/metrostroi_data/languages_/en_buttons_ezh3.lua +++ /dev/null @@ -1,158 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Back door", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "VB: Battery on/off (low voltage)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line isolation valve", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line isolation valve", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Announcer: Menu", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Announcer: Up", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Announcer: Down", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Announcer: Turn on", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Cabin door", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Front door", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line disconnect valve", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line disconnect valve", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "NCh: No ARS frequency", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: ARS stop signal", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "Speed limit 40 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "Speed limit 60 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "Speed limit 70 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "Speed limit 80 kph", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Speedometer (km/h)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Total engines ampermeter (A)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Total voltmeter (kV)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Battery voltage of train control(V)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Brake cylinder pressure", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Pressure in pneumatic lines (red: brake line, black: train line)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "Turn motor-compressor on", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "SAMM: Turning off drive", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "SAMM: Start", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "SAMM: Reset", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Lamp: Drive-Brake", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Lamp: Working state SAMM", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Lamp: Enabled SAMM execution unit", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "SAMM: Turn autodrive on", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "SAMM: Execution unit", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "SAMM: X-2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "SAMM: Catch Up", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "SAMM: Permission", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "KSN: Failure indication button", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Program 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Program 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Switch: Near Headlights(down)/Far Headlights (up)", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Switch: Gauges lighting", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Switch: Emergency Run", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Osv. Vkl.: Turn on lighting", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Osv. Vykl.: Turn off lighting", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "KSD: Doors signalization check", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "KVT: Brake perception button", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "KB: Attention button", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Lamp: RK spinning", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "ARS: Automatic speed regulation", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "UNCh: Low frequency amplifier", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "VUD: Door control toggle (close doors)", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Radioinformator: Announcer (built-in)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "ALS: Automatic locomotive signalling", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "KVRP: Reset overload relay", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Ring", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Switch: Cabin lighting", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "KRZD: Emergency door closing", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "KDL: Open left doors", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH: Emergency drive button", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Emergency motor-compressor startup", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "KRP: Emergency start button", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "VPR: Radiostation enable", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Loudspeaker: Sound in cabin enable", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Unused switch", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Unused switch", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Announcer work indicator", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "VU3: Cabin light", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "AV-8B: Automatic switch (High voltage)", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "RC-ARS: ARS Circuit Breaker", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "UAVA: Universal Automatic Autostop Disabler (disable autostop)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle ": "UAVA: Universal Automatic Autostop Disabler(reset contacts)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "KDL: Open left doors", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "EPK disconnect valve", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake wheel", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake wheel", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Emergency brake", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "VB: Battery on/off (low voltage)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Brake line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Train line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "HV switch", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Train line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Brake line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Passenger door", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "HV fuses block", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "The box with the devices for battery recharging and door pressure diffuser", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "The heater", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Front door", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "VU3: Cabin light", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "VU2: Emergency lighting (45V)", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "VU1: Cabin heater (3kWt)", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Parking brake wheel", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Parking brake wheel", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Cabin door", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Passenger door", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "RP: Red overload relay light (power circuits failed to assemble)", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "RP: Green overload relay light (prevents overcurrent of engines)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Blue door state light (doors are closed)", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Switch: Open left doors", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Switch: Signalization (Doors control check)", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Switch: Reset overload relay", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Switch: Failure indication switch", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Switch: Doors control toggle (close doors)", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Switch: Compressor turn on", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "KU4: Turn interior lights on", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "KU5: Turn interior lights off", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "Switch: Emergency motor-compressor startup", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "KDP: Open right doors", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "KU10: Emergency door closing", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "AV-8B: Automatic switch (High voltage)", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "VU: Enable train-control", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Control circuits voltage", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "VUD2: Door control toggle (close doors)", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "VDL: Open left doors", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Brake line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Train line disconnect valve", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Disable air distributor", - - - "Entities.gmod_subway_ezh3.Buttons.Main.Custom1Toggle": "Unused switch", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1USet": "IGLA: First button up", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1Set": "IGLA: First button", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1DSet": "IGLA: First button down", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2USet": "IGLA: Second button up", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2Set": "IGLA: Second button", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2DSet": "IGLA: Second button down", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLASR": "IGLA: SR", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLARX": "IGLA: RX", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAErr": "IGLA: Malfunction", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOSP": "IGLA: OSP(Fire extinguisher)", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAPI": "IGLA: PI(Fire indication)", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOff": "IGLA: Off", - - "Entities.gmod_subway_ezh3.Buttons.Back2.!HVHuse": "HV fuses block", - "Entities.gmod_subway_ezh3.Buttons.Back2.!AKBCharge": "The box with the devices for battery recharging and door pressure diffuser", - "Entities.gmod_subway_ezh3.Buttons.Back2.!Heater": "The heater" -} -]] diff --git a/lua/metrostroi_data/languages_/en_spawner.lua b/lua/metrostroi_data/languages_/en_spawner.lua deleted file mode 100644 index 1257ac9..0000000 --- a/lua/metrostroi_data/languages_/en_spawner.lua +++ /dev/null @@ -1,223 +0,0 @@ -return [[ -{ - "Lang": "en", - "Name": "English", - - "Spawner.Title": "Train spawner", - "Spawner.Trains1": "Trains", - "Spawner.Trains2": "Max for you", - "Spawner.WagNum": "Wagons", - "Spawner.AutoCouple": "Automatically couple wagons", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Lighter", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "ARS panel type", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Standard(square lamps)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Standard(round lamps)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Kiev/SPB", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Old ARS", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Brake lever type", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Mask type", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 bumper 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 bumper 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Retro", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "LED", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "BPSN type", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Old sound high tone", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Old sound medium tone", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Standard(from SPB)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Standard(TKL)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Standard", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Kiev", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Old", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Standard 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Standard 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "No sound(BPN-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "New contoller model", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Ring sound", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Old", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Standard with low tone", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Standard with high tone", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Standard intermittent with low tone", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Standard intermittent with high tone", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Battery", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Circuit breakers on", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Random circuit breakers", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "HV switch", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Parking brake", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Board lamps type", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Horizontal", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Vertical", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "MVM sign", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Handrails type", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Old", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "New", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Seats type", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Old", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "New", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Lamps type", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Right side circuit breakers", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Adverts type", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Type 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Type 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Type 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "No adverts", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Line scheme", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Invert scheme", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Battery", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "HV switch", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Random train protection panel circuit breakers", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Enable all train circuit breakers", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Disable circuit breakers like in depot", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Random wagon protection panel circuit breakers", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Open right doors", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Line scheme", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Invert scheme", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Battery", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Enable all train circuit breakers", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Random circuit breakers", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Open right doors", - - "Entities.gmod_subway_ezh.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_ezh.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_ezh.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_ezh.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_ezh.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_ezh.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_ezh.Spawner.Battery.Name": "Turn on battery", - "Entities.gmod_subway_ezh.Spawner.AV8B.Name": "Enable AV8B", - "Entities.gmod_subway_ezh.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_ezh.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_ezh.Spawner.GV.Name": "Enable HV switch", - - "Entities.gmod_subway_em508.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_em508.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_em508.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_em508.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_em508.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_em508.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_em508.Spawner.Battery.Name": "Turn on battery", - "Entities.gmod_subway_em508.Spawner.AV8B.Name": "Enable AV8B", - "Entities.gmod_subway_em508.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_em508.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_em508.Spawner.GV.Name": "Enable HV switch", - - "Entities.gmod_subway_ezh3.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_ezh3.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_ezh3.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_ezh3.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_ezh3.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_ezh3.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_ezh3.Spawner.Battery.Name": "Turn on battery", - "Entities.gmod_subway_ezh3.Spawner.AV8B.Name": "Enable AV8B", - "Entities.gmod_subway_ezh3.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_ezh3.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_ezh3.Spawner.GV.Name": "Enable HV switch", - - "Entities.gmod_subway_81-717_lvz.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-717_lvz.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_81-717_lvz.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_81-717_lvz.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_81-717_lvz.Spawner.Lighter.Name": "Lighter", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.Name": "Brake lever type", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.Name": "Mask type", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.1": "1-4-1", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.2": "2-2(down)-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.3": "2-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.4": "2-2-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.5": "1-3-1", - "Entities.gmod_subway_81-717_lvz.Spawner.LED.Name": "LED", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.Name": "BPSN type", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.1": "Old sound high tone", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.2": "Old sound medium tone", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.3": "Standard(from SPB)", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.4": "Standard(TKL)", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.5": "Standard", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.6": "Kiev", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.7": "Old", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.8": "Standard 2", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.9": "Standard 3", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.10": "No sound(BPN-115)", - "Entities.gmod_subway_81-717_lvz.Spawner.NewKV.Name": "New contoller model", - "Entities.gmod_subway_81-717_lvz.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.Name": "Ring sound", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.1": "Old", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.2": "Standard with low tone", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.3": "Standard with high tone", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.4": "Standard intermittent with low tone", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.5": "Standard intermittent with high tone", - "Entities.gmod_subway_81-717_lvz.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_81-717_lvz.Spawner.Battery.Name": "Turn on battery", - "Entities.gmod_subway_81-717_lvz.Spawner.Switches.Name": "Circuit breakers on", - "Entities.gmod_subway_81-717_lvz.Spawner.SwitchesR.Name": "Random circuit breakers", - "Entities.gmod_subway_81-717_lvz.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_81-717_lvz.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_81-717_lvz.Spawner.GV.Name": "Enable HV switch", - "Entities.gmod_subway_81-717_lvz.Spawner.PB.Name": "Enable parking brake", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.Name": "Board lamps type", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.1": "Horizontal", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.2": "Vertical", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.Name": "Handrails type", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.1": "Old", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.2": "New", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.Name": "Seats type", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.1": "Old", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.2": "New", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.Name": "Lamps type", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.1": "Type 1", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.2": "Type 2", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.3": "Type 3", - "Entities.gmod_subway_81-717_lvz.Spawner.Breakers.Name": "Right side circuit breakers", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.Name": "Adverts type", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.1": "Type 1", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.2": "Type 2", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.3": "Type 3", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.4": "No adverts", - - "Entities.gmod_subway_81-703.Spawner.Texture.Name": "Skin", - "Entities.gmod_subway_81-703.Spawner.PassTexture.Name": "Interior texture", - "Entities.gmod_subway_81-703.Spawner.CabTexture.Name": "Cabin texture", - "Entities.gmod_subway_81-703.Spawner.Announcer.Name": "Announcer", - "Entities.gmod_subway_81-703.Spawner.HornType.Name": "SPB horn", - "Entities.gmod_subway_81-703.Spawner.NM.Name": "Train line pressure", - "Entities.gmod_subway_81-703.Spawner.Battery.Name": "Turn on battery", - "Entities.gmod_subway_81-703.Spawner.AV8B.Name": "Enable AV8B", - "Entities.gmod_subway_81-703.Spawner.DoorsL.Name": "Open left doors", - "Entities.gmod_subway_81-703.Spawner.DoorsR.Name": "Open right doors", - "Entities.gmod_subway_81-703.Spawner.GV.Name": "Enable HV switch", - - "Spawner.Close": "Close", - "Spawner.Spawn": "Done" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_717.lua b/lua/metrostroi_data/languages_/ru_717.lua deleted file mode 100644 index 58d58e7..0000000 --- a/lua/metrostroi_data/languages_/ru_717.lua +++ /dev/null @@ -1,8 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - -} -]] diff --git a/lua/metrostroi_data/languages_/ru_base.lua b/lua/metrostroi_data/languages_/ru_base.lua deleted file mode 100644 index cb21c29..0000000 --- a/lua/metrostroi_data/languages_/ru_base.lua +++ /dev/null @@ -1,94 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - "Panel.Admin": "Админ", - "Panel.Client": "Клиент", - "Panel.DrawDebugInfo": "Отображать отладочную информацию", - "Panel.DisableCamAccel": "Откл. симуляцию качания головы", - "Panel.DisableHoverText": "Откл. всплывающий текст", - "Panel.DrawCams": "Отрисовывать камеры", - "Panel.FOV": "Поле зрения", - - "Train.Common.Camera0": "Место машиниста", - - "Train.Buttons.Sealed": "Запломбировано", - - "Entities.gmod_subway_base.Name": "База метропоездов", - "Entities.gmod_subway_81-703.Name": "E", - "Entities.gmod_subway_81-703_2.Name": "E (промежуточный)", - "Entities.gmod_subway_81-717_mvm.Name": "81-717(МВМ головной)", - "Entities.gmod_subway_81-717_lvz.Name": "81-717(ЛВЗ головной)", - "Entities.gmod_subway_81-714_mvm.Name": "81-714(МВМ промежуточный)", - "Entities.gmod_subway_81-714_lvz.Name": "81-714(ЛВЗ промежуточный)", - "Entities.gmod_subway_81-7036.Name": "81-7036 (не работоспособен)", - "Entities.gmod_subway_81-7037.Name": "81-7037 (не работоспособен)", - "Entities.gmod_subway_81-720.Name": "81-720 (головной)", - "Entities.gmod_subway_81-721.Name": "81-721 (промежуточный)", - "Entities.gmod_subway_81-722.Name": "81-722 (головной)", - "Entities.gmod_subway_81-723.Name": "81-723 (промежуточный моторный)", - "Entities.gmod_subway_81-724.Name": "81-724 (промежуточный немоторный)", - "Entities.gmod_subway_e.Name": "Е (стар)", - "Entities.gmod_subway_em.Name": "Ем", - "Entities.gmod_subway_ema.Name": "Ема", - "Entities.gmod_subway_ezh.Name": "Еж", - "Entities.gmod_subway_ezh1.Name": "Еж1", - "Entities.gmod_subway_em508.Name": "Ем-508", - "Entities.gmod_subway_em508_int.Name": "Ем-508 *промежуточный)", - "Entities.gmod_subway_ezh3.Name": "Еж3", - "Entities.gmod_subway_ezh3ru1.Name": "Еж3 РУ1", - "Entities.gmod_subway_ema508t.Name": "Ем-508Т", - "Entities.gmod_subway_tatra_t3.Name": "Татра Т3", - "Entities.gmod_subway_ai.Name": "Поезд с ИИ", - - "Entities.gmod_train_bogey.Name": "Тележка вагона", - "Entities.gmod_train_couple.Name": "Сцепка", - - "Entities.gmod_track_pui.Name": "ПУИ", - "Entities.gmod_track_mus_elektronika7.Name": "Часы \"Электроника\"", - "Entities.gmod_mus_clock_analog.Name": "Стрелочные часы", - "Entities.gmod_track_clock_time.Name": "Большие интервальные часы(время)", - "Entities.gmod_track_clock_small.Name": "Маленькие интервальные часы", - "Entities.gmod_track_clock_interval.Name": "Большие интервальные часы(интервал)", - "Entities.gmod_track_switch.Name": "Путевая стрелка", - "Entities.gmod_track_powermeter.Name": "Измеритель напряжения", - "Entities.gmod_track_controller.Name": "Диспечерский пульт(не работает)", - "Entities.gmod_track_udochka.Name": "Удочка", - "Entities.gmod_train_spawner.Name": "Спавнер поездов", - - "Train.703.VU": "Выключатель управления", - "Train.703.Breakers1" : "Батареи", - "Train.703.Breakers2" : "Автоматы", - "Train.703.RCARS" : "РЦ-АРС", - "Train.703.Left" : "Панель помощника", - "Train.703.Parking" : "УАВА и ручной тормоз", - "Train.703.ASNP" : "АСНП", - "Train.703.IGLA" : "ИГЛА", - "Train.717.Breakers1": "Центральные автоматы", - "Train.717.VB1": "Панель с РЦ", - "Train.717.Breakers2": "Правые автоматы", - "Train.717.VB2": "Нижняя панель с РЦ", - "Train.717.UAVA": "УАВА", - "Train.717.Pneumo": "Пневматические краны", - "Train.717.Helpers": "Пульт помощника", - "Train.717.Block4": "4 блок", - "Train.717.IGLA": "ИГЛА", - "Train.717.ASNP" : "АСНП", - "Train.720.CameraCond": "Панель кондиционеров", - "Train.720.CameraPPZ": "Панель поездной защиты", - "Train.720.CameraPV": "Панель вспомогательных кнопок", - "Train.720.CameraASNP": "АСНП", - "Train.720.CameraVityaz": "САУ Витязь", - "Train.720.CameraKRMH": "Кран КРМШ", - "Train.720.CameraPVZ": "Панель вагонной защиты", - "Train.722.Breakers": "Автоматы поездной защиты", - "Train.722.PU2_1": "Панель кнопок", - "Train.722.PU2_2": "Панель выключателей", - "Train.722.Vityaz": "Экран САУ Витязь", - "Train.722.SARMAT": "Экран БМ ЦИК САРМАТ", - "Train.722.CabLights": "Панель освещения кабины", - "Train.722.Route": "Установка номера маршрута", - "Train.722.Disconnects": "Концевые краны", - "Train.722.KRMH": "Выключатель КРМШ и РВТБ" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_703.lua b/lua/metrostroi_data/languages_/ru_buttons_703.lua deleted file mode 100644 index ed08e6e..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_703.lua +++ /dev/null @@ -1,142 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - - "Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program1Set": "Программа 1", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.R_Program2Set": "Программа 2", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-703.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_81-703.Buttons.Meters.!TotalVoltmeter": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_81-703.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_81-703.Buttons.AV2.RSTToggle": "РСТ: Радиостанция", - "Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-703.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-703.Buttons.Back2.!HVFuses": "Блок высоковольтных предохранителей", - "Entities.gmod_subway_81-703.Buttons.Back2.!DVR": "Дверной воздухораспределитель", - "Entities.gmod_subway_81-703.Buttons.Main.RK": "Лампа: Вращение реостатного контроллера)", - "Entities.gmod_subway_81-703.Buttons.Main.GreenRP": "Лампа: Зелёная РП (сигнализация перегрузки на поезде)", - "Entities.gmod_subway_81-703.Buttons.Main.RedRP": "Лампа: Красная РП", - "Entities.gmod_subway_81-703.Buttons.Main.Blue": "Лампа: Сигнализация дверей", - "Entities.gmod_subway_81-703.Buttons.Main.DIPonSet": "Вкл. Осв.: Включение освещения", - "Entities.gmod_subway_81-703.Buttons.Main.DIPoffSet": "Выкл. Осв.: Отключение освещения (звонок)", - "Entities.gmod_subway_81-703.Buttons.Main.VozvratRPSet": "ВРП: Возврат РП", - "Entities.gmod_subway_81-703.Buttons.Main.KSNSet": "КСН: Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)", - "Entities.gmod_subway_81-703.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_81-703.Buttons.Main.KSDSet": "КСД: Контроль сигнализации дверей(проверка СД)", - "Entities.gmod_subway_81-703.Buttons.Main.KDPSet": "КДП: Правые двери", - "Entities.gmod_subway_81-703.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_81-703.Buttons.Main.KU1Toggle": "МК: Включение мотор-компрессора", - "Entities.gmod_subway_81-703.Buttons.Main.VUD1Toggle": "ВУД: Закрытие дверей", - "Entities.gmod_subway_81-703.Buttons.Main.KRPSet": "КРП: Резервный пуск (ручное управление)", - "Entities.gmod_subway_81-703.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины\n", - "Entities.gmod_subway_81-703.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)\n", - "Entities.gmod_subway_81-703.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)\n", - "Entities.gmod_subway_81-703.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_81-703.Buttons.Lamp.L_3Toggle": "Лампа: Подсветка приборов", - "Entities.gmod_subway_81-703.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-703.Buttons.VU.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_81-703.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-703.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_81-703.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_81-703.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_81-703.Buttons.PneumaticPanels.!CylinderPressure": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_81-703.Buttons.Battery.VBToggle": "ВБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_81-703.Buttons.Battery.R_RadioToggle": "Питание радиоинформатора +50В", - "Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-703.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPMenuSet": "Информатор: Меню", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPUpSet": "Информатор: Вверх", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPDownSet": "Информатор: Вниз", - "Entities.gmod_subway_81-703.Buttons.ASNP.R_ASNPOnToggle": "Информатор: Включение", - "Entities.gmod_subway_81-703.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-703.Buttons.PassengerDoor.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_81-703.Buttons.KRR.KRRToggle": "KРР: Кнопка разворота реверсоров", - "Entities.gmod_subway_81-703.Buttons.VU4.VUSToggle": "Переключатель: Ближний свет/Дальний свет", - "Entities.gmod_subway_81-703.Buttons.CabinDoor.CabinDoor1": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-703.Buttons.Tsepi.!BatteryVoltage": "Напряжение цепей управления", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ", - "Entities.gmod_subway_81-703.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", - "Entities.gmod_subway_81-703.Buttons.Back1.R_UNchToggle": "УНЧ: Усилитель низких частот(звук салона)", - "Entities.gmod_subway_81-703.Buttons.Back1.IGLAToggle": "АСОТП: ИГЛА", - "Entities.gmod_subway_81-703.Buttons.Back1.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_81-703.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_81-703.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-703.Buttons.Speedometer.!Speedometer": "Скоростемер", - "Entities.gmod_subway_81-703.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - - - "Entities.gmod_subway_81-703_2.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.R_Program1Set": "Программа 1", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.R_Program2Set": "Программа 2", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VUD2LToggle": "Блокировка ВУД2", - "Entities.gmod_subway_81-703_2.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_81-703_2.Buttons.PneumaticPanels.!CylinderPressure": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_81-703_2.Buttons.Battery.VBToggle": "ВБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_81-703_2.Buttons.Battery.R_RadioToggle": "Питание радиоинформатора +50В", - "Entities.gmod_subway_81-703_2.Buttons.Meters.!TotalVoltmeter": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_81-703_2.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_81-703_2.Buttons.AV2.RSTToggle": "РСТ: Радиостанция", - "Entities.gmod_subway_81-703_2.Buttons.PassengerDoor.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_81-703_2.Buttons.VU4.VUSToggle": "Переключатель: Ближний свет/Дальний свет", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины\n", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)\n", - "Entities.gmod_subway_81-703_2.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)\n", - "Entities.gmod_subway_81-703_2.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_81-703_2.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_81-703_2.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - "Entities.gmod_subway_81-703_2.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-703_2.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.Tsepi.!BatteryVoltage": "Напряжение цепей управления", - "Entities.gmod_subway_81-703_2.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_81-703_2.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_81-703_2.Buttons.Back2.!HVFuses": "Блок высоковольтных предохранителей", - "Entities.gmod_subway_81-703_2.Buttons.Back2.!DVR": "Дверной воздухораспределитель", - "Entities.gmod_subway_81-703_2.Buttons.Main.RK": "Лампа: Вращение реостатного контроллера)", - "Entities.gmod_subway_81-703_2.Buttons.Main.GreenRP": "Лампа: Зелёная РП (сигнализация перегрузки на поезде)", - "Entities.gmod_subway_81-703_2.Buttons.Main.RedRP": "Лампа: Красная РП", - "Entities.gmod_subway_81-703_2.Buttons.Main.Blue": "Лампа: Сигнализация дверей", - "Entities.gmod_subway_81-703_2.Buttons.Main.DIPonSet": "Вкл. Осв.: Включение освещения", - "Entities.gmod_subway_81-703_2.Buttons.Main.DIPoffSet": "Выкл. Осв.: Отключение освещения", - "Entities.gmod_subway_81-703_2.Buttons.Main.VozvratRPSet": "ВРП: Возврат РП", - "Entities.gmod_subway_81-703_2.Buttons.Main.KSNSet": "КСН: Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)", - "Entities.gmod_subway_81-703_2.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_81-703_2.Buttons.Main.KSDSet": "КСД: Контроль сигнализации дверей(проверка СД)", - "Entities.gmod_subway_81-703_2.Buttons.Main.KDPSet": "КДП: Правые двери", - "Entities.gmod_subway_81-703_2.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_81-703_2.Buttons.Main.KU1Toggle": "МК: Включение мотор-компрессора", - "Entities.gmod_subway_81-703_2.Buttons.Main.VUD1Toggle": "ВУД: Закрытие дверей", - "Entities.gmod_subway_81-703_2.Buttons.Main.KRPSet": "КРП: Резервный пуск (ручное управление)", - "Entities.gmod_subway_81-703_2.Buttons.KRR.KRRToggle": "KРР: Кнопка разворота реверсоров", - "Entities.gmod_subway_81-703_2.Buttons.Back1.R_ZSToggle": "ЗС: Выключатель усиления громкоговорителя, звук в салоне", - "Entities.gmod_subway_81-703_2.Buttons.Back1.IGLAToggle": "АСОТП: ИГЛА Вкл. (вверх)/Выкл. (вниз)", - "Entities.gmod_subway_81-703_2.Buttons.Back1.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-703_2.Buttons.CabinDoor.CabinDoor1": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-703_2.Buttons.Lamp.L_3Toggle": "Лампа: Подсветка приборов", - "Entities.gmod_subway_81-703_2.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-703_2.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_81-703_2.Buttons.VU.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_81-703_2.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-703_2.Buttons.Speedometer.!Speedometer": "Скоростемер", -"Entities.gmod_subway_81-703_2.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_717.lua b/lua/metrostroi_data/languages_/ru_buttons_717.lua deleted file mode 100644 index 23a4731..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_717.lua +++ /dev/null @@ -1,318 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program2Helper": "Программа 2", - "Entities.gmod_subway_81-717_mvm.Buttons.HelperPanel.R_Program1Helper": "Программа 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:RC1Toggle": "РЦ-1: Разъединитель цепей АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery_2.1:UOSToggle": "РЦ-УОС: Устройство ограничения скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.Wiper.WiperToggle": "Дворник", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Клапан разобщения", - "Entities.gmod_subway_81-717_mvm.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_UNchToggle": "УНЧ: Усилитель низких частот", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_ZSToggle": "ЭС: Контроль экстренной связи", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_GToggle": "Громкоговоритель", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_RadioToggle": "Радиоинформатор (встроеный)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program1Set": "Программа 1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_Program2Set": "Программа 2", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.2:KVTSet": "КБ: Кнопка Бдительности", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VZ1Set": "ВЗ1: Вентиль замещения №1", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VUD1Toggle": "ВУД: Выключатель управления дверьми", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLKToggle": "Крышка кнопки КДЛ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KDLRKToggle": "Крышка кнопки ВДЛ", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DoorSelectToggle": "Выбор стороны открытия дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.R_VPRToggle": "ВПР: Включение поездной радиосвязи", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.VozvratRPSet": "Возврат реле перегрузки", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.GreenRPLight": "РП: Зелёная лампа реле перегрузки", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.AVULight": "АВУ: Автоматический выключатель управления", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.LKVPLight": "ЛКВП: Контроль высоковольного преобразователя", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.SPLight": "ЛСП: Лампа сигнализации пожара", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ConverterProtectionSet": "Защита преобразователя", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.KSNSet": "КСН: Кнопка сигнализации неисправности", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.DIPoffSet": "Звонок", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ARSToggle": "АРС: Включение системы автоматического регулирования скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSToggle": "АЛС: Включение системы автоматической локомотивной сигнализации", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.OtklAVUToggle": "ОтклАВУ: Отключение автоматического выключения управления (неисправность АВУ)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.TormATToggle": "(placeholder)", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_1Toggle": "Освещение салона", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_2Toggle": "Освещение кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.L_3Toggle": "Освещение пульта", - "Entities.gmod_subway_81-717_mvm.Buttons.Main.ALSFreqToggle": "Дешифратор: Переключение режима приёмных катушек 1/5 или 2/6", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA3Set": "ИГЛА: Третья кнопка", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA4Set": "ИГЛА: Четвёртая кнопка", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.!Voltage": "Напряжение цепей управления", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.VMKToggle": "Включение мотор-компрессора", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.BPSNonToggle": "БПСН: Блок питания собственных нужд", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_mvm.Buttons.BPSNFront.ARS13Set": "АРС 13В: Проверка стабилизированого напряжения АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_mvm.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!CylinderPressure": "Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_81-717_mvm.Buttons.PneumaticPanels.!LinePressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.RC1Toggle": "РЦ-1: Разъединитель цепей АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.UOSToggle": "РЦ-УОС: Устройство ограничения скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.Battery.VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPMenuSet": "АСНП: Меню", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPUpSet": "АСНП: Вверх", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPDownSet": "АСНП: Вниз", - "Entities.gmod_subway_81-717_mvm.Buttons.ASNP.R_ASNPOnToggle": "АСНП: Включение", - "Entities.gmod_subway_81-717_mvm.Buttons.RearDoor.RearDoor": "Передняя дверь", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalVoltmeter": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_81-717_mvm.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A61Toggle": "A61 Управление 6ым поездным проводом", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A55Toggle": "A55 Управление проводом 10АС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A21Toggle": "A21 Управление дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A10Toggle": "A10 Управление мотор-компрессором", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A43Toggle": "A43 Питание АРС 12В", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A45Toggle": "A45 АРС провод 10АУ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A42Toggle": "A42 Питание АРС 75В", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A41Toggle": "A41 Торможение АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.VUToggle": "VU Управление поезда", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A64Toggle": "A64 Включение освещения кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A63Toggle": "A63 ИГЛА/БИС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A14Toggle": "A14 18 провод", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A75Toggle": "A75 Отопление кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A62Toggle": "A62 Радиосвязь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A29Toggle": "A29 Радио опевещение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A6Toggle": "A6 Тормоз 1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A30Toggle": "A30 Серводвигатель реостатного контроллера", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A39Toggle": "A39 Резервное управление", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A44Toggle": "A44 Резервное управление поезда", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A80Toggle": "A80 Серводвигатель переключателя положений", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A65Toggle": "A65 Освещение салона", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.L_5Toggle": "А49 Аварийное освещение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A7Toggle": "A7 Красный фонарь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A9Toggle": "A9 Красный фонарь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A46Toggle": "A46 Фары белые", - "Entities.gmod_subway_81-717_mvm.Buttons.AV.A47Toggle": "A47 Фары белые", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-717_mvm.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-717_mvm.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.L_4Toggle": "Выключатель фар", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VUSToggle": "ВУС: Выключатель усиленого света ходовых фар", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VAHToggle": "ВАХ: Включение аварийного хода (неисправность реле педали безопасности)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.VADToggle": "ВАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KRPSet": "КРП: Кнопка резервного пуска", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHSet": "КАХ: Кнопка аварийного хода", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KAHKToggle": "Крышка кнопки КАХ", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KUP": "Контроль печи", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPSet": "КДП: Кнопка правых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.KDPKToggle": "Крышка кнопки КДП", - "Entities.gmod_subway_81-717_mvm.Buttons.Front.PN": "Контроль пневмотормоза", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A61Toggle": "A61 Управление 6ым поездным проводом", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A55Toggle": "A55 Управление проводом 10АС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A21Toggle": "A21 Управление дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A10Toggle": "A10 Управление мотор-компрессором", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A43Toggle": "A43 Питание АРС 12В", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A45Toggle": "A45 АРС провод 10АУ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A42Toggle": "A42 Питание АРС 75В", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A41Toggle": "A41 Торможение АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:VUToggle": "VU Управление поезда", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A64Toggle": "A64 Включение освещения кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A63Toggle": "A63 ИГЛА/БИС", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A14Toggle": "A14 18 провод", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A75Toggle": "A75 Отопление кабины", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A62Toggle": "A62 Радиосвязь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A29Toggle": "A29 Радио опевещение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A6Toggle": "A6 Тормоз 1", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A30Toggle": "A30 Серводвигатель реостатного контроллера", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A39Toggle": "A39 Резервное управление", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A44Toggle": "A44 Резервное управление поезда", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A80Toggle": "A80 Серводвигатель переключателя положений", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A65Toggle": "A65 Освещение салона", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:L_5Toggle": "А49 Аварийное освещение", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A7Toggle": "A7 Красный фонарь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A9Toggle": "A9 Красный фонарь", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A46Toggle": "A46 Фары белые", - "Entities.gmod_subway_81-717_mvm.Buttons.AV_1.1:A47Toggle": "A47 Фары белые", - "Entities.gmod_subway_81-717_mvm.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserDown": "Реверсор назад", - "Entities.gmod_subway_81-717_mvm.Buttons.Reverser.KVReverserUp": "Реверсор вперёд", - "Entities.gmod_subway_81-717_mvm.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_81-717_mvm.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_81-717_mvm.Buttons.EPKDisconnect.EPKToggle": "Кран ЭПВ", - "Entities.gmod_subway_81-717_mvm.Buttons.Help.ShowHelp": "Помощь в вождении поезда", - "Entities.gmod_subway_81-717_mvm.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - "Entities.gmod_subway_81-714_mvm.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.RearDoor.RearDoor": "Передняя дверь", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A65Toggle": "A65 Освещение салона", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A63Toggle": "A63 ИГЛА/БИС", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A10Toggle": "A10 Управление мотор-компрессором", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A30Toggle": "A30 Серводвигатель реостатного контроллера", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Left.A80Toggle": "A80 Серводвигатель переключателя положений", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontPneumatic.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-714_mvm.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - "Entities.gmod_subway_81-714_mvm.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-714_mvm.Buttons.Battery.VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.KRPSet": "ПУСК: Кнопка пуска", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VozvratRPSet": "Возврат реле перегрузки", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.VMKToggle": "Включение мотор-компрессора", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.BPSNonToggle": "БПСН: Блок питания собственных нужд", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A6Toggle": "A6 Tормоз 1", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A39Toggle": "A39 Резервное управление", - "Entities.gmod_subway_81-714_mvm.Buttons.AV_Right.A14Toggle": "A14 18 провод", - - - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer1": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!Speedometer2": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARSOch": "ОЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS0": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!ARS80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD1": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSD2": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLVD": "1: Лампа включения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLHRK": "2: Лампа хода реостатного контроллера", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLST": "6: Лампа сигнализации торможения", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLRD": "ДВ", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampRP": "РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampLKT": "ЛКТ: Контроль тормоза", - "Entities.gmod_subway_81-717_mvm.Buttons.KiyvARS.!LampDV": "ДВ", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.IGLA23": "ИГЛА: Вторая и третья кнопка", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAFire": "ИГЛА: Пожар", - "Entities.gmod_subway_81-717_mvm.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Неисправность", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer1": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!Speedometer2": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARSOch": "ОЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS0": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!ARS80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD1": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSD2": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLHRK": "ЛхРК: Лампа хода реостатного контроллера", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampRP": "РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLN": "ЛН: Лампа направления", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKT": "ЛКТ: Контроль тормоза", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLRS": "ЛРС: Лампа равенства скоростей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLVD": "ЛВД: Лампа включения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.RoundARS.!LampLST": "ЛСТ: Лампа сигнализации торможения", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer1": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!Speedometer2": "Индикатор скорости", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARSOch": "ОЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS0": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!ARS80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD1": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSD2": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLVD": "ЛВД: Лампа включения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLHRK": "2: Лампа хода реостатного контроллера", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLST": "6: Лампа сигнализации торможения", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampRP": "РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKVC": "ЛКВЦ: Лампа контактора высоковольтных цепей", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLKT": "ЛКТ: Контроль тормоза", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLEKK": "ГЛЕБ: Лампа работы Глеба", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLN": "ЛН: Лампа направления", - "Entities.gmod_subway_81-717_mvm.Buttons.SquareARS.!LampLRS": "ЛРС: Лампа равенства скоростей" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_717_lvz.lua b/lua/metrostroi_data/languages_/ru_buttons_717_lvz.lua deleted file mode 100644 index 15414e2..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_717_lvz.lua +++ /dev/null @@ -1,293 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - - "Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_81-717_lvz.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:RC1Toggle": "РЦ-1: Разъединитель цепей АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:BPSToggle": "РЦ-БПС: Блок противоскатывания", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:BUDToggle": "БУД: Блок управления дверьми", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery_2.1:VRDToggle": "ВРД: Выключатель разрешающий движение (под 0)", - "Entities.gmod_subway_81-717_lvz.Buttons.VRD1.VRDToggle": "ВРД: Выключатель разрешающий движение (под 0)", - "Entities.gmod_subway_81-717_lvz.Buttons.Wiper.WiperToggle": "Дворник", - "Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_UNchToggle": "УНЧ: Усилитель низких частот", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_ZSToggle": "ЭС: Контроль экстренной связи", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_GToggle": "Громкоговоритель", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.R_UPOToggle": "УПО: Информатор", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.2:KVTSet": "КБ: Кнопка Бдительности", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VZ1Set": "ВЗ1: Вентиль замещения №1", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VUD1Toggle": "ВУД: Выключатель управления дверьми", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLKToggle": "Крышка кнопки КДЛ", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLRSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KDLRKToggle": "Крышка кнопки ВДЛ", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.DoorSelectToggle": "Выбор стороны открытия дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.VozvratRPSet": "Возврат реле перегрузки", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.GreenRPLight": "РП: Зелёная лампа реле перегрузки", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.AVULight": "АВУ: Автоматический выключатель управления", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.LKVPLight": "ЛКВП: Контроль высоковольного преобразователя", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.SPLight": "ЛСП: Лампа сигнализации пожара", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ConverterProtectionSet": "Converter protection", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.KSNSet": "КСН: Кнопка сигнализации неисправности", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.DIPoffSet": "Звонок", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ARSToggle": "АРС: Включение системы автоматического регулирования скорости", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.ALSToggle": "АЛС: Включение системы автоматической локомотивной сигнализации", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.TormATToggle": "(placeholder)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.OtklAVUToggle": "ОтклАВУ: Отключение автоматического выключения управления (неисправность АВУ)", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_1Toggle": "Освещение салона", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_2Toggle": "Освещение кабины", - "Entities.gmod_subway_81-717_lvz.Buttons.Main.L_3Toggle": "Освещение пульта", - "Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA23": "ИГЛА: Вторая и третья кнопка", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA3Set": "ИГЛА: Третья кнопка", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.IGLA4Set": "ИГЛА: Четвёртая кнопка", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.!IGLAFire": "ИГЛА: Пожар", - "Entities.gmod_subway_81-717_lvz.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Неисправность", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A61Toggle": "A61 Управление 6ым поездным проводом", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A55Toggle": "A55 Управление проводом 10АС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A21Toggle": "A21 Управление дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A10Toggle": "A10 Управление мотор-компрессором", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A43Toggle": "A43 Питание АРС 12В", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A45Toggle": "A45 АРС провод 10АУ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A42Toggle": "A42 Питание АРС 75В", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A41Toggle": "A41 Торможение АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:VUToggle": "ВУ Управление поезда", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A64Toggle": "A64 Включение освещения кабины", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A63Toggle": "A63 ИГЛА/БИС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A14Toggle": "A14 18 провод", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A75Toggle": "A75 Отопление кабины", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A62Toggle": "A62 Радиосвязь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A29Toggle": "A29 Радио опевещение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A6Toggle": "A6 Тормоз 1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A30Toggle": "A30 Серводвигатель реостатного контроллера", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A39Toggle": "A39 Резервное управление", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A44Toggle": "A44 Резервное управление поезда", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A80Toggle": "A80 Серводвигатель переключателя положений", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A65Toggle": "A65 Освещение салона", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:L_5Toggle": "А49 Аварийное освещение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A7Toggle": "A7 Красный фонарь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A9Toggle": "A9 Красный фонарь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A46Toggle": "A46 Фары белые", - "Entities.gmod_subway_81-717_lvz.Buttons.AV_1.1:A47Toggle": "A47 Фары белые", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!RouteNum": "М №\nRoute number", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!PathNum": "П №\nPath number", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchTime": "ВРЕМЯ ХОДА\nTotal schedule time", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchInterval": "ИНТ\nTrain interval", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchHour": "ЧАС\nHour", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchMin": "МИН\nMinute", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchSec": "СЕК\nSecond", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchArrival": "Arrival times", - "Entities.gmod_subway_81-717_lvz.Buttons.Schedule.!SchStations": "Station name", - "Entities.gmod_subway_81-717_lvz.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_81-717_lvz.Buttons.PneumaticPanels.!CylinderPressure": "Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_81-717_lvz.Buttons.PneumaticPanels.!LinePressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.BPSToggle": "РЦ-БПС: Блок противоскатывания", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.RC1Toggle": "РЦ-1: Разъединитель цепей АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.BUDToggle": "БУД: Блок управления дверьми", - "Entities.gmod_subway_81-717_lvz.Buttons.Battery.VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!Speedometer1": "Индикатор скорости", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!Speedometer2": "Индикатор скорости", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSOch": "НЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS0": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARS80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSD1": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSD2": "ЛСД: Сигнализация дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLVD": "1: Лампа включения двигателей", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLHRK": "2: Лампа хода реостатного контроллера", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLST": "6: Лампа сигнализации торможения", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLRD": "ЛРД", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampRP": "РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLSN": "ЛСН: Лампа сигнализации неисправности", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLKVD": "ЛКВД: Контроль выключения двигателей", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampLKT": "ЛКТ: Контроль тормоза", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!LampDV": "ДВ: Датчик вращения", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!SpeedFact1": "Скорость", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!SpeedFact2": "Скорость", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL20": "НЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.SPBARS.!ARSL80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake2.1:ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-717_lvz.Buttons.RearDoor.RearDoor": "Передняя дверь", - "Entities.gmod_subway_81-717_lvz.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-717_lvz.Buttons.Meters.!TotalVoltmeter": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_81-717_lvz.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A61Toggle": "A61 Управление 6ым поездным проводом", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A55Toggle": "A55 Управление проводом 10АС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A21Toggle": "A21 Управление дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A10Toggle": "A10 Управление мотор-компрессором", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A43Toggle": "A43 Питание АРС 12В", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A45Toggle": "A45 АРС провод 10АУ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A42Toggle": "A42 Питание АРС 75В", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A41Toggle": "A41 Торможение АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.VUToggle": "ВУ Управление поезда", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A64Toggle": "A64 Включение освещения кабины", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A63Toggle": "A63 ИГЛА/БИС", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A14Toggle": "A14 18 провод", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A75Toggle": "A75 Отопление кабины", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A62Toggle": "A62 Радиосвязь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A29Toggle": "A29 Радио опевещение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A5Toggle": "A5 ", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A6Toggle": "A6 Тормоз 1", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A30Toggle": "A30 Серводвигатель реостатного контроллера", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A39Toggle": "A39 Резервное управление", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A44Toggle": "A44 Резервное управление поезда", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A80Toggle": "A80 Серводвигатель переключателя положений", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A65Toggle": "A65 Освещение салона", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.L_5Toggle": "А49 Аварийное освещение", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A7Toggle": "A7 Красный фонарь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A9Toggle": "A9 Красный фонарь", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A46Toggle": "A46 Фары белые", - "Entities.gmod_subway_81-717_lvz.Buttons.AV.A47Toggle": "A47 Фары белые", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.L_4Toggle": "Выключатель фар", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VUSToggle": "ВУС: Выключатель усиленого света ходовых фар", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VADToggle": "ВАД: Включение аварийного закрытия дверей (неисправность реле контроля дверей)", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.VAHToggle": "ВАХ: Включение аварийного хода (неисправность реле педали безопасности)", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KRPSet": "КРП: Кнопка резервного пуска", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KDPSet": "КДП: Кнопка правых дверей", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.KDPKToggle": "Крышка кнопки КДП", - "Entities.gmod_subway_81-717_lvz.Buttons.Front.PN": "Контроль пневмотормоза", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.!Voltage": "Напряжение цепей управления", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.VMKToggle": "Включение мотор-компрессора", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.BPSNonToggle": "БПСН: Блок питания собственных нужд", - "Entities.gmod_subway_81-717_lvz.Buttons.BPSNFront.ARS13Set": "АРС 13В: Проверка стабилизированого напряжения АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-717_lvz.Buttons.ParkingBrake.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!K16": "НЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!OS": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!AVT": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI1": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!KI2": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARSOch": "НЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS0": "0: Сигнал АРС остановки", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.!ARS80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KHSet": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.KSZDSet": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VAVToggle": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PUAVN.VZPToggle": "", - "Entities.gmod_subway_81-717_lvz.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-717_lvz.Buttons.Reverser.KVReverserDown": "Реверсор назад", - "Entities.gmod_subway_81-717_lvz.Buttons.Reverser.KVReverserUp": "Реверсор вперёд", - "Entities.gmod_subway_81-717_lvz.Buttons.EPKDisconnect.EPKToggle": "Кран ЭПВ", - "Entities.gmod_subway_81-717_lvz.Buttons.Help.ShowHelp": "Помощь в вождении поезда", - "Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_81-717_lvz.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveDisconnectToggle": "Клапан разобщения", - "Entities.gmod_subway_81-717_lvz.Buttons.DriverValveDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-717_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - - - - "Entities.gmod_subway_81-714_lvz.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.RearDoor.RearDoor": "Задняя дверь", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A65Toggle": "A65 Interior lighting", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A56Toggle": "A56 Включение аккумуляторной батареи", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A63Toggle": "A63 IGLA/BIS", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A10Toggle": "A10 Motor-compressor control", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A30Toggle": "A30 Rheostat controller motor power", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Left.A80Toggle": "A80 Power circuit mode switch motor power", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontPneumatic.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-714_lvz.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - "Entities.gmod_subway_81-714_lvz.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-714_lvz.Buttons.Battery.VBToggle": "ВБ: Выключатель батареи", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A54Toggle": "A54 Управление проводом 10АК", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A27Toggle": "A27 Включение ДИП и освещения", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A24Toggle": "A24 Заряд аккумуляторной батареи", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A53Toggle": "A53 Питание КВЦ", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A13Toggle": "A13 Сигнализация дверей", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A32Toggle": "A32 Открытие правых дверей", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A31Toggle": "A31 Открытие левых дверей", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A16Toggle": "A16 Закрытие дверей", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A12Toggle": "A12 Резервное закрытие дверей", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A50Toggle": "A50 ДИП и освещение включение", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A51Toggle": "A51 ДИП и освещение отключение", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A1Toggle": "A1 Ход 1", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.KRPSet": "ПУСК: Кнопка пуска", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.VozvratRPSet": "Возврат реле перегрузки", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.VMKToggle": "Включение мотор-компрессора", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.BPSNonToggle": "БПСН: Блок питания собственных нужд", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A2Toggle": "A2 Ход 2", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A3Toggle": "A3 Ход 3", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A17Toggle": "A17 Возврат РП", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A5Toggle": "A5 ", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A6Toggle": "A6 Tормоз 1", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A8Toggle": "A8 Вентиль #1, #2", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A20Toggle": "A20 Ход 1, 20 провод", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A25Toggle": "A25 Торможение ручное", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A22Toggle": "A22 Включение КК", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A23Toggle": "A23 Резервное включение мотор-компрессора", - "Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A39Toggle": "A39 Резервное управление", -"Entities.gmod_subway_81-714_lvz.Buttons.AV_Right.A14Toggle": "A14 18 провод" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_720.lua b/lua/metrostroi_data/languages_/ru_buttons_720.lua deleted file mode 100644 index 188a0d6..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_720.lua +++ /dev/null @@ -1,237 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF1Set": "Витязь: F1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF2Set": "Витязь: Следующая страница", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF3Set": "Витязь: Предыдущая страница", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF4Set": "Витязь: Штатный режим", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz1Set": "Витязь: 1", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz4Set": "Витязь: 4", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz7Set": "Витязь: 7", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz2Set": "Витязь: 2", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz5Set": "Витязь: 5", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz8Set": "Витязь: 8", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz0Set": "Витязь: 0", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz3Set": "Витязь: 3", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz6Set": "Витязь: 6", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.Vityaz9Set": "Витязь: 9", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF5Set": "Витязь: ЗВ", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF6Set": "Витязь: Вверх\\Скорость", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF7Set": "Витязь: Вниз\\Токи", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF8Set": "Витязь: Ввод\\Вагонное оборудование", - "Entities.gmod_subway_81-720.Buttons.VityazButtons.VityazF9Set": "Витязь: Выбор\\Управление вагонным оборудованием", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX1Set": "Ход 1 резервный", - "Entities.gmod_subway_81-720.Buttons.RV.EmerX2Set": "Ход 2 резервный", - "Entities.gmod_subway_81-720.Buttons.RV.EmerCloseDoorsSet": "Закрытие дверей резервное", - "Entities.gmod_subway_81-720.Buttons.RV.EmergencyDoorsToggle": "Двери резервные", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode-": "Режим работы вентилятора: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentCondMode+": "Режим работы вентилятора: -", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode+": "+", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentHeatMode-": "-", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode-": "Сила вентилятора: +", - "Entities.gmod_subway_81-720.Buttons.BackVent.VentStrengthMode+": "Сила вентилятора: -", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV1Toggle": "SF1: Питание цепей управления вагона", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV2Toggle": "SF2: Питание БУВ", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV3Toggle": "SF3: Питание БУТП", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV4Toggle": "SF4: БУТП Управление", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV5Toggle": "SF5: БУТП Управление резервное", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV6Toggle": "SF6: БУТП Питание", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV7Toggle": "SF7: ББЭ", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV8Toggle": "SF8: БВ управление", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV9Toggle": "SF9: БВ питание", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV10Toggle": "SF10: ППО", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV11Toggle": "SF11: Мотор-компрессор", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV12Toggle": "SF12: Двери закрытие", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV13Toggle": "SF13: Двери открытие левых", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV14Toggle": "SF14: Двери открытие правых", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV15Toggle": "SF15: Двери торцевые", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV16Toggle": "SF16: Оповещение", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV17Toggle": "SF17: Экстренная связь", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV18Toggle": "SF18: Резерв", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV19Toggle": "SF19: Освещение салона питание", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV20Toggle": "SF20: Освещение салона аварийное", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV21Toggle": "SF21: Датчик скорости", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV22Toggle": "SF22: Тормоз стояночный", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV23Toggle": "SF23: Вентиляция управление 1-я группа", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV24Toggle": "SF24: Вентиляция управление 2-я группа", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV25Toggle": "SF25: Вентиляция питание 1-я группа", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV26Toggle": "SF26: Вентиляция питание 2-я группа", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV27Toggle": "SF27: Питание возбудителя FIXME", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV28Toggle": "SF28: Питание ЗКК FIXME", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV29Toggle": "SF29: Токоприёмники", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV30Toggle": "SF30: Табло", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV31Toggle": "SF31: Резерв", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV32Toggle": "SF32: Резерв", - "Entities.gmod_subway_81-720.Buttons.PVZ.SFV33Toggle": "SF33: Резерв", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPMenuSet": "АСНП: Меню", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPUpSet": "АСНП: Вверх", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPDownSet": "АСНП: Вниз", - "Entities.gmod_subway_81-720.Buttons.ASNP.R_ASNPOnToggle": "АСНП: Включение", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper1.!BrakeCylinder": "Тормозной цилиндр", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF1Toggle": "SF1: Питание общее", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF2Toggle": "SF2: Управление основное", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF3Toggle": "SF3: Управление резервное", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF4Toggle": "SF4: БАРС", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF5Toggle": "SF5: БУП", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF6Toggle": "SF6: БКЦУ", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF7Toggle": "SF7: ППО", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF8Toggle": "SF8: Оповещение", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF9Toggle": "SF9: Радиосвязь", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF10Toggle": "SF10: Ориентация вагона", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF11Toggle": "SF11: Направление движения", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF12Toggle": "SF12: Фары 1-й группы", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF13Toggle": "SF13: Фары 2-й группы", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF14Toggle": "SF14: Огни габаритные", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF15Toggle": "SF15: Освещение кабины", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF16Toggle": "SF16: Отопление", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF17Toggle": "SF17: Кондиционер кабины", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF18Toggle": "SF18: Гребнесмазыватель", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF19Toggle": "SF19: Питание КРМ основное", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF20Toggle": "SF20: Питание КРМ резервное", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF21Toggle": "SF21: Двери открытие", - "Entities.gmod_subway_81-720.Buttons.BackPPZ.SF22Toggle": "SF22: Двери закрытие", - "Entities.gmod_subway_81-720.Buttons.BTO.K29Toggle": "КРМШ", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor2.PassengerDoor": "Дверь в кабину машиниста из салона\nPass door", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!HV": "Киловольтметр высокого напряжения(контактный рельс)", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I1_3": "Ток 1-й группы тяговых двигателей", - "Entities.gmod_subway_81-720.Buttons.VoltHelper2.!I2_4": "Ток 2-й группы тяговых двигателей", - "Entities.gmod_subway_81-720.Buttons.GV.GVToggle": "Разъединитель БРУ (ГВ)", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-720.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-720.Buttons.RearDoor1.RearDoor": "Передняя дверь\nFront door", - "Entities.gmod_subway_81-720.Buttons.RearDoor.RearDoor": "Передняя дверь\nFront door", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant1Toggle": "Отжатие токоприёмников 1-й группы", - "Entities.gmod_subway_81-720.Buttons.BackDown.Pant2Toggle": "Отжатие токоприёмников 2-й группы", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent1Toggle": "Вентиляция 1-я группа", - "Entities.gmod_subway_81-720.Buttons.BackDown.Vent2Toggle": "Вентиляция 2-я группа", - "Entities.gmod_subway_81-720.Buttons.BackDown.VentToggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.PassLightToggle": "Освещение салона", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightToggle": "Освещение кабины", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights1Toggle": "Фары 1-я группа", - "Entities.gmod_subway_81-720.Buttons.BackDown.Headlights2Toggle": "Фары 2-я группа", - "Entities.gmod_subway_81-720.Buttons.BackDown.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-720.Buttons.BackDown.TorecDoorsToggle": "Двери торцевые", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBERToggle": "ББЭ Резервнео включение", - "Entities.gmod_subway_81-720.Buttons.BackDown.BBEToggle": "ББЭ", - "Entities.gmod_subway_81-720.Buttons.BackDown.CompressorToggle": "Компрессор", - "Entities.gmod_subway_81-720.Buttons.BackDown.CabLightStrengthToggle": "Сила освещения кабины", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights1Toggle": "Освещение аппаратного отсека", - "Entities.gmod_subway_81-720.Buttons.BackDown.AppLights2Toggle": "", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock-": "Блокировка неисправных БАРСов: -", - "Entities.gmod_subway_81-720.Buttons.BackDown.BARSBlock+": "Блокировка неисправных БАРСов: +", - "Entities.gmod_subway_81-720.Buttons.BackDown.BatteryToggle": "Выключатель батареи", - "Entities.gmod_subway_81-720.Buttons.BackDown.ALSFreqToggle": "Дешифратор АЛС", - "Entities.gmod_subway_81-720.Buttons.VoltHelper1.!Battery": "Вольтметр бортовой сети(батарея)", - "Entities.gmod_subway_81-720.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона\nPass door", - "Entities.gmod_subway_81-720.Buttons.CabinDoorR.CabinDoorRight": "Дверь в кабину машиниста\nCabin door", - "Entities.gmod_subway_81-720.Buttons.CabinDoorL.CabinDoorLeft": "Дверь в кабину машиниста\nCabin door", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-720.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectLToggle": "Выбор левых дверей", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorSelectRToggle": "Выбор правых дверей", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorBlockToggle": "Блокировка дверей", - "Entities.gmod_subway_81-720.Buttons.PUL.!DoorLeftLamp": "Работа кнопки левых дверей", - "Entities.gmod_subway_81-720.Buttons.PUL.DoorLeftSet": "Левые двери", - "Entities.gmod_subway_81-720.Buttons.PUU.!DoorsClosed": "Двери закрыты", - "Entities.gmod_subway_81-720.Buttons.PUU.StandToggle": "Стоянка", - "Entities.gmod_subway_81-720.Buttons.PUU.TickerToggle": "Бегущая строка", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHToggle": "КАХ", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSToggle": "АЛС", - "Entities.gmod_subway_81-720.Buttons.PUU.FDepotToggle": "Выезд из депо", - "Entities.gmod_subway_81-720.Buttons.PUU.!HVoltage": "Сеть контактная", - "Entities.gmod_subway_81-720.Buttons.PUU.PassSchemeToggle": "Табло наддверное", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyCompressorSet": "Компрессор резервный", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVSet": "Включение защиты", - "Entities.gmod_subway_81-720.Buttons.PUU.DisableBVSet": "Отключение БВ", - "Entities.gmod_subway_81-720.Buttons.PUU.RingSet": "Передача управления(звонок)", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program2Set": "Программа 2", - "Entities.gmod_subway_81-720.Buttons.PUU.R_AnnouncerToggle": "Информатор", - "Entities.gmod_subway_81-720.Buttons.PUU.R_LineToggle": "Линия", - "Entities.gmod_subway_81-720.Buttons.PUU.R_EmerSet": "Связь экстренная", - "Entities.gmod_subway_81-720.Buttons.PUU.R_Program1Set": "Пуск записи", - "Entities.gmod_subway_81-720.Buttons.PUU.EnableBVEmerSet": "Возврат БВ резервный", - "Entities.gmod_subway_81-720.Buttons.PUU.EmergencyControlsToggle": "Управление резервное", - "Entities.gmod_subway_81-720.Buttons.PUU.WiperToggle": "Стекло-очиститель", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop": "Допустимая скорость", - "Entities.gmod_subway_81-720.Buttons.PUU.!VFact": "Фактическая скорость", - "Entities.gmod_subway_81-720.Buttons.PUU.!VPred": "Предупредительная скорость", - "Entities.gmod_subway_81-720.Buttons.PUU.!VDop2": "Допустимая скорость", - "Entities.gmod_subway_81-720.Buttons.PUU.!Acc": "Ускорение", - "Entities.gmod_subway_81-720.Buttons.PUU.!Forw": "Движение вперёд", - "Entities.gmod_subway_81-720.Buttons.PUU.!Back": "Движение назад", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeAddSet": "(резервный) Тормоз", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeReleaseSet": "(резервный) Отпуск", - "Entities.gmod_subway_81-720.Buttons.PUR.EmerBrakeToggle": "Тормоз резервный", - "Entities.gmod_subway_81-720.Buttons.PUR.EmergencyBrakeToggle": "Тормоз экстренный", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorCloseToggle": "Закрытие дверей", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionMessageSet": "Восприятие сообщения", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionSet": "Бдительность", - "Entities.gmod_subway_81-720.Buttons.PUR.AttentionBrakeSet": "Восприятие торможения", - "Entities.gmod_subway_81-720.Buttons.PUR.HornBSet": "Сигнал", - "Entities.gmod_subway_81-720.Buttons.PUR.DoorRightSet": "Прав двери", - "Entities.gmod_subway_81-720.Buttons.PUR.!DoorRightLamp": "Работа кнопки правых дверей", - "Entities.gmod_subway_81-720.Buttons.PneumoHelper2.!BrakeTrainLine": "Красная - тормозная, чёрная - напорная магистраль", - - "Entities.gmod_subway_81-721.Buttons.GV.GVToggle": "Разъединитель БРУ (ГВ)", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-721.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-721.Buttons.FrontDoor.FrontDoor": "Передняя дверь\nFront door", - "Entities.gmod_subway_81-721.Buttons.RearDoor.RearDoor": "Задняя дверь\nRear door", - "Entities.gmod_subway_81-721.Buttons.Battery.BatteryToggle": "Батарея", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV1Toggle": "SF1: Питание цепей управления вагона", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV2Toggle": "SF2: Питание БУВ", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV3Toggle": "SF3: Питание БУТП", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV4Toggle": "SF4: БУТП Управление", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV5Toggle": "SF5: БУТП Управление резервное", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV6Toggle": "SF6: БУТП Питание", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV7Toggle": "SF7: ББЭ", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV8Toggle": "SF8: БВ управление", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV9Toggle": "SF9: БВ питание", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV10Toggle": "SF10: ППО", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV11Toggle": "SF11: Мотор-компрессор", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV12Toggle": "SF12: Двери закрытие", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV13Toggle": "SF13: Двери открытие левых", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV14Toggle": "SF14: Двери открытие правых", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV15Toggle": "SF15: Двери торцевые", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV16Toggle": "SF16: Оповещение", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV17Toggle": "SF17: Экстренная связь", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV18Toggle": "SF18: Резерв", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV19Toggle": "SF19: Освещение салона питание", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV20Toggle": "SF20: Освещение салона аварийное", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV21Toggle": "SF21: Датчик скорости", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV22Toggle": "SF22: Тормоз стояночный", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV23Toggle": "SF23: Вентиляция управление 1-я группа", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV24Toggle": "SF24: Вентиляция управление 2-я группа", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV25Toggle": "SF25: Вентиляция питание 1-я группа", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV26Toggle": "SF26: Вентиляция питание 2-я группа", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV27Toggle": "SF27: Питание возбудителя FIXME", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV28Toggle": "SF28: Питание ЗКК FIXME", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV29Toggle": "SF29: Токоприёмники", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV30Toggle": "SF30: Табло", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV31Toggle": "SF31: Резерв", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV32Toggle": "SF32: Резерв", - "Entities.gmod_subway_81-721.Buttons.PVZ.SFV33Toggle": "SF33: Резерв", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-721.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП(Сработка огнетушителей)", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ(Пожар)", - "Entities.gmod_subway_81-720.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", - "Entities.gmod_subway_81-720.Buttons.PUU.KAHkToggle": "Крышка кнопки КАХ", - "Entities.gmod_subway_81-720.Buttons.PUU.ALSkToggle": "Крышка кнопки АЛС", - "Entities.gmod_subway_81-720.Buttons.PUR.AccelRateSet": "Темп разгона(Режим подъём)", - - "Entities.gmod_subway_81-720.Buttons.BTO.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_722.lua b/lua/metrostroi_data/languages_/ru_buttons_722.lua deleted file mode 100644 index a52cb6a..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_722.lua +++ /dev/null @@ -1,219 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - - "Entities.gmod_subway_81-722.Buttons.StopKran.UAVAToggle": "Выключатель автостопа", - "Entities.gmod_subway_81-722.Buttons.StopKran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_81-722.Buttons.PU2.ARSToggle": "АРС: Автоматическое регулирвоание скорости", - "Entities.gmod_subway_81-722.Buttons.PU2.ALSToggle": "АЛС:Автоматическая локомотивная сигнализация", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassWasherSet": "Омыватель стекла", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner+": "Стеклоочиститель(вверх)", - "Entities.gmod_subway_81-722.Buttons.PU2.GlassCleaner-": "Стеклоочиститель(вниз)", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusKToggle": "Крышка кнопки Аварийный тормоз \"Т+\"", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeTPlusSet": "Аварийный тормоз \"Т+\"", - "Entities.gmod_subway_81-722.Buttons.PU2.EmergencyBrakeToggle": "Экстренное торможение", - "Entities.gmod_subway_81-722.Buttons.PU2.VigilanceSet": "Бдительность", - "Entities.gmod_subway_81-722.Buttons.PU2.Headlights+": "Фары(вверх)", - "Entities.gmod_subway_81-722.Buttons.PU2.Headlights-": "Фары(вниз)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorSelectToggle": "Выбор стороны дверей", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorClose+": "Закрытие дверей(вверх)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorClose-": "Закрытие дверей(вниз)", - "Entities.gmod_subway_81-722.Buttons.PU2.DoorRightSet": "Открытие правых дверей", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatUpSet": "САРМАТ: Вверх", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatDownSet": "САРМАТ: Вниз", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEnterSet": "САРМАТ: Enter", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatEscSet": "САРМАТ: Esc", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF1Set": "САРМАТ: F1", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF2Set": "САРМАТ: F2", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF3Set": "САРМАТ: F3", - "Entities.gmod_subway_81-722.Buttons.SarmatButtons.SarmatF4Set": "САРМАТ: F4", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LRD": "ЛРД: Лампа разрешающая движение(разрешение движения под 0)", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LPT": "ЛПТ: Лампа включение пневмотормоза", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!RS": "Р/С: Лампа аварийного питания радиостанции", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!AVS": "АВС Лампа низкого давления ТМ", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!LSD": "ЛСД: Лампа сигнализации закрытия дверей", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!RU": "РУ: Лампа выключения Реле Управления", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!04": "НЧ: Лампа отсутствия частоты (0км\\ч)", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!00": "0: Лампа ограничения в 0км\\ч", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!40": "40: Лампа ограничения в 40км\\ч", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!60": "60 Лампа ограничения в 60км\\ч", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!70": "70: Лампа ограничения в 70км\\ч", - "Entities.gmod_subway_81-722.Buttons.HelperLamps.!80": "80: Лампа ограничения в 80км\\ч", - "Entities.gmod_subway_81-722.Buttons.CabinDoorL.CabinDoorLeft": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatPathSet": "САРМАТ: Путь", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatLineSet": "САРМАТ: Линия", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatZeroSet": "САРМАТ: >0<", - "Entities.gmod_subway_81-722.Buttons.BMP.SarmatStartSet": "САРМАТ: Пуск", - "Entities.gmod_subway_81-722.Buttons.BTO.K29Toggle": "КРМШ", - "Entities.gmod_subway_81-722.Buttons.BTO.K9Toggle": "РВТБ", - "Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-722.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber1Set": "Первая цифра", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber2Set": "Вторая цифра", - "Entities.gmod_subway_81-722.Buttons.RouteNumberSet.RouteNumber3Set": "Третья цифра", - "Entities.gmod_subway_81-722.Buttons.RearDoor.RearDoor": "Задняя дверь", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLightToggle": "Освещение кабины", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight-": "Освещение кабины(влево)", - "Entities.gmod_subway_81-722.Buttons.Lighting.CabinLight+": "Освещение кабины(вправо)", - "Entities.gmod_subway_81-722.Buttons.Lighting.PanelLightToggle": "Освещение пульта", - "Entities.gmod_subway_81-722.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-722.Buttons.PU1.MirrorHeatingSet": "Отопление зеркал", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft2Set": "Двери левые", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorBackSet": "Открытие правых дверей хвостового вагона", - "Entities.gmod_subway_81-722.Buttons.PU1.EmergencyDriveSet": "Аварийный ход", - "Entities.gmod_subway_81-722.Buttons.PU1.MicrophoneSet": "Микрофон", - "Entities.gmod_subway_81-722.Buttons.PU1.DoorLeft1Set": "Двери левые", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF1Toggle": "SF1:Бортовая сеть (управление)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF2Toggle": "SF2:Активная кабина", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF3Toggle": "SF3:Управление основное", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF4Toggle": "SF4:Управление резервное", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF5Toggle": "SF5:Управление РВТБ", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF6Toggle": "SF6:Питание крана машиниста", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF7Toggle": "SF7:Двери(управление)", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF8Toggle": "SF8:БАРС 1", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF9Toggle": "SF9:БАРС 2", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF00Toggle": "SF00:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF01Toggle": "SF01:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF10Toggle": "SF10:БРПИ-М1", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF11Toggle": "SF11:БРПИ-М2", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF12Toggle": "SF12:Пожарная система", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF13Toggle": "SF13:Токоприёмник, короткозамыкатель", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF02Toggle": "SF02:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF14Toggle": "SF14:Радиосвязь 1", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF15Toggle": "SF15:Радиосвязь 2", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF16Toggle": "SF16:ЦИС 1", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF17Toggle": "SF17:ЦИС 2", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF18Toggle": "SF18:ЦИС 3", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF19Toggle": "SF19:БУКП, УПИ", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF20Toggle": "SF20:Монитор", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF21Toggle": "SF21:Ориентация", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF22Toggle": "SF22:Габаритные огни АБ", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF23Toggle": "SF23:Фары, габаритные огни", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF24Toggle": "SF24:СОСД", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF25Toggle": "SF25:Освещение кабины", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF26Toggle": "SF26:Кондиционер кабины", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF27Toggle": "SF27:Стеклоочиститель, омыватель, гудок", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF03Toggle": "SF03:", - "Entities.gmod_subway_81-722.Buttons.PPZ.SF04Toggle": "SF04:", - "Entities.gmod_subway_81-722.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_81-722.Buttons.CabinDoorR.CabinDoorRight": "Дверь в кабину машиниста", - "Entities.gmod_subway_81-722.Buttons.PPZB.PSNToggleSet": "Зарядка АКБ", - "Entities.gmod_subway_81-722.Buttons.PPZB.BattOnSet": "Включение источника питания бортовой сети", - "Entities.gmod_subway_81-722.Buttons.PPZB.BattOffSet": "Отключение источника питания бортовой сети", - "Entities.gmod_subway_81-722.Buttons.PPZB.TorecDoorUnlockSet": "Разблокировка торцевых дверей", - "Entities.gmod_subway_81-722.Buttons.PPZB.SCEnable": "Короткозамыкатель", - "Entities.gmod_subway_81-722.Buttons.PPZB.SOSD": "СОСД", - "Entities.gmod_subway_81-722.Buttons.Isolations.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-722.Buttons.Isolations.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-722.Buttons.BI3.KRO+": "Направление движения(вверх)", - "Entities.gmod_subway_81-722.Buttons.BI3.KRO-": "Направление движения(вниз)", - "Entities.gmod_subway_81-722.Buttons.BI3.RingSet": "Звонок", - "Entities.gmod_subway_81-722.Buttons.BI3.Compressor-": "Компрессоры(-)", - "Entities.gmod_subway_81-722.Buttons.BI3.Compressor+": "Компрессоры(+)", - "Entities.gmod_subway_81-722.Buttons.BI3.!BrakeCylinder": "Тормозной цилиндр", - "Entities.gmod_subway_81-722.Buttons.BI3.!BrakeTrainLine": "Красная - тормозная, чёрная - напорная магистраль", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF31Toggle": "SF31:Поездной питающий провод", - "Entities.gmod_subway_81-722.Buttons.PVZ.1:SF31Toggle": "SF31:Поездной питающий провод", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF32Toggle": "SF32:Бортовая сеть управление", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF33Toggle": "SF33:Питание цепей управления", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF34Toggle": "SF34:ЦИС левый", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF35Toggle": "SF35:ЦИС правый", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF36Toggle": "SF36:Бортовая сигнализация", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF37Toggle": "SF37:Отжатие токоприёмников", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF38Toggle": "SF38:Резерв", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF41Toggle": "SF41:Двери открытие левые", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF42Toggle": "SF42:Двери открытие правые", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF43Toggle": "SF43:Двери закрытие", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF44Toggle": "SF44:Двери торцевые", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF45Toggle": "SF45:Освещение салона питание", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF46Toggle": "SF46:Освещение салона аварийное", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF47Toggle": "SF47:Вентиляция 1 группа", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF48Toggle": "SF48:Вентиляция 2 группа", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF49Toggle": "SF49:Счётчик", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF51Toggle": "SF51:БУВ", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF52Toggle": "SF52:БОДВ", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF53Toggle": "SF53:ПСН", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF54Toggle": "SF54:Осушитель", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF55Toggle": "SF55:БУФТ", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF56Toggle": "SF56:Инвертор инвертор", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF57Toggle": "SF57:Инвертор обогрев", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF58Toggle": "SF58:ЦУВ основное", - "Entities.gmod_subway_81-722.Buttons.PVZ.SF59Toggle": "SF59:ЦУВ резервное", - "Entities.gmod_subway_81-722.Buttons.PVM.PassLightToggle": "Освещение салона", - "Entities.gmod_subway_81-722.Buttons.PVM.PassVent-": "Вентиляция салона(-)", - "Entities.gmod_subway_81-722.Buttons.PVM.PassVent+": "Вентиляция салона(+)", - "Entities.gmod_subway_81-722.Buttons.PVM.VKFToggle": "ВКФ", - "Entities.gmod_subway_81-722.Buttons.PVM.ParkingBrakeToggle": "Стояночный тормоз", - "Entities.gmod_subway_81-722.Buttons.PVM.VRDToggle": "ВРД", - "Entities.gmod_subway_81-722.Buttons.PVM.SOSDEnableToggle": "СОСД", - "Entities.gmod_subway_81-722.Buttons.PVM.VRU-": "ВРУ(-)", - "Entities.gmod_subway_81-722.Buttons.PVM.VRU+": "ВРУ(+)", - "Entities.gmod_subway_81-722.Buttons.PVM.VADToggle": "Движение без контроля дверей", - "Entities.gmod_subway_81-722.Buttons.PVM.VAHToggle": "Движение без педали бдительности", - "Entities.gmod_subway_81-722.Buttons.PVM.EmergencyRadioPowerToggle": "Аварийное питание радиостанции", - "Entities.gmod_subway_81-722.Buttons.PVM.BARSMode-": "Режимы БАРС(влево)", - "Entities.gmod_subway_81-722.Buttons.PVM.BARSMode+": "Режимы БАРС(вправо)", - "Entities.gmod_subway_81-722.Buttons.PVM.PantSC-": "Токоприёмники и короткозамыкатель(-)", - "Entities.gmod_subway_81-722.Buttons.PVM.PantSC+": "Токоприёмники и короткозамыкатель(+)", - "Entities.gmod_subway_81-722.Buttons.PVM.RCARSToggle": "РЦ АРС", - - "Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-723.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-723.Buttons.RearDoor.RearDoor": "Задняя дверь", - "Entities.gmod_subway_81-723.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-723.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF31Toggle": "SF31:Поездной питающий провод", - "Entities.gmod_subway_81-723.Buttons.PVZ.1:SF31Toggle": "SF31:Поездной питающий провод", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF32Toggle": "SF32:Бортовая сеть управление", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF33Toggle": "SF33:Питание цепей управленяи", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF34Toggle": "SF34:ЦИС левый", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF35Toggle": "SF35:ЦИС правый", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF36Toggle": "SF36:Бортовая сигнализация", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF37Toggle": "SF37:Отжатие токоприёмников", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF38Toggle": "SF38:Резерв", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF41Toggle": "SF41:Двери открытие левые", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF42Toggle": "SF42:Двери открытие правые", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF43Toggle": "SF43:Двери закрытие", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF44Toggle": "SF44:Двери торцевые", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF45Toggle": "SF45:Освещение салона питание", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF46Toggle": "SF46:Освещение салона аварийное", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF47Toggle": "SF47:Вентиляция 1 группа", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF48Toggle": "SF48:Вентиляция 2 группа", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF49Toggle": "SF49:Счётчик", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF51Toggle": "SF51:БУВ", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF52Toggle": "SF52:БОДВ", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF53Toggle": "SF53:ПСН", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF54Toggle": "SF54:Осушитель", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF55Toggle": "SF55:БУФТ", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF56Toggle": "SF56:Инвертор инвертор", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF57Toggle": "SF57:Инвертор обогрев", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF58Toggle": "SF58:ЦУВ основное", - "Entities.gmod_subway_81-723.Buttons.PVZ.SF59Toggle": "SF59:ЦУВ резервное", - - "Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-724.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-724.Buttons.RearDoor.RearDoor": "Задняя дверь", - "Entities.gmod_subway_81-724.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_81-724.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF34Toggle": "SF34:ЦИС левый", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF35Toggle": "SF35:ЦИС правый", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF36Toggle": "SF36:Бортовая сигнализация", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF41Toggle": "SF41:Двери открытие левые", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF42Toggle": "SF42:Двери открытие правые", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF43Toggle": "SF43:Двери закрытие", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF44Toggle": "SF44:Двери торцевые", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF45Toggle": "SF45:Освещение салона питание", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF46Toggle": "SF46:Освещение салона аварийное", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF47Toggle": "SF47:Вентиляция 1 группа", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF48Toggle": "SF48:Вентиляция 2 группа", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF51Toggle": "SF51:БУВ", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF52Toggle": "SF52:БОДВ", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF53Toggle": "SF53:Резерв", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF54Toggle": "SF54:Резерв", - "Entities.gmod_subway_81-724.Buttons.PVZ.SF55Toggle": "SF55:БУФТ" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_em508.lua b/lua/metrostroi_data/languages_/ru_buttons_em508.lua deleted file mode 100644 index 795fee2..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_em508.lua +++ /dev/null @@ -1,157 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - - "Entities.gmod_subway_em508.Buttons.Back.BackDoor": "Задняя дверь", - "Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program1Set": "Программа 1", - "Entities.gmod_subway_em508.Buttons.HelperPanel.R_Program2Set": "Программа 2", - "Entities.gmod_subway_em508.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_em508.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_em508.Buttons.AV2.RSTToggle": "РСТ: Радиостанция", - "Entities.gmod_subway_em508.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508.Buttons.AVU.AVULight": "Лампа:Включен АВУ (Автоматический выключатель управления)", - "Entities.gmod_subway_em508.Buttons.AVU.OtklAVUToggle": "Отключение автоматического выключения управления (неисправность АВУ)", - "Entities.gmod_subway_em508.Buttons.Back2.!HVFuses": "Блок предохранителей", - "Entities.gmod_subway_em508.Buttons.Back2.!Relays": "Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель", - "Entities.gmod_subway_em508.Buttons.Back2.!Heater": "Печка", - "Entities.gmod_subway_em508.Buttons.Main.DoorSelectToggle": "Переключатель: Выбор стороны открытия дверей", - "Entities.gmod_subway_em508.Buttons.Main.DIPonSet": "Вкл. Осв.: Включение освещения", - "Entities.gmod_subway_em508.Buttons.Main.DIPoffSet": "Выкл. Осв.: Отключение освещения", - "Entities.gmod_subway_em508.Buttons.Main.VozvratRPSet": "ВРП: Возврат РП", - "Entities.gmod_subway_em508.Buttons.Main.KSNSet": "КСН:Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)", - "Entities.gmod_subway_em508.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_em508.Buttons.Main.KSDSet": "КСД: Контроль сигнализации дверей(проверка СД)", - "Entities.gmod_subway_em508.Buttons.Main.KDPSet": "КДП:Правые двери", - "Entities.gmod_subway_em508.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_em508.Buttons.Main.RezMKSet": "РМК: Резервное включение мотор-компрессора", - "Entities.gmod_subway_em508.Buttons.Main.KU1Toggle": "МК: Включение мотор-компрессора", - "Entities.gmod_subway_em508.Buttons.Main.VUD1Toggle": "ВУД: Закрытие дверей", - "Entities.gmod_subway_em508.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины\n", - "Entities.gmod_subway_em508.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение\n", - "Entities.gmod_subway_em508.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины\n", - "Entities.gmod_subway_em508.Buttons.Back1.!ULSPM": "УЭСПМ (Устройство связи пассажир-машинист)", - "Entities.gmod_subway_em508.Buttons.Back1.!TonalARS": "Тональное устройство - Звонок", - "Entities.gmod_subway_em508.Buttons.Back1.!PressureRelay": "Регулятор давления", - "Entities.gmod_subway_em508.Buttons.Back1.!Reproductor": "Громкоговоритель", - "Entities.gmod_subway_em508.Buttons.Back1.!LVFuses": "Щиток с низковольтными предохранителями", - "Entities.gmod_subway_em508.Buttons.Back1.R_UNchToggle": "Питание статива РРИ", - "Entities.gmod_subway_em508.Buttons.Lamp.L_3Toggle": "Лампа: Подсветка приборов", - "Entities.gmod_subway_em508.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_em508.Buttons.VU.VUToggle": "ВУ: Выключатель Управления", - "Entities.gmod_subway_em508.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_em508.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_em508.Buttons.LAMPS.SN": "Индикатор: Cигнализация неисправности", - "Entities.gmod_subway_em508.Buttons.LAMPS.RedRP": "Индикатор: Красная лампа реле перегрузки", - "Entities.gmod_subway_em508.Buttons.LAMPS.SD": "Индикатор: Сигнализация дверей", - "Entities.gmod_subway_em508.Buttons.LAMPS.GreenRP": "Индикатор: Зеленая лампа реле перегрузки", - "Entities.gmod_subway_em508.Buttons.LAMPS.UKS": "Индикатор: Устройство контроля скорости УКС-20М", - "Entities.gmod_subway_em508.Buttons.LAMPS.Red": "Индикатор: Обогрев кабины", - "Entities.gmod_subway_em508.Buttons.LAMPS.AGS": "Лампа: Работа АГС (Автоматический гребне смазыватель)", - "Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_em508.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_em508.Buttons.PneumaticPanels.!CylinderPressure": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_em508.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_em508.Buttons.Battery.R_RadioToggle": "Питание радиоинформатора +50В", - "Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPMenuSet": "Информатор: Меню", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPUpSet": "Информатор: Вверх", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPDownSet": "Информатор: Вниз", - "Entities.gmod_subway_em508.Buttons.ASNP.R_ASNPOnToggle": "Информатор: Включение", - "Entities.gmod_subway_em508.Buttons.VU1.KRPSet": "РРП: Резервный пуск ", - "Entities.gmod_subway_em508.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ", - "Entities.gmod_subway_em508.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", - "Entities.gmod_subway_em508.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.PrevSign": "Предыдущая надпись", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.NextSign": "Следующая надпись", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num2P": "Маршрут: Увеличить число 2", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num2M": "Маршрут: Уменьшить число 2", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num1P": "Маршрут: Увеличить число 1", - "Entities.gmod_subway_em508.Buttons.InfoTableSelect.Num1M": "Маршрут: Уменьшить число 1", - "Entities.gmod_subway_em508.Buttons.Front.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_em508.Buttons.KRR.KRRSet": "KРР: Кнопка разворота реверсоров", - "Entities.gmod_subway_em508.Buttons.AGS.VUSToggle": "Переключатель: Ближний свет/Дальний свет", - "Entities.gmod_subway_em508.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_em508.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_em508.Buttons.Back3.!RTM": "Пульт диспетчерской радиосвязи", - "Entities.gmod_subway_em508.Buttons.Back3.!ULSPMSpeaker": "Блок громкоговорителя связи пассажир-машинист", - "Entities.gmod_subway_em508.Buttons.Back3.!Amplifier": "Блок усилителя поездной радиостанции", - "Entities.gmod_subway_em508.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_em508.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - - - "Entities.gmod_subway_em508_int.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_em508_int.Buttons.Back.BackDoor": "Задняя дверь", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.R_Program1Set": "Программа 1", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.R_Program2Set": "Программа 2", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_em508_int.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_em508_int.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_em508_int.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_em508_int.Buttons.Battery.R_RadioToggle": "Питание радиоинформатора +50В", - "Entities.gmod_subway_em508_int.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508_int.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508_int.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - "Entities.gmod_subway_em508_int.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_em508_int.Buttons.VU1.KRPSet": "РРП: Резервный пуск ", - "Entities.gmod_subway_em508_int.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_em508_int.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_em508_int.Buttons.Front.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_em508_int.Buttons.Tsepi.!BatteryVoltage": "Напряжение цепей управления", - "Entities.gmod_subway_em508_int.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508_int.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.PrevSign": "Предыдущая надпись", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.NextSign": "Следующая надпись", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num2P": "Маршрут: Увеличить число 2", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num2M": "Маршрут: Уменьшить число 2", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num1P": "Маршрут: Увеличить число 1", - "Entities.gmod_subway_em508_int.Buttons.InfoTableSelect.Num1M": "Маршрут: Уменьшить число 1", - "Entities.gmod_subway_em508_int.Buttons.Back2.!HVFuses": "Блок предохранителей", - "Entities.gmod_subway_em508_int.Buttons.Back2.!Relays": "Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель", - "Entities.gmod_subway_em508_int.Buttons.Back2.!Heater": "Печка", - "Entities.gmod_subway_em508_int.Buttons.Main.GreenRP": "Лампа: Зеленая лампа реле перегрузки", - "Entities.gmod_subway_em508_int.Buttons.Main.RedRP": "Лампа: Красная лампа реле перегрузки", - "Entities.gmod_subway_em508_int.Buttons.Main.SD": "Лампа: Сигнализация дверей", - "Entities.gmod_subway_em508_int.Buttons.Main.DIPonSet": "Вкл. Осв.: Включение освещения", - "Entities.gmod_subway_em508_int.Buttons.Main.DIPoffSet": "Выкл. Осв.: Отключение освещения", - "Entities.gmod_subway_em508_int.Buttons.Main.VozvratRPSet": "ВРП: Возврат РП", - "Entities.gmod_subway_em508_int.Buttons.Main.KSNSet": "КСН:Принудительное срабатывание РП на неисправном вагоне (Сигнализация неисправности)", - "Entities.gmod_subway_em508_int.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_em508_int.Buttons.Main.KDPSet": "КДП:Правые двери", - "Entities.gmod_subway_em508_int.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_em508_int.Buttons.Main.KU1Toggle": "МК: Включение мотор-компрессора", - "Entities.gmod_subway_em508_int.Buttons.Main.VUD1Toggle": "ВУД: Закрытие дверей", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение", - "Entities.gmod_subway_em508_int.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины", - "Entities.gmod_subway_em508_int.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_em508_int.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_em508_int.Buttons.Lamp.L_3Toggle": "Лампа: Подсветка приборов", - "Entities.gmod_subway_em508_int.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_em508_int.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_em508_int.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_em508_int.Buttons.VU.VUToggle": "ВУ: Выключатель Управления", - "Entities.gmod_subway_em508_int.Buttons.PneumaticPanels.!CylinderPressure": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_em508_int.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508_int.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508_int.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_ezh.lua b/lua/metrostroi_data/languages_/ru_buttons_ezh.lua deleted file mode 100644 index 5527d26..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_ezh.lua +++ /dev/null @@ -1,148 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - "Entities.gmod_subway_ezh.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_ezh.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_ezh.Buttons.Meters.!TotalVoltmeter": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_ezh.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_ezh.Buttons.AV2.R_RadioToggle": "+50В: Блок управления РРИ и ПНМ (Включение радиоинформатора)", - "Entities.gmod_subway_ezh.Buttons.AV2.RSTToggle": "РСТ: Радиостанция", - "Entities.gmod_subway_ezh.Buttons.AV2.UOSToggle": "УОС: Тумблер ограничителя скорости ", - "Entities.gmod_subway_ezh.Buttons.AB1.AB1Set": "Переход системы АРС в режим АБ(кнопка машиниста)", - "Entities.gmod_subway_ezh.Buttons.KAH.KAHToggle": "ТАХ: Тумблер аварийного хода ", - "Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh.Buttons.AVU.AVULight": "Лампа:Включен АВУ (Автоматический выключатель управления)", - "Entities.gmod_subway_ezh.Buttons.AVU.OtklAVUToggle": "Отключение автоматического выключения управления (неисправность АВУ)", - "Entities.gmod_subway_ezh.Buttons.Main.DIPonSet": "Осв. Вкл.: Включение освещения", - "Entities.gmod_subway_ezh.Buttons.Main.DIPoffSet": "Осв. Выкл.: Выключение освещения (Звонок)", - "Entities.gmod_subway_ezh.Buttons.Main.KDPSet": "КДП:Правые двери", - "Entities.gmod_subway_ezh.Buttons.Main.KDLSet": "КДЛ: Левые дверей", - "Entities.gmod_subway_ezh.Buttons.Main.DoorSelectToggle": "Крышка выбора стороны открытия дверей", - "Entities.gmod_subway_ezh.Buttons.Main.KVTSet": "КВТ: Кнопка восприятия торможения (Отмена АРС)", - "Entities.gmod_subway_ezh.Buttons.Main.VUSToggle": "Переключатель: Ближний свет/Дальний свет", - "Entities.gmod_subway_ezh.Buttons.Main.ALSToggle": "Переключатель: АЛС", - "Entities.gmod_subway_ezh.Buttons.Main.ALSFreqToggle": "Переключатель: Дешифратор (АРС 2/6 вниз, АРС 1/5 вверх)", - "Entities.gmod_subway_ezh.Buttons.Main.ARSToggle": "Переключатель: АРС", - "Entities.gmod_subway_ezh.Buttons.Main.KU1Toggle": "МК:Включение мотор-компрессора", - "Entities.gmod_subway_ezh.Buttons.Main.KSNSet": "СН:Принудительное срабатывание РП на неисправном вагоне (сигнализация неисправности)", - "Entities.gmod_subway_ezh.Buttons.Main.VozvratRPSet": "КУ9:Возврат РП", - "Entities.gmod_subway_ezh.Buttons.Main.R_Program1Set": "Радиоинформатор: Программа 1", - "Entities.gmod_subway_ezh.Buttons.Main.VUD1Toggle": "ВУД: Закрытие дверей", - "Entities.gmod_subway_ezh.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_ezh.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины", - "Entities.gmod_subway_ezh.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)", - "Entities.gmod_subway_ezh.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)", - "Entities.gmod_subway_ezh.Buttons.Back1.!RignARS": "Тональное устройство АРС", - "Entities.gmod_subway_ezh.Buttons.Back1.!USPM": "УЛСПМ (Уствойство связи пассажир-машинист)", - "Entities.gmod_subway_ezh.Buttons.Back1.!AK": "Регулятор давления", - "Entities.gmod_subway_ezh.Buttons.Back1.!LVP": "Щиток с низковольтными предохранителями", - "Entities.gmod_subway_ezh.Buttons.RC1.RC1Toggle": "РЦР: Кулачковый разъединитель цепей АРС", - "Entities.gmod_subway_ezh.Buttons.Lamp.L_3Toggle": "Лампа: Подсветка приборов", - "Entities.gmod_subway_ezh.Buttons.DriverValveTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_ezh.Buttons.VU.VUToggle": "ВУ: Выключатель Управления", - "Entities.gmod_subway_ezh.Buttons.VU.RezMKSet": "КУ15:Резервное включение мотор-компрессора", - "Entities.gmod_subway_ezh.Buttons.VU.KRPSet": "Резервный пуск ", - "Entities.gmod_subway_ezh.Buttons.FrontDoor.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_ezh.Buttons.AB2.AB2Set": "Переход системы АРС в режим АБ(кнопка помощника машиниста)", - "Entities.gmod_subway_ezh.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_ezh.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_ezh.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_ezh.Buttons.PneumaticPanels.!BrakeCylinder": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_ezh.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPMenuSet": "Информатор: Меню", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPUpSet": "Информатор: Вверх", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPDownSet": "Информатор: Вниз", - "Entities.gmod_subway_ezh.Buttons.ASNP.R_ASNPOnToggle": "Информатор: Включение", - "Entities.gmod_subway_ezh.Buttons.Tsepi.!BatteryVoltage": "Напряжение батареи", - "Entities.gmod_subway_ezh.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_ezh.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_ezh.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L80": "80: Ограничение скорости 80 км/ч", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L70": "70: Ограничение скорости 70 км/ч", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L60": "60: Ограничение скорости 60 км/ч", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L40": "40: Ограничение скорости 40 км/ч", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!L0": "0: Ограничение скорости 0 км/ч", - "Entities.gmod_subway_ezh.Buttons.LampsALS.!LNF": "ОЧ: Отсутствие частоты АРС", - "Entities.gmod_subway_ezh.Buttons.DriverValveBLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_ezh.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ", - "Entities.gmod_subway_ezh.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", - "Entities.gmod_subway_ezh.Buttons.Lamps.!RedRP": "РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_ezh.Buttons.Lamps.!LPU": "Секвенция (Контроль правильности включения аппаратов в режимах тяги и торможения при отсутствии высокого напряжения)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!VD": "ВД: Светодиод контроля выключения двигателей (ЛКВД)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!KT": "КТ: Контроль тормоза(торможение эффективно)", - "Entities.gmod_subway_ezh.Buttons.Lamps.!AB": "Зеленая AБ: Следование по участку с автоблокировкой (некодируемый участок).", - "Entities.gmod_subway_ezh.Buttons.Lamps.!Doors": "Двери: Сигнализация дверей поезда", - "Entities.gmod_subway_ezh.Buttons.Lamps.!LN": "ЛН: Светодиод установленного направления движения для данного участка", - "Entities.gmod_subway_ezh.Buttons.Lamps.!Sbor": "Лампа СБОР: Ошибка сбора электрической схемы (Сигнализация неисправности)", - "Entities.gmod_subway_ezh.Buttons.EPKDisconnect.EPKToggle": "Кран ЭПК", - "Entities.gmod_subway_ezh.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)", - "Entities.gmod_subway_ezh.Buttons.KRR.KRRToggle": "KРР: Кнопка разворота реверсоров", - "Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - - - "Entities.gmod_subway_ezh1.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_ezh1.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_ezh1.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_ezh1.Buttons.PneumaticPanels.!CylinderPressure": "Тормозной манометр: Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_ezh1.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_ezh1.Buttons.Meters.!TotalVoltmerer": "Вольтметр высокого напряжения (кВ)", - "Entities.gmod_subway_ezh1.Buttons.Meters.!TotalAmpermeter": "Амперметр (А)", - "Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh1.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh1.Buttons.RearDoor.RearDoor": "Дверь из салона", - "Entities.gmod_subway_ezh1.Buttons.Tsepi.!BatteryVoltage": "Напряжение цепей управления", - "Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh1.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh1.Buttons.PassengerDoor.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_ezh1.Buttons.Back2.!HVFuses": "Блок предохранителей", - "Entities.gmod_subway_ezh1.Buttons.Back2.!Relays": "Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель", - "Entities.gmod_subway_ezh1.Buttons.Back2.!Heater": "Печка", - "Entities.gmod_subway_ezh1.Buttons.Main.RedRP": "Красная РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_ezh1.Buttons.Main.GreenRP": "Зеленая РП: Зелёная лампа реле перегрузки (Сигнализация перегрузки)", - "Entities.gmod_subway_ezh1.Buttons.Main.SD": "Синяя лампа СД: Сигнализация дверей поезда", - "Entities.gmod_subway_ezh1.Buttons.Main.DIPonSet": "КУ4:Включение освещения", - "Entities.gmod_subway_ezh1.Buttons.Main.DIPoffSet": "КУ5:Отключение освещения", - "Entities.gmod_subway_ezh1.Buttons.Main.VozvratRPSet": "Переключатель: Возврат Реле Перегрузки", - "Entities.gmod_subway_ezh1.Buttons.Main.KSNSet": "Переключатель: Сигнализация неисправности (Срабатывание РП на неисправном вагоне)", - "Entities.gmod_subway_ezh1.Buttons.Main.KDPSet": "КДП:Правые двери", - "Entities.gmod_subway_ezh1.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_ezh1.Buttons.Main.KDLSet": "КУ12: Открытие левых дверей", - "Entities.gmod_subway_ezh1.Buttons.Main.KU1Toggle": "Переключатель:Включение мотор-компрессора", - "Entities.gmod_subway_ezh1.Buttons.Main.VUD1Toggle": "Переключатель: Закрытие дверей", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)", - "Entities.gmod_subway_ezh1.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)", - "Entities.gmod_subway_ezh1.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)", - "Entities.gmod_subway_ezh1.Buttons.CabinDoor.CabinDoor1": "Дверь в кабину машиниста", - "Entities.gmod_subway_ezh1.Buttons.Front.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_ezh1.Buttons.PassengerDoor1.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_ezh1.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - "Entities.gmod_subway_ezh1.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_ezh1.Buttons.VU.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_ezh1.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_ezh1.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh1.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh1.Buttons.PneumaticManometer.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_buttons_ezh3.lua b/lua/metrostroi_data/languages_/ru_buttons_ezh3.lua deleted file mode 100644 index e772b93..0000000 --- a/lua/metrostroi_data/languages_/ru_buttons_ezh3.lua +++ /dev/null @@ -1,158 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - - "Entities.gmod_subway_ezh3.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_ezh3.Buttons.Back.BackDoor": "Задняя дверь", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_ezh3.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_ezh3.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh3.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPMenuSet": "Информатор: Меню", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPUpSet": "Информатор: Вверх", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPDownSet": "Информатор: Вниз", - "Entities.gmod_subway_ezh3.Buttons.ASNP.R_ASNPOnToggle": "Информатор: Включение", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor1.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_ezh3.Buttons.PassengerDoor.PassengerDoor": "Дверь в кабину машиниста из салона", - "Entities.gmod_subway_ezh3.Buttons.CabinDoor.CabinDoor": "Дверь в кабину машиниста", - "Entities.gmod_subway_ezh3.Buttons.Front.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_ezh3.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_ezh3.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_ezh3.Buttons.Panel.!OCH": "ОЧ: Лампа отсутствия частоты (0км\\ч)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!0": "0: Лампа ограничения в 0км\\ч", - "Entities.gmod_subway_ezh3.Buttons.Panel.!40": "40: Лампа ограничения в 40км\\ч", - "Entities.gmod_subway_ezh3.Buttons.Panel.!60": "60: Лампа ограничения в 60км\\ч", - "Entities.gmod_subway_ezh3.Buttons.Panel.!70": "70: Лампа ограничения в 70км\\ч", - "Entities.gmod_subway_ezh3.Buttons.Panel.!80": "80: Лампа ограничения в 80км\\ч", - "Entities.gmod_subway_ezh3.Buttons.Panel.!Speedometer": "Индикатор скорости (км/ч)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalAmpermeter": "Силовой амперметр тяговых электродвигателей (А)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!TotalVoltmeter": "Напряжение силовой сети (кВ)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BatteryVoltage": "Напряжение аккумуляторной батареи управления (В)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!BrakeCylinder": "Давление в тормозных цилиндрах (ТЦ)", - "Entities.gmod_subway_ezh3.Buttons.Panel.!LinesPressure": "Давление в магистралях (красная: тормозной, чёрная: напорной)", - "Entities.gmod_subway_ezh3.Buttons.Main.KU1Toggle": "ВМК: Включение мотор-компрессора", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM1Set": "САММ:Выключение тяги", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM2Set": "САММ:Пуск", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMM3Set": "САММ:Сброс", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal1": "Лампа:Ход-Тормоз", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal2": "Лампа: Рабочее состояние САММ", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMSignal3": "Лампа:Включен исполнительный блок САММ", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMOnToggle": "САММ:Включение системы автоведения", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMBlokToggle": "САММ:Исполнительный блок", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand3Set": "САММ:Ход2", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand2Set": "САММ:Нагон", - "Entities.gmod_subway_ezh3.Buttons.Main.SAMMCommand1Set": "САММ:Разрешение", - "Entities.gmod_subway_ezh3.Buttons.Main.KSNSet": "КСН: Кнопка сигнализации неисправности", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program1Set": "Программа 1", - "Entities.gmod_subway_ezh3.Buttons.Main.R_Program2Set": "Программа 2", - "Entities.gmod_subway_ezh3.Buttons.Main.VUSToggle": "Переключатель: Ближний свет/Дальний свет", - "Entities.gmod_subway_ezh3.Buttons.Main.L_3Toggle": "Переключатель: Подсветка приборов", - "Entities.gmod_subway_ezh3.Buttons.Main.VAHToggle": "Переключатель: Аварийный Ход", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPonSet": "Осв. Вкл.: Включение освещения", - "Entities.gmod_subway_ezh3.Buttons.Main.DIPoffSet": "Осв. Выкл.: Выключение освещения", - "Entities.gmod_subway_ezh3.Buttons.Main.KSDSet": "КСД: Сигнализация дверей", - "Entities.gmod_subway_ezh3.Buttons.Main.KVTSet": "КВТ: Кнопка Восприятия Торможения", - "Entities.gmod_subway_ezh3.Buttons.Main.KBSet": "КБ: Кнопка Бдительности", - "Entities.gmod_subway_ezh3.Buttons.Main.KBLamp": "Лампа: Вращение РК", - "Entities.gmod_subway_ezh3.Buttons.Main.ARSToggle": "АРС: Включение системы автоматического регулирования скорости", - "Entities.gmod_subway_ezh3.Buttons.Main.R_UNchToggle": "УНЧ: Усилитель низких частот", - "Entities.gmod_subway_ezh3.Buttons.Main.VUD1Toggle": "ВУД: Выключатель управления дверьми", - "Entities.gmod_subway_ezh3.Buttons.Main.R_RadioToggle": "Радиоинформатор (встроеный)", - "Entities.gmod_subway_ezh3.Buttons.Main.ALSToggle": "АЛС: Включение системы автоматической локомотивной сигнализации", - "Entities.gmod_subway_ezh3.Buttons.Main.VozvratRPSet": "КВРП: Возврат реле перегрузки", - "Entities.gmod_subway_ezh3.Buttons.Main.RingSet": "Звонок", - "Entities.gmod_subway_ezh3.Buttons.Main.L_2Toggle": "Переключатель: Освещение кабины", - "Entities.gmod_subway_ezh3.Buttons.Main.KRZDSet": "КРЗД: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_ezh3.Buttons.Main.KDPSet": "КДП: Кнопка правых дверей", - "Entities.gmod_subway_ezh3.Buttons.Main.KDLSet": "КДЛ: Кнопка левых дверей", - "Entities.gmod_subway_ezh3.Buttons.Main.KAHSet": "KAH", - "Entities.gmod_subway_ezh3.Buttons.Main.RezMKSet": "Резервное включение мотор-компрессора", - "Entities.gmod_subway_ezh3.Buttons.Main.KRPSet": "КРП: Кнопка резервного пуска", - "Entities.gmod_subway_ezh3.Buttons.Main.RSTToggle": "ВПР: Включение поездной радиосвязи", - "Entities.gmod_subway_ezh3.Buttons.Main.R_GToggle": "Громкоговоритель", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom2Set": "Незаведенный тумблер", - "Entities.gmod_subway_ezh3.Buttons.Main.Custom3Set": "Незаведенный тумблер", - "Entities.gmod_subway_ezh3.Buttons.Main.ASNPPlay": "Индикатор работы программы информатора", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины\n", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)\n", - "Entities.gmod_subway_ezh3.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)\n", - "Entities.gmod_subway_ezh3.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_ezh3.Buttons.RC1.RC1Toggle": "РЦ-АРС: Разъединитель цепей АРС", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVAToggle": "УАВА: Универсальный Автоматический Выключатель Автостопа (отключение автостопа)", - "Entities.gmod_subway_ezh3.Buttons.UAVAPanel.UAVACToggle ": "УАВА: Универсальный Автоматический Выключатель Автостопа (восстановление контактов)", - "Entities.gmod_subway_ezh3.Buttons.VUHelper.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_ezh3.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_ezh3.Buttons.EPKDisconnect.EPKToggle": "Кран ЭПК", - "Entities.gmod_subway_ezh3.Buttons.VU.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh3.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_ezh3.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - "Entities.gmod_subway_em508t.Buttons.Stopkran.EmergencyBrakeValveToggle": "Стопкран", - "Entities.gmod_subway_em508t.Buttons.Battery.VBToggle": "АБ: Выключатель аккумуляторной батареи (Вспомогательные цепи низкого напряжения)", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontBrakeLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508t.Buttons.FrontPneumatic.FrontTrainLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508t.Buttons.GV.GVToggle": "Главный выключатель", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearTrainLineIsolationToggle": "Концевой кран тормозной магистрали", - "Entities.gmod_subway_em508t.Buttons.RearPneumatic.RearBrakeLineIsolationToggle": "Концевой кран напорной магистрали", - "Entities.gmod_subway_em508t.Buttons.RearDoor.RearDoor": "Дверь из салона", - "Entities.gmod_subway_em508t.Buttons.Back2.!HVFuse": "Блок высоковольтных предохранителей", - "Entities.gmod_subway_em508t.Buttons.Back2.!Relays": "Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель", - "Entities.gmod_subway_em508t.Buttons.Back2.!Heater": "Печка", - "Entities.gmod_subway_em508t.Buttons.Front.FrontDoor": "Передняя дверь", - "Entities.gmod_subway_em508t.Buttons.AV1.VU3Toggle": "ВУ3: Освещение кабины\n", - "Entities.gmod_subway_em508t.Buttons.AV1.VU2Toggle": "ВУ2: Аварийное освещение (45В)\n", - "Entities.gmod_subway_em508t.Buttons.AV1.VU1Toggle": "ВУ1: Печь отопления кабины (3кВт)\n", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeLeft": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508t.Buttons.ParkingBrake.ParkingBrakeRight": "Поворот колеса ручного тормоза", - "Entities.gmod_subway_em508t.Buttons.CabinDoor.CabinDoor1": "Дверь в кабину машиниста", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_em508t.Buttons.PassengerDoor1.PassengerDoor": "Дверь из салона", - "Entities.gmod_subway_em508t.Buttons.Main.!RedRP": "Красная РП: Красная лампа реле перегрузки", - "Entities.gmod_subway_em508t.Buttons.Main.!GreenRP": "Зеленая РП: Зелёная лампа реле перегрузки (Сигнализация перегрузки)", - "Entities.gmod_subway_em508t.Buttons.Main.!SD": "Синяя лампа СД: Сигнализация дверей поезда", - "Entities.gmod_subway_em508t.Buttons.Main.KDLSet": "Переключатель: Открытие левых дверей", - "Entities.gmod_subway_em508t.Buttons.Main.KSDSet": "Переключатель: Сигнализация (Сигнализация дверей)", - "Entities.gmod_subway_em508t.Buttons.Main.VozvratRPSet": "Переключатель: Возврат Реле Перегрузки", - "Entities.gmod_subway_em508t.Buttons.Main.KSNSet": "Переключатель: Сигнализация неисправности (Срабатывание РП на неисправном вагоне)", - "Entities.gmod_subway_em508t.Buttons.Main.VUD1Toggle": "Переключатель: Закрытие дверей", - "Entities.gmod_subway_em508t.Buttons.Main.KU1Toggle": "Переключатель: Включение Мотор-компрессора", - "Entities.gmod_subway_em508t.Buttons.Main.DIPonSet": "КУ4:Включение освещения", - "Entities.gmod_subway_em508t.Buttons.Main.DIPoffSet": "КУ5:Отключение освещения", - "Entities.gmod_subway_em508t.Buttons.Main.RezMKSet": "КУ5:Отключение освещения", - "Entities.gmod_subway_em508t.Buttons.Main.KDPSet": "КДП:Правые двери", - "Entities.gmod_subway_em508t.Buttons.Main.KRZDSet": "КУ10: Кнопка резервного закрытия дверей", - "Entities.gmod_subway_em508t.Buttons.AVMain.AV8BToggle": "АВ-8Б: Автоматическй выключатель (Вспомогательные цепи высокого напряжения)\n", - "Entities.gmod_subway_em508t.Buttons.VU.VUToggle": "ВУ: Выключатель управления", - "Entities.gmod_subway_em508t.Buttons.VU.!Voltage": "Напряжение цепей управления", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VUD2Toggle": "ВУД2: Выключатель управления дверьми", - "Entities.gmod_subway_em508t.Buttons.HelperPanel.VDLSet": "ВДЛ: Выключатель левых дверей", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveBLDisconnectToggle": "Кран двойной тяги тормозной магистрали", - "Entities.gmod_subway_em508t.Buttons.DriverValveBLTLDisconnect.DriverValveTLDisconnectToggle": "Кран двойной тяги напорной магистрали", - "Entities.gmod_subway_em508t.Buttons.AirDistributor.AirDistributorDisconnectToggle": "Выключение воздухораспределителя", - - - "Entities.gmod_subway_ezh3.Buttons.Main.Custom1Toggle": "Незаведенный тумблер", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1USet": "ИГЛА: Первая кнопка вверх", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1Set": "ИГЛА: Первая кнопка", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA1DSet": "ИГЛА: Первая кнопка вниз", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2USet": "ИГЛА: Вторая кнопка вверх", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2Set": "ИГЛА: Вторая кнопка", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.IGLA2DSet": "ИГЛА: Вторая кнопка вниз", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLASR": "ИГЛА: SR", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLARX": "ИГЛА: RX", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAErr": "ИГЛА: Отказ", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOSP": "ИГЛА: ОСП(Сработка огнетушителей)", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAPI": "ИГЛА: ПИ(Пожар)", - "Entities.gmod_subway_ezh3.Buttons.IGLAButtons.!IGLAOff": "ИГЛА: Откл", - - "Entities.gmod_subway_ezh3.Buttons.Back2.!HVHuse": "Блок высоковольтных предохранителей", - "Entities.gmod_subway_ezh3.Buttons.Back2.!AKBCharge": "Ящик с аппаратами для подзаряда аккумуляторной батареи и дверной воздухораспределитель", - "Entities.gmod_subway_ezh3.Buttons.Back2.!Heater": "Печка" -} -]] diff --git a/lua/metrostroi_data/languages_/ru_spawner.lua b/lua/metrostroi_data/languages_/ru_spawner.lua deleted file mode 100644 index 9b71f2a..0000000 --- a/lua/metrostroi_data/languages_/ru_spawner.lua +++ /dev/null @@ -1,226 +0,0 @@ -return [[ -{ - "Lang": "ru", - "Name": "Russian", - - "Spawner.Title": "Спавнер поездов", - "Spawner.Trains1": "Поездов", - "Spawner.Trains2": "Максимально", - "Spawner.WagNum": "Вагонов", - "Spawner.AutoCouple": "Автоматически сцепить вагоны", - - "Entities.gmod_subway_81-717_mvm.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-717_mvm.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_81-717_mvm.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-717_mvm.Spawner.Announcer.Name": "Звук информатора", - "Entities.gmod_subway_81-717_mvm.Spawner.Lighter.Name": "Присутствие зажигалки", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.Name": "Тип панели АРС", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.1": "Стандартная(квадратные лампы)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.2": "Стандартная(круглые лампы)", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.3": "Киевские/СПБ", - "Entities.gmod_subway_81-717_mvm.Spawner.ARSType.4": "Старая панель АРС", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.Name": "Тип крана", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_mvm.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.Name": "Тип маски", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.1": "2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.2": "2-2-2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.3": "1-4-1 тип бампера 1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.4": "1-4-1 тип бампера 2", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.5": "1-1", - "Entities.gmod_subway_81-717_mvm.Spawner.MaskType.6": "Ретро", - "Entities.gmod_subway_81-717_mvm.Spawner.LED.Name": "Светодиодные фары", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.Name": "Тип БПСН", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.1": "Старый звук с высоким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.2": "Старый звук с средним тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.3": "Стандартный(из СПБ)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.4": "Стандартный(ТКЛ)", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.5": "Стандартный", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.6": "Киевский", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.7": "Старый", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.8": "Стандартный 2", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.9": "Стандартный 3", - "Entities.gmod_subway_81-717_mvm.Spawner.BPSNType.10": "Беззвучный(БПН-115)", - "Entities.gmod_subway_81-717_mvm.Spawner.NewKV.Name": "Новая модель ГРКВ", - "Entities.gmod_subway_81-717_mvm.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.Name": "Звук звонка", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.1": "Старый", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.2": "Стандартный с низким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.3": "Стандартный с высоким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.4": "Стандартный прерывистый с низким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.RingType.5": "Стандартный прерывистый с высоким тоном", - "Entities.gmod_subway_81-717_mvm.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-717_mvm.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-717_mvm.Spawner.Switches.Name": "Вкл. все автоматики", - "Entities.gmod_subway_81-717_mvm.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-717_mvm.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_81-717_mvm.Spawner.GV.Name": "Вкл. главный выключатель", - "Entities.gmod_subway_81-717_mvm.Spawner.PB.Name": "Вкл. стояночный тормоз", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.Name": "Тип бортовых ламп", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.1": "Горизнонтальные", - "Entities.gmod_subway_81-717_mvm.Spawner.BortLampType.2": "Вертикальные", - "Entities.gmod_subway_81-717_mvm.Spawner.MVM.Name": "Значок МВМ", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.Name": "Тип поручней", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.1": "Старый", - "Entities.gmod_subway_81-717_mvm.Spawner.HandRail.2": "Новый", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.Name": "Тип сидушек", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.1": "Старый", - "Entities.gmod_subway_81-717_mvm.Spawner.SeatType.2": "Новый", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.Name": "Тип ламп", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.1": "Тип 1", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.2": "Тип 2", - "Entities.gmod_subway_81-717_mvm.Spawner.LampType.3": "Тип 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Breakers.Name": "Автоматики справа", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.Name": "Вид рекламы", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.1": "Тип 1", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.2": "Тип 2", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.3": "Тип 3", - "Entities.gmod_subway_81-717_mvm.Spawner.Adverts.4": "Без реклам", - - "Entities.gmod_subway_81-720.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-720.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_81-720.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-720.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-720.Spawner.Scheme.Name": "Наддверные схемы", - "Entities.gmod_subway_81-720.Spawner.PassSchemesInvert.Name": "Инвертировать наддверные схемы", - "Entities.gmod_subway_81-720.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-720.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-720.Spawner.BRU.Name": "Вкл. БРУ(ГВ)", - "Entities.gmod_subway_81-720.Spawner.PVZR.Name": "Автоматики на ПВЗ будут включены случайно", - "Entities.gmod_subway_81-720.Spawner.PPZ.Name": "Вкл. все поездные автоматики", - "Entities.gmod_subway_81-720.Spawner.PPZDepot.Name": "Выкл. автоматики как в депо", - "Entities.gmod_subway_81-720.Spawner.PPZR.Name": "Автоматики на ППЗ будут включены случайно", - "Entities.gmod_subway_81-720.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-720.Spawner.DoorsR.Name": "Открыть правые двери", - - "Entities.gmod_subway_81-722.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-722.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_81-722.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-722.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-722.Spawner.Scheme.Name": "Наддверные схемы", - "Entities.gmod_subway_81-722.Spawner.SarmatInvert.Name": "Инвертировать наддверные схемы", - "Entities.gmod_subway_81-722.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-722.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-722.Spawner.Switches.Name": "Вкл. все автоматики", - "Entities.gmod_subway_81-722.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", - "Entities.gmod_subway_81-722.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-722.Spawner.DoorsR.Name": "Открыть правые двери", - - - "Entities.gmod_subway_ezh.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_ezh.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_ezh.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_ezh.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_ezh.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_ezh.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_ezh.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_ezh.Spawner.AV8B.Name": "Вкл. АВ8Б", - "Entities.gmod_subway_ezh.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_ezh.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_ezh.Spawner.GV.Name": "Вкл. главный выключатель", - - "Entities.gmod_subway_em508.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_em508.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_em508.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_em508.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_em508.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_em508.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_em508.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_em508.Spawner.AV8B.Name": "Вкл. АВ8Б", - "Entities.gmod_subway_em508.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_em508.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_em508.Spawner.GV.Name": "Вкл. главный выключатель", - - "Entities.gmod_subway_ezh3.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_ezh3.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_ezh3.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_ezh3.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_ezh3.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_ezh3.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_ezh3.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_ezh3.Spawner.AV8B.Name": "Вкл. АВ8Б", - "Entities.gmod_subway_ezh3.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_ezh3.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_ezh3.Spawner.GV.Name": "Вкл. главный выключатель", - - "Entities.gmod_subway_81-717_lvz.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-717_lvz.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_81-717_lvz.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-717_lvz.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-717_lvz.Spawner.Lighter.Name": "Присутствие зажигалки", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.Name": "Тип крана", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.1": "334", - "Entities.gmod_subway_81-717_lvz.Spawner.Cran.2": "013", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.Name": "Тип маски", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.1": "1-4-1", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.2": "2-2(снизу)-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.3": "2-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.4": "2-2-2", - "Entities.gmod_subway_81-717_lvz.Spawner.MaskType.5": "1-3-1", - "Entities.gmod_subway_81-717_lvz.Spawner.LED.Name": "Светодиодные фары", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.Name": "Тип БПСН", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.1": "Старый звук с высоким тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.2": "Старый звук с средним тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.3": "Стандартный(из СПБ)", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.4": "Стандартный(ТКЛ)", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.5": "Стандартный", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.6": "Киевский", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.7": "Старый", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.8": "Стандартный 2", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.9": "Стандартный 3", - "Entities.gmod_subway_81-717_lvz.Spawner.BPSNType.10": "Беззвучный(БПН-115)", - "Entities.gmod_subway_81-717_lvz.Spawner.NewKV.Name": "Новая модель ГРКВ", - "Entities.gmod_subway_81-717_lvz.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.Name": "Звук звонка", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.1": "Старый", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.2": "Стандартный с низким тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.3": "Стандартный с высоким тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.4": "Стандартный прерывистый с низким тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.RingType.5": "Стандартный прерывистый с высоким тоном", - "Entities.gmod_subway_81-717_lvz.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-717_lvz.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-717_lvz.Spawner.Switches.Name": "Вкл. все автоматики", - "Entities.gmod_subway_81-717_lvz.Spawner.SwitchesR.Name": "Автоматики будут включены случайно", - "Entities.gmod_subway_81-717_lvz.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-717_lvz.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_81-717_lvz.Spawner.GV.Name": "Вкл. главный выключатель", - "Entities.gmod_subway_81-717_lvz.Spawner.PB.Name": "Вкл. стояночный тормоз", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.Name": "Тип бортовых ламп", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.1": "Горизнонтальные", - "Entities.gmod_subway_81-717_lvz.Spawner.BortLampType.2": "Вертикальные", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.Name": "Тип поручней", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.1": "Старый", - "Entities.gmod_subway_81-717_lvz.Spawner.HandRail.2": "Новый", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.Name": "Тип сидушек", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.1": "Старый", - "Entities.gmod_subway_81-717_lvz.Spawner.SeatType.2": "Новый", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.Name": "Тип ламп", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.1": "Тип 1", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.2": "Тип 2", - "Entities.gmod_subway_81-717_lvz.Spawner.LampType.3": "Тип 3", - "Entities.gmod_subway_81-717_lvz.Spawner.Breakers.Name": "Автоматики справа", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.Name": "Вид рекламы", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.1": "Тип 1", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.2": "Тип 2", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.3": "Тип 3", - "Entities.gmod_subway_81-717_lvz.Spawner.Adverts.4": "Без реклам", - - "Entities.gmod_subway_81-703.Spawner.Texture.Name": "Окраска кузова", - "Entities.gmod_subway_81-703.Spawner.PassTexture.Name": "Окраска салона", - "Entities.gmod_subway_81-703.Spawner.CabTexture.Name": "Окраска кабины", - "Entities.gmod_subway_81-703.Spawner.Announcer.Name": "Информатор", - "Entities.gmod_subway_81-703.Spawner.HornType.Name": "Питерский тифон", - "Entities.gmod_subway_81-703.Spawner.NM.Name": "Давление напорной магистрали", - "Entities.gmod_subway_81-703.Spawner.Battery.Name": "Вкл. батарею", - "Entities.gmod_subway_81-703.Spawner.AV8B.Name": "Вкл. АВ8Б", - "Entities.gmod_subway_81-703.Spawner.DoorsL.Name": "Открыть левые двери", - "Entities.gmod_subway_81-703.Spawner.DoorsR.Name": "Открыть правые двери", - "Entities.gmod_subway_81-703.Spawner.GV.Name": "Вкл. главный выключатель", - - - - "Spawner.Close": "Закрыть", - "Spawner.Spawn": "Готово" -} -]] diff --git a/lua/metrostroi_data/signs_gm_metrostroi_b46_lite.txt b/lua/metrostroi_data/signs_gm_metrostroi_b46_lite.txt deleted file mode 100644 index 1c9e8f2..0000000 --- a/lua/metrostroi_data/signs_gm_metrostroi_b46_lite.txt +++ /dev/null @@ -1 +0,0 @@ -{"1":{"Pos":"[10057.916 -2351.9995 -4380.4741]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 90 0}","Settings":196612},"2":{"Pos":"[-9296.2793 -4120.3037 -3868.4739]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 45 0}","Settings":196612},"3":{"Pos":"[-13232.8633 256.0998 -3868.4739]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196612},"4":{"Pos":"[-10871 -3511.4963 -2844.4739]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196616},"5":{"Pos":"[-9863 2616.6401 -2844.4739]","TrafficLights":144,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 180 0}","Settings":65544},"6":{"Pos":"[639.494 -4917.5791 -2844.4736]","TrafficLights":144,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 11.25 0}","Settings":197124},"7":{"Pos":"[-6104.6909 -1343.7942 -4380.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"8":{"Pos":"[8465.207 10663.4023 -2331.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":197124},"9":{"Pos":"[8131.5688 9693.7012 -2332.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 5.34 0}","Settings":74752},"10":{"Pos":"[8465 -4204.7715 -2332.2742]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196609},"11":{"Pos":"[8959.249 -9348.8311 -2332.4968]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.3374 173.8217 0}","Settings":196616},"12":{"Pos":"[15459.793 -6094.0938 -481.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":197124},"13":{"Pos":"[15460 3646.5662 -481.4739]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"14":{"Pos":"[14451.793 -2491.5957 -481.5056]","TrafficLights":144,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":65540},"15":{"Pos":"[14824.0938 -10641.6025 -609.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":73728},"16":{"Pos":"[15088.0938 -10650.0205 -609.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":75776},"17":{"Pos":"[14823.8926 -15629.6328 -609.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":256},"18":{"Pos":"[15087.8926 -15625.7744 -609.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":256},"19":{"Pos":"[4262.7251 14520.207 528.4944]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{-0 90 0}","Settings":196616},"20":{"Pos":"[-6612.5107 14784.2061 528.4944]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{0 270 0}","Settings":196616},"21":{"Pos":"[9473.207 11228.4951 -2331.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"22":{"Pos":"[2791.3079 5810.2344 -2331.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{0 191.25 0}","Settings":196608},"23":{"Pos":"[-15520.207 -3760.8923 -1696.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196609},"24":{"Pos":"[-763.7938 3107.5146 -2844.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"25":{"Pos":"[2320.564 -8203.5195 -2844.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 191.25 0}","Settings":197124},"26":{"Pos":"[1647.1576 -7329.3906 -2844.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 167.224 0}","Settings":73728},"27":{"Pos":"[462.5726 1138.698 -2844.4736]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 191.25 0}","Settings":196616},"28":{"Pos":"[-6519.2637 -11023.585 -2844.4861]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.691 196.4083 0}","Settings":196616},"29":{"Pos":"[-10872.207 11482.5322 -3356.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":197124},"30":{"Pos":"[-10576.668 4973.6953 -2844.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 351.0319 0}","Settings":74752},"31":{"Pos":"[-10167.1504 5039.4434 -2844.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 187.8205 0}","Settings":204800},"32":{"Pos":"[-10235.0938 9007.7129 -2844.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":73728},"33":{"Pos":"[-10499.0938 8968.7568 -2844.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":75776},"34":{"Pos":"[-7900.5488 -5076.7427 -3868.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196612},"35":{"Pos":"[10335.1572 -11559.5518 -3868.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 135 0}","Settings":196609},"36":{"Pos":"[-8980.8008 15039.4063 -3868.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":197124},"37":{"Pos":"[-7118.019 16046.9941 -3868.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":197124},"38":{"Pos":"[-1904.8762 15038.793 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":131072},"39":{"Pos":"[10575.8457 15038.793 -4380.5059]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"40":{"Pos":"[14987.7949 2803.1431 -4380.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"41":{"Pos":"[16011.7939 9869.1816 -4380.5059]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"42":{"Pos":"[-1938.6373 -2351.7937 -4380.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":197124},"43":{"Pos":"[14737.1729 -4739.2744 -481.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 8.9682 0}","Settings":204800},"44":{"Pos":"[8958.6445 4510.7813 -2331.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 204.0262 0}","Settings":73728},"45":{"Pos":"[9473 1890.8022 -2332.2742]","TrafficLights":144,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 180 0}","Settings":65540},"46":{"Pos":"[-9863.207 11601.8135 -3356.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196616},"47":{"Pos":"[437.5148 9754.1934 -3356.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":196609},"48":{"Pos":"[-8082.4414 15557.5938 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 245.974 0}","Settings":73728},"49":{"Pos":"[178.0594 -1865.0981 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 65.974 0}","Settings":73728},"50":{"Pos":"[-5624.3574 -8491.457 -3868.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 33.75 0}","Settings":196609},"51":{"Pos":"[-3390.2622 14620.9707 -3356.5056]","TrafficLights":64,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196616},"52":{"Pos":"[-15072.2061 11431.0439 5.5887]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 179.9999 0}","Settings":196616},"53":{"Pos":"[14995.2178 7377.0879 -481.4868]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.491 339.6796 0}","Settings":196612},"54":{"Pos":"[-6981.9805 14520.2061 528.4944]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"55":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":65544},"56":{"Pos":"[-15519.793 1485.257 -1181.0514]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":196609},"57":{"Pos":"[271.7938 5855.9697 -2844.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"58":{"Pos":"[278.1926 11417.8643 -2331.5015]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.4423 178.1627 0}","Settings":0},"59":{"Pos":"[3208.2971 15143.4717 -2331.4944]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.1851 101.1251 0}","Settings":0},"60":{"Pos":"[4404.873 5787.1084 -3356.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":0},"61":{"Pos":"[8075.6572 2116.5635 -3709.8516]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 45 0}","Settings":0},"62":{"Pos":"[11394.2695 -1845.7062 -3868.5027]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.3929 27.7636 0}","Settings":0},"63":{"Pos":"[11877.2627 -6860.2979 -3868.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.878 340.6185 0}","Settings":0},"64":{"Pos":"[8912.7012 -11086.6455 -3868.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.5343 313.484 0}","Settings":0},"65":{"Pos":"[4391.2754 -13531.7012 -3868.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.5705 279.4521 0}","Settings":0},"66":{"Pos":"[-504.9932 -12200.1309 -3868.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.2617 235.3786 0}","Settings":0},"67":{"Pos":"[3331.3552 15038.9873 -3906.9851]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9998 90.0002 0}","Settings":0},"68":{"Pos":"[-15217.749 5111.7129 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 168.75 0}","Settings":0},"69":{"Pos":"[-14705.9863 10236.8545 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"70":{"Pos":"[-9329.8721 -8707.0879 -2844.4868]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.1581 47.3008 0}","Settings":0},"71":{"Pos":"[-7110.9429 -13189.9561 -2844.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.5561 14.3954 0}","Settings":0},"72":{"Pos":"[-3402.5879 -16118.5293 -2844.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.8163 91.9397 0}","Settings":0},"73":{"Pos":"[1583.2874 -14827.9795 -2844.5027]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.8082 123.5424 0}","Settings":0},"74":{"Pos":"[-1364.9922 14520.207 528.4944]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"75":{"Pos":"[8164.3013 -9609.2363 -2332.5012]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.7144 346.364 0}","Settings":0},"76":{"Pos":"[5301.3701 -13792.2031 -2332.5046]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6956 300.4095 0}","Settings":0},"77":{"Pos":"[279.7132 -14966.957 -2332.4995]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 270.4657 0}","Settings":0},"78":{"Pos":"[-4884.5215 -14967.0127 -1768.3701]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0002 270 0}","Settings":0},"79":{"Pos":"[-10042.5313 -14582.0186 -1696.5031]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.549 254.6117 0}","Settings":0},"80":{"Pos":"[-14088.042 -11466.1123 -1696.5031]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.7799 207.9683 0}","Settings":0},"81":{"Pos":"[-15072.0137 -6388.561 -1696.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"82":{"Pos":"[-15071.793 -1186.1405 -1507.2463]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":0},"83":{"Pos":"[-15071.793 3987.2588 -873.9995]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"84":{"Pos":"[15844.207 8839.2578 -481.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"85":{"Pos":"[14801.2412 13756.7676 -473.5585]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.2318 226.1817 0}","Settings":0},"86":{"Pos":"[9882.1387 14784.2061 3.597]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"87":{"Pos":"[4710.9937 14784.207 528.4944]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"88":{"Pos":"[-505.687 14784.2061 528.4944]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"89":{"Pos":"[15294.7734 -965.7324 -4380.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4557 143.1395 0}","Settings":0},"90":{"Pos":"[16011.9883 4108.9312 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"91":{"Pos":"[9525.4463 14520.2061 47.3933]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 90 0}","Settings":0},"92":{"Pos":"[14479.8125 13695.4707 -483.948]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6754 48.7719 0}","Settings":0},"93":{"Pos":"[15148.416 14847.0996 -4380.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4899 220.0733 0}","Settings":0},"94":{"Pos":"[10293.1328 16046.9863 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"95":{"Pos":"[5090.4028 16046.9883 -4103.9785]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"96":{"Pos":"[-103.1785 16046.793 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"97":{"Pos":"[-15435.8701 -9369.3906 -1696.5013]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.1275 6.1758 0}","Settings":0},"98":{"Pos":"[-13379.1709 -14031.4316 -1696.5057]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.501 46.3687 0}","Settings":0},"99":{"Pos":"[-8654.4521 -15931.9463 -1696.5038]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.1279 85.1102 0}","Settings":0},"100":{"Pos":"[-3467.3347 -15991.0127 -1862.9907]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9998 90 0}","Settings":0},"101":{"Pos":"[1713.4758 -15966.6045 -2332.4993]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.691 93.7191 0}","Settings":0},"102":{"Pos":"[6556.9712 -14336.0557 -2332.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.469 128.196 0}","Settings":0},"103":{"Pos":"[-9374.4795 -6789.0767 -2844.491]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.8517 198.0242 0}","Settings":0},"104":{"Pos":"[-7086.2207 14928.2676 -3356.4971]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.3834 93.455 0}","Settings":0},"105":{"Pos":"[-11876.8271 14783.7939 35.166]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 269.9999 0}","Settings":0},"106":{"Pos":"[7089.9873 15520.5449 -2331.5022]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.6381 252.6004 0}","Settings":0},"107":{"Pos":"[1935.4659 15606.2227 -2331.4988]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.0386 283.1187 0}","Settings":0},"108":{"Pos":"[-763.5446 11694.8613 -2331.4956]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.283 359.4565 0}","Settings":0},"109":{"Pos":"[13437.2002 -6960.9951 -3868.5022]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3043 165.42 0}","Settings":0},"110":{"Pos":"[12673.832 -1942.9647 -3868.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.451 209.6323 0}","Settings":0},"111":{"Pos":"[9264.5781 1965.6403 -3865.4905]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225.0001 0}","Settings":0},"112":{"Pos":"[5582.1348 5648.8477 -3356.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":0},"113":{"Pos":"[1914.8453 9316.1367 -3356.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":0},"114":{"Pos":"[14746.2754 12688.9258 -4380.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.5489 17.3857 0}","Settings":0},"115":{"Pos":"[-8460.7061 15736.7227 -3356.498]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.4511 287.4243 0}","Settings":0},"116":{"Pos":"[-2207.3306 -12624.3555 -3868.4993]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0001 45.4948 0}","Settings":0},"117":{"Pos":"[2160.4744 -15305.0674 -3868.5027]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3743 77.9422 0}","Settings":0},"118":{"Pos":"[11902.7939 -1272.2628 -4380.4946]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.4192 279.2995 0}","Settings":0},"119":{"Pos":"[-9863 -3173.8479 -2844.4739]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"120":{"Pos":"[-15395.2295 8164.4971 -360.9442]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.0242 351.6276 0}","Settings":0},"121":{"Pos":"[-15519.793 443.943 -1308.528]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"122":{"Pos":"[-763.9872 8011.8442 -2657.7488]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0002 0 0}","Settings":0},"123":{"Pos":"[-190.3686 -745.5806 -2844.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 11.25 0}","Settings":0},"124":{"Pos":"[6769.0679 14718.9814 -2331.5061]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.779 62.2451 0}","Settings":0},"125":{"Pos":"[-3324.2107 -9652.8076 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":0},"126":{"Pos":"[-9863.2227 6733.3438 -2874.218]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{90 0 0}","Settings":0},"127":{"Pos":"[9473 -4094.7969 -2331.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"128":{"Pos":"[-13326.3828 14399.7373 6.0184]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.7788 105.0844 0}","Settings":0},"129":{"Pos":"[14452 3797.0867 -481.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"130":{"Pos":"[5736.2153 -15046.7939 -3868.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.0111 111.6281 0}","Settings":0},"131":{"Pos":"[759.971 -1344.4061 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"132":{"Pos":"[1712.0732 -2337.6472 -4396.4688]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 83.5099 0}","Settings":0},"133":{"Pos":"[5855.1265 -2352 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"134":{"Pos":"[7969.125 14520.2051 238.4857]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 90 0}","Settings":0},"135":{"Pos":"[12082.7207 14511.1602 -276.2962]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.9869 86.6679 0}","Settings":0},"136":{"Pos":"[15101.7549 12938.5576 -495.269]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.0307 29.2924 0}","Settings":0},"137":{"Pos":"[-13813.6084 13873.3076 -3868.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.51 139.9078 0}","Settings":0},"138":{"Pos":"[-3634.9148 13826.8965 -3356.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 45 0}","Settings":0},"139":{"Pos":"[1977.2397 15038.7949 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"140":{"Pos":"[6124.1953 15038.8125 -4227.7061]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 90 0}","Settings":0},"141":{"Pos":"[14987.9873 8880.8359 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"142":{"Pos":"[4520.0952 -1343.7938 -4380.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":197124},"143":{"Pos":"[3498.7268 -14655.207 -4893.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":196612},"144":{"Pos":"[-3198.6594 -14654.793 -4893.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"145":{"Pos":"[-12656.793 -906.0836 -4893.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196616},"146":{"Pos":"[2620.9817 -2239.7939 -7592.1094]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{0 270 0}","Settings":196616},"147":{"Pos":"[-3734.7041 -2239.7939 -7592.1094]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0 270 0}","Settings":196616},"148":{"Pos":"[-4441.2705 -13606.6895 -7592.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":197124},"149":{"Pos":"[-3335.8074 -12599.1074 -7592.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":197128},"150":{"Pos":"[-12762.4795 -12214.793 -7592.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":196616},"151":{"Pos":"[-4406.1216 -2503.7939 -7592.1094]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0 90 0}","Settings":196616},"152":{"Pos":"[2009.4263 -2503.7939 -7592.1094]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0 90 0}","Settings":196616},"153":{"Pos":"[-5372.2061 9824.2656 -6029.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"154":{"Pos":"[-13680.793 7247.7344 -5762.168]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196609},"155":{"Pos":"[-3985.2231 -15662.793 -4893.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"156":{"Pos":"[2686.7981 -15663.207 -4893.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"157":{"Pos":"[3818.9819 -13606.793 -7592.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"158":{"Pos":"[-4470.335 -13095.9648 -7592.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 245.974 0}","Settings":73728},"159":{"Pos":"[-5690.041 6405.2061 -9047.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"160":{"Pos":"[-15797.7939 -9453.1299 -8288.2744]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0001 359.9999 0}","Settings":196616},"161":{"Pos":"[7336.9351 -16074.207 -5902.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 90 0}","Settings":196616},"162":{"Pos":"[12258.4941 -1521.9679 -5390.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"163":{"Pos":"[12259.207 4891.9087 -5390.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"164":{"Pos":"[-10268 -432.3572 -5390.4741]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"165":{"Pos":"[-29.206 4921.5488 -5390.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196616},"166":{"Pos":"[-15899.207 -8551.8916 -6913.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196880},"167":{"Pos":"[-15404.2061 -8040.1143 -6913.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196616},"168":{"Pos":"[-1069.2062 5910.2842 -5390.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"169":{"Pos":"[-9260 5652.1021 -5390.4741]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 180 0}","Settings":196612},"170":{"Pos":"[11250.9063 578.2291 -5390.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"171":{"Pos":"[11251.207 -9754.6328 -5902.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196616},"172":{"Pos":"[-15270.2051 -9362.9063 -8299.2695]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":196609},"173":{"Pos":"[-6879.1499 5396.7939 -9047.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"174":{"Pos":"[393.1985 5396.7939 -9047.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196880},"175":{"Pos":"[376.1714 6405.2061 -9047.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"176":{"Pos":"[11742.4707 -487.8091 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 335.974 0}","Settings":65536},"177":{"Pos":"[11956.541 4478.8311 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 187.8205 0}","Settings":65536},"178":{"Pos":"[11883.1084 11554.9697 -4879.4971]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.2826 181.8461 0}","Settings":196608},"179":{"Pos":"[7374.9424 15410.793 -4879.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196608},"180":{"Pos":"[-3248.718 15320.7012 -3868.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 278.9681 0}","Settings":131072},"181":{"Pos":"[-11535.1143 -173.4311 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6955 239.5747 0}","Settings":0},"182":{"Pos":"[-14400.7393 3994.73 -4380.4995]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.8891 193.6105 0}","Settings":0},"183":{"Pos":"[-14260.375 9102.9512 -4380.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.8981 155.0394 0}","Settings":0},"184":{"Pos":"[-9720.8018 10943.0879 -4444.3662]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9998 90 0}","Settings":0},"185":{"Pos":"[-4566.749 10943.0127 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"186":{"Pos":"[627.947 10943.0137 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"187":{"Pos":"[5785.8008 10586.334 -4893.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.0358 67.6928 0}","Settings":0},"188":{"Pos":"[7820.9873 6187.7397 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"189":{"Pos":"[7820.9873 969.3203 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"190":{"Pos":"[7820.9873 -4765.3062 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"191":{"Pos":"[7821.0127 -9963.9473 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"192":{"Pos":"[-15812.2051 -8885.8281 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"193":{"Pos":"[-15352.8086 -3473.572 -7608.0322]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.5488 144.0053 0}","Settings":0},"194":{"Pos":"[-10404.377 -2503.7939 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"195":{"Pos":"[9527.4238 -14799.5615 -5902.5034]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.7797 297.7136 0}","Settings":0},"196":{"Pos":"[4436.0327 -15305.9863 -6178.0205]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 270 0}","Settings":0},"197":{"Pos":"[-699.41 -15305.9863 -6808.5771]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 270 0}","Settings":0},"198":{"Pos":"[-5851.3076 -15305.9863 -7441.1543]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 270 0}","Settings":0},"199":{"Pos":"[-11010.5693 -15306.0127 -8030.6904]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 270.0001 0}","Settings":0},"200":{"Pos":"[-15197.71 -13101.4033 -8036.4956]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.2613 190.5965 0}","Settings":0},"201":{"Pos":"[-15270.0117 -7962.8213 -8471.1787]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":0},"202":{"Pos":"[-15269.8809 -2787.5901 -9047.4941]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.7647 179.5035 0}","Settings":0},"203":{"Pos":"[-14093.0127 2237.0481 -9047.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6955 149.5748 0}","Settings":0},"204":{"Pos":"[-1069.0127 269.9673 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"205":{"Pos":"[-1069.0127 -4927.9468 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"206":{"Pos":"[-2659.7571 -9605.291 -5390.5034]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6801 300.642 0}","Settings":0},"207":{"Pos":"[-7671.3276 -9604.0215 -5390.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6797 239.3199 0}","Settings":0},"208":{"Pos":"[-9260.0117 -4944.8359 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"209":{"Pos":"[-9260 257.5346 -5390.4741]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"210":{"Pos":"[-15519.7939 6629.9409 -549.3873]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"211":{"Pos":"[-9073.7314 -2239.7939 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"212":{"Pos":"[-14225.0742 -2393.9048 -7592.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.2303 285.1031 0}","Settings":0},"213":{"Pos":"[-16076.2051 -6855.4507 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"214":{"Pos":"[-15042.4873 -11936.0674 -7592.4927]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4462 54.0096 0}","Settings":0},"215":{"Pos":"[-10111.7529 -12912.7207 -7592.4961]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.5155 71.7933 0}","Settings":0},"216":{"Pos":"[7340.5557 -1606.9313 -7592.0933]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.8519 133.0737 0}","Settings":0},"217":{"Pos":"[11016.4287 2060.3979 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 135 0}","Settings":0},"218":{"Pos":"[14659.0703 5800.7822 -7591.4941]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.655 143.64 0}","Settings":0},"219":{"Pos":"[14283.4668 10515.6387 -7387.8579]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.8591 220.4404 0}","Settings":0},"220":{"Pos":"[10022.416 13724.6191 -7079.4941]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4877 268.1711 0}","Settings":0},"221":{"Pos":"[6074.5278 10877.8193 -6891.1431]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 315 0}","Settings":0},"222":{"Pos":"[2440.6277 7243.3359 -6261.3921]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 314.9999 0}","Settings":0},"223":{"Pos":"[-1802.0013 4567.5391 -6029.4873]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.8238 273.5348 0}","Settings":0},"224":{"Pos":"[7647.5571 -14797.3496 -4893.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4899 130.0733 0}","Settings":0},"225":{"Pos":"[8845.0137 -9927.5205 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 180 0}","Settings":0},"226":{"Pos":"[8844.9883 -4698.5522 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"227":{"Pos":"[8844.9873 489.9238 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"228":{"Pos":"[8844.9863 5708.9536 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"229":{"Pos":"[8017.9048 10740.7217 -4893.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4899 220.0733 0}","Settings":0},"230":{"Pos":"[3148.7351 11984.0137 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"231":{"Pos":"[-2079.373 11983.0137 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"232":{"Pos":"[-7288.8452 11982.9121 -4728.2676]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9998 270 0}","Settings":0},"233":{"Pos":"[-12467.6963 11935.5469 -4380.4985]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.3371 277.6424 0}","Settings":0},"234":{"Pos":"[-15706.8008 8473.3262 -4380.5005]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.0862 355.4971 0}","Settings":0},"235":{"Pos":"[-15373.5195 2780.9834 -4380.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.4507 15.3844 0}","Settings":0},"236":{"Pos":"[-12380.5049 -1286.3052 -4380.5034]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3045 59.585 0}","Settings":0},"237":{"Pos":"[-7348.1978 -2351.9871 -4380.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"238":{"Pos":"[-29.013 10353.6045 -5831.8682]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":0},"239":{"Pos":"[-1366.2112 15139.3633 -5871.2617]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{273.4532 233.2427 0}","Settings":0},"240":{"Pos":"[-6395.6782 15921.9863 -5901.9858]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"241":{"Pos":"[-11591.2617 15921.9863 -5901.9858]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"242":{"Pos":"[-15689.623 13468.6396 -5902.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.4515 344.8298 0}","Settings":0},"243":{"Pos":"[-15899.4063 8338.5283 -6209.7427]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"244":{"Pos":"[-15898.7949 3190.7207 -6832.6196]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"245":{"Pos":"[-15899.2051 -2016.0342 -6913.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"246":{"Pos":"[-9209.0498 11150.3447 -5390.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.4178 172.348 0}","Settings":0},"247":{"Pos":"[-5748.8091 14364.0029 -5390.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.176 94.4941 0}","Settings":0},"248":{"Pos":"[-553.0953 14387.0127 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"249":{"Pos":"[4657.9434 14387.0137 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"250":{"Pos":"[9732.4834 13759.5791 -5390.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6011 56.2716 0}","Settings":0},"251":{"Pos":"[11251.2061 9052.4023 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"252":{"Pos":"[-15404.2051 -2768.6458 -6913.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"253":{"Pos":"[-15403.7939 2466.0073 -6898.7935]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 179.9999 0}","Settings":0},"254":{"Pos":"[-15404.4063 7645.9424 -6294.7817]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"255":{"Pos":"[-15317.2041 12771.2666 -5902.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.0087 169.3353 0}","Settings":0},"256":{"Pos":"[-11085.248 14898.9863 -5901.9858]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"257":{"Pos":"[-5884.1948 14898.9863 -5901.9858]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"258":{"Pos":"[-1278.8949 13221.3301 -5902.4976]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.3429 20.1481 0}","Settings":0},"259":{"Pos":"[12259.0137 10475.9199 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"260":{"Pos":"[10378.6348 14984.127 -5390.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.1019 245.0677 0}","Settings":0},"261":{"Pos":"[5223.7173 15411.0137 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"262":{"Pos":"[30.1441 15411.0127 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"263":{"Pos":"[-5182.8481 15411.0137 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":0},"264":{"Pos":"[-9771.0557 13669.291 -5390.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.221 332.2693 0}","Settings":0},"265":{"Pos":"[-10268.0137 8529.125 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"266":{"Pos":"[11937.292 -13951.0859 -5902.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.9642 157.7244 0}","Settings":0},"267":{"Pos":"[12259.0137 -8755.2559 -5902.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"268":{"Pos":"[-15436.9131 -14747.6191 -8036.4912]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.0049 29.2004 0}","Settings":0},"269":{"Pos":"[-11111.7129 -16074.0127 -8033.7046]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90.0001 0}","Settings":0},"270":{"Pos":"[-5403.3228 -16073.9863 -7384.1841]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"271":{"Pos":"[-174.8765 -16073.9863 -6742.208]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"272":{"Pos":"[-10930.0371 5974.2832 -9047.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.6067 287.2322 0}","Settings":0},"273":{"Pos":"[-14868.3193 2801.9031 -9047.5029]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.2203 332.0264 0}","Settings":0},"274":{"Pos":"[-15798.0137 -2294.9407 -9047.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"275":{"Pos":"[-13680.9863 1838.9924 -5099.2046]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0.0001 0}","Settings":0},"276":{"Pos":"[-13680.9863 -3341.3782 -4893.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"277":{"Pos":"[-13642.7666 -8549.1328 -4893.4985]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.691 3.7191 0}","Settings":0},"278":{"Pos":"[-11862.9746 -13369.6074 -4893.5054]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.493 40.9 0}","Settings":0},"279":{"Pos":"[-12656.9863 4347.1577 -5408.1055]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":0},"280":{"Pos":"[-12657.0137 9498.1162 -6011.001]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 179.9998 0}","Settings":0},"281":{"Pos":"[-9951.8809 13263.9736 -6029.4966]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.3834 93.455 0}","Settings":0},"282":{"Pos":"[-6513.894 10287.209 -6029.4971]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9995 0.5858 0}","Settings":0},"283":{"Pos":"[-6418.7695 5128.5796 -6029.4941]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.9906 12.7913 0}","Settings":0},"284":{"Pos":"[-2141.4924 3161.1877 -6029.4961]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.1578 102.8124 0}","Settings":0},"285":{"Pos":"[1861.6235 6291.0288 -6223.5142]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 135 0}","Settings":0},"286":{"Pos":"[5486.3335 9916.624 -6851.3472]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0001 135 0}","Settings":0},"287":{"Pos":"[9636.5146 13425.2881 -7095.002]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6168 102.4656 0}","Settings":0},"288":{"Pos":"[13778.2295 10666.4795 -7331.2788]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 45.0001 0}","Settings":0},"289":{"Pos":"[14563.9619 6121.5439 -7600.7695]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.1516 325.1198 0}","Settings":0},"290":{"Pos":"[10974.7168 2392.0388 -7592.1094]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 315 0}","Settings":0},"291":{"Pos":"[-8714.8203 -13885.166 -4893.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.9889 246.6131 0}","Settings":0},"292":{"Pos":"[-12121.6641 -10112.4053 -4893.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.2474 199.165 0}","Settings":0},"293":{"Pos":"[-10268.0137 -6066.6006 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"294":{"Pos":"[-8589.0137 -10681.582 -5390.5024]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3203 59.3401 0}","Settings":0},"295":{"Pos":"[-3484.4741 -11184.5967 -5390.4971]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.8241 94.5481 0}","Settings":0},"296":{"Pos":"[-73.4846 -7922.7305 -5390.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.3386 173.9979 0}","Settings":0},"297":{"Pos":"[-29.0129 -2709.4915 -5390.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"298":{"Pos":"[-8239.3096 13886.0068 -6029.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.0398 258.8637 0}","Settings":0},"299":{"Pos":"[-12988.2344 12575.3887 -6029.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3988 326.2875 0}","Settings":0},"300":{"Pos":"[-15519.7939 6568.5557 -556.9244]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"301":{"Pos":"[-15519.7939 6568.5557 -556.9244]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"302":{"Pos":"[-15519.7939 6568.5557 -556.9244]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"303":{"Pos":"[-293.7491 9880.207 -8603.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"304":{"Pos":"[-6680.3823 9880.207 -8603.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":196612},"305":{"Pos":"[-3166.3042 4781.9761 -9614.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"306":{"Pos":"[-2546.7551 -15156.793 -10126.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":197124},"307":{"Pos":"[-293.4038 -14650.3906 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 245.974 0}","Settings":65540},"308":{"Pos":"[2250.5728 -15157.0938 -10126.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196609},"309":{"Pos":"[1020.1636 15562.2061 -10126.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"310":{"Pos":"[5419.5835 -16180.207 -10638.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 90 0}","Settings":196612},"311":{"Pos":"[-8835.7295 2666.8955 -10637.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":65540},"312":{"Pos":"[-7004.1895 10650.793 -10638.5059]","TrafficLights":144,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":65540},"313":{"Pos":"[-4940.9863 10933.5684 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 98.9682 0}","Settings":204800},"314":{"Pos":"[-552.3101 11024.0938 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":73728},"315":{"Pos":"[-566.7998 11288.0938 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":75776},"316":{"Pos":"[-4615.2744 11334.7598 -10638.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 263.43 0}","Settings":74752},"317":{"Pos":"[-3588.4104 11659.793 -10638.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":197124},"318":{"Pos":"[-7437.644 11659.793 -10638.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"319":{"Pos":"[-5515.5415 -1662.2102 -10637.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 45 0}","Settings":196612},"320":{"Pos":"[1385.4966 -15171.207 -10638.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"321":{"Pos":"[5137.2852 14522.2061 -10126.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196609},"322":{"Pos":"[2285.3506 -14149.207 -10126.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":197124},"323":{"Pos":"[-10721.707 -8323.2373 -10126.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196612},"324":{"Pos":"[-4046.8933 3752.2061 -9618.1865]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 90 0}","Settings":196609},"325":{"Pos":"[-12135.2061 4749.9482 -8604.7588]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":196612},"326":{"Pos":"[-1212.7971 8871.793 -8603.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196609},"327":{"Pos":"[12440.2051 -7281.0571 -7691.2676]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 360 0}","Settings":196612},"328":{"Pos":"[13464.207 -8558.8457 -7592.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196609},"329":{"Pos":"[-13159.207 4911.9795 -8603.7959]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196609},"330":{"Pos":"[-4260.8164 -1907.8918 -10638.2061]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196612},"331":{"Pos":"[15093.041 -5732.6035 -481.5056]","TrafficLights":2,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 178.711 0}","Settings":74752},"332":{"Pos":"[-15519.793 4050.1641 -866.1442]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":65537},"333":{"Pos":"[-9233.7363 8768.7646 -8603.7861]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.1851 101.1251 0}","Settings":0},"334":{"Pos":"[-11415.0947 9641.4785 -10638.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.9642 337.7245 0}","Settings":0},"335":{"Pos":"[-11111.2168 4083.7024 -10638.498]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.888 34.3221 0}","Settings":0},"336":{"Pos":"[4377.8799 8870.8516 -8603.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.7647 89.5035 0}","Settings":0},"337":{"Pos":"[9416.2646 7608.3506 -8603.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6256 57.0517 0}","Settings":0},"338":{"Pos":"[12070.0508 3788.0005 -8603.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.5493 15.3638 0}","Settings":0},"339":{"Pos":"[12439.9883 -1511.793 -8391.8047]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"340":{"Pos":"[-3597.8999 -15171.0137 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"341":{"Pos":"[-8967.417 -15027.9004 -10638.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.2612 261.0835 0}","Settings":0},"342":{"Pos":"[-13552.6836 -12596.9297 -10638.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.531 218.191 0}","Settings":0},"343":{"Pos":"[-15123.4971 -7596.3179 -10638.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.5348 182.5592 0}","Settings":0},"344":{"Pos":"[-15136.0117 -2301.5073 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"345":{"Pos":"[-15135.9873 2437.9031 -10539.415]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 180 0}","Settings":0},"346":{"Pos":"[-15070.4297 7727.9521 -10126.4971]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.6622 173.8214 0}","Settings":0},"347":{"Pos":"[-13056.3125 12504.1602 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.4991 133.6252 0}","Settings":0},"348":{"Pos":"[-8254.5547 14464.3799 -10126.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.0881 94.887 0}","Settings":0},"349":{"Pos":"[-2914.8477 14522.0137 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"350":{"Pos":"[7266.9844 -15156.9863 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"351":{"Pos":"[12399.4521 -13993.8945 -10126.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3043 120.42 0}","Settings":0},"352":{"Pos":"[15276.9648 -9821.25 -10126.502]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.2856 166.3855 0}","Settings":0},"353":{"Pos":"[15583.0137 -4595.188 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"354":{"Pos":"[15583.0137 742.9158 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"355":{"Pos":"[15583.0137 5999.5239 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"356":{"Pos":"[14994.7266 11171.6406 -10126.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.7526 199.1832 0}","Settings":0},"357":{"Pos":"[11468.876 14866.5 -10126.502]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.0111 246.6283 0}","Settings":0},"358":{"Pos":"[10874.0146 -12001.6113 -7592.5044]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6801 300.642 0}","Settings":0},"359":{"Pos":"[6223.2944 -12599.0137 -7592.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"360":{"Pos":"[-13159.0127 14.2264 -9128.2939]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 0 0}","Settings":0},"361":{"Pos":"[-13158.9863 -5220.103 -9614.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"362":{"Pos":"[-12045.6602 -10370.6797 -9614.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3043 30.42 0}","Settings":0},"363":{"Pos":"[-7882.6694 -13318.5605 -9614.5029]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.2856 76.3855 0}","Settings":0},"364":{"Pos":"[-2620.8198 -13636.0391 -9614.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.2348 91.5137 0}","Settings":0},"365":{"Pos":"[2378.6838 -12290.3242 -9614.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4293 125.5423 0}","Settings":0},"366":{"Pos":"[5049.2388 -7925.7832 -9614.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.9289 169.618 0}","Settings":0},"367":{"Pos":"[5251.5938 -2617.8445 -9614.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.4652 182.5872 0}","Settings":0},"368":{"Pos":"[3636.2017 2273.6362 -9614.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.469 218.196 0}","Settings":0},"369":{"Pos":"[-8230.2129 4781.9873 -10068.9854]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 270 0}","Settings":0},"370":{"Pos":"[-13500.6836 3344.2346 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.3988 326.2876 0}","Settings":0},"371":{"Pos":"[-14181.9863 -1751.5472 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"372":{"Pos":"[-13486.9072 -6845.7983 -10126.4961]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.888 34.3221 0}","Settings":0},"373":{"Pos":"[-9882.5547 -10588.209 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":0},"374":{"Pos":"[10072.6426 -14223.2861 -10638.502]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.1019 155.0677 0}","Settings":0},"375":{"Pos":"[10142.085 -9089.1953 -10638.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.4999 200.2214 0}","Settings":0},"376":{"Pos":"[6680.125 -5229.1069 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":0},"377":{"Pos":"[2151.3447 -3154.9871 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 270 0}","Settings":0},"378":{"Pos":"[8543.5996 -13607.0137 -7592.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"379":{"Pos":"[1224.6038 2488.1299 -9614.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6256 57.0517 0}","Settings":0},"380":{"Pos":"[3995.2644 -1819.5985 -9614.5]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{358.0716 11.9478 0}","Settings":0},"381":{"Pos":"[4005.5452 -7010.6045 -9614.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.8886 348.0261 0}","Settings":0},"382":{"Pos":"[1309.2362 -11312.3154 -9614.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6257 302.9336 0}","Settings":0},"383":{"Pos":"[-3730.2495 -12629.2207 -9614.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 270.4657 0}","Settings":0},"384":{"Pos":"[-8784.3037 -11566.0098 -9614.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.6955 239.5748 0}","Settings":0},"385":{"Pos":"[-11790.166 -7455.5776 -9614.5029]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.8891 193.6105 0}","Settings":0},"386":{"Pos":"[-12134.9863 -2251.8892 -9407.5098]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"387":{"Pos":"[-13157.9863 -4088.104 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"388":{"Pos":"[-12836.3369 1628.9767 -10126.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.0358 157.6928 0}","Settings":0},"389":{"Pos":"[-578.1279 -3658.9873 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"390":{"Pos":"[4544.9399 -4296.0713 -10638.501]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.112 55.6275 0}","Settings":0},"391":{"Pos":"[8314.0039 -7899.9863 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":0},"392":{"Pos":"[9204.6338 -12803.6357 -10638.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.3619 342.5622 0}","Settings":0},"393":{"Pos":"[13464.0137 -3360.6997 -8163.7271]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 180 0}","Settings":0},"394":{"Pos":"[13463.9863 1341.8978 -8603.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":0},"395":{"Pos":"[12416.6328 6498.4976 -8603.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.2201 207.9805 0}","Settings":0},"396":{"Pos":"[8289.0674 9534.9824 -8603.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.2856 256.3855 0}","Settings":0},"397":{"Pos":"[-3957.7964 15562.0137 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":0},"398":{"Pos":"[-9212.0381 15510.082 -10126.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.9119 274.9138 0}","Settings":0},"399":{"Pos":"[-14067.6055 13556.2695 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.5009 313.6262 0}","Settings":0},"400":{"Pos":"[-16085.7734 8848.0898 -10126.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{1.3378 353.8473 0}","Settings":0},"401":{"Pos":"[-16159.9883 3627.5591 -10401.8027]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0002 0.0001 0}","Settings":0},"402":{"Pos":"[-16160.0117 -1655.6746 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"403":{"Pos":"[-16159.9863 -6965.7847 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"404":{"Pos":"[-15425.457 -12156.2471 -10638.5029]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{3.0109 23.3825 0}","Settings":0},"405":{"Pos":"[-11681.4473 -15622.3594 -10638.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{2.7529 70.8303 0}","Settings":0},"406":{"Pos":"[-6485.3677 -16180.0137 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"407":{"Pos":"[-1269.5033 -16180.0137 -10638.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":0},"408":{"Pos":"[10165.6094 13934.7393 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.2472 70.8125 0}","Settings":0},"409":{"Pos":"[13885.6592 10351.752 -10126.5039]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.1125 21.2127 0}","Settings":0},"410":{"Pos":"[14559.0137 5165.7563 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"411":{"Pos":"[14559.0137 -210.3542 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"412":{"Pos":"[14559.0137 -5471.3242 -10126.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"413":{"Pos":"[13562.5693 -10671.5518 -10126.5049]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{356.7798 332.0143 0}","Settings":0},"414":{"Pos":"[9427.1348 -13792.2129 -10126.499]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{357.5493 285.3638 0}","Settings":0},"415":{"Pos":"[10310.2588 -14249.6523 -96.8367]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{359.6389 269.1971 0}","Settings":196612},"416":{"Pos":"[15591.8066 6535.6851 -97.5056]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{-0 180 0}","Settings":196612},"417":{"Pos":"[5064.5938 5819.1406 -96.5002]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0.3496 315.1966 0}","Settings":65540},"418":{"Pos":"[-4913.2837 -14719.6953 -95.5057]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{-0 270 0}","Settings":196612},"419":{"Pos":"[-14933.8125 9420.1416 540.3793]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{359.9994 179.3347 0}","Settings":196612},"420":{"Pos":"[-9174.2051 9136.3447 -235.3974]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{359.9999 0.0001 0}","Settings":196609},"421":{"Pos":"[13353.207 -5338.4829 -1739.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"422":{"Pos":"[3159.8374 7900.9258 -1739.2743]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 225 0}","Settings":196612},"423":{"Pos":"[547.2346 9088.5547 -1739.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":197124},"424":{"Pos":"[863.3079 9463.9082 -1739.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 20.974 0}","Settings":73728},"425":{"Pos":"[6449.2617 3185.9756 -1739.2743]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 45 0}","Settings":196612},"426":{"Pos":"[12017.0908 -4419.2974 -1739.4879]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0008 0.6617 0}","Settings":196609},"427":{"Pos":"[-8462.2051 9183.0332 -234.7458]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.0001 180 0}","Settings":196612},"428":{"Pos":"[-15648.207 3924.1182 540.4944]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0 0 0}","Settings":196612},"429":{"Pos":"[-4769.0942 -14984.9063 -95.5056]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0 90 0}","Settings":196612},"430":{"Pos":"[4299.0762 -799.4905 -96.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{-0 180 0}","Settings":65540},"431":{"Pos":"[4164.6865 761.9815 -96.5047]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{0.6709 192.0052 0}","Settings":204800},"432":{"Pos":"[9128.2217 9596.6045 -96.8583]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":1,"Angles":"{358.7651 128.2746 0}","Settings":196612},"433":{"Pos":"[8371.3145 -7563.8145 -97.5056]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{0 315 0}","Settings":196612},"434":{"Pos":"[12012.0586 -14449.1816 -115.2464]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":2,"Angles":"{2.9986 94.2273 0}","Settings":196612},"435":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"436":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"437":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"438":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"439":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"440":{"Pos":"[0 0 0]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":0},"441":{"Pos":"[-680.1612 11741.4531 -1739.5056]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":8},"442":{"Pos":"[-10874.2051 16008.207 -1739.5056]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":8448},"443":{"Pos":"[-5989.6235 -13055.5146 -10126.2061]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 225 0}","Settings":196612},"444":{"Pos":"[-4522.8779 10651.0938 -10638.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196609},"445":{"Pos":"[-5405.9741 13689.793 -14417.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"446":{"Pos":"[1140.853 13689.793 -14417.5059]","TrafficLights":41,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":589825},"447":{"Pos":"[3348.8892 -15731.793 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"448":{"Pos":"[806.7939 3851.4202 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196609},"449":{"Pos":"[10341.1777 -16045.207 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196612},"450":{"Pos":"[15399.207 3726.958 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196616},"451":{"Pos":"[15399.207 -2112.1101 -16192.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196612},"452":{"Pos":"[15134.793 3701.1328 -16192.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"453":{"Pos":"[15134.793 -2194.623 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196612},"454":{"Pos":"[15399.207 16071.8398 -16192.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":205056},"455":{"Pos":"[15135.207 16080.8926 -16192.5059]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":205056},"456":{"Pos":"[15398.8066 14240.29 -16192.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":204800},"457":{"Pos":"[15134.8066 14149.7012 -16192.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 0 0}","Settings":196616},"458":{"Pos":"[9976.8301 -15780.793 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"459":{"Pos":"[1071.2062 4019.0479 -16192.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 180 0}","Settings":196609},"460":{"Pos":"[3855.0029 -15996.207 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 90 0}","Settings":196609},"461":{"Pos":"[7253.1831 13952.7578 -14417.1855]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0.2349 269.5034 0}","Settings":197124},"462":{"Pos":"[-4766.5469 14698.207 -14417.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196609},"463":{"Pos":"[869.6057 14698.207 -14417.5059]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":196612},"464":{"Pos":"[5213.3101 14698.207 -14417.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 270 0}","Settings":66564},"465":{"Pos":"[15364.4258 5353.3276 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 168.875 0}","Settings":196616},"466":{"Pos":"[4132.4224 -11307.835 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 78.875 0}","Settings":196612},"467":{"Pos":"[-2827.5796 -9939.2451 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 78.875 0}","Settings":196612},"468":{"Pos":"[-12059.2354 4817.4561 -14417.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 337.5 0}","Settings":196612},"469":{"Pos":"[12255.2656 -3355.2593 -13905.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 157.5 0}","Settings":196609},"470":{"Pos":"[1174.9802 -14807.2695 -13905.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 78.625 0}","Settings":196610},"471":{"Pos":"[-2432.3933 7873.6338 -13393.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 258.625 0}","Settings":196609},"472":{"Pos":"[5884.2285 -1488.1453 -13394.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 213.625 0}","Settings":196612},"473":{"Pos":"[13927.6152 -12996.0215 -13394.6055]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 33.875 0}","Settings":327696},"474":{"Pos":"[14761.6426 -14238.0166 -13394.6055]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 33.875 0}","Settings":205056},"475":{"Pos":"[14546.2598 -14391.6836 -13394.6055]","TrafficLights":1,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 33.875 0}","Settings":205056},"476":{"Pos":"[9100.0869 -5804.8281 -13394.6055]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 33.875 0}","Settings":327688},"477":{"Pos":"[5215.4404 -4.9971 -13394.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 33.625 0}","Settings":196612},"478":{"Pos":"[-2247.8618 10121.6719 -13394.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 78.625 0}","Settings":196612},"479":{"Pos":"[9850.0293 -6828.459 -13905.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 348.625 0}","Settings":196609},"480":{"Pos":"[6068.2275 6998.5996 -13905.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 67.5 0}","Settings":196610},"481":{"Pos":"[-11284.7246 4528.9775 -14417.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 157.5 0}","Settings":196609},"482":{"Pos":"[-988.1956 -9273.1641 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 258.875 0}","Settings":196612},"483":{"Pos":"[14188.3184 6015.8091 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 348.875 0}","Settings":196612},"484":{"Pos":"[6655.1348 13217.9678 -14417.7061]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{-0 78.75 0}","Settings":196616},"485":{"Pos":"[11801.2188 13562.4463 -14929.5059]","TrafficLights":9,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 258.875 0}","Settings":65544},"486":{"Pos":"[5459.312 14695.4736 -14417.7061]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{360 269.2626 0}","Settings":65544},"487":{"Pos":"[13706.4258 -13140.1885 -13394.6055]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 213.875 0}","Settings":196616},"488":{"Pos":"[5013.8364 13544.6582 -14417.7061]","TrafficLights":0,"Class":"gmod_track_signal","LightsStyle":0,"Angles":"{0 78.75 0}","Settings":262152},"489":{"Channel":1,"Pos":"[-1822.7947 -1447.7142 -4386.9688]","Angles":"{0 88.9928 0}","Class":"gmod_track_switch"},"490":{"Channel":1,"Pos":"[2110.3704 -2251.4604 -4386.9688]","Angles":"{0 269.3928 0}","Class":"gmod_track_switch"},"491":{"Channel":2,"Pos":"[-4892.834 15146.8975 -3874.9688]","Angles":"{0 271.2938 0}","Class":"gmod_track_switch"},"492":{"Channel":1,"Pos":"[-6058.2861 15139.9512 -3874.9688]","Angles":"{0 269.5339 0}","Class":"gmod_track_switch"},"493":{"Channel":1,"Pos":"[-10019.334 15941.8711 -3874.9688]","Angles":"{0 89.4943 0}","Class":"gmod_track_switch"},"494":{"Channel":2,"Pos":"[-10770.9619 3229.0544 -2850.9688]","Angles":"{0 180.4955 0}","Class":"gmod_track_switch"},"495":{"Channel":1,"Pos":"[-9970.1172 3240.0581 -2850.9688]","Angles":"{0 1.3358 0}","Class":"gmod_track_switch"},"496":{"Channel":1,"Pos":"[-10371.9453 6423.2905 -2850.9688]","Angles":"{0 0.0954 0}","Class":"gmod_track_switch"},"497":{"Channel":1,"Pos":"[-10376.041 8097.7241 -2850.9688]","Angles":"{0 0.5354 0}","Class":"gmod_track_switch"},"498":{"Channel":1,"Pos":"[1646.415 -5336.3262 -2850.9688]","Angles":"{0 11.8959 0}","Class":"gmod_track_switch"},"499":{"Channel":1,"Pos":"[1627.9341 -9371.4805 -2850.9688]","Angles":"{0 192.296 0}","Class":"gmod_track_switch"},"500":{"Channel":1,"Pos":"[8359.0049 7612.1396 -2338.9688]","Angles":"{0 359.7954 0}","Class":"gmod_track_switch"},"501":{"Channel":2,"Pos":"[8566.7158 6477.9478 -2337.9688]","Angles":"{0 180.4155 0}","Class":"gmod_track_switch"},"502":{"Channel":2,"Pos":"[9372.9189 2492.5791 -2337.9688]","Angles":"{0 1.5552 0}","Class":"gmod_track_switch"},"503":{"Channel":1,"Pos":"[14555.833 -3043.0298 -487.9688]","Angles":"{0 181.3748 0}","Class":"gmod_track_switch"},"504":{"Channel":2,"Pos":"[15356.9082 -3049.5342 -487.9688]","Angles":"{0 359.3549 0}","Class":"gmod_track_switch"},"505":{"Channel":1,"Pos":"[14955.46 -8291.1836 -615.9688]","Angles":"{0 359.3548 0}","Class":"gmod_track_switch"},"506":{"Channel":1,"Pos":"[14950.6758 -9965.71 -615.9688]","Angles":"{0 359.3547 0}","Class":"gmod_track_switch"},"507":{"Channel":1,"Pos":"[-6421.2417 -12495.1709 -7612.6787]","Angles":"{0 272.2583 0}","Class":"gmod_track_switch"},"508":{"Channel":1,"Pos":"[-2503.6563 -13502.5156 -7612.6787]","Angles":"{0 268.0783 0}","Class":"gmod_track_switch"},"509":{"Channel":2,"Pos":"[12151.7627 2670.1711 -5396.9688]","Angles":"{0 359.8622 0}","Class":"gmod_track_switch"},"510":{"Channel":1,"Pos":"[12150.9434 1528.887 -5396.9688]","Angles":"{0 1.3828 0}","Class":"gmod_track_switch"},"511":{"Channel":1,"Pos":"[11357.6123 -2436.6223 -5396.9688]","Angles":"{0 179.1429 0}","Class":"gmod_track_switch"},"512":{"Channel":1,"Pos":"[1705.319 -15051.7842 -10132.9688]","Angles":"{0 270.1079 0}","Class":"gmod_track_switch"},"513":{"Channel":1,"Pos":"[-2271.428 -14251.3203 -10132.9688]","Angles":"{0 88.888 0}","Class":"gmod_track_switch"},"514":{"Channel":1,"Pos":"[-6608.165 10758.4121 -10644.9688]","Angles":"{0 272.5503 0}","Class":"gmod_track_switch"},"515":{"Channel":1,"Pos":"[-3547.0432 10921.6016 -10644.9688]","Angles":"{0 89.2903 0}","Class":"gmod_track_switch"},"516":{"Channel":1,"Pos":"[-3555.0503 11391.9063 -10644.9688]","Angles":"{0 270.7903 0}","Class":"gmod_track_switch"},"517":{"Channel":1,"Pos":"[-1606.4888 11394.8076 -10644.9688]","Angles":"{0 272.1103 0}","Class":"gmod_track_switch"},"518":{"Channel":1,"Pos":"[-1601.3893 10921.2393 -10644.9688]","Angles":"{0 91.1904 0}","Class":"gmod_track_switch"},"519":{"Channel":2,"Pos":"[-6588.0479 11554.8252 -10644.9688]","Angles":"{0 88.9905 0}","Class":"gmod_track_switch"},"520":{"Channel":0,"Pos":"[3903.1252 1732.6753 -120.6576]","Angles":"{0 180.3423 0}","Class":"gmod_track_switch"},"521":{"Channel":1,"Pos":"[4421.2671 -278.5978 -122.1636]","Angles":"{0 178.8023 0}","Class":"gmod_track_switch"},"522":{"Channel":1,"Pos":"[3943.416 13789.335 -14423.9688]","Angles":"{0 270.93 0}","Class":"gmod_track_switch"},"523":{"Channel":1,"Pos":"[2275.1738 14799.4854 -14423.9688]","Angles":"{0 271.07 0}","Class":"gmod_track_switch"}} \ No newline at end of file diff --git a/lua/metrostroi_data/signs_gm_mus_neoorange_d.lua b/lua/metrostroi_data/signs_gm_mus_neoorange_d.lua index 7cd714e..2ac6fd4 100644 --- a/lua/metrostroi_data/signs_gm_mus_neoorange_d.lua +++ b/lua/metrostroi_data/signs_gm_mus_neoorange_d.lua @@ -1,6 +1,6 @@ { - "1": + "1": { "Approve0": false, "RouteNumberSetup": "", @@ -13,9 +13,9 @@ "Name": "E1", "Angles": "{0 90 0}", "Pos": "[7768.582 3178.54 5253.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -26,7 +26,7 @@ } ] }, - "2": + "2": { "Approve0": false, "RouteNumberSetup": "", @@ -39,9 +39,9 @@ "Name": "I5", "Angles": "{0.3147 179.3346 0}", "Pos": "[13543.5508 6201.4468 5253.8047]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -52,7 +52,7 @@ } ] }, - "3": + "3": { "Approve0": false, "RouteNumberSetup": "", @@ -65,9 +65,9 @@ "Name": "I3", "Angles": "{1.9923 192.8082 0}", "Pos": "[13436.4258 11371.1172 5130.397]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -78,7 +78,7 @@ } ] }, - "4": + "4": { "Approve0": false, "RouteNumberSetup": "", @@ -91,9 +91,9 @@ "Name": "I1", "Angles": "{0 270 0}", "Pos": "[6660.3906 13403.8066 5130.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -104,7 +104,7 @@ } ] }, - "5": + "5": { "Approve0": false, "RouteNumberSetup": "", @@ -117,9 +117,9 @@ "Name": "11", "Angles": "{0 270 0}", "Pos": "[1849.7695 13404.207 5130.7441]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -130,7 +130,7 @@ } ] }, - "6": + "6": { "Approve0": false, "RouteNumberSetup": "", @@ -143,9 +143,9 @@ "Name": "13", "Angles": "{0 270.8822 0}", "Pos": "[-3146.8071 13404.207 5130.7441]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "4", @@ -156,7 +156,7 @@ } ] }, - "7": + "7": { "Approve0": false, "RouteNumberSetup": "", @@ -169,9 +169,9 @@ "Name": "15", "Angles": "{0 270 0}", "Pos": "[-5857.5645 13056.4063 5131.3643]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -182,7 +182,7 @@ } ] }, - "8": + "8": { "Approve0": false, "RouteNumberSetup": "", @@ -195,9 +195,9 @@ "Name": "17", "Angles": "{3.1232 297.9828 0}", "Pos": "[-12330.666 12069.292 5138.4019]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -208,7 +208,7 @@ } ] }, - "9": + "9": { "Approve0": false, "RouteNumberSetup": "", @@ -221,9 +221,9 @@ "Name": "23", "Angles": "{0.2349 89.5034 0}", "Pos": "[-7629.2256 -12782.4219 4830.0952]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -234,7 +234,7 @@ } ] }, - "10": + "10": { "Approve0": false, "RouteNumberSetup": "", @@ -247,9 +247,9 @@ "Name": "25", "Angles": "{0 90 0}", "Pos": "[-3741.8823 -12966 4829.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -260,7 +260,7 @@ } ] }, - "11": + "11": { "Approve0": false, "RouteNumberSetup": "", @@ -273,9 +273,9 @@ "Name": "27", "Angles": "{0 90 0}", "Pos": "[648.5056 -12966 4829.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -286,7 +286,7 @@ } ] }, - "12": + "12": { "Approve0": false, "RouteNumberSetup": "", @@ -299,9 +299,9 @@ "Name": "21", "Angles": "{1.7381 81.0832 0}", "Pos": "[-9767.5107 -12617.8223 4833.8247]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "06", @@ -312,7 +312,7 @@ } ] }, - "13": + "13": { "Approve0": false, "RouteNumberSetup": "", @@ -325,9 +325,9 @@ "Name": "29", "Angles": "{0 99.7628 0}", "Pos": "[3322.9824 -12719.4902 4829.9814]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -338,7 +338,7 @@ } ] }, - "14": + "14": { "Approve0": false, "RouteNumberSetup": "", @@ -351,9 +351,9 @@ "Name": "31", "Angles": "{3.3053 122.9446 0}", "Pos": "[9684.4092 -11287.6133 4837.5376]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -364,7 +364,7 @@ } ] }, - "15": + "15": { "Approve0": false, "RouteNumberSetup": "", @@ -377,9 +377,9 @@ "Name": "33", "Angles": "{1.1273 175.0836 0}", "Pos": "[12652.1699 -5529.5522 4832.2876]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -390,7 +390,7 @@ } ] }, - "16": + "16": { "Approve0": false, "RouteNumberSetup": "", @@ -403,9 +403,9 @@ "Name": "35", "Angles": "{3.44 158.015 0}", "Pos": "[15312.8037 212.5146 4830.1343]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -416,7 +416,7 @@ } ] }, - "17": + "17": { "Approve0": false, "RouteNumberSetup": "", @@ -429,9 +429,9 @@ "Name": "37", "Angles": "{2.1107 258.0256 0}", "Pos": "[9947.4492 9353.5107 4834.707]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -442,7 +442,7 @@ } ] }, - "18": + "18": { "Approve0": false, "RouteNumberSetup": "", @@ -455,9 +455,9 @@ "Name": "39", "Angles": "{0.2342 270.5031 0}", "Pos": "[-6258.3662 9628.7324 4385.7549]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -468,7 +468,7 @@ } ] }, - "19": + "19": { "Approve0": false, "RouteNumberSetup": "", @@ -481,9 +481,9 @@ "Name": "41", "Angles": "{1.3371 353.8219 0}", "Pos": "[-14330.3311 2801.0376 4388.1147]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -494,7 +494,7 @@ } ] }, - "20": + "20": { "Approve0": false, "RouteNumberSetup": "", @@ -507,9 +507,9 @@ "Name": "43", "Angles": "{0.9119 4.9138 0}", "Pos": "[-15481.4434 -8852.2363 4386.6211]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -520,7 +520,7 @@ } ] }, - "21": + "21": { "Approve0": false, "RouteNumberSetup": "", @@ -533,9 +533,9 @@ "Name": "45", "Angles": "{0.4657 88.5127 0}", "Pos": "[-7854.8013 -15791.0967 4386.6157]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -546,7 +546,7 @@ } ] }, - "22": + "22": { "Approve0": false, "RouteNumberSetup": "", @@ -559,9 +559,9 @@ "Name": "47", "Angles": "{0 90 0}", "Pos": "[-3419.4111 -15800.3867 4386.6143]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "006", @@ -572,7 +572,7 @@ } ] }, - "23": + "23": { "Approve0": false, "RouteNumberSetup": "", @@ -585,9 +585,9 @@ "Name": "51", "Angles": "{0 90 0}", "Pos": "[4451.3359 -15800 4386.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -598,7 +598,7 @@ } ] }, - "24": + "24": { "Approve0": false, "RouteNumberSetup": "", @@ -611,9 +611,9 @@ "Name": "53", "Angles": "{0.691 93.7191 0}", "Pos": "[7125.6045 -15768.8525 4386.6206]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -624,7 +624,7 @@ } ] }, - "25": + "25": { "Approve0": false, "RouteNumberSetup": "", @@ -637,9 +637,9 @@ "Name": "55", "Angles": "{0.6915 177.4383 0}", "Pos": "[14327.9971 -8340.4121 4386.6177]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -650,7 +650,7 @@ } ] }, - "26": + "26": { "Approve0": false, "RouteNumberSetup": "", @@ -663,9 +663,9 @@ "Name": "57", "Angles": "{0.0001 180.4948 0}", "Pos": "[14345.4531 5860.186 4085.6208]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -676,7 +676,7 @@ } ] }, - "27": + "27": { "Approve0": false, "RouteNumberSetup": "", @@ -689,9 +689,9 @@ "Name": "59", "Angles": "{1.5416 262.5153 0}", "Pos": "[7859.9819 13909.3105 4085.6211]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -702,7 +702,7 @@ } ] }, - "28": + "28": { "Approve0": false, "RouteNumberSetup": "", @@ -715,9 +715,9 @@ "Name": "61", "Angles": "{0 270 0}", "Pos": "[-6504.5483 14009.3867 3784.3743]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -728,7 +728,7 @@ } ] }, - "29": + "29": { "Approve0": false, "RouteNumberSetup": "", @@ -741,9 +741,9 @@ "Name": "63", "Angles": "{1.9289 349.6179 0}", "Pos": "[-15131.7412 8167.4985 3784.6179]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "067", @@ -754,7 +754,7 @@ } ] }, - "30": + "30": { "Approve0": false, "RouteNumberSetup": "", @@ -767,9 +767,9 @@ "Name": "65", "Angles": "{360 0 0}", "Pos": "[-15331.2051 -3114.2556 3553.7314]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -780,7 +780,7 @@ } ] }, - "31": + "31": { "Approve0": false, "RouteNumberSetup": "", @@ -793,9 +793,9 @@ "Name": "67", "Angles": "{3.2856 34.5691 0}", "Pos": "[-14863.8154 -12930.5049 3339.1699]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -806,7 +806,7 @@ } ] }, - "32": + "32": { "Approve0": false, "RouteNumberSetup": "", @@ -819,9 +819,9 @@ "Name": "69", "Angles": "{358.6349 77.8295 0}", "Pos": "[-9104.5742 -14352.4707 3340.3518]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -832,7 +832,7 @@ } ] }, - "33": + "33": { "Approve0": false, "RouteNumberSetup": "", @@ -845,9 +845,9 @@ "Name": "71", "Angles": "{1.4368 81.4332 0}", "Pos": "[-6195.6157 -15157.2412 3340.3423]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "004", @@ -858,7 +858,7 @@ } ] }, - "34": + "34": { "Approve0": false, "RouteNumberSetup": "", @@ -871,9 +871,9 @@ "Name": "73", "Angles": "{0 90 0}", "Pos": "[-2708.4478 -15259.5195 3340.3457]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -884,7 +884,7 @@ } ] }, - "35": + "35": { "Approve0": false, "RouteNumberSetup": "", @@ -897,9 +897,9 @@ "Name": "AP77", "Angles": "{0 90 0}", "Pos": "[4297.9834 -15259.7939 3340.1343]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -910,7 +910,7 @@ } ] }, - "36": + "36": { "Approve0": false, "RouteNumberSetup": "", @@ -925,9 +925,9 @@ "Angles": "{0 90 0}", "Pos": "[1810.0786 -15259.6465 3340.3457]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -939,7 +939,7 @@ ], "Left": true }, - "37": + "37": { "Approve0": false, "RouteNumberSetup": "", @@ -952,9 +952,9 @@ "Name": "79", "Angles": "{0 90 0}", "Pos": "[9101.3115 -15260.1934 3339.6943]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -965,7 +965,7 @@ } ] }, - "38": + "38": { "Approve0": false, "RouteNumberSetup": "", @@ -978,9 +978,9 @@ "Name": "81", "Angles": "{3.508 138.5463 0}", "Pos": "[13151.833 -14414.8076 3339.53]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -991,7 +991,7 @@ } ] }, - "39": + "39": { "Approve0": false, "RouteNumberSetup": "", @@ -1004,9 +1004,9 @@ "Name": "83", "Angles": "{0.0014 159.6571 0}", "Pos": "[14446.7461 -8958.7969 3340.4675]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -1017,7 +1017,7 @@ } ] }, - "40": + "40": { "Approve0": false, "RouteNumberSetup": "", @@ -1030,9 +1030,9 @@ "Name": "85", "Angles": "{360 180 0}", "Pos": "[15021.7871 2643.3591 3098.2622]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1043,7 +1043,7 @@ } ] }, - "41": + "41": { "Approve0": false, "RouteNumberSetup": "", @@ -1056,9 +1056,9 @@ "Name": "87", "Angles": "{3.1222 244.376 0}", "Pos": "[11164.7246 14062.2686 3038.6182]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1069,7 +1069,7 @@ } ] }, - "42": + "42": { "Approve0": false, "RouteNumberSetup": "", @@ -1082,9 +1082,9 @@ "Name": "89", "Angles": "{360 270 0}", "Pos": "[-1757.1123 14869.5859 2819.9353]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1095,7 +1095,7 @@ } ] }, - "43": + "43": { "Approve0": false, "RouteNumberSetup": "", @@ -1108,9 +1108,9 @@ "Name": "91", "Angles": "{3.4929 319.0969 0}", "Pos": "[-12831.3779 12582.9658 2736.6143]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1121,7 +1121,7 @@ } ] }, - "44": + "44": { "Approve0": false, "RouteNumberSetup": "", @@ -1135,9 +1135,9 @@ "Name": "97//", "Angles": "{0 0 0}", "Pos": "[-14655.5 2799.5637 2736.5012]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1149,7 +1149,7 @@ ], "Left": true }, - "45": + "45": { "Approve0": false, "RouteNumberSetup": "", @@ -1163,9 +1163,9 @@ "Name": "93", "Angles": "{0.4657 358.5127 0}", "Pos": "[-14645.6846 7230.2686 2736.6143]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1177,7 +1177,7 @@ ], "Left": false }, - "46": + "46": { "Approve0": false, "RouteNumberSetup": "", @@ -1191,9 +1191,9 @@ "Name": "99", "Angles": "{0 0 0}", "Pos": "[-14656.207 -1721.5818 2736.4944]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1205,7 +1205,7 @@ ], "Left": false }, - "47": + "47": { "Approve0": false, "RouteNumberSetup": "", @@ -1219,9 +1219,9 @@ "Name": "101", "Angles": "{0 0 0}", "Pos": "[-14656.0137 -4333.4736 2736.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1233,7 +1233,7 @@ ], "Left": false }, - "48": + "48": { "Approve0": false, "RouteNumberSetup": "", @@ -1247,9 +1247,9 @@ "Name": "95", "Angles": "{0 0 0}", "Pos": "[-14655.707 5020.9712 2736.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1261,7 +1261,7 @@ ], "Left": false }, - "49": + "49": { "Approve0": false, "RouteNumberSetup": "", @@ -1275,9 +1275,9 @@ "Name": "103", "Angles": "{2.8875 68.7606 0}", "Pos": "[-10330.6572 -14214.1758 2736.6301]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1289,7 +1289,7 @@ ], "Left": false }, - "50": + "50": { "Approve0": false, "RouteNumberSetup": "", @@ -1303,9 +1303,9 @@ "Name": "105", "Angles": "{360 90 0}", "Pos": "[2513.3574 -14826.9863 2483.6147]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1317,7 +1317,7 @@ ], "Left": false }, - "51": + "51": { "Approve0": false, "RouteNumberSetup": "", @@ -1331,9 +1331,9 @@ "Name": "107", "Angles": "{3.501 136.3687 0}", "Pos": "[13553.166 -12613.6855 2435.6145]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1345,7 +1345,7 @@ ], "Left": false }, - "52": + "52": { "Approve0": false, "RouteNumberSetup": "", @@ -1359,9 +1359,9 @@ "Name": "109", "Angles": "{0 180 0}", "Pos": "[15119.0859 -1534.6481 2435.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1373,7 +1373,7 @@ ], "Left": false }, - "53": + "53": { "Approve0": false, "RouteNumberSetup": "", @@ -1387,9 +1387,9 @@ "Name": "111", "Angles": "{1.9285 191.9704 0}", "Pos": "[15309.9629 10052.1777 2435.6213]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1401,7 +1401,7 @@ ], "Left": false }, - "54": + "54": { "Approve0": false, "RouteNumberSetup": "", @@ -1415,9 +1415,9 @@ "Name": "113", "Angles": "{0 270 0}", "Pos": "[6468.4487 15681.3926 2435.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1429,7 +1429,7 @@ ], "Left": false }, - "55": + "55": { "Approve0": false, "RouteNumberSetup": "", @@ -1443,9 +1443,9 @@ "Name": "115", "Angles": "{0 270 0}", "Pos": "[-6428.9233 15681.6133 2134.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1457,7 +1457,7 @@ ], "Left": false }, - "56": + "56": { "Approve0": false, "RouteNumberSetup": "", @@ -1471,9 +1471,9 @@ "Name": "121", "Angles": "{0 0 0}", "Pos": "[-15150.9941 4985.9775 2134.2512]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1485,7 +1485,7 @@ ], "Left": false }, - "57": + "57": { "Approve0": false, "RouteNumberSetup": "", @@ -1499,9 +1499,9 @@ "Name": "119", "Angles": "{0 0 0}", "Pos": "[-15150.8125 7324.4224 2134.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "006", @@ -1513,7 +1513,7 @@ ], "Left": false }, - "58": + "58": { "Approve0": false, "RouteNumberSetup": "", @@ -1527,9 +1527,9 @@ "Name": "117", "Angles": "{2.7529 340.8303 0}", "Pos": "[-14564.043 11286.5 2134.6145]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "06", @@ -1541,7 +1541,7 @@ ], "Left": false }, - "59": + "59": { "Approve0": false, "RouteNumberSetup": "", @@ -1555,9 +1555,9 @@ "Name": "123", "Angles": "{0 0 0}", "Pos": "[-15150.9941 669.4668 2134.2144]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1569,7 +1569,7 @@ ], "Left": false }, - "60": + "60": { "Approve0": false, "RouteNumberSetup": "", @@ -1583,9 +1583,9 @@ "Name": "125", "Angles": "{0.6108 2.0507 0}", "Pos": "[-15145.334 -2001.4856 2134.6313]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1597,7 +1597,7 @@ ], "Left": false }, - "61": + "61": { "Approve0": false, "RouteNumberSetup": "", @@ -1611,9 +1611,9 @@ "Name": "127", "Angles": "{3.3043 30.42 0}", "Pos": "[-11968.8906 -12831.8672 2134.6165]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1625,7 +1625,7 @@ ], "Left": false }, - "62": + "62": { "Approve0": false, "RouteNumberSetup": "", @@ -1639,9 +1639,9 @@ "Name": "129", "Angles": "{360 90 0}", "Pos": "[-1498.6409 -16064.9863 2092.1897]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1653,7 +1653,7 @@ ], "Left": false }, - "63": + "63": { "Approve0": false, "RouteNumberSetup": "", @@ -1667,9 +1667,9 @@ "Name": "131", "Angles": "{1.7383 100.4022 0}", "Pos": "[10110.46 -15860.6152 1833.9092]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1681,7 +1681,7 @@ ], "Left": false }, - "64": + "64": { "Approve0": false, "RouteNumberSetup": "", @@ -1695,9 +1695,9 @@ "Name": "133", "Angles": "{0 180 0}", "Pos": "[15925.8867 -7177.2344 1833.7744]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1709,7 +1709,7 @@ ], "Left": false }, - "65": + "65": { "Approve0": false, "RouteNumberSetup": "", @@ -1723,9 +1723,9 @@ "Name": "135", "Angles": "{0 180 0}", "Pos": "[15925.5859 4395.6763 1496.6644]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1737,7 +1737,7 @@ ], "Left": false }, - "66": + "66": { "Approve0": false, "RouteNumberSetup": "", @@ -1751,9 +1751,9 @@ "Name": "137", "Angles": "{2.451 254.6322 0}", "Pos": "[10923.9805 13736.3975 1496.6163]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1765,7 +1765,7 @@ ], "Left": false }, - "67": + "67": { "Approve0": false, "RouteNumberSetup": "", @@ -1779,9 +1779,9 @@ "Name": "143", "Angles": "{0 270 0}", "Pos": "[1324.478 14561 1496.4944]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1793,7 +1793,7 @@ ], "Left": false }, - "68": + "68": { "Approve0": false, "RouteNumberSetup": "", @@ -1807,9 +1807,9 @@ "Name": "139", "Angles": "{359.9269 255.1329 0}", "Pos": "[6260.9878 14323.8887 1496.4634]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1821,7 +1821,7 @@ ], "Left": false }, - "69": + "69": { "Approve0": false, "RouteNumberSetup": "", @@ -1835,9 +1835,9 @@ "Name": "141", "Angles": "{0 270 0}", "Pos": "[3846.877 14561.4863 1496.4644]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -1849,7 +1849,7 @@ ], "Left": false }, - "70": + "70": { "Approve0": false, "RouteNumberSetup": "", @@ -1863,9 +1863,9 @@ "Name": "145", "Angles": "{0 270 0}", "Pos": "[-2452.1472 14561 1496.4944]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1877,7 +1877,7 @@ ], "Left": false }, - "71": + "71": { "Approve0": false, "RouteNumberSetup": "", @@ -1891,9 +1891,9 @@ "Name": "147", "Angles": "{1.3944 258.2162 0}", "Pos": "[-5160.6499 14887.2656 1496.3232]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1905,7 +1905,7 @@ ], "Left": true }, - "72": + "72": { "Approve0": false, "RouteNumberSetup": "", @@ -1919,9 +1919,9 @@ "Name": "149", "Angles": "{2.6071 342.7829 0}", "Pos": "[-14949.8096 10330 1496.6146]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1933,7 +1933,7 @@ ], "Left": false }, - "73": + "73": { "Approve0": false, "RouteNumberSetup": "", @@ -1947,9 +1947,9 @@ "Name": "151", "Angles": "{360 0 0}", "Pos": "[-15444.2871 -1230.783 1333.2316]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -1961,7 +1961,7 @@ ], "Left": false }, - "74": + "74": { "Approve0": false, "RouteNumberSetup": "", @@ -1975,9 +1975,9 @@ "Name": "153", "Angles": "{3.3743 32.9422 0}", "Pos": "[-14201.1143 -12648.374 1195.6765]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -1989,7 +1989,7 @@ ], "Left": false }, - "75": + "75": { "Approve0": false, "RouteNumberSetup": "", @@ -2003,9 +2003,9 @@ "Name": "155", "Angles": "{360 90 0}", "Pos": "[-3570.3882 -15703.0938 1148.2885]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2017,7 +2017,7 @@ ], "Left": false }, - "76": + "76": { "Approve0": false, "RouteNumberSetup": "", @@ -2031,9 +2031,9 @@ "Name": "157", "Angles": "{1.3371 97.6424 0}", "Pos": "[7993.833 -15642.8223 858.5023]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -2045,7 +2045,7 @@ ], "Left": false }, - "77": + "77": { "Approve0": false, "RouteNumberSetup": "", @@ -2059,9 +2059,9 @@ "Name": "159", "Angles": "{3.3203 149.3402 0}", "Pos": "[10586.4395 -14098.4473 858.4954]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2073,7 +2073,7 @@ ], "Left": false }, - "78": + "78": { "Approve0": false, "RouteNumberSetup": "", @@ -2087,9 +2087,9 @@ "Name": "PK161", "Angles": "{0 180 0}", "Pos": "[11160.9863 -11018.333 858.4944]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2101,7 +2101,7 @@ ], "Left": false }, - "79": + "79": { "Approve0": false, "RouteNumberSetup": "", @@ -2115,9 +2115,9 @@ "Name": "PK163", "Angles": "{0 180 0}", "Pos": "[11161 -5741.0859 858.5313]", - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2129,7 +2129,7 @@ ], "Left": false }, - "80": + "80": { "Approve0": false, "RouteNumberSetup": "", @@ -2144,9 +2144,9 @@ "Angles": "{0 180 0}", "Pos": "[10788.793 -1576.4841 858.4944]", "DoubleL": true, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2158,7 +2158,7 @@ ], "Left": false }, - "81": + "81": { "Approve0": false, "RouteNumberSetup": "", @@ -2173,9 +2173,9 @@ "Angles": "{0 180 0}", "Pos": "[10789.3066 2907.3823 858.2144]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2187,7 +2187,7 @@ ], "Left": false }, - "82": + "82": { "Approve0": false, "RouteNumberSetup": "", @@ -2202,9 +2202,9 @@ "Angles": "{0 180 0}", "Pos": "[10789.3066 5535.7847 858.2144]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2216,7 +2216,7 @@ ], "Left": false }, - "83": + "83": { "Approve0": false, "RouteNumberSetup": "", @@ -2231,9 +2231,9 @@ "Angles": "{0 171.5632 0}", "Pos": "[10906.7402 10258.7773 858.0245]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2245,7 +2245,7 @@ ], "Left": true }, - "84": + "84": { "Approve0": false, "RouteNumberSetup": "", @@ -2260,9 +2260,9 @@ "Angles": "{3.0176 247.7238 0}", "Pos": "[9400.9531 14350.0322 857.4061]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2274,7 +2274,7 @@ ], "Left": false }, - "85": + "85": { "Approve0": false, "RouteNumberSetup": "", @@ -2289,9 +2289,9 @@ "Angles": "{0 270 0}", "Pos": "[4673.8403 14629.5059 858.1043]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2303,7 +2303,7 @@ ], "Left": false }, - "86": + "86": { "Approve0": false, "RouteNumberSetup": "", @@ -2318,9 +2318,9 @@ "Angles": "{1.1982 354.6159 0}", "Pos": "[1393.7395 12044.3447 857.9429]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2332,7 +2332,7 @@ ], "Left": false }, - "87": + "87": { "Approve0": false, "RouteNumberSetup": "", @@ -2347,9 +2347,9 @@ "Angles": "{0 0 0}", "Pos": "[1623.7939 7340.0225 858.3654]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2361,7 +2361,7 @@ ], "Left": true }, - "88": + "88": { "Approve0": false, "RouteNumberSetup": "", @@ -2376,9 +2376,9 @@ "Angles": "{0 0 0}", "Pos": "[1623.3938 2556.8665 858.4353]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2390,7 +2390,7 @@ ], "Left": false }, - "89": + "89": { "Approve0": false, "RouteNumberSetup": "", @@ -2405,9 +2405,9 @@ "Angles": "{0 0 0}", "Pos": "[1623.3938 -2182.6367 858.4353]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2419,7 +2419,7 @@ ], "Left": false }, - "90": + "90": { "Approve0": false, "RouteNumberSetup": "", @@ -2434,9 +2434,9 @@ "Angles": "{357.394 289.1824 0}", "Pos": "[-2703.8149 -11936.6133 851.9]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2448,7 +2448,7 @@ ], "Left": false }, - "91": + "91": { "Approve0": false, "RouteNumberSetup": "", @@ -2463,9 +2463,9 @@ "Angles": "{356.6961 212.9416 0}", "Pos": "[-13247.457 -9542.6357 850.4694]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2477,7 +2477,7 @@ ], "Left": false }, - "92": + "92": { "Approve0": false, "RouteNumberSetup": "", @@ -2492,9 +2492,9 @@ "Angles": "{360 180 0}", "Pos": "[-14486.793 3137.0693 603.0972]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2506,7 +2506,7 @@ ], "Left": false }, - "93": + "93": { "Approve0": false, "RouteNumberSetup": "", @@ -2521,9 +2521,9 @@ "Angles": "{356.6961 122.9416 0}", "Pos": "[-11419.5303 13678.6836 477.7394]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2535,7 +2535,7 @@ ], "Left": false }, - "94": + "94": { "Approve0": false, "RouteNumberSetup": "", @@ -2550,9 +2550,9 @@ "Angles": "{360 90 0}", "Pos": "[1212.8251 14851.793 407.0654]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -2564,7 +2564,7 @@ ], "Left": false }, - "95": + "95": { "Approve0": false, "RouteNumberSetup": "", @@ -2579,9 +2579,9 @@ "Angles": "{356.5709 38.1949 0}", "Pos": "[13332.0342 12374.9912 211.5229]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2593,7 +2593,7 @@ ], "Left": false }, - "96": + "96": { "Approve0": false, "RouteNumberSetup": "", @@ -2608,9 +2608,9 @@ "Angles": "{358.2625 10.4014 0}", "Pos": "[14736.3369 9061.7793 215.4584]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2622,7 +2622,7 @@ ], "Left": false }, - "97": + "97": { "Approve0": false, "RouteNumberSetup": "", @@ -2637,9 +2637,9 @@ "Angles": "{0.0005 0.4942 0}", "Pos": "[14920.2539 7019.9785 219.2632]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2651,7 +2651,7 @@ ], "Left": false }, - "98": + "98": { "Approve0": false, "RouteNumberSetup": "", @@ -2666,9 +2666,9 @@ "Angles": "{0 0 0}", "Pos": "[14921.5938 5816.5381 219.4133]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "06", @@ -2680,7 +2680,7 @@ ], "Left": false }, - "99": + "99": { "Approve0": false, "RouteNumberSetup": "", @@ -2695,9 +2695,9 @@ "Angles": "{359.5721 357.8682 0}", "Pos": "[14914.9961 1307.4297 219.5463]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2709,7 +2709,7 @@ ], "Left": false }, - "100": + "100": { "Approve0": false, "RouteNumberSetup": "", @@ -2724,9 +2724,9 @@ "Angles": "{359.1223 341.8155 0}", "Pos": "[14463.3828 -1282.7629 219.5543]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2738,7 +2738,7 @@ ], "Left": true }, - "101": + "101": { "Approve0": false, "RouteNumberSetup": "", @@ -2753,9 +2753,9 @@ "Angles": "{356.6257 302.9336 0}", "Pos": "[10705.0752 -11799.4971 218.9698]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2767,7 +2767,7 @@ ], "Left": true }, - "102": + "102": { "Approve0": false, "RouteNumberSetup": "", @@ -2782,9 +2782,9 @@ "Angles": "{360 270 0}", "Pos": "[-662.204 -13021.7129 45.6118]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2796,7 +2796,7 @@ ], "Left": false }, - "103": + "103": { "Approve0": false, "RouteNumberSetup": "", @@ -2811,9 +2811,9 @@ "Angles": "{356.4991 226.3677 0}", "Pos": "[-11751.7676 -11007.5488 -82.6388]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -2825,7 +2825,7 @@ ], "Left": true }, - "104": + "104": { "Approve0": false, "RouteNumberSetup": "", @@ -2840,9 +2840,9 @@ "Angles": "{360 180 0}", "Pos": "[-13835.7129 65.2215 -207.6814]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -2854,7 +2854,7 @@ ], "Left": false }, - "105": + "105": { "Approve0": false, "RouteNumberSetup": "", @@ -2869,9 +2869,9 @@ "Angles": "{356.6955 149.5747 0}", "Pos": "[-12703.6641 11371.3027 -383.7247]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2883,7 +2883,7 @@ ], "Left": true }, - "106": + "106": { "Approve0": false, "RouteNumberSetup": "", @@ -2898,9 +2898,9 @@ "Angles": "{0 90 0}", "Pos": "[-3276.8025 14608 -382.6306]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2912,7 +2912,7 @@ ], "Left": false }, - "107": + "107": { "Approve0": false, "RouteNumberSetup": "", @@ -2927,9 +2927,9 @@ "Angles": "{357.8891 103.6105 0}", "Pos": "[-8493.7588 14302.8916 -383.7194]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2941,7 +2941,7 @@ ], "Left": true }, - "108": + "108": { "Approve0": false, "RouteNumberSetup": "", @@ -2956,9 +2956,9 @@ "Angles": "{359.9999 90.4657 0}", "Pos": "[-5730.147 14606.5898 -383.7192]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -2970,7 +2970,7 @@ ], "Left": true }, - "109": + "109": { "Approve0": false, "RouteNumberSetup": "", @@ -2985,9 +2985,9 @@ "Angles": "{0 90 0}", "Pos": "[579.4096 14608 -382.6306]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -2999,7 +2999,7 @@ ], "Left": false }, - "110": + "110": { "Approve0": false, "RouteNumberSetup": "", @@ -3014,9 +3014,9 @@ "Angles": "{0 90 0}", "Pos": "[3210.0098 14607.9863 -382.6306]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3028,7 +3028,7 @@ ], "Left": false }, - "111": + "111": { "Approve0": false, "RouteNumberSetup": "", @@ -3043,9 +3043,9 @@ "Angles": "{357.8891 13.6105 0}", "Pos": "[12474.377 9300.8389 -383.7203]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3057,7 +3057,7 @@ ], "Left": true }, - "112": + "112": { "Approve0": false, "RouteNumberSetup": "", @@ -3072,9 +3072,9 @@ "Angles": "{360 0 0}", "Pos": "[12787.7129 -2253.187 -641.0153]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3086,7 +3086,7 @@ ], "Left": false }, - "113": + "113": { "Approve0": false, "RouteNumberSetup": "", @@ -3101,9 +3101,9 @@ "Angles": "{356.9891 293.3672 0}", "Pos": "[8731.7705 -12300.4941 -685.2103]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3115,7 +3115,7 @@ ], "Left": true }, - "114": + "114": { "Approve0": false, "RouteNumberSetup": "", @@ -3130,9 +3130,9 @@ "Angles": "{360 270 0}", "Pos": "[-2779.6831 -13020.7129 -896.8659]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3144,7 +3144,7 @@ ], "Left": false }, - "115": + "115": { "Approve0": false, "RouteNumberSetup": "", @@ -3159,9 +3159,9 @@ "Angles": "{356.5706 215.5353 0}", "Pos": "[-13460.7168 -10171.9326 -986.2127]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -3173,7 +3173,7 @@ ], "Left": true }, - "116": + "116": { "Approve0": false, "RouteNumberSetup": "", @@ -3188,9 +3188,9 @@ "Angles": "{0 180 0}", "Pos": "[-14841.0137 1128.22 -986.2566]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -3202,7 +3202,7 @@ ], "Left": false }, - "117": + "117": { "Approve0": false, "RouteNumberSetup": "", @@ -3217,9 +3217,9 @@ "Angles": "{356.531 128.191 0}", "Pos": "[-12295.1445 11996.3135 -986.2139]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "067", @@ -3231,7 +3231,7 @@ ], "Left": true }, - "118": + "118": { "Approve0": false, "RouteNumberSetup": "", @@ -3246,9 +3246,9 @@ "Angles": "{0 90 0}", "Pos": "[-660.5109 10704.793 -985.1797]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3260,7 +3260,7 @@ ], "Left": false }, - "119": + "119": { "Approve0": false, "RouteNumberSetup": "", @@ -3275,9 +3275,9 @@ "Angles": "{356.9846 74.1806 0}", "Pos": "[-5843.1123 13487.2832 -985.6308]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3289,7 +3289,7 @@ ], "Left": true }, - "120": + "120": { "Approve0": false, "RouteNumberSetup": "134W", @@ -3304,9 +3304,9 @@ "Angles": "{0 90 0}", "Pos": "[4345.1543 10708 -995.1428]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -3318,7 +3318,7 @@ ], "Left": false }, - "121": + "121": { "Approve0": false, "RouteNumberSetup": "", @@ -3331,9 +3331,9 @@ "Name": "19", "Angles": "{360 0 0}", "Pos": "[-15922.207 -1045.722 4939.0117]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "067", @@ -3344,7 +3344,7 @@ } ] }, - "122": + "122": { "Approve0": false, "RouteNumberSetup": "12", @@ -3359,9 +3359,9 @@ "Angles": "{0 180 0}", "Pos": "[8214.7939 1577.2622 -985.5056]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3373,7 +3373,7 @@ ], "Left": false }, - "123": + "123": { "Approve0": false, "RouteNumberSetup": "12", @@ -3388,9 +3388,9 @@ "Angles": "{0 180 0}", "Pos": "[8479.2656 1551.5947 -985.0027]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3402,7 +3402,7 @@ ], "Left": false }, - "124": + "124": { "Approve0": false, "RouteNumberSetup": "", @@ -3417,9 +3417,9 @@ "Angles": "{0 270 0}", "Pos": "[4996.7065 12385.1074 -984.9977]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -3431,7 +3431,7 @@ ], "Left": false }, - "125": + "125": { "Approve0": false, "RouteNumberSetup": "", @@ -3446,9 +3446,9 @@ "Angles": "{0 180 0}", "Pos": "[8849.2168 8172.6099 -985.0316]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3460,7 +3460,7 @@ ], "Left": false }, - "126": + "126": { "Approve0": false, "RouteNumberSetup": "", @@ -3473,9 +3473,9 @@ "Name": "49", "Angles": "{0 90 0}", "Pos": "[612.7015 -15800 4386.4941]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "06", @@ -3486,7 +3486,7 @@ } ] }, - "127": + "127": { "Approve0": false, "RouteNumberSetup": "", @@ -3500,9 +3500,9 @@ "ARSOnly": true, "Angles": "{0 0 0}", "Pos": "[8214.9443 -1675.8925 -985.5056]", - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3514,7 +3514,7 @@ ], "NonAutoStop": true }, - "128": + "128": { "Approve0": false, "RouteNumberSetup": "", @@ -3528,9 +3528,9 @@ "ARSOnly": true, "Angles": "{0 0 0}", "Pos": "[8478.9434 -1689.7291 -985.5056]", - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -3543,7 +3543,7 @@ "NonAutoStop": true, "Left": true }, - "129": + "129": { "Approve0": false, "RouteNumberSetup": "", @@ -3558,9 +3558,9 @@ "Angles": "{0 270 0}", "Pos": "[865.132 12385 -985.0796]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3572,7 +3572,7 @@ ], "Left": false }, - "130": + "130": { "Approve0": false, "RouteNumberSetup": "", @@ -3587,9 +3587,9 @@ "Angles": "{356.7212 251.0193 0}", "Pos": "[-1761.5787 12560.3389 -985.6341]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3601,7 +3601,7 @@ ], "Left": true }, - "131": + "131": { "Approve0": false, "RouteNumberSetup": "", @@ -3616,9 +3616,9 @@ "Angles": "{0 270 0}", "Pos": "[-7498.2427 15282.0137 -986.2566]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -3630,7 +3630,7 @@ ], "Left": false }, - "132": + "132": { "Approve0": false, "RouteNumberSetup": "", @@ -3645,9 +3645,9 @@ "Angles": "{1.5416 352.5153 0}", "Pos": "[-15730.1279 8954.4717 -986.2126]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -3659,7 +3659,7 @@ ], "Left": false }, - "133": + "133": { "Approve0": false, "RouteNumberSetup": "", @@ -3674,9 +3674,9 @@ "Angles": "{0 0 0}", "Pos": "[-15850.9141 -2648.9763 -986.2566]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3688,7 +3688,7 @@ ], "Left": false }, - "134": + "134": { "Approve0": false, "RouteNumberSetup": "", @@ -3703,9 +3703,9 @@ "Angles": "{3.2203 62.0264 0}", "Pos": "[-12433.6123 -13018.0127 -986.2142]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3717,7 +3717,7 @@ ], "Left": false }, - "135": + "135": { "Approve0": false, "RouteNumberSetup": "", @@ -3732,9 +3732,9 @@ "Angles": "{0 90 0}", "Pos": "[-1790.4028 -14045.7129 -862.7735]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3746,7 +3746,7 @@ ], "Left": false }, - "136": + "136": { "Approve0": false, "RouteNumberSetup": "", @@ -3761,9 +3761,9 @@ "Angles": "{2.4507 105.3844 0}", "Pos": "[8879.1953 -13637.709 -685.2124]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3775,7 +3775,7 @@ ], "Left": false }, - "137": + "137": { "Approve0": false, "RouteNumberSetup": "", @@ -3790,9 +3790,9 @@ "Angles": "{0 180 0}", "Pos": "[13825.5137 -4280.458 -685.2007]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -3804,7 +3804,7 @@ ], "Left": false }, - "138": + "138": { "Approve0": false, "RouteNumberSetup": "", @@ -3819,9 +3819,9 @@ "Angles": "{0 180 0}", "Pos": "[13825.0137 6476.5371 -384.1107]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -3833,7 +3833,7 @@ ], "Left": false }, - "139": + "139": { "Approve0": false, "RouteNumberSetup": "", @@ -3848,9 +3848,9 @@ "Angles": "{2.1114 258.0487 0}", "Pos": "[8224.5215 15385.3252 -383.7216]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3862,7 +3862,7 @@ ], "Left": false }, - "140": + "140": { "Approve0": false, "RouteNumberSetup": "", @@ -3877,9 +3877,9 @@ "Angles": "{0 270 0}", "Pos": "[4891.2793 15632.0137 -383.1146]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3891,7 +3891,7 @@ ], "Left": false }, - "141": + "141": { "Approve0": false, "RouteNumberSetup": "", @@ -3906,9 +3906,9 @@ "Angles": "{0 270 0}", "Pos": "[2571.6646 15632.0137 -383.1146]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3920,7 +3920,7 @@ ], "Left": false }, - "142": + "142": { "Approve0": false, "RouteNumberSetup": "", @@ -3935,9 +3935,9 @@ "Angles": "{0 270 0}", "Pos": "[272.1987 15632 -382.6306]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -3949,7 +3949,7 @@ ], "Left": false }, - "143": + "143": { "Approve0": false, "RouteNumberSetup": "", @@ -3964,9 +3964,9 @@ "Angles": "{0 270 0}", "Pos": "[-3447.6938 15632 -382.6306]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -3978,7 +3978,7 @@ ], "Left": false }, - "144": + "144": { "Approve0": false, "RouteNumberSetup": "", @@ -3993,9 +3993,9 @@ "Angles": "{0 270 0}", "Pos": "[-6073.8203 15632.0137 -383.9906]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4007,7 +4007,7 @@ ], "Left": false }, - "145": + "145": { "Approve0": false, "RouteNumberSetup": "", @@ -4022,9 +4022,9 @@ "Angles": "{2.1113 348.0488 0}", "Pos": "[-15442.1963 10084.0449 -383.7231]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4036,7 +4036,7 @@ ], "Left": false }, - "146": + "146": { "Approve0": false, "RouteNumberSetup": "", @@ -4051,9 +4051,9 @@ "Angles": "{0 0 0}", "Pos": "[-15700.0137 -888.4901 -161.2471]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4065,7 +4065,7 @@ ], "Left": false }, - "147": + "147": { "Approve0": false, "RouteNumberSetup": "", @@ -4080,9 +4080,9 @@ "Angles": "{0 180 0}", "Pos": "[15185.9063 1652.2926 219.5753]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4094,7 +4094,7 @@ ], "Left": false }, - "148": + "148": { "Approve0": false, "RouteNumberSetup": "", @@ -4109,9 +4109,9 @@ "Angles": "{0 179.2628 0}", "Pos": "[15003.4316 -1625.2716 219.5384]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -4123,7 +4123,7 @@ ], "Left": false }, - "149": + "149": { "Approve0": false, "RouteNumberSetup": "", @@ -4138,9 +4138,9 @@ "Angles": "{0 180 0}", "Pos": "[15001.8066 -4910.2915 219.5614]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -4152,7 +4152,7 @@ ], "Left": true }, - "150": + "150": { "Approve0": false, "RouteNumberSetup": "", @@ -4167,9 +4167,9 @@ "Angles": "{1.5416 172.5153 0}", "Pos": "[14903.4609 -8189.9937 218.9749]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -4181,7 +4181,7 @@ ], "Left": false }, - "151": + "151": { "Approve0": false, "RouteNumberSetup": "", @@ -4196,9 +4196,9 @@ "Angles": "{3.2203 152.0263 0}", "Pos": "[13955.7842 -11309.9365 218.9673]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -4210,7 +4210,7 @@ ], "Left": false }, - "152": + "152": { "Approve0": false, "RouteNumberSetup": "", @@ -4225,9 +4225,9 @@ "Angles": "{3.4293 35.5423 0}", "Pos": "[-14341.9268 -11815.8398 -82.6365]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4239,7 +4239,7 @@ ], "Left": false }, - "153": + "153": { "Approve0": false, "RouteNumberSetup": "", @@ -4254,9 +4254,9 @@ "Angles": "{0 90 0}", "Pos": "[-4169.6611 -14695.7129 -80.7915]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4268,7 +4268,7 @@ ], "Left": false }, - "154": + "154": { "Approve0": false, "RouteNumberSetup": "", @@ -4283,9 +4283,9 @@ "Angles": "{0 90 0}", "Pos": "[5496.0859 -14695.4141 218.4624]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4297,7 +4297,7 @@ ], "Left": false }, - "155": + "155": { "Approve0": false, "RouteNumberSetup": "", @@ -4312,9 +4312,9 @@ "Angles": "{0 180 0}", "Pos": "[15186.207 5845.1074 219.3764]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4326,7 +4326,7 @@ ], "Left": true }, - "156": + "156": { "Approve0": false, "RouteNumberSetup": "", @@ -4341,9 +4341,9 @@ "Angles": "{1.3389 187.5141 0}", "Pos": "[15089.6846 8483.7324 222.7318]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4355,7 +4355,7 @@ ], "Left": false }, - "157": + "157": { "Approve0": false, "RouteNumberSetup": "", @@ -4370,9 +4370,9 @@ "Angles": "{0.2349 269.5034 0}", "Pos": "[6889.4351 15115.9551 219.7616]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4384,7 +4384,7 @@ ], "Left": false }, - "158": + "158": { "Approve0": false, "RouteNumberSetup": "", @@ -4399,9 +4399,9 @@ "Angles": "{0.6924 273.7268 0}", "Pos": "[-7507.1035 15077.666 487.5316]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4413,7 +4413,7 @@ ], "Left": false }, - "159": + "159": { "Approve0": false, "RouteNumberSetup": "", @@ -4428,9 +4428,9 @@ "Angles": "{1.541 352.4896 0}", "Pos": "[-14645.2871 8554.3096 488.7011]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4442,7 +4442,7 @@ ], "Left": false }, - "160": + "160": { "Approve0": false, "RouteNumberSetup": "", @@ -4457,9 +4457,9 @@ "Angles": "{0 0 0}", "Pos": "[-14751.4063 -2411.9834 796.8737]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4471,7 +4471,7 @@ ], "Left": false }, - "161": + "161": { "Approve0": false, "RouteNumberSetup": "", @@ -4486,9 +4486,9 @@ "Angles": "{1.7381 81.0832 0}", "Pos": "[-8595.1006 -12606.4961 862.1576]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4500,7 +4500,7 @@ ], "Left": false }, - "162": + "162": { "Approve0": false, "RouteNumberSetup": "", @@ -4515,9 +4515,9 @@ "Angles": "{3.4291 144.4492 0}", "Pos": "[498.0255 -9848.3535 865.9338]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4529,7 +4529,7 @@ ], "Left": false }, - "163": + "163": { "Approve0": false, "RouteNumberSetup": "", @@ -4544,9 +4544,9 @@ "Angles": "{0 180 0}", "Pos": "[1887.3939 -2490.7551 858.4353]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4558,7 +4558,7 @@ ], "Left": false }, - "164": + "164": { "Approve0": false, "RouteNumberSetup": "", @@ -4573,9 +4573,9 @@ "Angles": "{0 0 0}", "Pos": "[10524.8926 2802.4507 858.2512]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4587,7 +4587,7 @@ ], "Left": false }, - "165": + "165": { "Approve0": false, "RouteNumberSetup": "", @@ -4602,9 +4602,9 @@ "Angles": "{0 0 0}", "Pos": "[10524.8926 6071.3701 858.2144]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4616,7 +4616,7 @@ ], "Left": false }, - "166": + "166": { "Approve0": false, "RouteNumberSetup": "", @@ -4631,9 +4631,9 @@ "Angles": "{360 5.5979 0}", "Pos": "[10497.9883 9356.1475 858.0244]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4645,7 +4645,7 @@ ], "Left": false }, - "167": + "167": { "Approve0": false, "RouteNumberSetup": "", @@ -4660,9 +4660,9 @@ "Angles": "{357.7631 17.1448 0}", "Pos": "[10050.5107 12622.3262 857.5009]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4674,7 +4674,7 @@ ], "Left": true }, - "168": + "168": { "Approve0": false, "RouteNumberSetup": "", @@ -4689,9 +4689,9 @@ "Angles": "{0 0 0}", "Pos": "[10524.793 -1831.0963 858.4944]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4703,7 +4703,7 @@ ], "Left": false }, - "169": + "169": { "Approve0": false, "RouteNumberSetup": "", @@ -4718,9 +4718,9 @@ "Angles": "{0 355.7085 0}", "Pos": "[10180.7656 -4651.6084 858.3484]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -4732,7 +4732,7 @@ ], "Left": false }, - "170": + "170": { "Approve0": false, "RouteNumberSetup": "", @@ -4747,9 +4747,9 @@ "Angles": "{358.802 84.5771 0}", "Pos": "[7553.0791 14345.418 857.9947]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4761,7 +4761,7 @@ ], "Left": true }, - "171": + "171": { "Approve0": false, "RouteNumberSetup": "", @@ -4776,9 +4776,9 @@ "Angles": "{0 180 0}", "Pos": "[1887.3939 1614.8303 858.4353]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4790,7 +4790,7 @@ ], "Left": false }, - "172": + "172": { "Approve0": false, "RouteNumberSetup": "", @@ -4805,9 +4805,9 @@ "Angles": "{0 180 0}", "Pos": "[1887.7939 5811.4741 858.1654]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4819,7 +4819,7 @@ ], "Left": false }, - "173": + "173": { "Approve0": false, "RouteNumberSetup": "", @@ -4834,9 +4834,9 @@ "Angles": "{360 175.0979 0}", "Pos": "[1928.9044 9720.6787 858.0244]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4848,7 +4848,7 @@ ], "Left": false }, - "174": + "174": { "Approve0": false, "RouteNumberSetup": "", @@ -4863,9 +4863,9 @@ "Angles": "{356.7144 124.5725 0}", "Pos": "[3153.501 13815.7275 857.1477]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -4877,7 +4877,7 @@ ], "Left": false }, - "175": + "175": { "Approve0": false, "RouteNumberSetup": "", @@ -4892,9 +4892,9 @@ "Angles": "{0 0 0}", "Pos": "[10152.9863 -8634.3447 858.4944]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4906,7 +4906,7 @@ ], "Left": false }, - "176": + "176": { "Approve0": false, "RouteNumberSetup": "", @@ -4921,9 +4921,9 @@ "Angles": "{357.1918 292.26 0}", "Pos": "[8029.9238 -14356.9199 858.5016]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4935,7 +4935,7 @@ ], "Left": false }, - "177": + "177": { "Approve0": false, "RouteNumberSetup": "", @@ -4950,9 +4950,9 @@ "Angles": "{0 270 0}", "Pos": "[-3453.5801 -14679.2871 1144.7682]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -4964,7 +4964,7 @@ ], "Left": false }, - "178": + "178": { "Approve0": false, "RouteNumberSetup": "", @@ -4979,9 +4979,9 @@ "Angles": "{356.9891 203.3672 0}", "Pos": "[-13684.0469 -10624.8076 1195.6786]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -4993,7 +4993,7 @@ ], "Left": false }, - "179": + "179": { "Approve0": false, "RouteNumberSetup": "", @@ -5008,9 +5008,9 @@ "Angles": "{0 90 0}", "Pos": "[-2316.0522 13541 1496.5313]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -5022,7 +5022,7 @@ ], "Left": false }, - "180": + "180": { "Approve0": false, "RouteNumberSetup": "", @@ -5037,9 +5037,9 @@ "Angles": "{358.7422 83.699 0}", "Pos": "[-5541.8979 13925.5957 1496.3185]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5051,7 +5051,7 @@ ], "Left": false }, - "181": + "181": { "Approve0": false, "RouteNumberSetup": "", @@ -5066,9 +5066,9 @@ "Angles": "{358.0716 101.9478 0}", "Pos": "[-8826.2793 13721.7734 1496.6199]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5080,7 +5080,7 @@ ], "Left": false }, - "182": + "182": { "Approve0": false, "RouteNumberSetup": "", @@ -5095,9 +5095,9 @@ "Angles": "{356.531 128.191 0}", "Pos": "[-11803.8115 12410.2305 1496.6156]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5109,7 +5109,7 @@ ], "Left": false }, - "183": + "183": { "Approve0": false, "RouteNumberSetup": "", @@ -5124,9 +5124,9 @@ "Angles": "{357.1122 158.7655 0}", "Pos": "[-13734.1367 9796.2754 1496.6151]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5138,7 +5138,7 @@ ], "Left": false }, - "184": + "184": { "Approve0": false, "RouteNumberSetup": "", @@ -5153,9 +5153,9 @@ "Angles": "{0 180 0}", "Pos": "[-14383.4063 782.8275 2134.2512]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5167,7 +5167,7 @@ ], "Left": false }, - "185": + "185": { "Approve0": false, "RouteNumberSetup": "", @@ -5182,9 +5182,9 @@ "Angles": "{356.8422 192.7758 0}", "Pos": "[-14260.8398 -2505.2708 2134.6238]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5196,7 +5196,7 @@ ], "Left": false }, - "186": + "186": { "Approve0": false, "RouteNumberSetup": "", @@ -5211,9 +5211,9 @@ "Angles": "{3.4384 203.0562 0}", "Pos": "[-12675.3252 -5341.4854 2134.6143]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5225,7 +5225,7 @@ ], "Left": false }, - "187": + "187": { "Approve0": false, "RouteNumberSetup": "", @@ -5240,9 +5240,9 @@ "Angles": "{359.0881 184.887 0}", "Pos": "[-12284.2314 -8594.3447 2134.6211]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5254,7 +5254,7 @@ ], "Left": false }, - "188": + "188": { "Approve0": false, "RouteNumberSetup": "", @@ -5269,9 +5269,9 @@ "Angles": "{356.878 205.6185 0}", "Pos": "[-11494.5068 -11762.5273 2134.6182]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5283,7 +5283,7 @@ ], "Left": false }, - "189": + "189": { "Approve0": false, "RouteNumberSetup": "", @@ -5298,9 +5298,9 @@ "Angles": "{0 180 0}", "Pos": "[-13464 -1415.1655 2736.4944]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5312,7 +5312,7 @@ ], "Left": false }, - "190": + "190": { "Approve0": false, "RouteNumberSetup": "", @@ -5327,9 +5327,9 @@ "Angles": "{0 180 0}", "Pos": "[-13463.5137 -4758.6523 2736.4644]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5341,7 +5341,7 @@ ], "Left": false }, - "191": + "191": { "Approve0": false, "RouteNumberSetup": "", @@ -5356,9 +5356,9 @@ "Angles": "{358.6627 187.4815 0}", "Pos": "[-13338.2021 -8019.7725 2736.6174]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5370,7 +5370,7 @@ ], "Left": false }, - "192": + "192": { "Approve0": false, "RouteNumberSetup": "", @@ -5385,9 +5385,9 @@ "Angles": "{356.6956 210.4096 0}", "Pos": "[-12310.2129 -11113.459 2736.616]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5399,7 +5399,7 @@ ], "Left": false }, - "193": + "193": { "Approve0": false, "RouteNumberSetup": "", @@ -5414,9 +5414,9 @@ "Angles": "{356.7798 242.0143 0}", "Pos": "[-9955.2529 -13333.7764 2736.616]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5428,7 +5428,7 @@ ], "Left": false }, - "194": + "194": { "Approve0": false, "RouteNumberSetup": "", @@ -5443,9 +5443,9 @@ "Angles": "{0 270 0}", "Pos": "[4452.5615 -14685.7637 4386.5313]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -5457,7 +5457,7 @@ ], "Left": false }, - "195": + "195": { "Approve0": false, "RouteNumberSetup": "", @@ -5472,9 +5472,9 @@ "Angles": "{358.0716 281.9478 0}", "Pos": "[7732.9863 -14436.332 4386.6201]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5486,7 +5486,7 @@ ], "Left": false }, - "196": + "196": { "Approve0": false, "RouteNumberSetup": "", @@ -5501,9 +5501,9 @@ "Angles": "{356.531 308.191 0}", "Pos": "[10740.4551 -13107.0986 4386.6157]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5515,7 +5515,7 @@ ], "Left": false }, - "197": + "197": { "Approve0": false, "RouteNumberSetup": "", @@ -5530,9 +5530,9 @@ "Angles": "{357.1122 338.7655 0}", "Pos": "[12660.8135 -10483.5059 4386.6157]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5544,7 +5544,7 @@ ], "Left": false }, - "198": + "198": { "Approve0": false, "RouteNumberSetup": "", @@ -5559,9 +5559,9 @@ "Angles": "{359.3085 357.4104 0}", "Pos": "[13302.3975 -7263.854 4386.6167]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5573,7 +5573,7 @@ ], "Left": false }, - "199": + "199": { "Approve0": false, "RouteNumberSetup": "", @@ -5588,9 +5588,9 @@ "Angles": "{0 270 0}", "Pos": "[455.024 -12166 4829.4941]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5602,7 +5602,7 @@ ], "Left": false }, - "200": + "200": { "Approve0": false, "RouteNumberSetup": "", @@ -5617,9 +5617,9 @@ "Angles": "{360 265.0979 0}", "Pos": "[3735.2261 -12326.8594 4829.9814]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5631,7 +5631,7 @@ ], "Left": false }, - "201": + "201": { "Approve0": false, "RouteNumberSetup": "", @@ -5646,9 +5646,9 @@ "Angles": "{358.0724 281.9694 0}", "Pos": "[6984.6631 -12097.6367 4825.2285]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5660,7 +5660,7 @@ ], "Left": false }, - "202": + "202": { "Approve0": false, "RouteNumberSetup": "", @@ -5675,9 +5675,9 @@ "Angles": "{356.5709 308.1949 0}", "Pos": "[9966.0928 -10755.9111 4821.8481]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5689,7 +5689,7 @@ ], "Left": false }, - "203": + "203": { "Approve0": false, "RouteNumberSetup": "", @@ -5704,9 +5704,9 @@ "Angles": "{357.1104 338.7603 0}", "Pos": "[11842.4512 -8092.3589 4823.4795]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5718,7 +5718,7 @@ ], "Left": false }, - "204": + "204": { "Approve0": false, "RouteNumberSetup": "", @@ -5733,9 +5733,9 @@ "Angles": "{0 90 0}", "Pos": "[-3092.0715 12793.793 5130.7441]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5747,7 +5747,7 @@ ], "Left": false }, - "205": + "205": { "Approve0": false, "RouteNumberSetup": "", @@ -5762,9 +5762,9 @@ "Angles": "{0 90 0}", "Pos": "[-6383.8662 12792.793 5131.4014]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5776,7 +5776,7 @@ ], "Left": false }, - "206": + "206": { "Approve0": false, "RouteNumberSetup": "", @@ -5791,9 +5791,9 @@ "Angles": "{358.4597 98.9125 0}", "Pos": "[-9664.2451 12640.8145 5127.4307]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5805,7 +5805,7 @@ ], "Left": false }, - "207": + "207": { "Approve0": false, "RouteNumberSetup": "", @@ -5820,9 +5820,9 @@ "Angles": "{356.6961 122.9416 0}", "Pos": "[-12743.9043 11520.209 5123.3965]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5834,7 +5834,7 @@ ], "Left": false }, - "208": + "208": { "Approve0": false, "RouteNumberSetup": "", @@ -5849,9 +5849,9 @@ "Angles": "{356.8762 154.3582 0}", "Pos": "[-14849.2803 9044.4199 5124.1665]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "046", @@ -5863,7 +5863,7 @@ ], "Left": false }, - "209": + "209": { "Approve0": false, "RouteNumberSetup": "", @@ -5878,9 +5878,9 @@ "Angles": "{0 180 0}", "Pos": "[-14405.2871 371.9619 1389.1362]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5892,7 +5892,7 @@ ], "Left": false }, - "210": + "210": { "Approve0": false, "RouteNumberSetup": "", @@ -5907,9 +5907,9 @@ "Angles": "{0 90 0}", "Pos": "[1557.5796 13541 1496.4944]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -5921,7 +5921,7 @@ ], "Left": false }, - "211": + "211": { "Approve0": false, "RouteNumberSetup": "", @@ -5936,9 +5936,9 @@ "Angles": "{359.998 87.6158 0}", "Pos": "[4204.5313 13533.4951 1496.4573]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5950,7 +5950,7 @@ ], "Left": false }, - "212": + "212": { "Approve0": false, "RouteNumberSetup": "", @@ -5965,9 +5965,9 @@ "Angles": "{356.878 25.6185 0}", "Pos": "[14384.2637 9462.7139 1496.6157]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -5979,7 +5979,7 @@ ], "Left": false }, - "213": + "213": { "Approve0": false, "RouteNumberSetup": "", @@ -5994,9 +5994,9 @@ "Angles": "{0 0 0}", "Pos": "[15292.9863 -1991.7034 1692.1394]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6008,7 +6008,7 @@ ], "Left": false }, - "214": + "214": { "Approve0": false, "RouteNumberSetup": "", @@ -6023,9 +6023,9 @@ "Angles": "{356.5071 319.094 0}", "Pos": "[13540.8926 -13179.7236 1833.9047]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6037,7 +6037,7 @@ ], "Left": false }, - "215": + "215": { "Approve0": false, "RouteNumberSetup": "", @@ -6052,9 +6052,9 @@ "Angles": "{358.2612 261.0835 0}", "Pos": "[-6169.3657 -15404.2422 2134.6196]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -6066,7 +6066,7 @@ ], "Left": false }, - "216": + "216": { "Approve0": false, "RouteNumberSetup": "", @@ -6081,9 +6081,9 @@ "Angles": "{0 270 0}", "Pos": "[3036.6875 -15548.2871 1929.5743]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -6095,7 +6095,7 @@ ], "Left": false }, - "217": + "217": { "Approve0": false, "RouteNumberSetup": "", @@ -6110,9 +6110,9 @@ "Angles": "{0 180 0}", "Pos": "[-14383.4063 5090.8062 2134.2144]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -6124,7 +6124,7 @@ ], "Left": false }, - "218": + "218": { "Approve0": false, "RouteNumberSetup": "", @@ -6139,9 +6139,9 @@ "Angles": "{359.3085 177.4104 0}", "Pos": "[-14365.3467 7714.812 2134.6179]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -6153,7 +6153,7 @@ ], "Left": false }, - "219": + "219": { "Approve0": false, "RouteNumberSetup": "", @@ -6168,9 +6168,9 @@ "Angles": "{359.309 93.6918 0}", "Pos": "[-7158.4546 15138.458 2134.6211]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -6182,7 +6182,7 @@ ], "Left": false }, - "220": + "220": { "Approve0": false, "RouteNumberSetup": "", @@ -6197,9 +6197,9 @@ "Angles": "{0 90 0}", "Pos": "[4404.6865 15169.8867 2435.4644]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -6211,7 +6211,7 @@ ], "Left": false }, - "221": + "221": { "Approve0": false, "RouteNumberSetup": "", @@ -6226,9 +6226,9 @@ "Angles": "{357.3933 17.2128 0}", "Pos": "[13837.9912 10304.1113 2435.6206]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "068", @@ -6240,7 +6240,7 @@ ], "Left": false }, - "222": + "222": { "Approve0": false, "RouteNumberSetup": "", @@ -6255,9 +6255,9 @@ "Angles": "{0 0 0}", "Pos": "[13838.0859 -1172.2142 2435.4644]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6269,7 +6269,7 @@ ], "Left": false }, - "223": + "223": { "Approve0": false, "RouteNumberSetup": "", @@ -6284,9 +6284,9 @@ "Angles": "{357.2472 340.8125 0}", "Pos": "[13625.9873 -9775.7695 2435.6174]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6298,7 +6298,7 @@ ], "Left": false }, - "224": + "224": { "Approve0": false, "RouteNumberSetup": "", @@ -6313,9 +6313,9 @@ "Angles": "{359.7652 271.4851 0}", "Pos": "[6339.9966 -14308.8105 2435.6208]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6327,7 +6327,7 @@ ], "Left": false }, - "225": + "225": { "Approve0": false, "RouteNumberSetup": "", @@ -6342,9 +6342,9 @@ "Angles": "{0 270 0}", "Pos": "[-3458.5554 -14313.8867 2719.0227]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6356,7 +6356,7 @@ ], "Left": false }, - "226": + "226": { "Approve0": false, "RouteNumberSetup": "", @@ -6371,9 +6371,9 @@ "Angles": "{0 180 0}", "Pos": "[-13464 2495.9834 2736.4944]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -6385,7 +6385,7 @@ ], "Left": true }, - "227": + "227": { "Approve0": false, "RouteNumberSetup": "", @@ -6400,9 +6400,9 @@ "Angles": "{0 270 0}", "Pos": "[1504.9875 -13766.4043 3340.1731]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6414,7 +6414,7 @@ ], "Left": false }, - "228": + "228": { "Approve0": false, "RouteNumberSetup": "", @@ -6429,9 +6429,9 @@ "Angles": "{360 261.5656 0}", "Pos": "[4763.1992 -14069.0859 3340.1343]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6443,7 +6443,7 @@ ], "Left": false }, - "229": + "229": { "Approve0": false, "RouteNumberSetup": "", @@ -6458,9 +6458,9 @@ "Angles": "{0 270 0}", "Pos": "[8028.1733 -14145.5117 3339.7444]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6472,7 +6472,7 @@ ], "Left": false }, - "230": + "230": { "Approve0": false, "RouteNumberSetup": "", @@ -6487,9 +6487,9 @@ "Angles": "{357.7631 287.1448 0}", "Pos": "[11295.4453 -13932.1953 3339.4702]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6501,7 +6501,7 @@ ], "Left": false }, - "231": + "231": { "Approve0": false, "RouteNumberSetup": "", @@ -6516,9 +6516,9 @@ "Angles": "{358.802 354.5771 0}", "Pos": "[13020.0947 -11411.1172 3339.9744]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6530,7 +6530,7 @@ ], "Left": false }, - "232": + "232": { "Approve0": false, "RouteNumberSetup": "", @@ -6545,9 +6545,9 @@ "Angles": "{0 180 0}", "Pos": "[-13464.207 5159.0317 2736.4644]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6559,7 +6559,7 @@ ], "Left": false }, - "233": + "233": { "Approve0": false, "RouteNumberSetup": "", @@ -6574,9 +6574,9 @@ "Angles": "{358.2617 100.3786 0}", "Pos": "[-7502.6167 13668.2773 2736.6233]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6588,7 +6588,7 @@ ], "Left": false }, - "234": + "234": { "Approve0": false, "RouteNumberSetup": "", @@ -6603,9 +6603,9 @@ "Angles": "{0 90 0}", "Pos": "[4040.5435 13845.2871 3016.5933]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6617,7 +6617,7 @@ ], "Left": false }, - "235": + "235": { "Approve0": false, "RouteNumberSetup": "", @@ -6632,9 +6632,9 @@ "Angles": "{357.2474 19.165 0}", "Pos": "[13650.7402 9242.582 3038.6204]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6646,7 +6646,7 @@ ], "Left": false }, - "236": + "236": { "Approve0": false, "RouteNumberSetup": "", @@ -6661,9 +6661,9 @@ "Angles": "{358.524 347.7939 0}", "Pos": "[13939.2324 -6707.7759 3339.9939]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -6675,7 +6675,7 @@ ], "Left": false }, - "237": + "237": { "Approve0": false, "RouteNumberSetup": "", @@ -6690,9 +6690,9 @@ "Angles": "{0 0 0}", "Pos": "[14165.5859 905.4565 3158.9985]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -6704,7 +6704,7 @@ ], "Left": false }, - "238": + "238": { "Approve0": false, "RouteNumberSetup": "", @@ -6719,9 +6719,9 @@ "Angles": "{0 270 0}", "Pos": "[-3262.821 -13766.4238 3340.1362]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6733,7 +6733,7 @@ ], "Left": false }, - "239": + "239": { "Approve0": false, "RouteNumberSetup": "", @@ -6748,9 +6748,9 @@ "Angles": "{1.4982 261.5073 0}", "Pos": "[-9694.2822 -12748.8965 3340.3521]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6762,7 +6762,7 @@ ], "Left": false }, - "240": + "240": { "Approve0": false, "RouteNumberSetup": "", @@ -6777,9 +6777,9 @@ "Angles": "{0 180 0}", "Pos": "[-14307.4941 -9365.2461 3340.917]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6791,7 +6791,7 @@ ], "Left": false }, - "241": + "241": { "Approve0": false, "RouteNumberSetup": "", @@ -6806,9 +6806,9 @@ "Angles": "{0 180 0}", "Pos": "[-14307.5059 1958.1469 3732.4009]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6820,7 +6820,7 @@ ], "Left": false }, - "242": + "242": { "Approve0": false, "RouteNumberSetup": "", @@ -6835,9 +6835,9 @@ "Angles": "{356.878 115.6185 0}", "Pos": "[-10547.5186 12089.1895 3784.6177]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6849,7 +6849,7 @@ ], "Left": false }, - "243": + "243": { "Approve0": false, "RouteNumberSetup": "", @@ -6864,9 +6864,9 @@ "Angles": "{0 90 0}", "Pos": "[917.1699 12943.3867 3984.1882]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6878,7 +6878,7 @@ ], "Left": false }, - "244": + "244": { "Approve0": false, "RouteNumberSetup": "", @@ -6893,9 +6893,9 @@ "Angles": "{356.531 38.191 0}", "Pos": "[11742.8311 10362.7949 4085.6155]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6907,7 +6907,7 @@ ], "Left": false }, - "245": + "245": { "Approve0": false, "RouteNumberSetup": "", @@ -6922,9 +6922,9 @@ "Angles": "{0 0 0}", "Pos": "[13321.2871 301.8802 4195.0127]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6936,7 +6936,7 @@ ], "Left": false }, - "246": + "246": { "Approve0": false, "RouteNumberSetup": "", @@ -6951,9 +6951,9 @@ "Angles": "{0 270 0}", "Pos": "[469.3198 -14686 4386.4941]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -6965,7 +6965,7 @@ ], "Left": false }, - "247": + "247": { "Approve0": false, "RouteNumberSetup": "", @@ -6980,9 +6980,9 @@ "Angles": "{0 270 0}", "Pos": "[-2170.95 -14685.9863 4386.6143]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -6994,7 +6994,7 @@ ], "Left": false }, - "248": + "248": { "Approve0": false, "RouteNumberSetup": "", @@ -7009,9 +7009,9 @@ "Angles": "{356.5706 215.5353 0}", "Pos": "[-12899.832 -11899.8301 4386.6157]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7023,7 +7023,7 @@ ], "Left": false }, - "249": + "249": { "Approve0": false, "RouteNumberSetup": "", @@ -7038,9 +7038,9 @@ "Angles": "{0 175.0969 0}", "Pos": "[-14166.4531 -394.6328 4386.4443]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7052,7 +7052,7 @@ ], "Left": false }, - "250": + "250": { "Approve0": false, "RouteNumberSetup": "", @@ -7067,9 +7067,9 @@ "Angles": "{357.7156 105.3829 0}", "Pos": "[-9240.6387 8978.2227 4379.7593]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7081,7 +7081,7 @@ ], "Left": false }, - "251": + "251": { "Approve0": false, "RouteNumberSetup": "", @@ -7096,9 +7096,9 @@ "Angles": "{0 90 0}", "Pos": "[1928.2101 9366.207 4655.4951]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7110,7 +7110,7 @@ ], "Left": false }, - "252": + "252": { "Approve0": false, "RouteNumberSetup": "", @@ -7125,9 +7125,9 @@ "Angles": "{357.3911 72.7569 0}", "Pos": "[10592.0156 8908.6807 4824.0322]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7139,7 +7139,7 @@ ], "Left": false }, - "253": + "253": { "Approve0": false, "RouteNumberSetup": "", @@ -7154,9 +7154,9 @@ "Angles": "{357.8899 13.6309 0}", "Pos": "[14925.2461 4262.2212 4824.6724]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7168,7 +7168,7 @@ ], "Left": false }, - "254": + "254": { "Approve0": false, "RouteNumberSetup": "", @@ -7183,9 +7183,9 @@ "Angles": "{1.1763 318.5638 0}", "Pos": "[13529.4492 -1781.8893 4830.1328]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "RouteName": "", @@ -7197,7 +7197,7 @@ ], "Left": false }, - "255": + "255": { "Approve0": false, "RouteNumberSetup": "", @@ -7212,9 +7212,9 @@ "Angles": "{0 270 0}", "Pos": "[-3952.0063 -12166 4829.4941]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "ARSCodes": "04", @@ -7226,7 +7226,7 @@ ], "Left": false }, - "256": + "256": { "Approve0": false, "RouteNumberSetup": "", @@ -7241,9 +7241,9 @@ "Angles": "{0 279.7628 0}", "Pos": "[-6575.4805 -12418.2734 4829.9814]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -7255,7 +7255,7 @@ ], "Left": false }, - "257": + "257": { "Approve0": false, "RouteNumberSetup": "", @@ -7270,9 +7270,9 @@ "Angles": "{356.8787 207.9788 0}", "Pos": "[-14651.8076 -9162.9814 4822.46]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -7284,7 +7284,7 @@ ], "Left": false }, - "258": + "258": { "Approve0": false, "RouteNumberSetup": "", @@ -7299,9 +7299,9 @@ "Angles": "{0 180 0}", "Pos": "[-15657.5938 1185.1919 5016.9155]", "DoubleL": false, - "Routes": + "Routes": [ - + { "Manual": false, "Switches": "", @@ -7313,7 +7313,7 @@ ], "Left": false }, - "259": + "259": { "YOffset": -4, "Angles": "{0 180 0}", @@ -7323,7 +7323,7 @@ "SignType": 21, "Pos": "[3623.9551 10708 -995.1428]" }, - "260": + "260": { "YOffset": 8.490600000000001, "Angles": "{0 360 0}", @@ -7333,7 +7333,7 @@ "SignType": 30, "Pos": "[-2965.0562 13404.207 5130.7441]" }, - "261": + "261": { "YOffset": 8.490600000000001, "Angles": "{0 360 0}", @@ -7343,7 +7343,7 @@ "SignType": 31, "Pos": "[-5639.0962 13056.4063 5131.3643]" }, - "262": + "262": { "YOffset": 4.717, "Angles": "{360 90 0}", @@ -7353,7 +7353,7 @@ "SignType": 3, "Pos": "[-15922.207 -1199.9691 4933.6255]" }, - "263": + "263": { "YOffset": 4.717, "Angles": "{0 180 0}", @@ -7363,7 +7363,7 @@ "SignType": 2, "Pos": "[-3676.7559 -12966 4829.4941]" }, - "264": + "264": { "YOffset": 4.717, "Angles": "{0 180 0}", @@ -7373,7 +7373,7 @@ "SignType": 3, "Pos": "[454.2548 -12966 4829.4941]" }, - "265": + "265": { "YOffset": 42.4528, "Angles": "{3.2817 251.0062 0}", @@ -7383,7 +7383,7 @@ "SignType": 5, "Pos": "[15369.3379 374.1856 4830.1377]" }, - "266": + "266": { "YOffset": 4.717, "Angles": "{1.1273 445.0836 0}", @@ -7393,7 +7393,7 @@ "SignType": 4, "Pos": "[-14349.9121 2597.9875 4387.7646]" }, - "267": + "267": { "YOffset": 12.2642, "Angles": "{1.1275 96.1758 0}", @@ -7403,7 +7403,7 @@ "SignType": 3, "Pos": "[-15464.8945 -9033.4209 4386.6235]" }, - "268": + "268": { "YOffset": 15, "Angles": "{0 180 0}", @@ -7413,7 +7413,7 @@ "SignType": 2, "Pos": "[158.316 -15800 4386.4941]" }, - "269": + "269": { "YOffset": 9, "Angles": "{0 90 0}", @@ -7423,7 +7423,7 @@ "SignType": 1, "Pos": "[8214.9443 -1574.5344 -985.5056]" }, - "270": + "270": { "YOffset": 15, "Angles": "{0 180 0}", @@ -7433,7 +7433,7 @@ "SignType": 5, "Pos": "[4598.0537 -15800 4386.4941]" }, - "271": + "271": { "YOffset": 5, "Angles": "{0 270 0}", @@ -7443,7 +7443,7 @@ "SignType": 34, "Pos": "[8479.2656 2231.188 -985.0027]" }, - "272": + "272": { "YOffset": 5, "Angles": "{0 270 0}", @@ -7453,7 +7453,7 @@ "SignType": 34, "Pos": "[8214.7939 2213.4468 -985.5056]" }, - "273": + "273": { "YOffset": 15, "Angles": "{0 360 0}", @@ -7463,7 +7463,7 @@ "SignType": 4, "Pos": "[-6677.0879 14009.3867 3784.3743]" }, - "274": + "274": { "YOffset": 15, "Angles": "{1.7388 441.1079 0}", @@ -7473,7 +7473,7 @@ "SignType": 3, "Pos": "[-15170.4297 7945.3062 3784.6167]" }, - "275": + "275": { "YOffset": -2.8302, "Angles": "{0 180 0}", @@ -7483,7 +7483,7 @@ "SignType": 2, "Pos": "[1502.7166 -15259.5 3340.3457]" }, - "276": + "276": { "YOffset": 14.1509, "Angles": "{0.491 249.6796 0}", @@ -7493,7 +7493,7 @@ "SignType": 5, "Pos": "[14524.6787 -8748.3838 3340.4697]" }, - "277": + "277": { "YOffset": 14.1509, "Angles": "{360 360 0}", @@ -7503,7 +7503,7 @@ "SignType": 4, "Pos": "[-2100.8247 14869.3926 2807.8975]" }, - "278": + "278": { "YOffset": 14.1509, "Angles": "{3.4691 411.8029 0}", @@ -7513,7 +7513,7 @@ "SignType": 3, "Pos": "[-13008.5439 12375.1123 2736.6145]" }, - "279": + "279": { "YOffset": 25.4717, "Angles": "{0 90 0}", @@ -7523,7 +7523,7 @@ "SignType": 2, "Pos": "[-14655.5 3165.0623 2736.5012]" }, - "280": + "280": { "YOffset": 16.0377, "Angles": "{0 90 0}", @@ -7533,7 +7533,7 @@ "SignType": 5, "Pos": "[-14656 -1157.1819 2736.4944]" }, - "281": + "281": { "YOffset": 16.0377, "Angles": "{0 360 0}", @@ -7543,7 +7543,7 @@ "SignType": 4, "Pos": "[6155.7412 15681.5859 2435.4644]" }, - "282": + "282": { "YOffset": 16.0377, "Angles": "{0 360 0}", @@ -7553,7 +7553,7 @@ "SignType": 3, "Pos": "[-6814.6792 15681.6133 2134.4644]" }, - "283": + "283": { "YOffset": 16.0377, "Angles": "{0 90 0}", @@ -7563,7 +7563,7 @@ "SignType": 2, "Pos": "[-15150.9941 5436.7988 2134.2512]" }, - "284": + "284": { "YOffset": 0, "Angles": "{0 90 0}", @@ -7573,7 +7573,7 @@ "SignType": 3, "Pos": "[-15151.2012 833.8862 2134.2144]" }, - "285": + "285": { "YOffset": 12.2642, "Angles": "{3.3743 122.9422 0}", @@ -7583,7 +7583,7 @@ "SignType": 5, "Pos": "[-11826.8096 -13060.4834 2134.616]" }, - "286": + "286": { "YOffset": 12.2642, "Angles": "{2.2856 346.3855 0}", @@ -7593,7 +7593,7 @@ "SignType": 3, "Pos": "[10623.001 13814.9766 1496.6174]" }, - "287": + "287": { "YOffset": 6.6038, "Angles": "{0 270 0}", @@ -7603,7 +7603,7 @@ "SignType": 4, "Pos": "[15925.5859 4735.5522 1496.6644]" }, - "288": + "288": { "YOffset": 19.8113, "Angles": "{0 360 0}", @@ -7613,7 +7613,7 @@ "SignType": 2, "Pos": "[1592.0739 14561 1496.4944]" }, - "289": + "289": { "YOffset": 15, "Angles": "{0 360 0}", @@ -7623,7 +7623,7 @@ "SignType": 5, "Pos": "[-2342.0059 14561 1496.4944]" }, - "290": + "290": { "YOffset": 19.8113, "Angles": "{360 180 0}", @@ -7633,7 +7633,7 @@ "SignType": 3, "Pos": "[-3281.8496 -15703.2871 1138.2125]" }, - "291": + "291": { "YOffset": 19.8113, "Angles": "{3.4293 125.5423 0}", @@ -7643,7 +7643,7 @@ "SignType": 4, "Pos": "[-13949.252 -13015.2871 1195.6749]" }, - "292": + "292": { "YOffset": 12.2642, "Angles": "{1.5809 189.348 0}", @@ -7653,7 +7653,7 @@ "SignType": 2, "Pos": "[8209.0166 -15609.3906 858.497]" }, - "293": + "293": { "YOffset": 12.2642, "Angles": "{0 271.2891 0}", @@ -7663,7 +7663,7 @@ "SignType": 34, "Pos": "[11158.1309 -5173.3994 858.4943]" }, - "294": + "294": { "YOffset": 12.2642, "Angles": "{0 270 0}", @@ -7673,7 +7673,7 @@ "SignType": 2, "Pos": "[10789 2641.7324 858.4944]" }, - "295": + "295": { "YOffset": 12.2642, "Angles": "{0 90 0}", @@ -7683,7 +7683,7 @@ "SignType": 5, "Pos": "[1623.9937 -3545.0293 858.3654]" }, - "296": + "296": { "YOffset": 12.2642, "Angles": "{360 180 0}", @@ -7693,7 +7693,7 @@ "SignType": 4, "Pos": "[1421.4855 14851.793 399.7787]" }, - "297": + "297": { "YOffset": 12.2642, "Angles": "{356.6261 125.5416 0}", @@ -7703,7 +7703,7 @@ "SignType": 3, "Pos": "[13497.1855 12158.4131 211.6294]" }, - "298": + "298": { "YOffset": 12.2642, "Angles": "{0 90 0}", @@ -7713,7 +7713,7 @@ "SignType": 2, "Pos": "[14921.5938 6217.1997 219.4133]" }, - "299": + "299": { "YOffset": 12.2642, "Angles": "{359.212 446.3652 0}", @@ -7723,7 +7723,7 @@ "SignType": 5, "Pos": "[14903.9258 1056.7117 219.5433]" }, - "300": + "300": { "YOffset": 12.2642, "Angles": "{360 270 0}", @@ -7733,7 +7733,7 @@ "SignType": 4, "Pos": "[-13835.7129 300.1876 -215.8866]" }, - "301": + "301": { "YOffset": 12.2642, "Angles": "{356.6256 237.0517 0}", @@ -7743,7 +7743,7 @@ "SignType": 3, "Pos": "[-12631.1611 11492.8076 -383.7237]" }, - "302": + "302": { "YOffset": 12.2642, "Angles": "{0 180 0}", @@ -7753,7 +7753,7 @@ "SignType": 2, "Pos": "[-3520.8364 14608 -382.6306]" }, - "303": + "303": { "YOffset": 14.1509, "Angles": "{0 180 0}", @@ -7763,7 +7763,7 @@ "SignType": 5, "Pos": "[361.0436 14608 -382.6306]" }, - "304": + "304": { "YOffset": 17.9245, "Angles": "{0 270 0}", @@ -7773,7 +7773,7 @@ "SignType": 4, "Pos": "[-14841.0137 1463.9695 -986.2566]" }, - "305": + "305": { "YOffset": 38.6792, "Angles": "{356.5706 215.5353 0}", @@ -7783,7 +7783,7 @@ "SignType": 3, "Pos": "[-12029.1436 12195.7148 -986.213]" }, - "306": + "306": { "YOffset": 17, "Angles": "{0 180 0}", @@ -7793,7 +7793,7 @@ "SignType": 34, "Pos": "[4233.3989 10708 -995.1428]" }, - "307": + "307": { "YOffset": 9, "Angles": "{0 90 0}", @@ -7803,7 +7803,7 @@ "SignType": 1, "Pos": "[8478.9443 -1580.9104 -985.5056]" }, - "308": + "308": { "YOffset": 9, "Angles": "{90 90 0}", @@ -7813,7 +7813,7 @@ "SignType": 1, "Pos": "[8263.8486 -1427.5774 -725.985]" }, - "309": + "309": { "YOffset": 5, "Angles": "{0 180 0}", @@ -7823,7 +7823,7 @@ "SignType": 2, "Pos": "[8424.8994 3178.54 5253.4941]" }, - "310": + "310": { "YOffset": 6.6038, "Angles": "{0 360 0}", @@ -7833,7 +7833,7 @@ "SignType": 3, "Pos": "[695.9727 12385.2559 -985.0796]" }, - "311": + "311": { "YOffset": 16.0377, "Angles": "{0.2345 360.5031 0}", @@ -7843,7 +7843,7 @@ "SignType": 5, "Pos": "[-7797.9219 15281.0313 -986.2078]" }, - "312": + "312": { "YOffset": 21.6981, "Angles": "{1.9289 349.6179 0}", @@ -7853,7 +7853,7 @@ "SignType": 3, "Pos": "[7928.9331 15442.7773 -383.7207]" }, - "313": + "313": { "YOffset": 31.1321, "Angles": "{0 270 0}", @@ -7863,7 +7863,7 @@ "SignType": 4, "Pos": "[13825.0137 6660.8604 -384.1107]" }, - "314": + "314": { "YOffset": 12.2642, "Angles": "{0 360 0}", @@ -7873,7 +7873,7 @@ "SignType": 5, "Pos": "[-3581.3047 15632 -382.6306]" }, - "315": + "315": { "YOffset": 6.6038, "Angles": "{360 90 0}", diff --git a/lua/metrostroi_data/track_gm_metrostroi_b46_lite.txt b/lua/metrostroi_data/track_gm_metrostroi_b46_lite.txt deleted file mode 100644 index 2843d87..0000000 --- a/lua/metrostroi_data/track_gm_metrostroi_b46_lite.txt +++ /dev/null @@ -1 +0,0 @@ -{"1":{"1":"[-11059.2119 15293.625 -1622.4454]","2":"[-10957.0264 15294.8105 -1622.3954]","3":"[-10442.3008 15294.7158 -1622.4854]","4":"[-9924.8848 15295.3818 -1622.4829]","5":"[-9409.4951 15295.3232 -1622.4828]","6":"[-8889.3789 15295.0713 -1622.535]","7":"[-8373.0586 15295.4932 -1622.4851]","8":"[-7860.1631 15295.2441 -1622.4706]","9":"[-7341.8452 15295.1182 -1622.4907]","10":"[-6830.5947 15262.0078 -1622.6295]","11":"[-6320.1006 15166.1426 -1622.5759]","12":"[-5836.8521 14994.3281 -1622.5576]","13":"[-5381.2915 14760.2344 -1622.512]","14":"[-4954.5981 14476.6182 -1622.4247]","15":"[-4548.1489 14151.5898 -1622.3805]","16":"[-4167.293 13798.3633 -1622.453]","17":"[-3799.5842 13436.5449 -1622.5626]","18":"[-3435.6633 13070.2021 -1622.4792]","19":"[-3066.2 12701.9395 -1622.4829]","20":"[-2697.7571 12333.8682 -1622.4805]","21":"[-2330.4382 11965.8711 -1622.5012]","22":"[-1963.4805 11598.6904 -1622.4873]","23":"[-1596.6931 11232.5674 -1622.5341]","24":"[-1231.2144 10866.874 -1622.4526]","25":"[-866.0137 10502.1895 -1622.4888]","26":"[-501.7584 10137.707 -1622.5479]","27":"[-138.0834 9774.2041 -1622.4725]","28":"[224.5659 9411.4883 -1622.589]","29":"[596.0246 9039.9219 -1622.5515]","30":"[966.929 8669.0889 -1622.4493]","31":"[1337.2456 8298.9033 -1622.3387]","32":"[1706.5593 7929.0146 -1622.1505]","33":"[2074.9509 7561.7197 -1622.2509]","34":"[2440.979 7193.7642 -1622.4459]","35":"[2807.3657 6827.6538 -1622.2632]","36":"[3173.74 6462.7412 -1622.2487]","37":"[3537.6245 6096.5186 -1622.2151]","38":"[3903.1838 5733.1587 -1622.33]","39":"[4266.0298 5368.2666 -1622.276]","40":"[4629.9336 5005.6626 -1622.2903]","41":"[4992.7744 4643.2261 -1622.225]","42":"[5363.2021 4271.0791 -1622.3247]","43":"[5735.1943 3901.7678 -1622.3091]","44":"[6103.5337 3530.0493 -1622.2756]","45":"[6474.9927 3162.7185 -1622.3207]","46":"[6841.9575 2792.1506 -1622.2441]","47":"[7211.1924 2425.1121 -1622.4769]","48":"[7578.2349 2057.1304 -1622.3572]","49":"[7945.4214 1690.536 -1622.4911]","50":"[8311.7002 1324.2072 -1622.4669]","51":"[8677.1924 958.3295 -1622.4565]","52":"[9042.9922 593.9393 -1622.449]","53":"[9404.7773 229.5983 -1622.6293]","54":"[9770.3105 -133.6753 -1622.506]","55":"[10132.7012 -496.2275 -1622.4874]","56":"[10497.6611 -862.7943 -1622.4825]","57":"[10862.7109 -1227.7295 -1622.3275]","58":"[11199.0986 -1613.8905 -1622.1971]","59":"[11486.3936 -2046.3269 -1622.3231]","60":"[11698.5244 -2516.5662 -1622.4578]","61":"[11850.7334 -3007.53 -1622.5028]","62":"[11945.9473 -3511.4121 -1622.2603]","63":"[11999.1289 -4031.6475 -1622.2766]","64":"[12012.7891 -4553.0137 -1622.1599]","65":"[12000.7637 -5072.9302 -1622.3724]","66":"[11967.2119 -5590.7764 -1622.4836]","67":"[11915.0693 -6105.9917 -1622.4509]","68":"[11839.4512 -6616.8604 -1622.5188]","69":"[11740.0967 -7122.4482 -1622.4817]","70":"[11614.4541 -7620.6958 -1622.4386]","71":"[11456.6494 -8120.0903 -1622.4471]","72":"[11271.001 -8598.4238 -1622.5112]","73":"[11048.1367 -9065.4736 -1622.4056]","74":"[10789.2676 -9520.416 -1622.3939]","75":"[10493.9453 -9948.8105 -1622.2391]","76":"[10158.6143 -10354.5342 -1622.5127]","77":"[9797.8955 -10719.1221 -1622.3901]","78":"[9405.2549 -11052.0742 -1622.428]","79":"[8978.9297 -11354.0322 -1622.3953]","80":"[8527.835 -11619.2754 -1622.4465]","81":"[8058.4814 -11847.5596 -1622.3934]","82":"[7582.3062 -12038.832 -1622.3458]","83":"[7094.4624 -12197.6211 -1622.302]","84":"[6582.0171 -12330.8691 -1622.187]","85":"[6064.3589 -12435.75 -1622.2444]","86":"[5543.1631 -12514.1689 -1622.2605]","87":"[5020.0508 -12569.0664 -1622.3478]","88":"[4496.2275 -12603.1865 -1622.5242]","89":"[3972.4868 -12618.2393 -1622.278]","90":"[3449.4519 -12620.6162 -1622.3962]","91":"[2927.3379 -12620.2822 -1622.4596]","92":"[2400.1067 -12620.1826 -1622.4631]","93":"[1886.259 -12620.3994 -1622.4618]","94":"[1373.3561 -12620.5381 -1622.4758]","95":"[843.7491 -12620.3125 -1622.4102]","96":"[315.1869 -12620.0205 -1622.485]","97":"[-212.3818 -12620.1084 -1622.4551]","98":"[-738.5702 -12610.9531 -1622.09]","99":"[-1262.5613 -12584.8818 -1621.9329]","100":"[-1783.2648 -12538.1543 -1622.1831]","101":"[-2300.2976 -12470.3848 -1622.4022]","102":"[-2811.97 -12377.7285 -1622.5322]","103":"[-3316.8679 -12259.3408 -1622.3278]","104":"[-3812.844 -12112.6826 -1622.277]","105":"[-4296.9771 -11934.709 -1622.1954]","106":"[-4766.6509 -11725.0498 -1622.2502]","107":"[-5217.668 -11481.2979 -1622.5126]","108":"[-5660.0552 -11193.2861 -1622.4119]","109":"[-6074.748 -10869.543 -1622.4921]","110":"[-6456.897 -10510.626 -1622.4984]","111":"[-6804.7832 -10120.6592 -1622.4943]","112":"[-7115.7236 -9702.5596 -1622.3121]","113":"[-7389.3975 -9260.7598 -1622.3539]","114":"[-7626.5234 -8799.7637 -1622.3398]","115":"[-7830.2202 -8318.8145 -1622.4669]","116":"[-8002.4985 -7820.2349 -1622.3573]","117":"[-8142.1655 -7312.7544 -1622.3187]","118":"[-8253.4854 -6799.4609 -1622.3224]","119":"[-8338.0449 -6282.1885 -1622.2828]","120":"[-8398.541 -5762.5669 -1622.375]","121":"[-8437.7344 -5241.9536 -1622.3982]","122":"[-8457.3662 -4721.6338 -1622.0554]","123":"[-8462.0898 -4202.3398 -1622.1136]","124":"[-8462.0068 -3687.6042 -1606.7993]","125":"[-8462.0313 -3160.6675 -1569.6423]","126":"[-8461.8711 -2641.991 -1516.4755]","127":"[-8461.9072 -2115.8787 -1456.2029]","128":"[-8461.792 -1590.5563 -1393.723]","129":"[-8461.791 -1081.5577 -1331.7845]","130":"[-8461.7754 -557.5002 -1267.5255]","131":"[-8462.4902 -45.2574 -1204.5804]","132":"[-8461.876 467.0757 -1141.7941]","133":"[-8461.3574 987.5672 -1077.8243]","134":"[-8461.7979 1500.1559 -1014.8558]","135":"[-8462.1016 2013.973 -951.7559]","136":"[-8462.3877 2523.2908 -889.0739]","137":"[-8462.1416 3037.4749 -826.0299]","138":"[-8461.6348 3558.7935 -762.1362]","139":"[-8461.9092 4067.1096 -699.575]","140":"[-8462.5322 4580.7012 -636.606]","141":"[-8462.1777 5098.144 -572.9977]","142":"[-8461.5742 5617.9976 -509.1426]","143":"[-8461.5439 6138.7891 -445.1893]","144":"[-8462.2354 6658.8677 -381.6057]","145":"[-8462.334 7176.79 -318.772]","146":"[-8462.4053 7691.6973 -258.3127]","147":"[-8462.2529 8202.8848 -201.1747]","148":"[-8462.4463 8724.918 -151.0225]","149":"[-8462.8594 9246.9697 -120.0115]","150":"[-8474.5107 9759.0029 -103.982]","151":"[-8507.9287 10272.9648 -91.8422]","152":"[-8573.5146 10787.1709 -76.5625]","153":"[-8675.2217 11300.1914 -57.2212]","154":"[-8819.4727 11791.0596 -33.5755]","155":"[-9018.6182 12275.29 -4.5833]","156":"[-9276.3389 12724.9268 30.728]","157":"[-9593.7588 13125.001 71.9296]","158":"[-9977.2578 13472.8018 119.4282]","159":"[-10408.4717 13744.375 171.9896]","160":"[-10887.7617 13943.0488 228.2761]","161":"[-11390.2529 14062.7471 285.9153]","162":"[-11907.8125 14112.3232 343.2458]","163":"[-12428.3535 14098.9219 400.6561]","164":"[-12940.1729 14019.8359 455.6136]","165":"[-13432.6523 13863.0234 507.3643]","166":"[-13891.0479 13633.1055 554.4301]","167":"[-14287.5459 13338.0361 593.152]","168":"[-14643.1826 12969.4434 625.9862]","169":"[-14939.0986 12541.4365 650.3957]","170":"[-15172.7998 12078.0615 667.1775]","171":"[-15350.0762 11587.5254 676.0056]","172":"[-15476.5781 11087.4902 678.6412]","173":"[-15563.207 10580.8027 677.0042]","174":"[-15615.8516 10068.7822 671.2161]","175":"[-15641.3242 9551.9648 662.7073]","176":"[-15647.9697 9032.6387 657.7137]","177":"[-15647.8623 8512.5576 657.6006]","178":"[-15647.6387 7993.2788 657.5426]","179":"[-15648.4424 7474.8032 657.5368]","180":"[-15648.3047 6957.1094 657.5081]","181":"[-15647.6299 6440.1938 657.5053]","182":"[-15648.5518 5924.0625 657.5085]","183":"[-15648.3809 5408.7183 657.5343]","184":"[-15647.6768 4894.1392 657.5389]","185":"[-15648.3633 4380.3345 657.603]","186":"[-15648.4082 3866.5352 657.5576]","187":"[-15647.5527 3346.4888 657.6343]","188":"[-15648.4092 2834.2952 657.5137]","189":"[-15648.1719 2312.6006 657.5245]","190":"[-15647.4092 1786.6532 657.5475]","191":"[-15647.8311 1274.0526 657.5472]","192":"[-15648.1748 761.9135 657.5485]","193":"[-15648.084 241.907 657.6238]","194":"[-15647.6133 -278.6079 657.5967]","195":"[-15647.8945 -806.7278 657.5847]","196":"[-15648.5596 -1332.0923 657.5623]","197":"[-15648.3809 -1856.3009 657.4094]","198":"[-15647.3613 -2379.3743 657.5006]","199":"[-15647.4668 -2901.311 657.5499]","200":"[-15648.2256 -3422.1035 657.5519]","201":"[-15648.5557 -3940.9546 653.2815]","202":"[-15648.1631 -4455.1787 629.0827]","203":"[-15647.7275 -4970.8535 582.4442]","204":"[-15648.1289 -5493.2856 525.7081]","205":"[-15648.5146 -6003.5908 466.205]","206":"[-15648.2383 -6519.7725 404.1048]","207":"[-15648.0234 -7039.2837 340.789]","208":"[-15647.9248 -7550.834 278.1226]","209":"[-15647.5293 -8074.4155 214.9048]","210":"[-15647.8975 -8594.8232 153.8994]","211":"[-15647.7227 -9117.1084 96.9894]","212":"[-15647.3223 -9639.6553 49.9144]","213":"[-15647.9551 -10162.1377 26.1626]","214":"[-15647.6582 -10685.3066 21.294]","215":"[-15634.9756 -11199.7852 20.9869]","216":"[-15592.7451 -11714.7158 20.9775]","217":"[-15502.833 -12229.9697 21.0301]","218":"[-15359.8877 -12729.9297 21.0992]","219":"[-15152.3447 -13203.7803 21.0455]","220":"[-14877.6904 -13638.6504 21.1616]","221":"[-14526.4277 -14025.9268 21.1499]","222":"[-14115.6426 -14345.1279 21.0205]","223":"[-13658.6855 -14590.332 21.0874]","224":"[-13172.9111 -14767.998 21.1169]","225":"[-12670.2002 -14885.5615 21.2329]","226":"[-12159.4893 -14953.4141 21.1162]","227":"[-11646.3213 -14981.1592 21.1739]","228":"[-11133.7383 -14986.1875 21.8739]","229":"[-10607.4023 -14985.0977 21.5594]","230":"[-10087.1592 -14984.9014 21.4736]","231":"[-9567.5869 -14984.8135 21.9304]","232":"[-9042.7471 -14984.2646 21.5554]","233":"[-8517.8281 -14984.4961 21.3633]","234":"[-7994.1538 -14985.1064 21.4957]","235":"[-7471.7222 -14984.7246 21.5078]","236":"[-6950.4985 -14984.4893 21.5256]","237":"[-6430.4746 -14984.4932 21.5426]","238":"[-5907.6963 -14985.1211 21.5912]","239":"[-5380.1074 -14985.4863 21.6035]","240":"[-4860.5005 -14984.2139 21.6178]","241":"[-4339.6479 -14984.5166 21.5328]","242":"[-3822.6736 -14985.2148 21.51]","243":"[-3302.8579 -14984.3525 21.5634]","244":"[-2784.9519 -14984.4473 21.5491]","245":"[-2267.4668 -14984.9639 21.5511]","246":"[-1751.5691 -14981.2588 23.272]","247":"[-1239.4248 -14954.9424 25.8659]","248":"[-721.3835 -14890.5967 27.8761]","249":"[-214.9089 -14779.7754 29.1339]","250":"[273.5844 -14613.4746 29.1125]","251":"[734.5286 -14386.5264 27.6522]","252":"[1154.7471 -14093.5371 23.9713]","253":"[1535.4789 -13750.0039 22.02]","254":"[1898.791 -13387.5791 21.4899]","255":"[2260.5439 -13024.6846 21.5996]","256":"[2632.3206 -12654.6563 22.0447]","257":"[2992.8547 -12276.9541 23.7926]","258":"[3330.1038 -11883.915 26.5696]","259":"[3630.0977 -11466.2861 28.4604]","260":"[3893.1155 -11012.7412 29.3787]","261":"[4097.4263 -10532.502 28.4999]","262":"[4232.0854 -10030.5625 26.0638]","263":"[4289.3828 -9514.7705 23.3424]","264":"[4300.5366 -9000.2617 21.383]","265":"[4298.3848 -8485.9717 21.4755]","266":"[4298.7319 -7972.3838 21.594]","267":"[4300.0117 -7458.6914 21.5394]","268":"[4298.7358 -6939.6729 21.538]","269":"[4298.2192 -6421.6646 21.5516]","270":"[4299.1074 -5904.6587 21.549]","271":"[4299.5454 -5388.6533 21.4816]","272":"[4298.8599 -4873.6465 21.5869]","273":"[4298.292 -4359.6421 21.6327]","274":"[4299.5688 -3846.5984 21.5527]","275":"[4299.7041 -3334.541 21.5092]","276":"[4298.4502 -2805.2327 21.5289]","277":"[4298.5435 -2285.3057 21.5403]","278":"[4299.6069 -1765.3181 21.541]","279":"[4298.374 -1244.6649 21.0425]","280":"[4299.5732 -730.5665 20.4061]","281":"[4297.9648 -217.7158 20.7297]","282":"[4299.0894 304.4788 20.578]","283":"[4298.7715 825.7511 20.5533]","284":"[4298.4946 1346.1558 20.4704]","285":"[4298.8286 1865.3032 20.6172]","286":"[4298.9263 2383.543 20.4009]","287":"[4304.2949 2900.2883 20.6134]","288":"[4334.8047 3414.3162 20.8946]","289":"[4404.5435 3921.6079 20.4975]","290":"[4526.5337 4427.2358 20.5187]","291":"[4708.6226 4909.1411 20.519]","292":"[4964.3989 5360.5337 20.8274]","293":"[5284.1455 5761.5176 20.6263]","294":"[5641.751 6138.3052 20.4271]","295":"[6007.7412 6499.207 20.4901]","296":"[6377.0234 6871.2925 20.6444]","297":"[6747.0605 7241.3086 20.5692]","298":"[7117.21 7609.9746 20.6476]","299":"[7487.916 7982.2368 20.5206]","300":"[7851.2861 8345.5781 20.5451]","301":"[8221.2275 8714.3398 20.5483]","302":"[8589.583 9083.5801 20.5467]","303":"[8965.8467 9442.2822 20.5272]","304":"[9375.4785 9753.0293 20.6278]","305":"[9834.8936 9996.6357 19.9443]","306":"[10322.3291 10171.1865 20.2958]","307":"[10825.8135 10282.5752 20.2615]","308":"[11342.9922 10347.9609 20.3667]","309":"[11860.3193 10369.4824 22.0516]","310":"[12382.4736 10345.6865 26.3379]","311":"[12893.3584 10268.2334 32.4115]","312":"[13396.5459 10126.2715 37.4048]","313":"[13864.5127 9909.5176 40.866]","314":"[14273.3857 9624.6318 42.403]","315":"[14565.2783 9333.4658 42.384]","316":"[14861.3262 8911.4434 40.6492]","317":"[15065.2529 8474.0361 37.5144]","318":"[15212.3867 7974.4331 32.6193]","319":"[15293.8828 7458.0645 26.8036]","320":"[15323.8965 6931.2021 22.0336]","321":"[15327.0371 6413.0947 19.2971]","322":"[15325.9795 5886.3325 19.4829]","323":"[15326.9336 5360.5879 19.6738]","324":"[15326.3438 4835.7944 19.4529]","325":"[15326.8994 4311.9907 19.5685]","326":"[15327.3447 3789.1553 19.5969]","327":"[15326.248 3267.2673 19.516]","328":"[15326.5947 2746.3347 19.4737]","329":"[15327.0195 2226.3193 19.5291]","330":"[15326.8213 1711.7802 19.5322]","331":"[15326.7881 1188.2037 19.5346]","332":"[15313.8115 669.6322 18.1125]","333":"[15239.1201 162.1724 15.1823]","334":"[15081.3564 -336.1668 12.1628]","335":"[14852.3789 -804.4553 12.0516]","336":"[14572.3535 -1241.5305 13.6901]","337":"[14251.6875 -1647.2399 16.4605]","338":"[13897.3955 -2035.3494 18.7345]","339":"[13533.1025 -2403.428 19.7116]","340":"[13165.3008 -2769.9487 19.6264]","341":"[12800.8574 -3133.8823 19.549]","342":"[12437.8691 -3497.6074 19.5086]","343":"[12075.4648 -3860.2771 19.5424]","344":"[11697.8008 -4237.4512 19.5382]","345":"[11321.0596 -4613.7866 19.5471]","346":"[10945.8076 -4989.8853 19.5151]","347":"[10571.7734 -5364.3862 19.5386]","348":"[10204.7402 -5730.7456 19.7251]","349":"[9831.8994 -6102.3101 19.5696]","350":"[9459.6836 -6475.6396 19.494]","351":"[9093.8984 -6842.2388 19.5412]","352":"[8730.5127 -7204.1113 19.5492]","353":"[8361.7861 -7573.4126 19.5653]","354":"[7997.1821 -7949.7358 21.6581]","355":"[7656.29 -8341.5049 24.1862]","356":"[7349.1221 -8755.0322 26.4942]","357":"[7080.042 -9204.7773 27.2407]","358":"[6866.4736 -9680.5293 26.7607]","359":"[6721.0225 -10179.1846 24.7019]","360":"[6654.5757 -10692.3887 23.9205]","361":"[6660.2363 -11207.0654 28.137]","362":"[6725.52 -11724.6816 38.6702]","363":"[6842.8818 -12225.9189 47.0741]","364":"[7031.8237 -12710.0225 53.4756]","365":"[7288.2622 -13153.9795 56.9714]","366":"[7622.5132 -13551.1836 58.3508]","367":"[7992.8291 -13860 57.0986]","368":"[8436.7412 -14120.2324 53.4459]","369":"[8916.9629 -14306.7705 47.1137]","370":"[9419.8594 -14427.9287 38.9078]","371":"[9936.9307 -14493.0059 28.7709]","372":"[10450.0566 -14510.2002 21.6994]","373":"[10966.1152 -14502.1514 16.7419]","374":"[11482.1201 -14476.9277 10.7285]","375":"[11999.4395 -14439.0645 1.6895]","376":"[12516.2217 -14356.0049 -11.3132]","377":"[13011.5811 -14214.4189 -28.5111]","378":"[13484.8789 -14009.5977 -48.8899]","379":"[13926.8838 -13748.2832 -71.8201]","380":"[14329.9648 -13416.2617 -97.3035]","381":"[14667.1621 -13020.3281 -123.1954]","382":"[14937.1777 -12577.7461 -149.2271]","383":"[15141.6631 -12103.2549 -176.2873]","384":"[15290.2588 -11607.8721 -205.4427]","385":"[15387.6846 -11100.9727 -237.2199]","386":"[15440.9434 -10586.5791 -270.8652]","387":"[15458.0439 -10067.998 -310.0214]","388":"[15460.668 -9549.4043 -344.6683]","389":"[15459.0762 -9037.1143 -361.3834]","390":"[15459.4609 -8511.8301 -364.3223]","391":"[15460.124 -7987.4619 -364.4124]","392":"[15459.2158 -7466.7139 -364.477]","393":"[15459.7969 -6953.6636 -364.4525]","394":"[15459.6934 -6441.0835 -364.4842]","395":"[15459.6699 -5914.292 -364.4939]","396":"[15460.4102 -5388.4014 -364.5044]","397":"[15459.5176 -4863.4053 -364.491]","398":"[15459.7695 -4339.6406 -364.5018]","399":"[15459.8877 -3816.8513 -364.2935]","400":"[15459.458 -3294.9053 -364.1771]","401":"[15459.9004 -2773.8157 -364.328]","402":"[15460.3477 -2253.5938 -364.5002]","403":"[15459.6953 -1734.2292 -364.4483]","404":"[15460.3486 -1215.697 -364.3842]","405":"[15460.376 -698.0395 -364.308]","406":"[15459.4795 -181.2064 -364.4399]","407":"[15460.7627 340.762 -364.3268]","408":"[15459.5068 857.1755 -364.326]","409":"[15460.2529 1372.7604 -364.4005]","410":"[15459.8906 1887.54 -364.5345]","411":"[15460.2393 2401.4937 -364.4861]","412":"[15460.0781 2914.6235 -364.4627]","413":"[15459.8525 3426.9326 -364.3712]","414":"[15460.373 3952.2449 -364.4796]","415":"[15467.6143 4476.4805 -364.4637]","416":"[15503.0889 4992.5215 -364.4022]","417":"[15576.6738 5499.7964 -364.4447]","418":"[15674.0254 6015.2153 -364.5331]","419":"[15767.085 6529.7456 -364.3895]","420":"[15821.6377 7047.8311 -364.5126]","421":"[15842.0762 7572.0947 -364.4121]","422":"[15844.0967 8085.7339 -364.4962]","423":"[15844.1865 8598.5674 -364.4837]","424":"[15843.8545 9110.6416 -364.3689]","425":"[15844.4668 9635.001 -364.5712]","426":"[15843.665 10158.5771 -364.4098]","427":"[15842.5791 10681.3066 -364.2676]","428":"[15819.8926 11202.2725 -364.0941]","429":"[15762.9961 11718.9795 -364.3271]","430":"[15654.6289 12225.2617 -364.3959]","431":"[15488.7168 12712.6348 -364.4131]","432":"[15244.0654 13176.4893 -363.3414]","433":"[14932.2539 13592.9922 -358.8143]","434":"[14559.4004 13947.4688 -346.6214]","435":"[14125.1123 14240.2656 -325.5434]","436":"[13645.9365 14452.7539 -296.8995]","437":"[13156.9268 14603.5313 -259.1152]","438":"[12651.2803 14705.1006 -210.9848]","439":"[12138.5742 14763.7949 -154.1104]","440":"[11622.8916 14783.0801 -92.2866]","441":"[11102.416 14784.1943 -28.4057]","442":"[10593.5967 14783.5361 34.1822]","443":"[10074.1855 14784.6729 97.9898]","444":"[9556.0684 14783.7188 161.6088]","445":"[9036.6777 14783.8174 225.3508]","446":"[8524.8936 14783.8418 288.196]","447":"[8008.3262 14783.5801 351.6648]","448":"[7488.312 14783.752 414.8932]","449":"[6967.0786 14783.6846 477.1564]","450":"[6447.4019 14783.373 536.5086]","451":"[5927.8911 14783.8584 590.2825]","452":"[5409.5596 14783.5195 628.6126]","453":"[4887.0796 14784.2422 644.3461]","454":"[4369.0981 14784.1602 645.4778]","455":"[3850.0652 14783.832 645.6388]","456":"[3329.1624 14783.6885 645.6412]","457":"[2805.7017 14784.6924 645.5496]","458":"[2289.3677 14783.6377 645.5202]","459":"[1769.0535 14783.7988 645.5922]","460":"[1244.494 14784.2969 645.6561]","461":"[716.7141 14783.79 645.5258]","462":"[189.8714 14784.5029 645.532]","463":"[-336.0115 14784.4072 645.5604]","464":"[-860.9666 14783.9688 645.5932]","465":"[-1385.0048 14783.6914 645.6194]","466":"[-1908.0958 14783.9609 645.5673]","467":"[-2430.2742 14784.4756 645.5199]","468":"[-2951.5251 14784.1299 645.605]","469":"[-3471.8801 14784.5 645.5702]","470":"[-3991.3135 14784.0625 645.5369]","471":"[-4509.853 14783.752 645.5513]","472":"[-5027.4937 14784.4287 645.5416]","473":"[-5548.9775 14784.0029 645.5854]","474":"[-6061.9165 14784.1357 645.5381]","475":"[-6587.1294 14783.8789 645.4993]","476":"[-7112.249 14784.1768 640.0157]","477":"[-7627.9409 14783.9912 616.2856]","478":"[-8138.8403 14784.292 570.5638]","479":"[-8650.1084 14784.0059 515.1095]","480":"[-9171.4473 14783.9893 454.2121]","481":"[-9690.3457 14783.626 392.2413]","482":"[-10200.3096 14783.8154 331.4578]","483":"[-10712.2695 14783.6514 271.0671]","484":"[-11231.4053 14783.5928 213.7484]","485":"[-11750.7832 14783.8057 165.7892]","486":"[-12265.3008 14780.3535 140.7527]","487":"[-12780.0889 14748.2783 133.8312]","488":"[-13289.4902 14662.3447 133.6379]","489":"[-13781.3896 14503.0303 133.6412]","490":"[-14190.5811 14285.5654 133.5361]","491":"[-14483.1436 14056.4951 133.4357]","492":"[-14760.4902 13747.6367 133.5149]","493":"[-14969.8955 13410.7061 133.4474]","494":"[-15162.1982 12929.8154 133.5057]","495":"[-15274.0381 12426.4434 133.5729]","496":"[-15323.0078 11914.5674 132.0765]","497":"[-15335.9629 11399.416 114.5669]","498":"[-15335.5361 10881.0723 74.5335]","499":"[-15335.9561 10363.3623 20.621]","500":"[-15336.1904 9847.0762 -38.6478]","501":"[-15336.3066 9330.4268 -100.517]","502":"[-15346.2002 8812.7676 -163.3994]","503":"[-15382.6338 8299.2617 -226.5269]","504":"[-15445.3242 7792.3638 -288.644]","505":"[-15497.5957 7285.8154 -350.8643]","506":"[-15516.4912 6771.9556 -413.9976]","507":"[-15520.2451 6258.5986 -476.9509]","508":"[-15519.3203 5739.8896 -540.7343]","509":"[-15519.1689 5219.8516 -604.5701]","510":"[-15519.9336 4702.397 -668.1008]","511":"[-15519.5537 4191.1909 -730.7513]","512":"[-15519.7158 3674.7061 -794.3202]","513":"[-15519.79 3158.0981 -857.7751]","514":"[-15519.5 2644.4043 -921.0157]","515":"[-15519.542 2135.2866 -982.7799]","516":"[-15519.5557 1614.3983 -1046.5428]","517":"[-15519.8369 1100.4473 -1110.0192]","518":"[-15519.0332 575.8349 -1174.4935]","519":"[-15519.9365 61.5044 -1237.5491]","520":"[-15519.877 -457.6136 -1301.1514]","521":"[-15519.168 -977.3496 -1364.0989]","522":"[-15519.6992 -1494.0087 -1425.1886]","523":"[-15519.8721 -2004.4381 -1483.0814]","524":"[-15519.1621 -2525.7437 -1535.1038]","525":"[-15520.2275 -3054.6807 -1567.6719]","526":"[-15520.1592 -3576.5815 -1579.4832]","527":"[-15519.5527 -4093.6167 -1579.4166]","528":"[-15520.458 -4609.3892 -1579.4633]","529":"[-15520.0479 -5124.2036 -1579.3453]","530":"[-15519.8057 -5638.0518 -1579.4302]","531":"[-15520.4434 -6150.9678 -1579.4202]","532":"[-15519.9756 -6680.5435 -1579.3859]","533":"[-15520.165 -7210.0977 -1579.4961]","534":"[-15519.3652 -7726.5938 -1579.3461]","535":"[-15512.0791 -8245.8281 -1579.4065]","536":"[-15487.5381 -8762.3955 -1579.033]","537":"[-15442.4736 -9276.2471 -1579.3763]","538":"[-15377.4502 -9786.6904 -1579.386]","539":"[-15288.7461 -10292.2754 -1579.3452]","540":"[-15174.2813 -10791.3232 -1579.3416]","541":"[-15026.9326 -11300.6982 -1579.2192]","542":"[-14847.375 -11798.0283 -1579.2822]","543":"[-14633.6455 -12279.9502 -1579.2904]","544":"[-14385.0586 -12742.9932 -1579.4454]","545":"[-14099.7988 -13182.4023 -1579.351]","546":"[-13778.6787 -13594.2686 -1579.3336]","547":"[-13423.7764 -13975.165 -1579.2667]","548":"[-13037.5107 -14321.8066 -1579.3809]","549":"[-12623.0693 -14631.7061 -1579.4373]","550":"[-12185.7451 -14905.7236 -1579.2836]","551":"[-11728.9834 -15142.9561 -1579.384]","552":"[-11257.0811 -15345.2451 -1579.4432]","553":"[-10773.6094 -15515.415 -1579.3815]","554":"[-10269.0361 -15658.4961 -1579.2499]","555":"[-9758.0508 -15771.7207 -1579.3986]","556":"[-9243.1563 -15858.7393 -1579.3746]","557":"[-8725.9736 -15921.8545 -1579.3075]","558":"[-8207.7266 -15963.2227 -1579.3925]","559":"[-7689.3926 -15985.0928 -1579.4844]","560":"[-7171.689 -15991.7656 -1579.4869]","561":"[-6654.9595 -15991.0361 -1579.4487]","562":"[-6139.2422 -15990.458 -1579.4222]","563":"[-5624.561 -15991.7256 -1579.4694]","564":"[-5109.4326 -15991.3115 -1591.6036]","565":"[-4591.8252 -15990.9268 -1624.1207]","566":"[-4069.3572 -15991.0254 -1676.6146]","567":"[-3558.4282 -15990.9893 -1734.5986]","568":"[-3048.1189 -15991.167 -1795.2203]","569":"[-2528.3926 -15991.1152 -1858.3733]","570":"[-2019.5122 -15990.6377 -1920.7794]","571":"[-1510.4646 -15991.0283 -1982.5448]","572":"[-985.9043 -15990.8457 -2045.3333]","573":"[-461.4722 -15990.2568 -2105.4631]","574":"[52.4746 -15990.5498 -2159.0056]","575":"[567.3611 -15990.6709 -2197.918]","576":"[1086.2618 -15987.5215 -2214.2839]","577":"[1613.9702 -15970.3389 -2215.074]","578":"[2138.6987 -15931.998 -2215.1982]","579":"[2660.167 -15873.1045 -2214.7603]","580":"[3176.8245 -15791.6035 -2215.1997]","581":"[3687.2207 -15683.377 -2215.4333]","582":"[4189.6797 -15547.9502 -2215.4233]","583":"[4681.6294 -15382.6934 -2215.3369]","584":"[5159.7666 -15184.7559 -2215.2112]","585":"[5621.0049 -14953.4941 -2215.1699]","586":"[6061.3423 -14687.5596 -2215.2161]","587":"[6476.8301 -14386.9951 -2215.2446]","588":"[6877.5806 -14039.999 -2215.2417]","589":"[7243.6226 -13658.8164 -2215.2463]","590":"[7573.0562 -13247.5752 -2215.3708]","591":"[7864.9414 -12810.7441 -2215.3152]","592":"[8118.3032 -12352.1758 -2215.4409]","593":"[8335.082 -11876.5742 -2215.2952]","594":"[8516.8691 -11391.4873 -2215.4832]","595":"[8666.2549 -10895.9971 -2215.3301]","596":"[8785.8301 -10390.5186 -2215.3579]","597":"[8881.751 -9881.4639 -2215.3867]","598":"[8951.3379 -9365.2061 -2215.3145]","599":"[8999.3076 -8851.2031 -2215.3701]","600":"[9028.0361 -8337.3799 -2215.2551]","601":"[9045.0029 -7817.2173 -2215.2666]","602":"[9077.874 -7299.9487 -2215.4314]","603":"[9149.3086 -6788.7603 -2215.3347]","604":"[9256.8809 -6285.7266 -2215.3972]","605":"[9360.5371 -5784.0381 -2215.3899]","606":"[9433.3164 -5269.1943 -2215.436]","607":"[9465.8369 -4751.48 -2215.5142]","608":"[9473.6494 -4229.6855 -2215.3401]","609":"[9472.917 -3700.9258 -2215.51]","610":"[9472.3301 -3183.5044 -2215.4453]","611":"[9473.7021 -2666.6768 -2215.4744]","612":"[9473.1123 -2150.8269 -2215.4397]","613":"[9472.7461 -1635.9169 -2215.5168]","614":"[9473.2715 -1121.9523 -2215.4988]","615":"[9472.9639 -608.9202 -2215.5403]","616":"[9473.3115 -96.856 -2215.3142]","617":"[9472.8701 431.3045 -2215.4351]","618":"[9473.0742 958.4771 -2215.4385]","619":"[9473.2188 1484.6648 -2215.4619]","620":"[9472.7754 2009.8618 -2215.5339]","621":"[9472.8887 2529.7029 -2214.8955]","622":"[9472.1279 3044.5779 -2214.7026]","623":"[9473.0967 3556.5981 -2214.4023]","624":"[9472.834 4083.7715 -2214.375]","625":"[9472.6943 4609.6411 -2214.4312]","626":"[9473.1826 5134.5176 -2214.4724]","627":"[9473.2041 5658.4644 -2214.5249]","628":"[9472.7324 6185.0229 -2214.4863]","629":"[9473.3154 6704.9014 -2214.4216]","630":"[9473.1748 7223.7637 -2214.4778]","631":"[9472.624 7741.6836 -2214.5886]","632":"[9473.5371 8258.624 -2214.4395]","633":"[9473.2813 8774.6074 -2214.5671]","634":"[9472.915 9289.6924 -2214.4932]","635":"[9472.5264 9803.8584 -2214.4705]","636":"[9472.5713 10316.7383 -2214.4514]","637":"[9473.2227 10838.0264 -2214.448]","638":"[9472.8379 11361.4014 -2214.3411]","639":"[9464.3789 11885.0801 -2214.3228]","640":"[9426.6064 12404.8955 -2214.1433]","641":"[9344.5811 12918.3828 -2214.4514]","642":"[9213.2266 13414.2354 -2214.3533]","643":"[9014.2637 13897.7959 -2214.4629]","644":"[8748.0938 14344.4307 -2214.3137]","645":"[8410.6025 14735.9346 -2214.208]","646":"[8013.4985 15062.9531 -2214.4429]","647":"[7568.5313 15317.5049 -2214.2515]","648":"[7080.9116 15508.9365 -2214.3867]","649":"[6574.0518 15636.7637 -2214.4187]","650":"[6057.8926 15712.8135 -2214.2292]","651":"[5539.0181 15745.3057 -2214.313]","652":"[5023.2642 15752.6416 -2214.4138]","653":"[4508.2832 15751.5156 -2214.2979]","654":"[3994.0691 15752.1914 -2214.4714]","655":"[3480.6953 15751.4424 -2214.3767]","656":"[2968.9099 15736.583 -2214.1958]","657":"[2448.6843 15689.5742 -2214.4167]","658":"[1938.8077 15594.2051 -2214.1067]","659":"[1444.5083 15446.791 -2214.5615]","660":"[978.2227 15234.8242 -2214.3018]","661":"[548.3005 14956.2383 -2214.4304]","662":"[172.653 14605.585 -2214.4885]","663":"[-144.0486 14187.8682 -2214.1316]","664":"[-385.7145 13724.4219 -2214.4641]","665":"[-558.8445 13232.7607 -2214.2715]","666":"[-672.7442 12725.0566 -2214.3052]","667":"[-736.1255 12209.5137 -2214.4958]","668":"[-760.4963 11691.3994 -2214.9604]","669":"[-764.7978 11172.5254 -2221.1875]","670":"[-763.4318 10660.9277 -2245.1677]","671":"[-764.8185 10150.8086 -2290.5503]","672":"[-763.4393 9636.3213 -2346.4741]","673":"[-764.7699 9115.8701 -2407.199]","674":"[-763.4142 8605.5322 -2468.3977]","675":"[-764.0934 8092.5791 -2530.0208]","676":"[-763.1676 7576.8325 -2590.4602]","677":"[-763.8362 7064.5518 -2646.8433]","678":"[-763.4095 6553.248 -2694.3252]","679":"[-764.1934 6038.3237 -2719.7571]","680":"[-763.6988 5515.0854 -2727.5667]","681":"[-764.6448 4991.1553 -2727.5032]","682":"[-763.7393 4468.0288 -2727.3274]","683":"[-764.1053 3945.7007 -2727.4578]","684":"[-763.8518 3424.4084 -2727.2966]","685":"[-763.6398 2904.4951 -2727.437]","686":"[-750.8118 2386.6145 -2727.3596]","687":"[-699.8696 1873.7272 -2727.3997]","688":"[-612.091 1367.1563 -2727.3301]","689":"[-506.8012 853.13 -2727.4768]","690":"[-406.0967 334.8459 -2727.3726]","691":"[-303.7562 -178.2924 -2727.4839]","692":"[-200.2045 -692.0361 -2727.4548]","693":"[-99.5005 -1205.2358 -2727.4971]","694":"[2.5291 -1717.1027 -2727.5225]","695":"[104.9874 -2227.8149 -2727.397]","696":"[204.1388 -2732.3643 -2727.3865]","697":"[306.0419 -3240.7805 -2727.4141]","698":"[408.2082 -3755.7725 -2727.3989]","699":"[510.5975 -4269.8511 -2727.5261]","700":"[612.0514 -4780.7202 -2727.448]","701":"[713.7674 -5291.7437 -2727.4165]","702":"[815.8633 -5801.8276 -2727.4272]","703":"[916.704 -6311.2861 -2727.5427]","704":"[1018.3831 -6819.7295 -2727.4519]","705":"[1118.7471 -7327.5454 -2727.4485]","706":"[1220.0968 -7834.3311 -2727.426]","707":"[1320.6406 -8340.4102 -2727.4089]","708":"[1420.7452 -8845.6816 -2727.394]","709":"[1521.4635 -9349.6729 -2727.2087]","710":"[1620.4854 -9853.0049 -2727.3425]","711":"[1707.2092 -10371.6992 -2727.4766]","712":"[1757.9696 -10892.1885 -2726.9229]","713":"[1760.5043 -11412.5391 -2726.8203]","714":"[1703.682 -11932.0928 -2726.9883]","715":"[1577.1517 -12442.7666 -2726.7263]","716":"[1371.1187 -12922.8232 -2726.5586]","717":"[1088.9156 -13358.624 -2725.5676]","718":"[737.0938 -13743.8105 -2723.1648]","719":"[420.137 -13987.292 -2725.3457]","720":"[326.5932 -14034.5566 -2728.3843]","721":"[-113.2025 -14300.6914 -2726.5293]","722":"[-587.6689 -14501.7705 -2727.3779]","723":"[-1076.6936 -14656.1777 -2727.3721]","724":"[-1575.1409 -14774.3926 -2727.3091]","725":"[-2082.6685 -14856.4971 -2727.0798]","726":"[-2599.5071 -14897.0596 -2727.1729]","727":"[-3115.2551 -14888.9004 -2727.5864]","728":"[-3628.7744 -14821.0313 -2727.4548]","729":"[-4127.355 -14682.1924 -2727.4939]","730":"[-4597.7744 -14464.9727 -2727.7959]","731":"[-5018.8105 -14173.2041 -2727.5078]","732":"[-5385.6211 -13812.8633 -2727.6467]","733":"[-5691.6045 -13400.3066 -2727.3831]","734":"[-5941.9321 -12944.9932 -2727.5513]","735":"[-6138.4282 -12466.4434 -2727.4761]","736":"[-6289.5913 -11973.7822 -2727.3064]","737":"[-6412.8271 -11475.1172 -2727.3237]","738":"[-6543.0181 -10977.2656 -2727.2222]","739":"[-6710.6138 -10493.3721 -2727.573]","740":"[-6924.2617 -10021.8389 -2727.5237]","741":"[-7190.0659 -9581.1074 -2727.4109]","742":"[-7518.667 -9178.3809 -2727.2708]","743":"[-7899.7803 -8835.417 -2727.2324]","744":"[-8288.5684 -8498.9443 -2727.2712]","745":"[-8642.5664 -8127.6348 -2727.7241]","746":"[-8939.0264 -7705.9766 -2727.5237]","747":"[-9178.082 -7251.1665 -2727.3735]","748":"[-9368.0381 -6768.855 -2727.2927]","749":"[-9515.8145 -6270.1196 -2727.3088]","750":"[-9631.2266 -5768.7554 -2727.3145]","751":"[-9732.3115 -5265.0918 -2727.4812]","752":"[-9812.5615 -4752.4521 -2727.4458]","753":"[-9855.2432 -4238.3354 -2727.5029]","754":"[-9863.7725 -3718.3555 -2727.5686]","755":"[-9862.2012 -3199.24 -2727.5327]","756":"[-9862.8193 -2681.2344 -2727.5208]","757":"[-9863.2266 -2164.353 -2727.5034]","758":"[-9862.8721 -1646.624 -2727.4722]","759":"[-9862.9922 -1124.9825 -2727.3933]","760":"[-9862.8613 -610.8767 -2727.5286]","761":"[-9862.8623 -97.5308 -2727.3645]","762":"[-9863.0771 415.106 -2727.5332]","763":"[-9862.8809 939.1588 -2727.3452]","764":"[-9863.0576 1462.3971 -2727.4922]","765":"[-9862.8057 1984.8033 -2727.4753]","766":"[-9863.1416 2506.406 -2727.5186]","767":"[-9862.7754 3026.9944 -2727.3411]","768":"[-9863.6943 3546.4807 -2727.3906]","769":"[-9863.377 4064.0916 -2727.4514]","770":"[-9863.8564 4580.4927 -2727.532]","771":"[-9863.6221 5095.9551 -2727.4314]","772":"[-9863.1445 5610.5542 -2727.366]","773":"[-9863.5439 6124.5293 -2731.0669]","774":"[-9863.1133 6643.5557 -2751.928]","775":"[-9863.5127 7162.4429 -2795.7329]","776":"[-9863.2236 7677.0757 -2850.9177]","777":"[-9863.3926 8196.0117 -2911.1404]","778":"[-9863.4395 8709.957 -2972.512]","779":"[-9863.5908 9218.8164 -3033.7124]","780":"[-9863.793 9733.9961 -3094.4185]","781":"[-9863.6016 10244.7979 -3151.4226]","782":"[-9863.4639 10759.8496 -3200.916]","783":"[-9863.6572 11276.8877 -3229.8997]","784":"[-9862.1436 11795.8584 -3239.6863]","785":"[-9833.918 12315.2471 -3239.3579]","786":"[-9756.0781 12830.9258 -3239.2297]","787":"[-9607.0684 13326.0283 -3239.3828]","788":"[-9396.4834 13742.9121 -3239.4539]","789":"[-9165.3877 14051.2471 -3239.5771]","790":"[-8861.7295 14335.0957 -3239.4089]","791":"[-8536.416 14546.1455 -3239.4084]","792":"[-8065.3804 14745.0449 -3239.3472]","793":"[-7562.0483 14865.5889 -3239.2842]","794":"[-7049.1299 14920.3057 -3239.4165]","795":"[-6534.8071 14923.0732 -3239.3088]","796":"[-6016.7676 14881.7236 -3239.3025]","797":"[-5506.585 14798.0928 -3239.4504]","798":"[-5010.6587 14662.9824 -3239.5725]","799":"[-4531.6528 14464.3945 -3239.5083]","800":"[-4090.5906 14200.1826 -3239.2148]","801":"[-3691.7559 13872.0146 -3239.323]","802":"[-3320.6721 13516.9727 -3239.5542]","803":"[-2952.5513 13142.0371 -3239.3518]","804":"[-2586.4292 12776.9072 -3239.5171]","805":"[-2210.2268 12404.7686 -3239.4722]","806":"[-1837.9661 12030.3955 -3239.469]","807":"[-1466.5845 11656.8564 -3239.4392]","808":"[-1094.2633 11285.9121 -3239.4553]","809":"[-722.846 10915.6748 -3239.5371]","810":"[-353.2256 10545.2832 -3239.5151]","811":"[15.3138 10175.4355 -3239.4751]","812":"[384.1422 9807.4893 -3239.4189]","813":"[752.2257 9440.4219 -3239.4109]","814":"[1118.3962 9073.0488 -3239.4443]","815":"[1484.1348 8706.8574 -3239.45]","816":"[1849.8044 8342.1533 -3239.438]","817":"[2214.7886 7978.3027 -3239.5]","818":"[2577.9158 7614.1572 -3239.4878]","819":"[2940.0146 7250.5547 -3239.4717]","820":"[3302.8413 6889.2256 -3239.5339]","821":"[3679.1516 6514.0137 -3239.5503]","822":"[4053.4749 6138.4355 -3239.4888]","823":"[4427.2085 5763.9063 -3239.4563]","824":"[4800.8008 5390.8506 -3239.4277]","825":"[5174.0171 5019.0195 -3239.4158]","826":"[5545.0947 4646.7988 -3239.4761]","827":"[5917.2915 4274.6797 -3259.0691]","828":"[6290.9185 3902.1907 -3300.0176]","829":"[6652.5195 3538.959 -3353.3926]","830":"[7019.6709 3171.9585 -3412.9146]","831":"[7392.0518 2800.7375 -3475.7686]","832":"[7753.1973 2439.3296 -3537.3301]","833":"[8117.9385 2074.4604 -3598.387]","834":"[8484.4971 1708.366 -3656.9341]","835":"[8849.9541 1342.8947 -3708.24]","836":"[9223.2139 968.8925 -3740.3845]","837":"[9584.2148 598.9535 -3751.6089]","838":"[9933.9561 217.0026 -3751.4822]","839":"[10269.8779 -180.6721 -3751.1204]","840":"[10594.4521 -597.7684 -3751.3293]","841":"[10895.7002 -1025.3121 -3751.354]","842":"[11173.9268 -1466.6183 -3751.3188]","843":"[11425.665 -1921.9783 -3751.2527]","844":"[11648.1133 -2390.6741 -3751.0938]","845":"[11836.8018 -2872.2329 -3751.3882]","846":"[11988.5527 -3364.8979 -3751.5332]","847":"[12100.3809 -3866.2864 -3751.2739]","848":"[12169.2861 -4373.6353 -3751.2271]","849":"[12193.8516 -4900.4575 -3751.3455]","850":"[12171.1104 -5425.7192 -3751.3286]","851":"[12101.5166 -5946.0391 -3751.3325]","852":"[11987.3906 -6462.1924 -3751.2756]","853":"[11835.4951 -6954.8833 -3751.2161]","854":"[11646.415 -7434.5332 -3751.373]","855":"[11426.0088 -7899.2207 -3751.385]","856":"[11177.9453 -8348.4414 -3751.3521]","857":"[10895.0439 -8796.9307 -3751.1616]","858":"[10589.9316 -9229.1875 -3751.2476]","859":"[10264.3789 -9647.6621 -3751.3867]","860":"[9925.96 -10046.2383 -3751.1462]","861":"[9573.4209 -10430.8828 -3751.2542]","862":"[9208.4102 -10802.1953 -3751.4121]","863":"[8831.2539 -11159.0498 -3751.5254]","864":"[8442.6826 -11500.7617 -3751.5745]","865":"[8033.5176 -11832.4482 -3751.1755]","866":"[7615.2563 -12142.4678 -3751.3457]","867":"[7183.603 -12430.6094 -3751.2803]","868":"[6738.1196 -12694.334 -3751.1897]","869":"[6279.0313 -12930.4053 -3751.3076]","870":"[5805.854 -13135.9053 -3751.4392]","871":"[5307.5259 -13311.251 -3751.3293]","872":"[4798.2476 -13445.3945 -3751.3533]","873":"[4281.2065 -13536.3359 -3751.4031]","874":"[3759.9158 -13581.5 -3751.292]","875":"[3238.5828 -13579.4854 -3751.3757]","876":"[2721.0837 -13531.6133 -3751.4768]","877":"[2211.1008 -13439.2852 -3751.4539]","878":"[1711.8811 -13305.2266 -3751.3015]","879":"[1225.5645 -13133.9971 -3751.4519]","880":"[753.9832 -12928.5869 -3751.4636]","881":"[297.6974 -12693.7588 -3751.4644]","882":"[-143.0275 -12433.0068 -3751.5027]","883":"[-581.8073 -12139.6992 -3751.5601]","884":"[-1004.8853 -11826.001 -3751.5005]","885":"[-1412.7886 -11494.4482 -3751.2634]","886":"[-1806.3566 -11147.542 -3751.3892]","887":"[-2186.7871 -10787.709 -3751.3701]","888":"[-2558.2417 -10419.8965 -3751.5413]","889":"[-2926.8547 -10050.5264 -3751.4888]","890":"[-3294.811 -9681.8379 -3751.4651]","891":"[-3662.5957 -9314.2949 -3751.4604]","892":"[-4029.7339 -8947.3906 -3751.4568]","893":"[-4396.3833 -8581.1045 -3751.4897]","894":"[-4759.6392 -8218.3584 -3751.5652]","895":"[-5123.9839 -7853.0273 -3751.4192]","896":"[-5488.2739 -7488.9922 -3751.3264]","897":"[-5851.7861 -7125.5347 -3751.3267]","898":"[-6214.6187 -6762.7407 -3751.4307]","899":"[-6576.938 -6400.751 -3751.4531]","900":"[-6944.4082 -6033.3291 -3751.4612]","901":"[-7311.8726 -5665.7012 -3751.3926]","902":"[-7679.6255 -5297.752 -3751.4402]","903":"[-8041.793 -4935.5532 -3751.5117]","904":"[-8404.1104 -4572.8052 -3751.2803]","905":"[-8773.0146 -4204.21 -3751.4316]","906":"[-9136.9629 -3840.3015 -3751.4277]","907":"[-9507.0098 -3470.1917 -3751.4202]","908":"[-9870.2637 -3106.2183 -3751.4541]","909":"[-10237.7188 -2738.5874 -3751.3843]","910":"[-10604.4453 -2373.6748 -3751.4387]","911":"[-10969.6611 -2008.8022 -3751.448]","912":"[-11343.7461 -1633.2853 -3751.4021]","913":"[-11713.4346 -1262.3092 -3751.4202]","914":"[-12082.3535 -895.3417 -3751.3457]","915":"[-12445.4111 -530.3635 -3751.4565]","916":"[-12813.8525 -164.1103 -3751.4111]","917":"[-13177.0938 201.4431 -3751.4656]","918":"[-13541.9619 563.9583 -3751.4111]","919":"[-13908.7246 937.3759 -3751.3899]","920":"[-14258.0215 1323.9242 -3751.3481]","921":"[-14575.3672 1733.2283 -3751.4485]","922":"[-14851.0947 2169.0417 -3751.5068]","923":"[-15073.4043 2631.4075 -3751.5203]","924":"[-15232.875 3129.5708 -3751.1672]","925":"[-15310.7832 3643.9692 -3751.1003]","926":"[-15318.6855 4163.9907 -3751.4246]","927":"[-15277.7861 4681.313 -3751.5332]","928":"[-15199.5674 5192.9175 -3751.4009]","929":"[-15101.1992 5699.7329 -3751.4592]","930":"[-14999.5322 6204.5049 -3751.4636]","931":"[-14900.127 6708.4536 -3751.4131]","932":"[-14805.3252 7211.793 -3751.4556]","933":"[-14739.791 7729.4565 -3751.4392]","934":"[-14711.1738 8248.6484 -3751.4114]","935":"[-14705.8457 8767.915 -3751.4814]","936":"[-14705.9922 9289.8076 -3751.3374]","937":"[-14706.0283 9804.793 -3751.4307]","938":"[-14706.0264 10318.9492 -3751.3025]","939":"[-14705.6318 10832.124 -3751.5479]","940":"[-14688.4814 11356.3867 -3751.2021]","941":"[-14637.5039 11876.1113 -3751.2747]","942":"[-14536.873 12386.7451 -3751.4763]","943":"[-14382.4063 12880.8809 -3751.0046]","944":"[-14162.8262 13345.6592 -3751.5093]","945":"[-13868.8145 13778.2451 -3751.3767]","946":"[-13505.7227 14150.4893 -3751.5815]","947":"[-13085.7197 14453.082 -3751.3911]","948":"[-12623.9229 14683.7979 -3751.592]","949":"[-12135.9072 14848.0439 -3751.3638]","950":"[-11627.7832 14956.0547 -3751.7004]","951":"[-11106.1777 15016.4268 -3751.3723]","952":"[-10588.5752 15037.4365 -3751.5437]","953":"[-10076.5332 15040.1787 -3751.4966]","954":"[-9559.4932 15039.4014 -3751.4585]","955":"[-9042.1807 15039.582 -3751.4548]","956":"[-8525.8203 15039.6396 -3751.5112]","957":"[-8010.4336 15039.4678 -3751.5625]","958":"[-7496.0122 15039.8135 -3751.4517]","959":"[-6982.7949 15039.1299 -3750.8818]","960":"[-6453.4185 15039.6475 -3751.0679]","961":"[-5925.7256 15039.1563 -3751.5098]","962":"[-5399.417 15038.4463 -3751.6262]","963":"[-4874.9741 15039.5996 -3751.3528]","964":"[-4352.209 15039.3262 -3750.9971]","965":"[-3831.0737 15038.8936 -3750.9734]","966":"[-3311.51 15039.6689 -3751.4585]","967":"[-2792.854 15039.0654 -3751.5488]","968":"[-2275.1675 15038.5391 -3751.5176]","969":"[-1758.4174 15039.3525 -3751.4365]","970":"[-1242.6277 15039.1445 -3751.4407]","971":"[-727.7779 15038.374 -3751.4419]","972":"[-213.8456 15039.208 -3751.4287]","973":"[299.1512 15039.5703 -3751.4492]","974":"[811.1998 15038.1416 -3751.4583]","975":"[1339.3347 15038.5674 -3751.4597]","976":"[1866.5055 15039.3604 -3751.4377]","977":"[2392.7158 15038.918 -3751.4944]","978":"[2920.0093 15039.0068 -3765.8008]","979":"[3433.9844 15039.0693 -3800.5918]","980":"[3955.4067 15039.1436 -3853.5239]","981":"[4469.9609 15038.8896 -3912.0242]","982":"[4996.1147 15039.1602 -3974.7727]","983":"[5515.3774 15039.293 -4037.2515]","984":"[6026.9863 15039.0957 -4097.9683]","985":"[6549.0356 15039.209 -4157.4468]","986":"[7061.0757 15039.3838 -4210.4253]","987":"[7580.4014 15039.1934 -4248.0962]","988":"[8103.252 15038.8848 -4263.0845]","989":"[8616.1055 15039.0635 -4263.2495]","990":"[9128.8125 15038.9668 -4263.3667]","991":"[9646.4814 15038.7979 -4263.3525]","992":"[10163.2588 15038.5557 -4263.4673]","993":"[10684.5674 15038.7559 -4263.1875]","994":"[11204.6133 15027.3389 -4263.416]","995":"[11721.0107 14983.6895 -4263.1699]","996":"[12229.1494 14895.8711 -4263.1895]","997":"[12721.584 14754.8799 -4263.2173]","998":"[13200.4473 14547.9424 -4263.252]","999":"[13638.5371 14271.3906 -4263.3223]","1000":"[14021.0986 13927.0557 -4263.2915]","1001":"[14337.1182 13523.5674 -4263.3945]","1002":"[14587.5449 13063.5176 -4263.21]","1003":"[14768.0469 12573.3545 -4263.4888]","1004":"[14887.627 12066.042 -4263.2324]","1005":"[14956.0391 11550.1855 -4263.2759]","1006":"[14983.8027 11035.2607 -4263.353]","1007":"[14989.0508 10516.8057 -4263.3818]","1008":"[14987.9453 10000.7949 -4263.4766]","1009":"[14986.9258 9473.9795 -4263.4692]","1010":"[14987.9756 8937.54 -4263.5112]","1011":"[14988.8174 8413.5098 -4263.46]","1012":"[14988.4531 7890.8291 -4263.4785]","1013":"[14987.8369 7369.5068 -4263.4683]","1014":"[14987.502 6849.5454 -4263.3462]","1015":"[14987.5889 6330.9033 -4263.3838]","1016":"[14988.2256 5813.6089 -4263.4282]","1017":"[14988.4443 5297.6074 -4263.4795]","1018":"[14987.4756 4764.1704 -4263.4819]","1019":"[14987.5039 4237.8774 -4263.4565]","1020":"[14988.1797 3724.9666 -4263.4634]","1021":"[14987.9492 3197.3132 -4263.457]","1022":"[14984.9658 2676.7126 -4262.707]","1023":"[14959.5234 2159.407 -4263.25]","1024":"[14890.5645 1639.7726 -4263.3193]","1025":"[14773.333 1140.1874 -4263.436]","1026":"[14595.7041 648.7827 -4263.2046]","1027":"[14349.7021 191.5279 -4263.354]","1028":"[14034.8877 -216.9174 -4263.0225]","1029":"[13656.0293 -562.3677 -4263.4561]","1030":"[13215.1084 -844.2455 -4263.2686]","1031":"[12737.0752 -1053.9576 -4263.4141]","1032":"[12236.5781 -1198.2706 -4263.4546]","1033":"[11724.6533 -1287.8839 -4263.1841]","1034":"[11206.0293 -1331.678 -4263.3794]","1035":"[10681.4785 -1343.7805 -4263.3242]","1036":"[10155.8213 -1344.6283 -4263.4248]","1037":"[9640.8584 -1342.922 -4263.3652]","1038":"[9126.832 -1344.1543 -4263.5317]","1039":"[8613.7002 -1344.1619 -4263.5596]","1040":"[8101.5132 -1343.651 -4263.5464]","1041":"[7573.7256 -1344.1628 -4263.4189]","1042":"[7046.8862 -1344.1477 -4263.519]","1043":"[6520.9902 -1343.8572 -4263.4287]","1044":"[5996.0278 -1343.9827 -4263.4663]","1045":"[5472.0332 -1344.231 -4263.3677]","1046":"[4948.9507 -1343.655 -4263.4941]","1047":"[4426.8052 -1343.8734 -4263.4639]","1048":"[3905.6003 -1344.1952 -4263.3838]","1049":"[3385.3103 -1343.4965 -4263.4155]","1050":"[2866.1123 -1344.6681 -4263.292]","1051":"[2348.0894 -1344.3875 -4263.2954]","1052":"[1831.0231 -1344.3865 -4263.2432]","1053":"[1315.3171 -1345.4434 -4263.3252]","1054":"[800.4871 -1343.9485 -4263.3682]","1055":"[286.58 -1344.8024 -4263.356]","1056":"[-226.4437 -1345.0416 -4263.4131]","1057":"[-738.5685 -1344.1436 -4263.3433]","1058":"[-1265.4716 -1345.2349 -4263.3667]","1059":"[-1791.3547 -1344.1626 -4263.2339]","1060":"[-2316.1086 -1343.9991 -4263.1455]","1061":"[-2839.6252 -1344.2363 -4263.3877]","1062":"[-3362.2288 -1343.5618 -4263.481]","1063":"[-3883.9275 -1343.5594 -4263.5044]","1064":"[-4404.7275 -1344.1443 -4263.438]","1065":"[-4924.6138 -1343.6854 -4263.4619]","1066":"[-5443.606 -1343.6104 -4263.4619]","1067":"[-5961.7368 -1344.0253 -4263.4585]","1068":"[-6479.2861 -1343.3544 -4263.4668]","1069":"[-6991.5366 -1334.4896 -4263.395]","1070":"[-7518.5879 -1307.8063 -4263.3247]","1071":"[-8043.0698 -1260.5507 -4263.3433]","1072":"[-8563.7051 -1190.6946 -4263.3164]","1073":"[-9079.1348 -1096.8188 -4263.3643]","1074":"[-9587.6182 -976.1063 -4263.4712]","1075":"[-10086.8535 -825.976 -4263.3838]","1076":"[-10573.8477 -644.7527 -4263.6831]","1077":"[-11045.7334 -431.2069 -4263.5186]","1078":"[-11498.1846 -182.8709 -4263.5317]","1079":"[-11927.7129 100.134 -4263.3096]","1080":"[-12330.3174 417.5194 -4263.478]","1081":"[-12713.751 779.0538 -4263.3726]","1082":"[-13061.9492 1172.2085 -4263.3188]","1083":"[-13372.4072 1593.6389 -4263.4189]","1084":"[-13645.9766 2038.3209 -4263.541]","1085":"[-13882.1758 2502.4536 -4263.3384]","1086":"[-14083.2432 2981.4163 -4263.3833]","1087":"[-14250.5117 3471.8496 -4263.4233]","1088":"[-14387.8594 3970.3601 -4263.2588]","1089":"[-14496.4326 4474.6484 -4263.2231]","1090":"[-14579.96 4982.6587 -4263.3984]","1091":"[-14640.5811 5497.1348 -4263.4014]","1092":"[-14680.2383 6017.4917 -4263.3848]","1093":"[-14700.6904 6537.9771 -4263.1772]","1094":"[-14698.8018 7057.2495 -4263.4829]","1095":"[-14663.4121 7573.3667 -4262.9009]","1096":"[-14585.4414 8082.4165 -4262.8706]","1097":"[-14456.5479 8578.2334 -4263.5186]","1098":"[-14261.4102 9064.0898 -4263.1255]","1099":"[-13999.2549 9512.9111 -4263.0132]","1100":"[-13668.8311 9910.0557 -4261.9004]","1101":"[-13272.8066 10248.7676 -4259.8389]","1102":"[-12936.4834 10446.4766 -4261.9355]","1103":"[-12462.0186 10651.4814 -4263.1411]","1104":"[-11967.1475 10788.6895 -4263.5156]","1105":"[-11464.1543 10884.5859 -4263.2793]","1106":"[-10945.4863 10929.5283 -4263.2715]","1107":"[-10432.4766 10940.6113 -4276.9004]","1108":"[-9915.877 10943.5684 -4309.999]","1109":"[-9405.875 10943.1826 -4360.7056]","1110":"[-8888.0332 10942.6484 -4419.2915]","1111":"[-8375.6631 10943.4043 -4480.0112]","1112":"[-7860.9365 10942.7412 -4541.7393]","1113":"[-7347.4819 10943.5352 -4603.061]","1114":"[-6825.0986 10942.958 -4663.1147]","1115":"[-6310.9956 10943.2764 -4717.0835]","1116":"[-5796.1865 10943.1934 -4756.8687]","1117":"[-5272.9219 10943.3857 -4774.6592]","1118":"[-4760.9058 10943.4346 -4776.2881]","1119":"[-4234.4272 10942.8779 -4776.4775]","1120":"[-3708.7983 10942.8848 -4776.4712]","1121":"[-3184.0222 10943.2021 -4776.4595]","1122":"[-2660.094 10943.8662 -4776.5186]","1123":"[-2137.063 10942.5645 -4776.4351]","1124":"[-1614.9186 10943.6055 -4776.353]","1125":"[-1093.6152 10943.6699 -4776.4341]","1126":"[-573.1732 10942.9473 -4776.4521]","1127":"[-53.5953 10942.6221 -4776.4521]","1128":"[465.15 10943.2754 -4776.4546]","1129":"[983.0729 10943.4365 -4776.4531]","1130":"[1500.1631 10943.2871 -4776.4004]","1131":"[2016.4447 10943.4834 -4776.3545]","1132":"[2531.6714 10943.9727 -4776.1255]","1133":"[3045.5215 10943.7695 -4776.3364]","1134":"[3558.106 10944.4336 -4776.1924]","1135":"[4083.439 10930.0869 -4776.5215]","1136":"[4602.8623 10883.0273 -4776.4282]","1137":"[5111.022 10789.2871 -4776.4536]","1138":"[5603.2808 10642.7236 -4775.9609]","1139":"[6079.6929 10427.542 -4776.5469]","1140":"[6514.2744 10144.376 -4776.2954]","1141":"[6890.3154 9792.3447 -4776.1782]","1142":"[7199.3813 9383.0273 -4776.3071]","1143":"[7442.5635 8918.4736 -4776.2412]","1144":"[7616.5645 8424.9854 -4776.3262]","1145":"[7730.4009 7915.2803 -4776.2397]","1146":"[7793.9141 7398.2231 -4776.4146]","1147":"[7817.605 6878.5107 -4776.4839]","1148":"[7821.6274 6362.8652 -4776.3257]","1149":"[7820.9644 5832.4595 -4776.3862]","1150":"[7820.5889 5315.7427 -4776.4775]","1151":"[7820.8618 4800.917 -4776.4668]","1152":"[7820.9272 4287.2622 -4776.4878]","1153":"[7821.1646 3774.7664 -4776.4683]","1154":"[7821.188 3241.209 -4776.46]","1155":"[7820.9512 2708.8887 -4776.4629]","1156":"[7820.646 2177.7964 -4776.3423]","1157":"[7821.0479 1647.9323 -4776.3516]","1158":"[7821.207 1119.2666 -4776.3794]","1159":"[7820.5801 591.8199 -4776.4321]","1160":"[7820.3208 65.5785 -4776.4712]","1161":"[7820.8916 -459.4741 -4776.4604]","1162":"[7821.0508 -983.3577 -4776.4512]","1163":"[7821.1543 -1506.0857 -4776.5513]","1164":"[7820.6685 -2027.6296 -4776.5063]","1165":"[7820.5688 -2548.0054 -4776.4751]","1166":"[7821.0005 -3067.218 -4776.5195]","1167":"[7821.499 -3585.2595 -4776.4556]","1168":"[7821.0918 -4102.146 -4776.4678]","1169":"[7820.6265 -4617.8813 -4776.4663]","1170":"[7820.9028 -5132.4922 -4776.4404]","1171":"[7821.1914 -5646.0005 -4776.5469]","1172":"[7821.2031 -6158.3745 -4776.501]","1173":"[7821.127 -6690.9199 -4776.3198]","1174":"[7820.5933 -7222.3008 -4776.3774]","1175":"[7820.7236 -7752.4771 -4776.4644]","1176":"[7821.2383 -8281.4805 -4776.458]","1177":"[7821.1079 -8799.4629 -4776.4634]","1178":"[7821.0054 -9327.0459 -4776.3408]","1179":"[7820.7856 -9843.6582 -4776.4116]","1180":"[7821.7529 -10362.04 -4776.3325]","1181":"[7807.8755 -10879.0947 -4776.3755]","1182":"[7765.4385 -11392.4805 -4776.3667]","1183":"[7676.4731 -11897.207 -4775.9092]","1184":"[7532.9067 -12398.8262 -4776.1968]","1185":"[7325.4175 -12873.7344 -4776.1128]","1186":"[7050.0073 -13308.6689 -4776.3091]","1187":"[6698.6982 -13696.3135 -4776.2876]","1188":"[6287.0239 -14014.9336 -4776.4204]","1189":"[5830.4009 -14260.8516 -4776.1821]","1190":"[5344.3604 -14437.4082 -4776.3892]","1191":"[4841.9131 -14555.5059 -4776.2813]","1192":"[4326.5698 -14623.5908 -4776.3291]","1193":"[3800.9976 -14652.542 -4776.2959]","1194":"[3280.6077 -14656.0762 -4776.3057]","1195":"[2756.4167 -14654.1475 -4776.4766]","1196":"[2239.1511 -14654.2471 -4776.5303]","1197":"[1724.7922 -14655.5215 -4776.3921]","1198":"[1211.7657 -14655.4814 -4776.2891]","1199":"[674.425 -14654.3203 -4776.4541]","1200":"[138.552 -14654.4756 -4776.4604]","1201":"[-395.9642 -14655.2686 -4776.3818]","1202":"[-929.0439 -14655.2617 -4776.459]","1203":"[-1460.765 -14654.4844 -4776.394]","1204":"[-1982.7661 -14654.6758 -4776.4912]","1205":"[-2495.2327 -14655.3857 -4776.417]","1206":"[-3012.9939 -14654.8418 -4776.4858]","1207":"[-3529.6421 -14654.3975 -4776.4561]","1208":"[-4044.8213 -14655.3662 -4776.5005]","1209":"[-4562.1851 -14653.8652 -4776.5122]","1210":"[-5083.8066 -14640.1885 -4776.1899]","1211":"[-5603.2764 -14609.0254 -4776.3813]","1212":"[-6119.8652 -14556.8223 -4776.438]","1213":"[-6631.9097 -14482.4775 -4776.6406]","1214":"[-7138.3433 -14384.6396 -4776.0361]","1215":"[-7637.1333 -14259.8477 -4776.3931]","1216":"[-8126.7622 -14107.1426 -4776.3218]","1217":"[-8619.2041 -13916.6504 -4776.4072]","1218":"[-9095.3662 -13692.0703 -4776.4585]","1219":"[-9551.0625 -13431.6533 -4776.3433]","1220":"[-9981.7637 -13134.8418 -4776.375]","1221":"[-10384.2031 -12803.4131 -4776.4395]","1222":"[-10753.4775 -12437.7607 -4776.6206]","1223":"[-11088.9375 -12042.8154 -4776.3525]","1224":"[-11387.2979 -11620.9229 -4776.3633]","1225":"[-11649.3457 -11177.1436 -4776.2305]","1226":"[-11875.7373 -10715.7676 -4776.416]","1227":"[-12066.9922 -10240.0645 -4776.5615]","1228":"[-12232.1758 -9739.4385 -4776.3784]","1229":"[-12364.7041 -9230.6035 -4776.3882]","1230":"[-12469.6992 -8716.4551 -4776.3716]","1231":"[-12548.207 -8198.6514 -4776.4653]","1232":"[-12603.9658 -7678.8633 -4776.2773]","1233":"[-12638.5352 -7158.3423 -4776.0635]","1234":"[-12654.0654 -6638.2334 -4775.9771]","1235":"[-12657.7715 -6124.3535 -4776.3491]","1236":"[-12656.6328 -5606.5146 -4776.4648]","1237":"[-12656.6152 -5083.1953 -4776.4976]","1238":"[-12657.8115 -4560.8589 -4776.48]","1239":"[-12656.8154 -4039.5068 -4776.4741]","1240":"[-12656.1396 -3519.1626 -4776.4639]","1241":"[-12656.8457 -2999.7732 -4776.4614]","1242":"[-12657.1416 -2481.3308 -4776.3594]","1243":"[-12657.2715 -1963.7949 -4776.3486]","1244":"[-12656.9131 -1447.225 -4776.4517]","1245":"[-12656.9063 -931.5935 -4776.5068]","1246":"[-12656.5986 -416.5213 -4779.6484]","1247":"[-12656.6631 100.8257 -4801.3481]","1248":"[-12656.9414 622.6443 -4846.0352]","1249":"[-12656.9766 1135.9153 -4901.2056]","1250":"[-12656.8135 1660.1731 -4961.8555]","1251":"[-12656.6855 2177.5786 -5024.0718]","1252":"[-12656.834 2687.3972 -5086.2295]","1253":"[-12656.8486 3204.4055 -5149.8047]","1254":"[-12656.7568 3727.5273 -5213.9819]","1255":"[-12657.1699 4242.6738 -5277.3823]","1256":"[-12656.8555 4765.7993 -5341.5684]","1257":"[-12656.6924 5285.4321 -5405.3721]","1258":"[-12656.667 5795.2915 -5467.9692]","1259":"[-12656.6992 6316.1045 -5531.8628]","1260":"[-12657.0928 6840.0859 -5596.2676]","1261":"[-12657.2705 7354.6528 -5658.9219]","1262":"[-12657.2949 7869.0063 -5720.5522]","1263":"[-12657.3359 8385.8652 -5781.4268]","1264":"[-12657.2363 8899.8037 -5837.2041]","1265":"[-12657.3564 9419.0088 -5883.5654]","1266":"[-12656.8027 9939.9053 -5907.0508]","1267":"[-12642.2256 10460.7324 -5911.9087]","1268":"[-12587.6611 10973.8037 -5912.4492]","1269":"[-12466.5059 11479.6426 -5912.4673]","1270":"[-12265.7109 11952.21 -5912.3267]","1271":"[-12055.5322 12274.8213 -5912.5044]","1272":"[-11766.6504 12582.8359 -5912.3086]","1273":"[-11456.2236 12814.6836 -5912.3652]","1274":"[-11078.9434 13004.8164 -5912.4385]","1275":"[-10590.1338 13160.54 -5912.3784]","1276":"[-10083.7588 13242.5898 -5912.2759]","1277":"[-9570.9189 13268.9795 -5912.5503]","1278":"[-9054.8223 13239.3994 -5912.2119]","1279":"[-8546.1563 13151.4492 -5912.1138]","1280":"[-8051.2466 12989.6758 -5912.2861]","1281":"[-7662.5146 12781.9824 -5912.4082]","1282":"[-7355.7246 12540.9404 -5912.2993]","1283":"[-7085.3315 12238.4434 -5912.3774]","1284":"[-6878.0728 11902.8262 -5912.4844]","1285":"[-6685.127 11419.4775 -5912.3496]","1286":"[-6573.1899 10912.9707 -5912.3818]","1287":"[-6524.3857 10402.6865 -5912.3086]","1288":"[-6512.2227 9885.4971 -5912.4131]","1289":"[-6513.6606 9368.5615 -5912.4473]","1290":"[-6513.6763 8847.916 -5912.4165]","1291":"[-6511.707 8328.1279 -5912.5103]","1292":"[-6514.1797 7809.2139 -5912.4595]","1293":"[-6512.7808 7291.1807 -5912.4541]","1294":"[-6512.603 6777.5771 -5912.4565]","1295":"[-6512.645 6259.9009 -5912.4224]","1296":"[-6490.6479 5747.9414 -5912.3394]","1297":"[-6423.7998 5233.8813 -5912.2793]","1298":"[-6289.5352 4736.8457 -5912.394]","1299":"[-6069.0005 4267.9683 -5912.5313]","1300":"[-5868.2598 3983.7656 -5912.4063]","1301":"[-5550.0957 3668.5469 -5912.332]","1302":"[-5268.6455 3473.6738 -5912.5337]","1303":"[-4796.7168 3255.6526 -5912.3364]","1304":"[-4300.4053 3123.2859 -5912.2056]","1305":"[-3792.1389 3058.1726 -5912.2437]","1306":"[-3272.3269 3047.2153 -5912.1738]","1307":"[-2755.5215 3080.0933 -5912.3154]","1308":"[-2245.1309 3155.6987 -5912.4941]","1309":"[-1747.4838 3281.7385 -5912.6465]","1310":"[-1263.6414 3468.6624 -5912.5015]","1311":"[-814.5626 3720.3218 -5912.2061]","1312":"[-406.0904 4042.186 -5912.4502]","1313":"[-29.1 4399.0444 -5912.5273]","1314":"[337.2914 4766.1128 -5916.2178]","1315":"[703.4799 5134.2964 -5937.1426]","1316":"[1069.5574 5499.5015 -5980.333]","1317":"[1434.937 5863.978 -6035.6528]","1318":"[1799.3866 6229.1567 -6095.4478]","1319":"[2162.4724 6592.0024 -6157.1206]","1320":"[2522.5234 6952.1455 -6219.0049]","1321":"[2886.6472 7315.792 -6282.2798]","1322":"[3246.8574 7676.8516 -6344.8926]","1323":"[3610.5466 8040.1963 -6407.9175]","1324":"[3972.2346 8401.4336 -6470.7817]","1325":"[4332.8418 8763.1025 -6533.479]","1326":"[4696.8057 9126.832 -6596.6558]","1327":"[5064.1396 9493.7891 -6660.4321]","1328":"[5428.085 9858.3857 -6722.9907]","1329":"[5791.5879 10222.2539 -6784.7759]","1330":"[6153.9111 10584.6328 -6844.1216]","1331":"[6518.5815 10949.1426 -6898.8384]","1332":"[6884.8232 11315.5752 -6940.5981]","1333":"[7251.4937 11682.1982 -6959.7319]","1334":"[7620.0771 12049.8018 -6962.4678]","1335":"[7989.9565 12417.0908 -6963.8672]","1336":"[8378.9043 12762.8789 -6966.7612]","1337":"[8796.6035 13059.3643 -6971.729]","1338":"[9261.8643 13288.8613 -6975.917]","1339":"[9611.4385 13390.1523 -6977.3926]","1340":"[9977.7422 13428.9814 -6978.0352]","1341":"[10318.6426 13404.9902 -6977.7432]","1342":"[10684.2236 13313.2715 -6976.1118]","1343":"[11100.8506 13127.0127 -6972.9419]","1344":"[11533.5322 12842.7422 -6968.3188]","1345":"[11927.2842 12505.2422 -6968.8159]","1346":"[12296.8506 12149.293 -6989.1479]","1347":"[12660.209 11785.8193 -7032.2524]","1348":"[13021.6299 11423.0957 -7087.1479]","1349":"[13381.8125 11062.8828 -7146.2583]","1350":"[13740.3896 10703.0137 -7210.3511]","1351":"[14083.6016 10326.1943 -7277.6206]","1352":"[14396.7021 9926.416 -7344.0918]","1353":"[14674.1016 9496.2021 -7396.9185]","1354":"[14904.7871 9037.4717 -7434.6484]","1355":"[15063.502 8551.3008 -7460.7773]","1356":"[15134.6016 8052.8311 -7477.0249]","1357":"[15119.7568 7600.9624 -7485.0972]","1358":"[15016.5742 7091.1377 -7487.6445]","1359":"[14829.9287 6608.0747 -7486.436]","1360":"[14574.4863 6162.1675 -7483.7095]","1361":"[14267.8213 5745.3735 -7479.9795]","1362":"[13930.7803 5359.8496 -7476.6206]","1363":"[13568.2744 4983.7524 -7474.7632]","1364":"[13195.5293 4612.4849 -7474.7529]","1365":"[12825.3936 4244.5479 -7474.9541]","1366":"[12450.7549 3866.8623 -7475.1035]","1367":"[12082.4326 3497.8713 -7475.0044]","1368":"[11713.208 3131.1272 -7474.9263]","1369":"[11345.9014 2764.3054 -7475.1245]","1370":"[10972.8154 2389.0525 -7475.1646]","1371":"[10598.4893 2014.6367 -7475.1025]","1372":"[10231.8691 1650.0514 -7475.0234]","1373":"[9859.9697 1276.3105 -7474.9785]","1374":"[9488.793 905.7505 -7475.0586]","1375":"[9121.8535 539.2278 -7475.1064]","1376":"[8756.3398 173.4465 -7475.1304]","1377":"[8393.1582 -189.8424 -7475.1001]","1378":"[8029.5767 -552.8955 -7475.0718]","1379":"[7665.1626 -917.4192 -7475.0811]","1380":"[7298.0098 -1274.5922 -7478.1011]","1381":"[6891.3672 -1596.353 -7483.4111]","1382":"[6439.4253 -1846.2559 -7489.4355]","1383":"[5955.9209 -2025.7422 -7490.479]","1384":"[5456.7124 -2142.9976 -7487.561]","1385":"[4945.7202 -2209.3062 -7482.2529]","1386":"[4425.2637 -2235.7358 -7477.5322]","1387":"[3901.594 -2241.0378 -7474.8994]","1388":"[3387.7231 -2239.6204 -7475.0752]","1389":"[2873.3049 -2239.6045 -7475.1226]","1390":"[2351.3384 -2240.5432 -7475.1763]","1391":"[1831.108 -2239.7463 -7475.0215]","1392":"[1317.7761 -2239.6782 -7475.0483]","1393":"[794.9223 -2240.5088 -7475.1392]","1394":"[281.0304 -2239.9873 -7475.187]","1395":"[-239.3923 -2239.4136 -7474.9541]","1396":"[-766.9639 -2239.6448 -7475.0547]","1397":"[-1293.3196 -2239.9536 -7475.1563]","1398":"[-1818.4357 -2239.887 -7475.0093]","1399":"[-2342.323 -2240.0149 -7474.9795]","1400":"[-2864.968 -2239.7266 -7474.9707]","1401":"[-3386.3997 -2239.6628 -7475.1831]","1402":"[-3906.6111 -2240.1636 -7475.1787]","1403":"[-4425.6377 -2239.8616 -7474.9961]","1404":"[-4943.4824 -2239.708 -7474.9453]","1405":"[-5460.1738 -2240.1299 -7475.1543]","1406":"[-5975.6597 -2239.8005 -7475.1489]","1407":"[-6489.9927 -2239.4102 -7475.0313]","1408":"[-7003.1509 -2239.8865 -7474.9722]","1409":"[-7515.186 -2240.2646 -7475.1338]","1410":"[-8048.2495 -2240.0261 -7475.1406]","1411":"[-8580.0586 -2240.1787 -7475.041]","1412":"[-9103.6992 -2240.064 -7475.0142]","1413":"[-9620.7832 -2239.8716 -7475.062]","1414":"[-10135.1328 -2239.5029 -7475.1436]","1415":"[-10659.5293 -2240.1333 -7475.0825]","1416":"[-11176.0117 -2240.0742 -7475.0459]","1417":"[-11698.6553 -2239.9714 -7474.8984]","1418":"[-12217.8271 -2239.9788 -7475.0127]","1419":"[-12732.5908 -2240.074 -7475.0596]","1420":"[-13246.6318 -2254.3328 -7475.3701]","1421":"[-13765.2607 -2307.4983 -7475.5786]","1422":"[-14268.8945 -2427.2959 -7475.457]","1423":"[-14741.627 -2624.9922 -7475.4033]","1424":"[-15066.3242 -2833.4175 -7475.2764]","1425":"[-15361.2354 -3105.5317 -7475.6509]","1426":"[-15602.915 -3422.8254 -7475.2539]","1427":"[-15797.6055 -3800.2117 -7475.3555]","1428":"[-15955.5723 -4290.5601 -7475.3442]","1429":"[-16041.1758 -4803.7085 -7475.4204]","1430":"[-16071.1982 -5317.0225 -7475.249]","1431":"[-16076.7656 -5829.6509 -7475.0518]","1432":"[-16075.6641 -6351.1577 -7474.96]","1433":"[-16075.9873 -6871.9087 -7475.0518]","1434":"[-16076.1787 -7391.7476 -7475.02]","1435":"[-16076.3252 -7910.6943 -7475.0601]","1436":"[-16075.6426 -8428.7813 -7475.0605]","1437":"[-16076.3359 -8945.9951 -7475.0518]","1438":"[-16070.7051 -9462.1426 -7475.1548]","1439":"[-16035.1748 -9975.0381 -7475.313]","1440":"[-15940.9697 -10487.1553 -7475.4595]","1441":"[-15772.1406 -10977.7051 -7475.4819]","1442":"[-15558.2676 -11363.6104 -7475.4136]","1443":"[-15325.3955 -11650.9844 -7475.4028]","1444":"[-15004.4131 -11929.7988 -7475.3418]","1445":"[-14670.2637 -12129.8867 -7475.4365]","1446":"[-14185.374 -12316.1758 -7475.2617]","1447":"[-13682.3799 -12423.083 -7475.377]","1448":"[-13164.0078 -12468.6992 -7475.3037]","1449":"[-12648.9658 -12490.1689 -7475.2998]","1450":"[-12128.9473 -12518.4443 -7475.4053]","1451":"[-11613.3428 -12575.2412 -7475.2686]","1452":"[-11103.6738 -12660.9424 -7475.4712]","1453":"[-10602.0303 -12774.5557 -7475.6152]","1454":"[-10103.167 -12922.3975 -7475.5063]","1455":"[-9611.0479 -13090.4795 -7475.3555]","1456":"[-9122.502 -13248.123 -7475.5122]","1457":"[-8618.0205 -13376.8262 -7475.2847]","1458":"[-8114.0605 -13474.3818 -7475.5908]","1459":"[-7602.0342 -13543.3584 -7475.3745]","1460":"[-7088.7021 -13584.917 -7475.4292]","1461":"[-6566.6528 -13603.3418 -7475.5093]","1462":"[-6047.418 -13606.9697 -7475.3682]","1463":"[-5525.3555 -13606.3779 -7475.6035]","1464":"[-5010.6235 -13606.8652 -7475.1963]","1465":"[-4489.8081 -13606.2695 -7475.3999]","1466":"[-3965.7117 -13606.5156 -7475.4648]","1467":"[-3452.0332 -13606.9844 -7475.3101]","1468":"[-2938.0088 -13606.0762 -7475.2695]","1469":"[-2409.0818 -13606.7988 -7475.5029]","1470":"[-1888.1517 -13607.0947 -7475.3975]","1471":"[-1358.2803 -13607.4414 -7475.0752]","1472":"[-829.9323 -13607.3252 -7475.3022]","1473":"[-302.6403 -13606.8135 -7475.4844]","1474":"[223.5667 -13607.0469 -7475.4766]","1475":"[748.6737 -13607.5674 -7475.4785]","1476":"[1272.6952 -13607.4688 -7475.4722]","1477":"[1795.6644 -13607.4688 -7475.4644]","1478":"[2317.147 -13606.5889 -7475.6055]","1479":"[2837.1912 -13607.1094 -7475.6045]","1480":"[3356.0806 -13607.3184 -7475.4912]","1481":"[3873.8794 -13606.7324 -7475.5088]","1482":"[4389.6978 -13606.7197 -7475.8945]","1483":"[4904.2529 -13607.4463 -7475.6118]","1484":"[5417.7798 -13607.5068 -7475.4575]","1485":"[5930.3052 -13606.5303 -7475.4146]","1486":"[6460.7388 -13606.584 -7475.4688]","1487":"[6990.0977 -13607.4404 -7475.4678]","1488":"[7515.604 -13607.7754 -7475.4678]","1489":"[8030.6563 -13607.0879 -7475.4272]","1490":"[8544.9072 -13606.5635 -7475.3667]","1491":"[9058.3848 -13607.4688 -7475.5156]","1492":"[9570.7842 -13599.0352 -7475.3818]","1493":"[10093.1133 -13563.1416 -7475.2183]","1494":"[10608.0449 -13483.4375 -7475.3569]","1495":"[11109.625 -13352.1729 -7475.5171]","1496":"[11588.1211 -13159.1396 -7475.5391]","1497":"[12030.8525 -12899.6406 -7475.2739]","1498":"[12430.333 -12562.6982 -7475.502]","1499":"[12763.7314 -12163.5557 -7475.1323]","1500":"[13023.2949 -11715.1963 -7475.4556]","1501":"[13214.7021 -11235.1016 -7475.4653]","1502":"[13343.0879 -10735.6426 -7475.2813]","1503":"[13421.2012 -10226.835 -7475.2217]","1504":"[13455.8164 -9714.042 -7475.3984]","1505":"[13464.5566 -9200.7324 -7475.4507]","1506":"[13463.7666 -8687.9531 -7476.8613]","1507":"[13464.2764 -8171.5366 -7495.0713]","1508":"[13463.9258 -7657.4702 -7534.3447]","1509":"[13464.1016 -7138.3843 -7588.3877]","1510":"[13464.0537 -6625.0332 -7647.2266]","1511":"[13464.0586 -6104.7139 -7709.2988]","1512":"[13464.6084 -5593.27 -7771.6875]","1513":"[13463.252 -5078.3027 -7834.8843]","1514":"[13464.123 -4561.291 -7898.3555]","1515":"[13464.8926 -4043.8667 -7961.9458]","1516":"[13463.6016 -3527.5549 -8025.3071]","1517":"[13463.4473 -3015.1345 -8088.2168]","1518":"[13464.0518 -2490.3918 -8152.6348]","1519":"[13463.9492 -1968.8665 -8216.4531]","1520":"[13463.7227 -1450.288 -8279.0361]","1521":"[13463.3994 -935.5288 -8339.7119]","1522":"[13464.0762 -411.312 -8398.4131]","1523":"[13463.6143 108.3085 -8448.6973]","1524":"[13463.7041 636.3317 -8477.6738]","1525":"[13463.7783 1151.1967 -8487.0771]","1526":"[13462.9854 1666.7417 -8486.5518]","1527":"[13454.2773 2181.1035 -8486.0078]","1528":"[13427.6113 2693.3425 -8486.2373]","1529":"[13379.9316 3220.7195 -8486.0996]","1530":"[13310.2783 3743.9565 -8486.2236]","1531":"[13214.9453 4261.8765 -8486.3428]","1532":"[13093.1797 4772.5708 -8486.667]","1533":"[12942.2002 5273.8428 -8486.4648]","1534":"[12759.1221 5762.6943 -8485.9326]","1535":"[12543.1475 6235.9731 -8486.0684]","1536":"[12292.5664 6690.0635 -8486.2656]","1537":"[12006.4492 7120.7202 -8486.4268]","1538":"[11685.7295 7524.2568 -8486.4141]","1539":"[11332.0781 7897.166 -8486.4023]","1540":"[10947.749 8236.1299 -8486.4521]","1541":"[10522.7832 8549.5977 -8486.3125]","1542":"[10073.7578 8824.7246 -8486.3115]","1543":"[9605.1514 9062.0703 -8486.4121]","1544":"[9121.5908 9263.9785 -8486.2793]","1545":"[8626.3037 9431.4307 -8486.376]","1546":"[8122.8691 9568.25 -8486.4688]","1547":"[7613.624 9676.5664 -8486.3223]","1548":"[7100.5767 9758.8477 -8486.3975]","1549":"[6585.4629 9818.4111 -8486.415]","1550":"[6069.3169 9856.0498 -8486.4434]","1551":"[5553.2104 9875.4668 -8486.0693]","1552":"[5038.0688 9880.1035 -8486.3945]","1553":"[4523.8296 9879.5898 -8486.4229]","1554":"[4010.4822 9880.0293 -8486.3965]","1555":"[3498.0757 9879.5977 -8486.5049]","1556":"[2970.0723 9879.8193 -8486.5156]","1557":"[2443.032 9880.5762 -8486.417]","1558":"[1916.3325 9879.8477 -8486.4463]","1559":"[1395.5818 9879.166 -8486.4541]","1560":"[872.7241 9879.6338 -8486.4492]","1561":"[352.0775 9880.1416 -8486.4297]","1562":"[-167.7332 9879.7988 -8486.3486]","1563":"[-686.4269 9880.4795 -8486.4297]","1564":"[-1204.2361 9879.541 -8486.4248]","1565":"[-1721.1982 9880.3154 -8486.4502]","1566":"[-2237.3352 9879.9785 -8486.5576]","1567":"[-2752.6372 9880.1689 -8486.4238]","1568":"[-3267.1182 9879.4834 -8486.3662]","1569":"[-3780.7666 9880.4453 -8486.3262]","1570":"[-4293.5615 9879.8809 -8486.542]","1571":"[-4819.749 9880.2949 -8486.417]","1572":"[-5336.4561 9879.9121 -8486.3545]","1573":"[-5849.7578 9880.3828 -8486.4297]","1574":"[-6362.2539 9880.0898 -8486.4209]","1575":"[-6887.0815 9880.2158 -8486.4521]","1576":"[-7411.1123 9879.9502 -8486.5273]","1577":"[-7934.356 9880.3545 -8486.6445]","1578":"[-8456.7617 9879.7539 -8486.6846]","1579":"[-8978.3311 9879.1465 -8486.5586]","1580":"[-9497.627 9860.1221 -8486.1436]","1581":"[-10012.3486 9808.6572 -8486.6748]","1582":"[-10516.6016 9707.4229 -8486.3945]","1583":"[-11015.6357 9549.9873 -8486.668]","1584":"[-11484.8301 9325.376 -8486.7451]","1585":"[-11910.8604 9032.042 -8486.7109]","1586":"[-12277.21 8670.8623 -8486.6182]","1587":"[-12576.1494 8254.8838 -8486.71]","1588":"[-12807.9717 7786.0996 -8486.6875]","1589":"[-12973.1338 7291.1514 -8486.8096]","1590":"[-13078.9844 6781.3384 -8486.5752]","1591":"[-13137.0254 6264.8413 -8486.5615]","1592":"[-13156.5977 5746.186 -8486.7178]","1593":"[-13159.6719 5227.8408 -8486.7041]","1594":"[-13158.9678 4708.8696 -8494.5537]","1595":"[-13159.334 4195.6792 -8522.3691]","1596":"[-13158.9443 3681.657 -8570.3262]","1597":"[-13159.0225 3161.2312 -8627.9424]","1598":"[-13158.7842 2647.3354 -8688.2988]","1599":"[-13159.2148 2127.5203 -8751.1748]","1600":"[-13158.623 1618.2732 -8813.3564]","1601":"[-13158.5576 1106.865 -8876.2266]","1602":"[-13159.7373 594.8076 -8938.9922]","1603":"[-13159.3555 83.7128 -9001.7871]","1604":"[-13158.4434 -424.9495 -9064.2607]","1605":"[-13158.9619 -947.3679 -9128.4043]","1606":"[-13159.2793 -1465.3563 -9192.0117]","1607":"[-13158.835 -1977.521 -9254.3232]","1608":"[-13158.5615 -2501.4053 -9317.1885]","1609":"[-13158.8379 -3015.5178 -9376.6523]","1610":"[-13158.6875 -3526.4924 -9431.3018]","1611":"[-13158.3438 -4051.4058 -9475.0234]","1612":"[-13158.9336 -4571.8198 -9494.9639]","1613":"[-13158.501 -5097.8984 -9497.3242]","1614":"[-13156.2441 -5622.1787 -9497.3682]","1615":"[-13140.8809 -6145.0698 -9497.4736]","1616":"[-13105.418 -6665.6885 -9497.1074]","1617":"[-13050.8574 -7183.2656 -9497.5078]","1618":"[-12972.7451 -7696.603 -9497.459]","1619":"[-12869.4775 -8204.2285 -9497.4307]","1620":"[-12739.874 -8704.4609 -9497.3145]","1621":"[-12578.2217 -9200.0527 -9497.4053]","1622":"[-12383.6357 -9687.6172 -9497.3018]","1623":"[-12153.708 -10157.8975 -9497.418]","1624":"[-11888.3223 -10607.292 -9497.3174]","1625":"[-11587.541 -11031.8535 -9497.3086]","1626":"[-11251.6436 -11427.1143 -9497.4375]","1627":"[-10883.2363 -11790.0576 -9497.4795]","1628":"[-10485.4678 -12118.1592 -9497.3789]","1629":"[-10061.9756 -12409.9092 -9497.3984]","1630":"[-9617.2598 -12665.5469 -9497.4307]","1631":"[-9139.6689 -12892.5156 -9497.4707]","1632":"[-8648.2031 -13084.0566 -9497.3232]","1633":"[-8146.0845 -13241.8174 -9497.2725]","1634":"[-7636.6099 -13369.1963 -9497.4053]","1635":"[-7122.082 -13468.5352 -9497.5146]","1636":"[-6604.3994 -13542.7607 -9497.2822]","1637":"[-6084.9927 -13593.9902 -9497.3164]","1638":"[-5564.9927 -13624.7217 -9497.293]","1639":"[-5045.2593 -13637.5957 -9497.2373]","1640":"[-4526.2612 -13639.2607 -9497.3984]","1641":"[-4008.2109 -13638.3506 -9497.4238]","1642":"[-3491.1841 -13638.9443 -9497.3105]","1643":"[-2975.4006 -13637.9424 -9497.3486]","1644":"[-2460.6658 -13629.9492 -9497.3018]","1645":"[-1947.4445 -13604.7295 -9497.5293]","1646":"[-1421.4928 -13558.5469 -9497.4453]","1647":"[-899.1301 -13490.1924 -9497.6514]","1648":"[-381.9022 -13397.2676 -9497.4219]","1649":"[128.5427 -13277.7549 -9497.3906]","1650":"[629.7839 -13128.7744 -9497.3262]","1651":"[1119.1528 -12948.4248 -9497.4775]","1652":"[1593.568 -12735.2334 -9497.416]","1653":"[2048.9656 -12487.1699 -9497.4385]","1654":"[2481.335 -12203.6396 -9497.543]","1655":"[2887.2422 -11885.8584 -9497.3584]","1656":"[3261.8635 -11534.0176 -9497.543]","1657":"[3603.8584 -11152.3398 -9497.5166]","1658":"[3919.5095 -10729.7227 -9497.3652]","1659":"[4197.1348 -10282.8906 -9497.4297]","1660":"[4437.1396 -9816.2979 -9497.2158]","1661":"[4641.1763 -9334.1592 -9497.2656]","1662":"[4811.3501 -8840.2871 -9497.4033]","1663":"[4950.4448 -8337.9629 -9497.3418]","1664":"[5060.6631 -7829.6206 -9497.3047]","1665":"[5144.7798 -7317.3818 -9497.3965]","1666":"[5206.1221 -6802.5034 -9497.4697]","1667":"[5245.7261 -6291.3037 -9497.3223]","1668":"[5266.7183 -5763.4653 -9497.2939]","1669":"[5272.3008 -5236.1938 -9497.3838]","1670":"[5271.3423 -4710.2358 -9497.5029]","1671":"[5271.4512 -4185.2974 -9497.3701]","1672":"[5272.0884 -3661.3369 -9497.4033]","1673":"[5267.103 -3132.5642 -9497.3916]","1674":"[5248.6675 -2611.4963 -9497.3496]","1675":"[5210.3872 -2098.2683 -9497.415]","1676":"[5152.1011 -1587.9375 -9497.4199]","1677":"[5071.2324 -1081.8347 -9497.3975]","1678":"[4961.9604 -564.8321 -9497.3291]","1679":"[4823.9399 -56.1703 -9497.0596]","1680":"[4655.1797 441.0954 -9497.2402]","1681":"[4453.8149 924.5034 -9497.3096]","1682":"[4217.5542 1390.1957 -9497.3799]","1683":"[3945.8225 1834.2573 -9497.4326]","1684":"[3638.4272 2252.4846 -9497.4307]","1685":"[3297.0767 2641.395 -9497.5518]","1686":"[2923.1338 2996.9868 -9497.3291]","1687":"[2521.1501 3318.1191 -9497.4912]","1688":"[2094.1143 3602.6362 -9497.416]","1689":"[1632.045 3858.7427 -9497.4639]","1690":"[1152.6051 4077.4978 -9497.4453]","1691":"[660.0092 4261.4204 -9497.3984]","1692":"[157.5105 4412.3433 -9497.3662]","1693":"[-351.7766 4533.7539 -9497.3057]","1694":"[-865.8264 4627.5576 -9497.3301]","1695":"[-1382.7129 4696.8823 -9497.3428]","1696":"[-1901.0392 4744.4429 -9497.3086]","1697":"[-2419.8667 4771.4214 -9497.1309]","1698":"[-2938.3452 4781.3984 -9497.4053]","1699":"[-3455.7842 4781.8745 -9497.4658]","1700":"[-3972.9932 4781.4443 -9504.6934]","1701":"[-4493.6992 4782.5747 -9531.25]","1702":"[-5004.6641 4781.978 -9578.9893]","1703":"[-5526.7144 4781.9517 -9636.7715]","1704":"[-6044.4019 4782.3398 -9697.5244]","1705":"[-6557.207 4781.4946 -9759.0313]","1706":"[-7082.1221 4781.6328 -9821.8633]","1707":"[-7600.4448 4781.5078 -9882.2998]","1708":"[-8110.6782 4781.791 -9937.5352]","1709":"[-8636.083 4781.603 -9983.5811]","1710":"[-9149.0947 4782.0176 -10005.0703]","1711":"[-9672.9033 4781.9941 -10009.4336]","1712":"[-10196.3887 4777.3325 -10009.5771]","1713":"[-10716.8799 4747.7959 -10009.1904]","1714":"[-11230.3994 4678.0015 -10009.0957]","1715":"[-11732.4561 4557.6001 -10009.2324]","1716":"[-12213.5527 4378.4917 -10009.584]","1717":"[-12673.1406 4126.9312 -10009.3447]","1718":"[-13081.6221 3803.825 -10009.4961]","1719":"[-13425.8447 3416.7039 -10009.1992]","1720":"[-13698.3857 2978.5476 -10009.4072]","1721":"[-13901.0537 2505.2896 -10009.3389]","1722":"[-14040.6133 2010.8799 -10009.3174]","1723":"[-14127.4434 1505.4259 -10009.3418]","1724":"[-14170.4609 982.0922 -10009.2959]","1725":"[-14182.1494 455.6594 -10009.3115]","1726":"[-14182.6094 -71.8238 -10009.1943]","1727":"[-14180.9072 -602.3636 -10009.6162]","1728":"[-14181.5244 -1114.3761 -10009.6465]","1729":"[-14182.6914 -1644.9452 -10009.5098]","1730":"[-14181.873 -2174.3916 -10009.4717]","1731":"[-14181.2744 -2702.7388 -10009.4131]","1732":"[-14181.2344 -3227.9109 -10009.4697]","1733":"[-14181.959 -3752.9897 -10009.4316]","1734":"[-14181.3945 -4271.856 -10009.3887]","1735":"[-14177.9785 -4789.5664 -10008.8311]","1736":"[-14129.2334 -5300.3423 -10008.5977]","1737":"[-14001.8398 -5801.6489 -10009.2588]","1738":"[-13802.6914 -6285.0508 -10009.3115]","1739":"[-13542.3359 -6736.9243 -10009.3936]","1740":"[-13239.1729 -7159.8838 -10009.1113]","1741":"[-12899.5908 -7556.1558 -10009.1201]","1742":"[-12542.3799 -7928.6494 -10008.7676]","1743":"[-12176.1211 -8294.7646 -10009.0771]","1744":"[-11803.5342 -8667.3496 -10009.2227]","1745":"[-11434.0059 -9036.6133 -10009.3486]","1746":"[-11071.2412 -9400.0283 -10009.5137]","1747":"[-10708.708 -9762.0859 -10009.4785]","1748":"[-10332.0947 -10138.5879 -10009.4453]","1749":"[-9956.6953 -10514.5439 -10009.4209]","1750":"[-9581.7588 -10889.3145 -10009.4219]","1751":"[-9207.4434 -11263.0225 -10009.374]","1752":"[-8835.9756 -11635.2158 -10009.4189]","1753":"[-8469.3887 -12001.4512 -10009.4072]","1754":"[-8096.5332 -12374.2549 -10009.3223]","1755":"[-7728.2056 -12742.7021 -10009.3613]","1756":"[-7361.9258 -13108.5674 -10009.4697]","1757":"[-6994.6294 -13476.4453 -10009.5693]","1758":"[-6625.7036 -13845.1191 -10009.0859]","1759":"[-6247.5732 -14202.5986 -10009.3301]","1760":"[-5836.3984 -14512.6016 -10009.165]","1761":"[-5375.1133 -14757.4023 -10009.4902]","1762":"[-4886.0767 -14936.1855 -10009.4658]","1763":"[-4380.2285 -15053.0732 -10009.4473]","1764":"[-3867.2646 -15122.6836 -10009.3105]","1765":"[-3346.0247 -15151.4658 -10009.4512]","1766":"[-2833.0898 -15157.2188 -10009.4424]","1767":"[-2311.6973 -15156.5029 -10009.4971]","1768":"[-1795.4424 -15156.4199 -10009.4795]","1769":"[-1279.4337 -15156.4922 -10009.4697]","1770":"[-764.9032 -15156.8213 -10009.5039]","1771":"[-250.6963 -15156.5049 -10009.5371]","1772":"[274.0852 -15156.2441 -10009.4941]","1773":"[800.9784 -15157.167 -10009.3252]","1774":"[1329.6171 -15156.7188 -10008.9189]","1775":"[1856.5983 -15157.0234 -10009.25]","1776":"[2382.0527 -15156.7686 -10009.6631]","1777":"[2906.5186 -15156.4092 -10009.4629]","1778":"[3421.019 -15156.2832 -10009.46]","1779":"[3941.9067 -15156.7461 -10009.46]","1780":"[4461.8325 -15156.8076 -10009.4541]","1781":"[4980.8032 -15156.0742 -10009.4033]","1782":"[5498.8276 -15156.626 -10009.4492]","1783":"[6015.9009 -15157.2734 -10009.5098]","1784":"[6532.0474 -15156.0273 -10009.5205]","1785":"[7047.2412 -15156.8008 -10009.501]","1786":"[7563.5229 -15154.3662 -10009.4629]","1787":"[8079.4224 -15138.5664 -10009.4824]","1788":"[8598.3193 -15105.2783 -10009.4258]","1789":"[9117.4844 -15050.5195 -10009.3447]","1790":"[9627.5762 -14973.3594 -10009.3047]","1791":"[10142.5156 -14870.0625 -10009.249]","1792":"[10649.4766 -14738.2354 -10009.4326]","1793":"[11146.3057 -14576.8682 -10009.291]","1794":"[11629.8965 -14383.4453 -10009.2402]","1795":"[12096.5283 -14155.5469 -10009.4287]","1796":"[12543.0254 -13893.4053 -10009.4424]","1797":"[12964.6924 -13595.7686 -10009.4258]","1798":"[13357.7441 -13263.7607 -10009.2773]","1799":"[13718.9014 -12899.4824 -10009.4775]","1800":"[14057.4766 -12491.292 -10009.2744]","1801":"[14357.7578 -12056.0771 -10009.3145]","1802":"[14614.0176 -11609.0137 -10009.3809]","1803":"[14837.9277 -11138.8486 -10009.2344]","1804":"[15026.0186 -10654.6152 -10009.2021]","1805":"[15182.2324 -10160.4688 -10009.2764]","1806":"[15308.6094 -9659.084 -10009.4404]","1807":"[15407.6436 -9152.7656 -10009.3701]","1808":"[15482.3379 -8643.4287 -10009.2813]","1809":"[15534.7988 -8132.4575 -10009.3125]","1810":"[15566.8691 -7620.876 -10009.3604]","1811":"[15581.3027 -7090.7866 -10009.3174]","1812":"[15583.208 -6565.2236 -10009.2617]","1813":"[15582.5938 -6044.9917 -10009.1533]","1814":"[15583.1826 -5524.7539 -10008.999]","1815":"[15583.5225 -5007.7827 -10009.501]","1816":"[15582.9141 -4489.334 -10009.543]","1817":"[15582.1592 -3954.5566 -10009.4395]","1818":"[15582.8154 -3428.408 -10009.4648]","1819":"[15583.7695 -2912.0769 -10009.4482]","1820":"[15583.8496 -2379.5232 -10009.4453]","1821":"[15582.915 -1859.1539 -10009.377]","1822":"[15582.4375 -1346.2402 -10009.3711]","1823":"[15582.6943 -813.3914 -10009.5039]","1824":"[15583.4707 -300.7653 -10009.498]","1825":"[15583.5449 212.3167 -10009.4658]","1826":"[15582.793 753.9894 -10009.4854]","1827":"[15582.5547 1294.0641 -10009.46]","1828":"[15582.8711 1832.564 -10009.4609]","1829":"[15583.3857 2369.4944 -10009.4824]","1830":"[15583.4629 2899.426 -10009.4424]","1831":"[15582.8779 3435.4851 -10009.3535]","1832":"[15582.2324 3964.4832 -10009.5684]","1833":"[15582.5654 4477.9434 -10009.54]","1834":"[15583.2549 4992.6001 -10009.4775]","1835":"[15583.6523 5510.5806 -10009.4668]","1836":"[15583.3418 6023.7637 -10009.4561]","1837":"[15582.3457 6543.9629 -10009.4678]","1838":"[15582.7012 7066.0479 -10009.5303]","1839":"[15580.0146 7587.0767 -10009.3496]","1840":"[15562.9463 8106.6523 -10009.3213]","1841":"[15527.0947 8624.0254 -10008.9482]","1842":"[15470.6436 9137.6855 -10009.6094]","1843":"[15392.3115 9647.0869 -10009.3682]","1844":"[15288.543 10150.6113 -10009.2676]","1845":"[15158.5938 10646.7471 -10009.3896]","1846":"[14993.4502 11150.0967 -10009.2393]","1847":"[14794.6943 11639.543 -10009.0811]","1848":"[14561.5283 12111.7773 -10009.0693]","1849":"[14292.1953 12562.4756 -10009.3779]","1850":"[13986.5029 12987.2871 -10009.4824]","1851":"[13645.877 13382.5254 -10009.4668]","1852":"[13272.5557 13744.7705 -10009.3418]","1853":"[12869.6592 14071.3682 -10009.4033]","1854":"[12441.2363 14361.0273 -10009.4033]","1855":"[11992.0322 14614.499 -10009.4297]","1856":"[11525.9365 14832.332 -10009.3936]","1857":"[11046.665 15016.082 -10009.2344]","1858":"[10557.7637 15168.6787 -10009.3418]","1859":"[10044.6816 15296.0752 -10009.2793]","1860":"[9526.5254 15395.0781 -10009.252]","1861":"[9005.2559 15468.5791 -10009.3418]","1862":"[8482.3535 15519.3135 -10009.3408]","1863":"[7965.0166 15549.3564 -10009.2393]","1864":"[7442.1191 15561.3125 -10009.1973]","1865":"[6916.1587 15562.1953 -10009.0039]","1866":"[6401.2749 15561.4043 -10009.2715]","1867":"[5877.5825 15562.1416 -10009.335]","1868":"[5353.8188 15562.4189 -10009.4619]","1869":"[4832.8013 15561.9473 -10009.4541]","1870":"[4318.8101 15561.6748 -10009.4287]","1871":"[3787.7891 15561.9609 -10009.4688]","1872":"[3258.176 15562.3232 -10009.4492]","1873":"[2742.6741 15562.3604 -10009.4453]","1874":"[2211.3362 15562.3506 -10009.3809]","1875":"[1697.5751 15562.1387 -10009.377]","1876":"[1171.5321 15561.7148 -10009.4902]","1877":"[646.9715 15561.8896 -10009.4932]","1878":"[123.8849 15562.4668 -10009.5127]","1879":"[-397.7498 15562.1992 -10009.5059]","1880":"[-917.9423 15561.6553 -10009.4863]","1881":"[-1436.7009 15561.5498 -10009.4746]","1882":"[-1954.0376 15562.2002 -10009.4912]","1883":"[-2469.9646 15562.6611 -10009.3564]","1884":"[-2984.4661 15562.4629 -10009.2598]","1885":"[-3497.6226 15561.6055 -10009.6367]","1886":"[-4037.7825 15561.4414 -10009.4746]","1887":"[-4576.4116 15562.0205 -10009.458]","1888":"[-5113.3984 15562.4404 -10009.4873]","1889":"[-5648.1089 15562.4893 -10009.4697]","1890":"[-6176.2451 15562.1064 -10009.4492]","1891":"[-6689.3315 15561.7637 -10009.1777]","1892":"[-7206.4048 15561.791 -10009.3936]","1893":"[-7719.2305 15561.6416 -10009.4727]","1894":"[-8239.1064 15557.5322 -10009.377]","1895":"[-8757.583 15538.8477 -10009.2598]","1896":"[-9276.5771 15500.4629 -10009.5059]","1897":"[-9799.5156 15441.0811 -10009.6816]","1898":"[-10317.7939 15357.4229 -10009.4004]","1899":"[-10829.8594 15247.5488 -10009.4561]","1900":"[-11334.0059 15110.6191 -10009.0391]","1901":"[-11826.6592 14942.6338 -10009.2266]","1902":"[-12305.3467 14742.6553 -10009.5449]","1903":"[-12766.4033 14508.5938 -10009.3076]","1904":"[-13206.4307 14239.9619 -10009.4775]","1905":"[-13621.0664 13936.3193 -10009.4688]","1906":"[-14006.7617 13599.0342 -10009.459]","1907":"[-14371.8477 13217.7236 -10009.3848]","1908":"[-14699.8301 12805.9766 -10009.4229]","1909":"[-14990.3965 12368.8232 -10009.3936]","1910":"[-15242.8838 11910.167 -10009.4834]","1911":"[-15458.9541 11434.6387 -10009.4775]","1912":"[-15640.7139 10946.2354 -10009.4102]","1913":"[-15790.5664 10448.3213 -10009.373]","1914":"[-15910.6201 9943.5088 -10009.4385]","1915":"[-16003.959 9434.0938 -10009.4775]","1916":"[-16073.7773 8921.9775 -10009.3623]","1917":"[-16120.9355 8408.2637 -10009.2363]","1918":"[-16148.5244 7894.1304 -10009.4814]","1919":"[-16158.9414 7380.5542 -10009.5488]","1920":"[-16159.8848 6868.0635 -10009.3906]","1921":"[-16159.5898 6355.9614 -10015.5381]","1922":"[-16160.3799 5840.8901 -10039.9854]","1923":"[-16160.1104 5319.9468 -10087.293]","1924":"[-16159.6709 4805.6016 -10143.8594]","1925":"[-16160.3242 4296.8721 -10203.3564]","1926":"[-16159.584 3787.47 -10264.502]","1927":"[-16159.5986 3272.8352 -10326.1963]","1928":"[-16159.9004 2751.906 -10387.1025]","1929":"[-16159.3877 2237.4314 -10443.4824]","1930":"[-16159.9082 1711.3013 -10491.625]","1931":"[-16159.9473 1195.7529 -10515.5645]","1932":"[-16159.9961 676.2723 -10521.71]","1933":"[-16160.1016 156.9258 -10521.4707]","1934":"[-16160.5645 -361.4345 -10521.416]","1935":"[-16160.1914 -878.8145 -10521.502]","1936":"[-16159.668 -1395.2433 -10521.4805]","1937":"[-16159.6963 -1910.7208 -10521.4678]","1938":"[-16159.9434 -2425.2363 -10521.4629]","1939":"[-16160.4873 -2938.7959 -10521.54]","1940":"[-16160.3545 -3458.2219 -10521.4355]","1941":"[-16159.2324 -3984.4888 -10521.4102]","1942":"[-16160.2861 -4509.7354 -10521.3848]","1943":"[-16161.041 -5033.9229 -10521.4414]","1944":"[-16159.1846 -5557.0781 -10521.4609]","1945":"[-16159.7061 -6079.2056 -10521.4648]","1946":"[-16160.6797 -6602.8042 -10521.4482]","1947":"[-16159.4746 -7114.9478 -10521.3857]","1948":"[-16159.6465 -7642.6821 -10521.5156]","1949":"[-16157.2793 -8168.7886 -10521.2432]","1950":"[-16140.7998 -8693.5518 -10521.2783]","1951":"[-16105.9785 -9216.3428 -10521.4277]","1952":"[-16049.4678 -9736.1475 -10521.3457]","1953":"[-15970.9775 -10251.9189 -10521.3906]","1954":"[-15866.4258 -10761.832 -10521.4531]","1955":"[-15734.8809 -11263.6729 -10521.3486]","1956":"[-15574.0068 -11755.5645 -10521.5029]","1957":"[-15380.7168 -12234.1533 -10521.4268]","1958":"[-15155.0703 -12696.9014 -10521.3877]","1959":"[-14894.2881 -13139.0879 -10521.499]","1960":"[-14589.7363 -13570.2275 -10521.4707]","1961":"[-14248.7656 -13971.0811 -10521.4102]","1962":"[-13874.5205 -14338.8066 -10521.4639]","1963":"[-13469.9502 -14670.459 -10521.4746]","1964":"[-13039.3379 -14965.0684 -10521.3311]","1965":"[-12586.8428 -15222.0342 -10521.4824]","1966":"[-12117.1396 -15443.1299 -10521.4043]","1967":"[-11633.9834 -15629.7881 -10521.4639]","1968":"[-11140.5527 -15783.8389 -10521.5654]","1969":"[-10640.2334 -15909.4639 -10521.3594]","1970":"[-10134.7139 -16006.9365 -10521.4971]","1971":"[-9626.1963 -16080.7285 -10521.374]","1972":"[-9115.9385 -16132.3799 -10521.458]","1973":"[-8595.3584 -16164.2393 -10521.2949]","1974":"[-8076.5459 -16178.3701 -10521.3291]","1975":"[-7560.5049 -16180.1221 -10521.4668]","1976":"[-7043.083 -16179.6533 -10521.3408]","1977":"[-6505.8057 -16179.9873 -10521.4063]","1978":"[-5993.6963 -16179.9902 -10521.5371]","1979":"[-5467.6558 -16180.0508 -10521.4912]","1980":"[-4934.6045 -16180.1465 -10521.3398]","1981":"[-4401.0112 -16180.1729 -10521.5439]","1982":"[-3874.158 -16179.9512 -10521.4482]","1983":"[-3342.0144 -16179.8154 -10521.4902]","1984":"[-2811.5989 -16179.8457 -10521.333]","1985":"[-2282.821 -16180.1045 -10521.4023]","1986":"[-1755.7665 -16180.3506 -10521.4102]","1987":"[-1230.2859 -16180.3506 -10521.5]","1988":"[-706.4827 -16180.1982 -10521.4814]","1989":"[-185.508 -16180.1631 -10521.5137]","1990":"[344.4918 -16180.1904 -10521.4971]","1991":"[870.4059 -16180.0967 -10521.4756]","1992":"[1385.7727 -16180.2803 -10521.4531]","1993":"[1908.7559 -16180.4072 -10521.3809]","1994":"[2424.0798 -16179.5098 -10521.377]","1995":"[2952.6609 -16179.6602 -10521.3711]","1996":"[3470.0044 -16180.749 -10521.4561]","1997":"[3994.998 -16180.0596 -10521.4717]","1998":"[4519.1528 -16179.7852 -10521.4609]","1999":"[5042.4531 -16179.7598 -10521.4121]","2000":"[5564.9077 -16180.2734 -10521.3994]","2001":"[6086.5024 -16180.2568 -10521.5742]","2002":"[6606.6392 -16171.4902 -10521.5967]","2003":"[7122.8647 -16133.6738 -10521.6084]","2004":"[7630.498 -16052.2559 -10521.5361]","2005":"[8132.1631 -15917.9814 -10521.1973]","2006":"[8606.1533 -15724.2529 -10521.2354]","2007":"[9054.0068 -15456.5625 -10521.3086]","2008":"[9447.6572 -15119.0547 -10521.4307]","2009":"[9774.9482 -14720.2129 -10521.208]","2010":"[10030.7148 -14274.2305 -10521.4229]","2011":"[10218.4619 -13796.9443 -10521.4248]","2012":"[10347.5898 -13288.4717 -10521.4131]","2013":"[10424.4102 -12770.5566 -10521.1416]","2014":"[10457.292 -12248.9043 -10521.291]","2015":"[10464.4424 -11726.8789 -10521.4551]","2016":"[10463.1641 -11205.623 -10521.3584]","2017":"[10446.8623 -10686.0293 -10521.2695]","2018":"[10397.6025 -10170.9111 -10521.1738]","2019":"[10303.1367 -9664.873 -10521.5703]","2020":"[10155.834 -9174.0537 -10521.2598]","2021":"[9942.1787 -8697.4746 -10521.4316]","2022":"[9659.5449 -8261.9658 -10521.376]","2023":"[9318.959 -7871.1113 -10521.2764]","2024":"[8954.7402 -7502.4028 -10521.5049]","2025":"[8587.5098 -7137.8462 -10521.4551]","2026":"[8223.7725 -6770.9688 -10521.5234]","2027":"[7857.4243 -6407.8359 -10521.4766]","2028":"[7494.3608 -6042.5562 -10521.4521]","2029":"[7130.5396 -5679.1631 -10521.4512]","2030":"[6767.0181 -5316.5415 -10521.4336]","2031":"[6404.9219 -4953.5684 -10521.4434]","2032":"[6032.0078 -4585.4248 -10521.4961]","2033":"[5644.583 -4235.29 -10521.3818]","2034":"[5234.6807 -3916.22 -10521.4971]","2035":"[4798.4033 -3638.9797 -10521.2813]","2036":"[4335.5391 -3414.7896 -10521.5684]","2037":"[3837.5068 -3253.7671 -10521.1768]","2038":"[3323.1592 -3174.6953 -10521.3955]","2039":"[2802.8616 -3153.3816 -10521.3516]","2040":"[2282.9741 -3156.2197 -10521.4316]","2041":"[1763.9423 -3153.8374 -10521.4414]","2042":"[1245.7291 -3155.3171 -10521.5059]","2043":"[728.3021 -3155.1724 -10521.4727]","2044":"[211.6475 -3154.6909 -10521.4629]","2045":"[-304.2541 -3154.9851 -10521.457]","2046":"[-819.3886 -3154.8445 -10521.3525]","2047":"[-1332.8981 -3137.3931 -10521.2764]","2048":"[-1853.688 -3088.9565 -10521.0898]","2049":"[-2364.6958 -2992.3169 -10521.4111]","2050":"[-2860.4385 -2843.5486 -10521.3838]","2051":"[-3329.8701 -2632.0327 -10521.4043]","2052":"[-3768.2405 -2346.835 -10521.1807]","2053":"[-4160.8633 -2004.2307 -10520.877]","2054":"[-4530.1436 -1639.6887 -10520.6641]","2055":"[-4895.1768 -1274.0845 -10520.4131]","2056":"[-5259.3726 -909.4534 -10520.4238]","2057":"[-5623.6611 -546.0554 -10520.4492]","2058":"[-5986.4302 -182.2427 -10520.3115]","2059":"[-6356.2314 186.2866 -10520.4287]","2060":"[-6721.5752 553.153 -10520.3506]","2061":"[-7087.8052 917.9826 -10520.3652]","2062":"[-7452.2407 1283.5192 -10520.3105]","2063":"[-7817.0747 1647.5535 -10520.4688]","2064":"[-8180.3608 2012.0377 -10520.5449]","2065":"[-8544.3369 2374.7048 -10520.502]","2066":"[-8908.668 2739.8218 -10520.3818]","2067":"[-9278.3213 3108.9607 -10520.5859]","2068":"[-9646.8584 3478.0645 -10520.8936]","2069":"[-10006.2061 3854.229 -10520.7949]","2070":"[-10342.7764 4247.4556 -10521.1084]","2071":"[-10641.5146 4666.2773 -10521.4658]","2072":"[-10900.8672 5121.1504 -10520.998]","2073":"[-11098.957 5602.3057 -10521.4541]","2074":"[-11223.1006 6104.4185 -10521.1064]","2075":"[-11265.334 6617.2637 -10521.1504]","2076":"[-11248.2529 7130.54 -10521.2031]","2077":"[-11179.4561 7647.4082 -10521.4121]","2078":"[-11065.0186 8152.4917 -10521.1367]","2079":"[-10891.9746 8636.7539 -10521.4463]","2080":"[-10646.8545 9098.1563 -10521.1855]","2081":"[-10332.8008 9511.5586 -10521.4395]","2082":"[-9961.6592 9854.0986 -10521.373]","2083":"[-9531.2861 10134.877 -10521.4658]","2084":"[-9064.5762 10345.502 -10521.251]","2085":"[-8564.8398 10494.7822 -10521.5605]","2086":"[-8053.0757 10588.8672 -10521.375]","2087":"[-7536.4131 10636.2666 -10521.2354]","2088":"[-7018.853 10649.7881 -10521.3398]","2089":"[-6502.5913 10652.0947 -10521.3662]","2090":"[-5987.6816 10651.7422 -10521.1787]","2091":"[-5473.7891 10651.501 -10521.4717]","2092":"[-4960.7256 10651.8574 -10521.4355]","2093":"[-4438.0771 10651.0137 -10521.5537]","2094":"[-3916.4709 10651.3691 -10521.4404]","2095":"[-3400.8247 10650.9053 -10521.374]","2096":"[-2887.2959 10651.1152 -10521.5]","2097":"[-2360.7095 10650.7129 -10521.3623]","2098":"[-1841.7316 10651.4082 -10521.4619]","2099":"[-1315.1559 10651.2988 -10521.4658]","2100":"[-791.4565 10651.1035 -10521.4717]","2101":"[-268.3696 10650.6758 -10521.4609]","2102":"[253.7243 10650.9912 -10521.4297]","2103":"[774.8307 10651.5117 -10521.46]","2104":"[1294.942 10651 -10521.5088]","2105":"[1814.0677 10650.3203 -10521.5029]","2106":"[2332.2163 10651.2109 -10521.501]","2107":"[2849.3896 10651.4082 -10521.4951]","2108":"[3365.595 10650.5898 -10521.4648]","2109":"[3880.8372 10650.293 -10521.457]","2110":"[4395.1206 10650.7529 -10521.3457]","2111":"[4908.4834 10651.1299 -10521.4541]","2112":"[5420.8301 10650.6445 -10521.4102]","2113":"[5949.3892 10650.8379 -10521.124]","2114":"[6476.5117 10645.4082 -10521.1094]","2115":"[7001.9604 10623.6973 -10521.416]","2116":"[7524.0464 10582.0469 -10521.5176]","2117":"[8049.1523 10518.6494 -10521.1572]","2118":"[8568.1221 10430.583 -10521.1982]","2119":"[9080.1045 10316.2314 -10521.6641]","2120":"[9583.3301 10173.3525 -10521.5322]","2121":"[10075.1689 9999.6455 -10521.5293]","2122":"[10552.5732 9793.3105 -10521.3936]","2123":"[11011.6602 9552.3604 -10521.3955]","2124":"[11448.4971 9276.1563 -10521.2363]","2125":"[11859.5381 8965.5703 -10521.376]","2126":"[12240.2002 8620.8271 -10521.3291]","2127":"[12600.5508 8230.9541 -10521.2305]","2128":"[12923.5371 7811.6641 -10521.3408]","2129":"[13207.8066 7367.1655 -10521.4395]","2130":"[13453.7568 6901.9961 -10521.3418]","2131":"[13663.7217 6420.9722 -10521.3701]","2132":"[13839.2002 5927.7427 -10521.2314]","2133":"[13982.5215 5425.499 -10521.3477]","2134":"[14097.3496 4917.1958 -10521.1992]","2135":"[14185.2744 4404.7256 -10521.3945]","2136":"[14249.4424 3889.8479 -10521.3887]","2137":"[14292.1064 3373.7966 -10521.3926]","2138":"[14315.5225 2857.6738 -10521.4609]","2139":"[14321.9336 2341.45 -10531.8525]","2140":"[14321.9834 1822.7731 -10561.458]","2141":"[14321.6289 1299.2402 -10613.041]","2142":"[14321.9795 785.9275 -10670.8975]","2143":"[14322.2227 266.6541 -10732.2822]","2144":"[14321.6553 -253.1082 -10795.5195]","2145":"[14322.0283 -763.666 -10857.9785]","2146":"[14321.7227 -1290.3038 -10922.6045]","2147":"[14321.6475 -1818.0719 -10987.3721]","2148":"[14322.4043 -2336.4443 -11051.041]","2149":"[14322.0342 -2862.6631 -11115.6455]","2150":"[14321.6992 -3375.238 -11178.582]","2151":"[14321.7637 -3897.0229 -11242.6152]","2152":"[14322.002 -4416.3584 -11305.6855]","2153":"[14322.6523 -4945.2427 -11368.5098]","2154":"[14322.123 -5462.7432 -11427.583]","2155":"[14321.9443 -5990.3726 -11481.5957]","2156":"[14322.6553 -6521.4736 -11518.207]","2157":"[14317.8799 -7034.2881 -11532.2148]","2158":"[14297.3223 -7558.1274 -11532.0088]","2159":"[14257.2988 -8077.2422 -11532.3857]","2160":"[14196.6738 -8592.9346 -11532.4863]","2161":"[14112.7178 -9104.0508 -11532.3867]","2162":"[14003.1074 -9608.959 -11532.376]","2163":"[13866.9365 -10105.9102 -11532.2451]","2164":"[13700.2246 -10591.9082 -11532.334]","2165":"[13502.3467 -11064.5176 -11532.2969]","2166":"[13262.3096 -11536.7305 -11532.3506]","2167":"[12985.4131 -11986.374 -11532.3535]","2168":"[12672.1738 -12409.3604 -11532.2383]","2169":"[12323.7793 -12801.6084 -11532.21]","2170":"[11942.626 -13159.6924 -11532.3418]","2171":"[11532.501 -13481.7637 -11532.4834]","2172":"[11097.4971 -13766.6367 -11532.3076]","2173":"[10641.8252 -14014.1768 -11532.4258]","2174":"[10170.1035 -14226.3936 -11532.2988]","2175":"[9685.8662 -14404.6729 -11532.4336]","2176":"[9192.4033 -14551.5078 -11532.3408]","2177":"[8692.5732 -14670.0615 -11532.3154]","2178":"[8188.2866 -14762.0586 -11532.4463]","2179":"[7663.1699 -14832.2969 -11532.3662]","2180":"[7136.6323 -14880.0703 -11532.2324]","2181":"[6609.6987 -14906.8711 -11532.2988]","2182":"[6083.1851 -14915.6729 -11532.4395]","2183":"[5557.8545 -14915.8311 -11533.1279]","2184":"[5031.2251 -14914.9756 -11552.1826]","2185":"[4519.6855 -14916.3418 -11592.4453]","2186":"[4000.9604 -14916.0225 -11646.6875]","2187":"[3491.5452 -14915.6318 -11705.1211]","2188":"[2977.8972 -14915.9834 -11766.4072]","2189":"[2461.5313 -14915.7949 -11829.3027]","2190":"[1934.5029 -14915.667 -11894.1514]","2191":"[1416.7836 -14916.249 -11957.6309]","2192":"[898.1903 -14916.2383 -12021.3809]","2193":"[370.417 -14915.5137 -12086.1416]","2194":"[-141.4404 -14915.6455 -12148.9707]","2195":"[-657.8857 -14916.0088 -12212.374]","2196":"[-1176.6321 -14916.0752 -12275.9756]","2197":"[-1701.4332 -14915.6963 -12340.5098]","2198":"[-2214.9006 -14915.834 -12403.543]","2199":"[-2732.7378 -14916.123 -12467.0254]","2200":"[-3241.1042 -14916.0146 -12529.4277]","2201":"[-3764.5461 -14915.623 -12593.8789]","2202":"[-4289.5869 -14916.4443 -12657.9648]","2203":"[-4814.5791 -14916.4453 -12721.2041]","2204":"[-5336.9883 -14916.209 -12782.3818]","2205":"[-5862.5308 -14916.6279 -12839.873]","2206":"[-6384.9717 -14916.4854 -12887.2197]","2207":"[-6909.3657 -14914.9111 -12910.8477]","2208":"[-7436.7808 -14904.0605 -12916.209]","2209":"[-7962.7227 -14873.5381 -12916.2451]","2210":"[-8485.0264 -14821.459 -12916.1016]","2211":"[-9003.2275 -14748.8818 -12916.2773]","2212":"[-9514.7363 -14650.0068 -12916.1006]","2213":"[-10018.8262 -14525.6104 -12916.3359]","2214":"[-10513.3086 -14372.0244 -12916.4102]","2215":"[-10995.168 -14186.5586 -12916.4473]","2216":"[-11461.5088 -13969.1436 -12916.4404]","2217":"[-11908.1221 -13717.2031 -12916.3652]","2218":"[-12346.7637 -13419.7256 -12916.2803]","2219":"[-12756.207 -13086.2568 -12916.6045]","2220":"[-13131.8027 -12718.0801 -12916.6338]","2221":"[-13472.5654 -12319.6357 -12916.4141]","2222":"[-13775.7129 -11893.7676 -12916.3408]","2223":"[-14041.0195 -11444.9648 -12916.4287]","2224":"[-14270.5654 -10978.4209 -12916.373]","2225":"[-14464.249 -10497.3174 -12916.3857]","2226":"[-14625.4385 -10005.6797 -12916.2578]","2227":"[-14756.7314 -9506.4434 -12916.2422]","2228":"[-14860.0137 -9001.7842 -12916.4717]","2229":"[-14938.7227 -8493.8418 -12916.4717]","2230":"[-14994.9697 -7983.9644 -12916.3154]","2231":"[-15031.0908 -7454.9712 -12916.1719]","2232":"[-15048.8223 -6926.082 -12917.1309]","2233":"[-15051.7002 -6413.9302 -12935.3848]","2234":"[-15050.4072 -5899.2222 -12974.7344]","2235":"[-15051.2568 -5377.4956 -13028.9688]","2236":"[-15051.166 -4865.2852 -13087.6895]","2237":"[-15050.793 -4343.127 -13150.0801]","2238":"[-15051.1963 -3831.1885 -13212.4463]","2239":"[-15050.9424 -3312.8728 -13276.1328]","2240":"[-15050.958 -2796.4082 -13339.6172]","2241":"[-15050.9229 -2279.3979 -13402.9561]","2242":"[-15051.1416 -1755.0786 -13467.3477]","2243":"[-15050.8584 -1243.5985 -13530.1426]","2244":"[-15050.7529 -729.7975 -13593.2324]","2245":"[-15050.835 -204.796 -13657.6514]","2246":"[-15050.9053 312.557 -13721.1885]","2247":"[-15051.1426 834.3349 -13785.2227]","2248":"[-15051.002 1352.9409 -13849.001]","2249":"[-15050.8936 1862.4641 -13911.4648]","2250":"[-15050.8564 2372.8635 -13974.1191]","2251":"[-15051.2959 2889.3726 -14037.2549]","2252":"[-15051.4043 3412.6453 -14100.3887]","2253":"[-15051.2686 3936.7153 -14161.9893]","2254":"[-15051.3936 4451.0684 -14218.7773]","2255":"[-15051.3145 4974.0728 -14267.5918]","2256":"[-15050.8242 5502.4614 -14293.7451]","2257":"[-15040.4404 6033.7983 -14300.3525]","2258":"[-15011.7881 6552.6484 -14300.6084]","2259":"[-14964.3955 7062.8945 -14300.3672]","2260":"[-14892.3877 7588.1597 -14300.4668]","2261":"[-14795.6143 8107.7612 -14300.4658]","2262":"[-14671.3438 8620.0107 -14300.2793]","2263":"[-14517.2275 9122.5303 -14300.375]","2264":"[-14331.4492 9612.5781 -14300.2666]","2265":"[-14111.4863 10086.5059 -14300.2861]","2266":"[-13856.6309 10540.542 -14300.2598]","2267":"[-13566.3906 10970.7861 -14300.2725]","2268":"[-13241.0762 11373.0342 -14300.0439]","2269":"[-12883.084 11743.8887 -14300.3154]","2270":"[-12494.5527 12080.3047 -14300.4258]","2271":"[-12080.0391 12381.6211 -14300.3428]","2272":"[-11626.2705 12655.4033 -14300.3643]","2273":"[-11153.4961 12891.7012 -14300.4482]","2274":"[-10665.6279 13091.4619 -14300.332]","2275":"[-10179.4873 13252.8291 -14300.3584]","2276":"[-9674.2715 13387.0479 -14300.3477]","2277":"[-9163.8828 13493.9033 -14300.3896]","2278":"[-8647.9561 13574.8525 -14300.3955]","2279":"[-8126.0498 13632.0273 -14300.417]","2280":"[-7602.4673 13669.2119 -14300.2861]","2281":"[-7079.6367 13686.4814 -14300.3242]","2282":"[-6557.2876 13690.3428 -14300.3545]","2283":"[-6036.1255 13690.2295 -14300.2871]","2284":"[-5516.0728 13689.5508 -14300.3965]","2285":"[-4996.8667 13690.2744 -14300.4668]","2286":"[-4478.4805 13689.8955 -14300.3887]","2287":"[-3960.8943 13689.9277 -14300.4229]","2288":"[-3444.1292 13690.0166 -14300.2402]","2289":"[-2928.1521 13690.041 -14300.4336]","2290":"[-2412.9844 13689.8965 -14300.335]","2291":"[-1898.6128 13689.6816 -14300.4385]","2292":"[-1385.0635 13690.4316 -14300.2979]","2293":"[-872.3052 13689.5342 -14300.4395]","2294":"[-346.8901 13690.2383 -14300.5098]","2295":"[177.7081 13689.8467 -14300.5039]","2296":"[701.4755 13690.1289 -14300.3936]","2297":"[1224.3888 13689.7334 -14300.5029]","2298":"[1742.4763 13690.0947 -14300.4082]","2299":"[2266.5566 13689.8066 -14300.499]","2300":"[2781.5112 13690.1475 -14300.4629]","2301":"[3299.4363 13689.957 -14300.459]","2302":"[3818.6729 13690.6523 -14300.4121]","2303":"[4331.02 13688.9785 -14300.4395]","2304":"[4843.7686 13689.7998 -14300.4531]","2305":"[5373.7881 13690.8457 -14300.4424]","2306":"[5891.6084 13689.873 -14300.2148]","2307":"[6412.8535 13689.5498 -14300.248]","2308":"[6937.3086 13690.54 -14300.3545]","2309":"[7462.3389 13683.5449 -14301.04]","2310":"[7985.7886 13660.5654 -14301.8799]","2311":"[8506.5742 13617.5273 -14303.1006]","2312":"[9027.123 13552.6123 -14303.9756]","2313":"[9547.751 13461.4521 -14305.1465]","2314":"[10061.4443 13343.543 -14305.6719]","2315":"[10565.998 13196.2979 -14306.375]","2316":"[11058.4414 13016.3994 -14307.1182]","2317":"[11535.7305 12802.9023 -14307.6338]","2318":"[11993.3643 12552.9541 -14308.0576]","2319":"[12428.6514 12267.0547 -14308.542]","2320":"[12833.4258 11946.8018 -14308.4414]","2321":"[13205.9707 11591.8965 -14308.375]","2322":"[13544.2236 11206.4746 -14308.6201]","2323":"[13856.2324 10777.9043 -14308.3525]","2324":"[14129.0557 10325.2598 -14307.8633]","2325":"[14363.4424 9853.2148 -14307.3926]","2326":"[14560.5137 9366.1338 -14306.916]","2327":"[14723.7549 8868.2588 -14306.0596]","2328":"[14855.5908 8362.749 -14305.3301]","2329":"[14958.7539 7851.9565 -14304.5029]","2330":"[15036.585 7335.4541 -14303.6553]","2331":"[15091.0322 6821.3833 -14302.498]","2332":"[15124.1416 6307.6177 -14301.5264]","2333":"[15138.7217 5795.4023 -14300.3105]","2334":"[15141.2881 5266.5752 -14300.0635]","2335":"[15140.7861 4739.3838 -14300.2227]","2336":"[15141.0732 4213.2612 -14300.3564]","2337":"[15141.2314 3698.5623 -14300.3145]","2338":"[15140.375 3180.7405 -14300.457]","2339":"[15141.0059 2655.9866 -14300.3564]","2340":"[15141.3848 2132.3259 -14300.4355]","2341":"[15140.541 1602.3959 -14300.4434]","2342":"[15140.9531 1087.094 -14300.2744]","2343":"[15141.3652 572.8551 -14300.293]","2344":"[15140.5264 59.6979 -14300.3184]","2345":"[15140.8682 -452.3892 -14300.3252]","2346":"[15141.3096 -983.0637 -14300.3027]","2347":"[15140.4434 -1512.6371 -14300.3281]","2348":"[15140.9834 -2041.0608 -14300.2441]","2349":"[15141.0215 -2569.0825 -14306.4326]","2350":"[15140.5098 -3099.105 -14333.0596]","2351":"[15140.7969 -3612.6733 -14381.2617]","2352":"[15141.1699 -4133.2944 -14438.7725]","2353":"[15140.8115 -4642.0376 -14498.4268]","2354":"[15141.1445 -5159.0151 -14560.5283]","2355":"[15141.6533 -5684.6665 -14623.4814]","2356":"[15140.9668 -6195.6372 -14682.9131]","2357":"[15141.5332 -6714.8413 -14739.5156]","2358":"[15141.6123 -7243.7061 -14786.1914]","2359":"[15139.9199 -7765.3354 -14808.3467]","2360":"[15127.334 -8290.0215 -14813.2861]","2361":"[15094.9453 -8812.4424 -14814.582]","2362":"[15042.4648 -9331.3838 -14815.5518]","2363":"[14967.7256 -9846.4541 -14816.5176]","2364":"[14866.6523 -10355.791 -14817.4023]","2365":"[14738.9521 -10857.8359 -14818.1084]","2366":"[14581.9883 -11349.8799 -14818.749]","2367":"[14392.6729 -11828.9395 -14819.1357]","2368":"[14169.7695 -12291.3418 -14819.9775]","2369":"[13902.6689 -12749.4063 -14819.7012]","2370":"[13597.4404 -13180.7178 -14820.3096]","2371":"[13255.6611 -13581.3545 -14820.54]","2372":"[12879.3232 -13947.3359 -14820.4443]","2373":"[12473.0781 -14276.5566 -14820.3896]","2374":"[12040.3037 -14567.166 -14820.3271]","2375":"[11585.7559 -14819.5244 -14819.9033]","2376":"[11114.7021 -15036.1162 -14819.1895]","2377":"[10632.9951 -15216.5781 -14818.4795]","2378":"[10135.4453 -15366.3809 -14817.834]","2379":"[9626.5801 -15487.9844 -14817.1104]","2380":"[9113.0908 -15581.3037 -14816.2539]","2381":"[8597.542 -15649.8506 -14815.5752]","2382":"[8080.9756 -15697.0537 -14814.459]","2383":"[7564.5195 -15722.5059 -14813.5439]","2384":"[7049.1636 -15731.9199 -14813.0938]","2385":"[6535.127 -15732.251 -14812.5049]","2386":"[6022.2954 -15731.3506 -14812.4189]","2387":"[5491.5293 -15732.0723 -14812.4854]","2388":"[4961.8232 -15731.9746 -14812.5234]","2389":"[4433.1987 -15731.8369 -14812.5156]","2390":"[3905.6394 -15732.2588 -14812.6064]","2391":"[3379.1606 -15731.7275 -14812.3877]","2392":"[2852.6853 -15732.0166 -14820.6885]","2393":"[2324.1365 -15732.041 -14847.1836]","2394":"[1810.6873 -15731.9609 -14888.5918]","2395":"[1292.0913 -15732.6436 -14924.2852]","2396":"[769.7429 -15732.2344 -14938.9209]","2397":"[245.5932 -15731.4609 -14940.3545]","2398":"[-277.6687 -15732.0166 -14940.4199]","2399":"[-799.8812 -15732.0576 -14940.5811]","2400":"[-1321.0548 -15731.9189 -14940.4258]","2401":"[-1841.1512 -15732.1895 -14940.4824]","2402":"[-2360.2175 -15731.8477 -14940.46]","2403":"[-2878.2031 -15731.8311 -14940.4814]","2404":"[-3395.155 -15732.0771 -14940.417]","2405":"[-3911.0522 -15731.9033 -14940.4736]","2406":"[-4425.9102 -15732.1406 -14940.4531]","2407":"[-4939.7407 -15732.0146 -14940.4932]","2408":"[-5452.54 -15731.8223 -14940.3682]","2409":"[-5983.2534 -15732.1621 -14940.4697]","2410":"[-6512.8672 -15731.7012 -14940.4375]","2411":"[-7026.333 -15731.875 -14940.5254]","2412":"[-7551.731 -15727.4932 -14941.3154]","2413":"[-8075.0415 -15707.8877 -14941.96]","2414":"[-8595.1855 -15666.6982 -14942.9561]","2415":"[-9111.8223 -15606.3809 -14943.7764]","2416":"[-9623.7988 -15521.5313 -14944.7422]","2417":"[-10129.418 -15409.96 -14945.4463]","2418":"[-10627.0693 -15271.5605 -14946.1914]","2419":"[-11113.0537 -15101.6924 -14946.9229]","2420":"[-11591.8613 -14897.2939 -14947.457]","2421":"[-12057.4238 -14655.0742 -14947.7813]","2422":"[-12499.043 -14374.9385 -14948.4297]","2423":"[-12913.5693 -14058.8135 -14948.3877]","2424":"[-13297.0195 -13708.1523 -14948.4629]","2425":"[-13644.9844 -13324.4375 -14948.3291]","2426":"[-13956.6494 -12912.665 -14948.2773]","2427":"[-14230.9561 -12476.9287 -14947.835]","2428":"[-14467.9609 -12021.6641 -14947.3916]","2429":"[-14676.6797 -11533.9473 -14947.0264]","2430":"[-14849.5791 -11033.9121 -14946.3135]","2431":"[-14990.2568 -10525.4443 -14945.5879]","2432":"[-15100.6963 -10011.0352 -14944.7139]","2433":"[-15183.7666 -9493.2959 -14943.5107]","2434":"[-15244.1504 -8974.041 -14942.4258]","2435":"[-15281.8369 -8454.7979 -14941.8428]","2436":"[-15300.0898 -7935.9775 -14940.7695]","2437":"[-15303.9365 -7416.1631 -14957.1074]","2438":"[-15304.0293 -6893.5635 -14994.5879]","2439":"[-15303.7461 -6383.5435 -15046.9102]","2440":"[-15303.9141 -5864.7261 -15106.0781]","2441":"[-15303.7881 -5355.8506 -15166.7646]","2442":"[-15303.9199 -4837.3525 -15229.915]","2443":"[-15303.999 -4309.0908 -15294.7871]","2444":"[-15303.916 -3791.8394 -15358.252]","2445":"[-15303.9756 -3268.1782 -15422.6338]","2446":"[-15303.8643 -2746.6597 -15486.7695]","2447":"[-15303.915 -2237.8174 -15549.0078]","2448":"[-15303.9121 -1722.3331 -15612.4111]","2449":"[-15303.8936 -1199.7959 -15676.6113]","2450":"[-15303.9463 -683.2458 -15740.1025]","2451":"[-15304.3213 -174.1892 -15802.0986]","2452":"[-15304.3135 345.3737 -15865.124]","2453":"[-15304.0391 855.4505 -15925.6064]","2454":"[-15304.5449 1375.1158 -15983.9131]","2455":"[-15304.377 1901.782 -16035.3926]","2456":"[-15303.9375 2430.2576 -16065.958]","2457":"[-15303.8564 2942.4204 -16076.1162]","2458":"[-15304.0469 3455.2891 -16075.6006]","2459":"[-15303.5068 3986.7788 -16075.4395]","2460":"[-15303.8086 4517.1216 -16075.4434]","2461":"[-15303.9102 5046.3877 -16075.3916]","2462":"[-15303.8389 5574.5034 -16075.4521]","2463":"[-15303.7637 6101.541 -16075.4521]","2464":"[-15303.3271 6627.5151 -16075.7324]","2465":"[-15293.4531 7151.7041 -16075.9316]","2466":"[-15263.7813 7673.3506 -16077.0771]","2467":"[-15214.0039 8191.7412 -16078.334]","2468":"[-15143.1611 8706.125 -16079.2217]","2469":"[-15045.4238 9221.1396 -16080.0918]","2470":"[-14919.6289 9732.625 -16080.8838]","2471":"[-14765.7266 10226.5332 -16081.6709]","2472":"[-14579.6865 10709.667 -16082.4111]","2473":"[-14359.9238 11176.5654 -16082.709]","2474":"[-14105.0117 11623.3271 -16083.0723]","2475":"[-13814.5313 12045.8281 -16083.3125]","2476":"[-13476.2393 12454.7422 -16083.4111]","2477":"[-13102.5342 12829.1416 -16083.3193]","2478":"[-12697.1436 13166.374 -16083.4287]","2479":"[-12264.4932 13464.8789 -16083.3369]","2480":"[-11809.2217 13724.5283 -16082.8936]","2481":"[-11336.2139 13946.7803 -16082.1211]","2482":"[-10849.7168 14133.1475 -16081.6807]","2483":"[-10353.2412 14286.498 -16080.8584]","2484":"[-9849.916 14410.0283 -16080.085]","2485":"[-9341.9453 14506.0537 -16079.3984]","2486":"[-8831.1348 14577.1631 -16078.4961]","2487":"[-8311.6924 14626.8623 -16077.4551]","2488":"[-7785.8691 14656.0898 -16076.2568]","2489":"[-7261.5503 14666.1357 -16075.8174]","2490":"[-6738.5884 14657.3301 -16076.4258]","2491":"[-6217.7246 14628.9629 -16077.5264]","2492":"[-5699.3921 14581.4287 -16078.2568]","2493":"[-5184.8564 14511.0605 -16079.2764]","2494":"[-4675.5552 14415.8369 -16079.752]","2495":"[-4173.4341 14294.96 -16080.7783]","2496":"[-3680.6365 14144.6094 -16081.665]","2497":"[-3199.8755 13962.9795 -16082.1514]","2498":"[-2734.3569 13748.5879 -16082.7236]","2499":"[-2272.2441 13489.3496 -16083.1777]","2500":"[-1835.5154 13192.3311 -16083.5371]","2501":"[-1427.9159 12859.5635 -16083.6836]","2502":"[-1055.0613 12490.6963 -16083.4951]","2503":"[-718.0679 12090.96 -16083.4463]","2504":"[-418.7833 11664.2041 -16083.2705]","2505":"[-158.2435 11214.5225 -16082.8008]","2506":"[65.7313 10747.0967 -16082.3721]","2507":"[254.2704 10265.8574 -16081.6992]","2508":"[409.9124 9774.3955 -16080.9951]","2509":"[535.8848 9275.8008 -16080.2734]","2510":"[634.5515 8772.3936 -16079.4639]","2511":"[708.1848 8265.5313 -16078.5918]","2512":"[761.7382 7741.3989 -16077.5488]","2513":"[793.1852 7221.8071 -16076.6699]","2514":"[806.3182 6702.0171 -16075.5596]","2515":"[807.937 6181.0688 -16074.8662]","2516":"[806.1935 5656.1914 -16075.5107]","2517":"[806.2109 5141.751 -16075.5557]","2518":"[807.3918 4619.6196 -16075.2813]","2519":"[807.5739 4096.2236 -16075.3779]","2520":"[806.8859 3578.0142 -16075.3779]","2521":"[806.223 3051.5051 -16075.5908]","2522":"[806.361 2526.7139 -16075.3008]","2523":"[807.068 2003.5204 -16075.5586]","2524":"[807.5873 1482.0033 -16075.4141]","2525":"[807.2876 962.0779 -16075.4277]","2526":"[806.6566 443.7349 -16075.416]","2527":"[806.4392 -72.9979 -16075.4775]","2528":"[806.6991 -588.144 -16075.3145]","2529":"[807.3911 -1101.748 -16075.415]","2530":"[807.4218 -1613.7761 -16075.4561]","2531":"[806.6093 -2158.2844 -16075.2725]","2532":"[806.4521 -2701.0466 -16075.5801]","2533":"[806.7173 -3239.4741 -16075.3379]","2534":"[807.4953 -3780.2781 -16075.5439]","2535":"[806.9996 -4311.333 -16075.3662]","2536":"[806.7388 -4825.8154 -16075.5176]","2537":"[806.9148 -5341.6963 -16075.374]","2538":"[807.4012 -5864.9307 -16075.5068]","2539":"[806.9837 -6386.877 -16075.4297]","2540":"[806.7713 -6902.0239 -16075.4893]","2541":"[806.916 -7422.687 -16075.5186]","2542":"[810.2609 -7952.0635 -16074.916]","2543":"[827.3887 -8479.8906 -16074.0332]","2544":"[865.0551 -9004.8701 -16073.1836]","2545":"[922.6061 -9526.0762 -16072.2686]","2546":"[1003.0556 -10042.7412 -16071.4668]","2547":"[1109.7115 -10553.2168 -16070.5791]","2548":"[1241.8839 -11056.1846 -16069.9043]","2549":"[1404.8157 -11548.5029 -16069.2207]","2550":"[1598.3257 -12027.9941 -16068.8418]","2551":"[1824.3888 -12491.3086 -16068.5029]","2552":"[2084.9902 -12934.3027 -16068.1211]","2553":"[2378.8748 -13353.9746 -16067.5635]","2554":"[2718.0447 -13759.043 -16067.5791]","2555":"[3090.3096 -14131.6123 -16067.4209]","2556":"[3492.7776 -14468.9873 -16067.6738]","2557":"[3921.8298 -14769.4063 -16067.9941]","2558":"[4372.7056 -15033.3789 -16068.1748]","2559":"[4841.561 -15261.1377 -16068.7803]","2560":"[5324.3726 -15454.6514 -16069.2344]","2561":"[5817.8081 -15615.7793 -16069.8584]","2562":"[6323.439 -15748.1846 -16070.5273]","2563":"[6830.7671 -15852.8008 -16071.3623]","2564":"[7341.9355 -15931.3867 -16072.1787]","2565":"[7855.1074 -15987.9072 -16073.0938]","2566":"[8369.1748 -16024.3535 -16073.8926]","2567":"[8883.3623 -16041.3389 -16074.8135]","2568":"[9396.9219 -16045.4268 -16075.3252]","2569":"[9909.5938 -16044.8535 -16075.5186]","2570":"[10439.5527 -16044.9277 -16075.4375]","2571":"[10968.4424 -16045.1064 -16075.3994]","2572":"[11495.6553 -16034.4746 -16074.2275]","2573":"[12018.957 -15990.7549 -16071.9102]","2574":"[12533.7373 -15901.7861 -16070.5986]","2575":"[13030.5615 -15762.1709 -16068.6992]","2576":"[13505.167 -15553.001 -16068.5283]","2577":"[13951.6826 -15284.1895 -16067.7959]","2578":"[14341.1914 -14945.123 -16067.8389]","2579":"[14674.9434 -14543.0801 -16068.04]","2580":"[14936.2959 -14097.0313 -16068.5908]","2581":"[15130.9766 -13616.9355 -16069.5791]","2582":"[15266.79 -13115.876 -16070.9463]","2583":"[15350.3311 -12598.1572 -16072.3877]","2584":"[15389.8711 -12073.7842 -16074.4336]","2585":"[15399.8223 -11558.3057 -16075.3877]","2586":"[15399.5166 -11037.6514 -16075.4492]","2587":"[15398.1865 -10524.1191 -16075.3594]","2588":"[15399.4121 -10003.5176 -16075.4678]","2589":"[15399.8066 -9484.0742 -16075.6133]","2590":"[15398.5342 -8965.7881 -16075.5908]","2591":"[15398.7197 -8448.6465 -16075.5176]","2592":"[15399.71 -7932.6802 -16075.4092]","2593":"[15399.1953 -7417.8501 -16075.5361]","2594":"[15398.6514 -6904.1675 -16075.457]","2595":"[15399.3213 -6391.5742 -16075.4844]","2596":"[15399.2178 -5858.8618 -16075.5078]","2597":"[15398.8525 -5327.3555 -16075.4092]","2598":"[15399.2109 -4797.0415 -16075.3799]","2599":"[15399.3945 -4267.9229 -16075.4912]","2600":"[15398.5889 -3739.4114 -16075.4199]","2601":"[15399.2109 -3213.5532 -16075.4668]","2602":"[15399.3145 -2697.6624 -16075.4033]","2603":"[15399.3584 -2184.061 -16075.4941]","2604":"[15398.6777 -1669.2129 -16075.5186]","2605":"[15398.7324 -1151.5651 -16075.3916]","2606":"[15399.0264 -638.576 -16075.502]","2607":"[15398.373 -126.4231 -16075.4795]","2608":"[15399.0166 394.9201 -16075.5293]","2609":"[15398.3877 915.3863 -16075.2881]","2610":"[15398.8828 1435.009 -16075.4873]","2611":"[15398.4414 1953.7728 -16075.3271]","2612":"[15398.3516 2471.7019 -16075.4893]","2613":"[15398.8799 2988.771 -16075.3604]","2614":"[15399.166 3504.4512 -16075.4482]","2615":"[15398.9697 4018.9392 -16075.5518]","2616":"[15399.1992 4532.582 -16075.4629]","2617":"[15399.0244 5045.332 -16075.5146]","2618":"[15398.9482 5567.0537 -16075.4033]","2619":"[15399.5596 6087.8623 -16075.1416]","2620":"[15399.1328 6607.5713 -16075.167]","2621":"[15399.0957 7124.8052 -16075.0664]","2622":"[15399.4111 7640.709 -16075.3467]","2623":"[15398.8906 8155.6885 -16075.4434]","2624":"[15399.458 8669.8252 -16075.5166]","2625":"[15398.7188 9183.0684 -16075.4717]","2626":"[15398.8535 9701.0977 -16075.4004]","2627":"[15398.1064 10214.3193 -16075.4932]","2628":"[15398.209 10728.0146 -16075.46]","2629":"[15398.332 11245.0381 -16075.4219]","2630":"[15399.1885 11761.2725 -16075.46]","2631":"[15399.1406 12280.4453 -16075.4912]","2632":"[15398.6035 12798.0176 -16075.4805]","2633":"[15398.6924 13314.8301 -16075.4893]","2634":"[15398.3799 13829.748 -16075.4141]","2635":"[15398.5488 14342.9365 -16075.5166]","2636":"[15398.9219 14856.5625 -16075.373]","2637":"[15398.7373 15369.333 -16075.5244]","2638":"[15398.7002 15713.5332 -16075.1514]"},"2":{"1":"[15135.1299 15696.4785 -16075.4521]","2":"[15135.0996 15594.0605 -16075.4375]","3":"[15134.6719 15081.4268 -16075.3809]","4":"[15135.3506 14562.2461 -16075.4463]","5":"[15134.8359 14044.4648 -16075.4434]","6":"[15135.209 13527.8701 -16075.4434]","7":"[15135.166 13012.3887 -16075.4629]","8":"[15134.9209 12498.002 -16075.4746]","9":"[15135.2432 11984.7197 -16075.4385]","10":"[15135.1846 11472.5371 -16075.4932]","11":"[15135.4229 10952.9453 -16075.5205]","12":"[15135.0029 10434.4902 -16075.499]","13":"[15134.5098 9917.1592 -16075.3965]","14":"[15135.0381 9400.958 -16075.4453]","15":"[15134.6367 8885.8779 -16075.4863]","16":"[15134.6348 8371.9268 -16075.4395]","17":"[15135.667 7859.1724 -16075.3652]","18":"[15135.5645 7339.6167 -16075.3271]","19":"[15135.7725 6821.7222 -16075.251]","20":"[15136.1543 6306.0186 -16075.3057]","21":"[15134.9541 5788.8608 -16075.3789]","22":"[15135.2246 5273.3779 -16075.2607]","23":"[15135.0781 4760.0146 -16075.3564]","24":"[15134.4717 4247.8271 -16075.4688]","25":"[15135.0264 3728.218 -16075.4258]","26":"[15135.2686 3209.7634 -16075.4785]","27":"[15134.6299 2692.4565 -16075.3428]","28":"[15135.0566 2176.239 -16075.4434]","29":"[15134.8877 1661.1644 -16075.4063]","30":"[15135.123 1147.2715 -16075.5]","31":"[15134.4395 634.4876 -16075.5439]","32":"[15135.2646 114.4669 -16075.499]","33":"[15135.0967 -404.3576 -16075.5215]","34":"[15134.7695 -922.0253 -16075.4082]","35":"[15135.2881 -1438.4806 -16075.4893]","36":"[15134.4531 -1951.2113 -16075.3789]","37":"[15134.6689 -2471.5776 -16075.4063]","38":"[15135.2939 -2990.8433 -16075.4365]","39":"[15135.1914 -3508.978 -16075.5303]","40":"[15135.2666 -4026.0146 -16075.4365]","41":"[15134.5469 -4541.9463 -16075.5244]","42":"[15135.1299 -5056.792 -16075.4629]","43":"[15134.5957 -5570.5586 -16075.5215]","44":"[15135.2402 -6083.1885 -16075.5244]","45":"[15134.9902 -6603.2573 -16075.5098]","46":"[15135.0225 -7122.186 -16075.4824]","47":"[15135.1602 -7639.9717 -16075.5547]","48":"[15135.1514 -8156.6382 -16075.4092]","49":"[15134.5254 -8672.1699 -16075.5107]","50":"[15135.0498 -9186.5469 -16075.4844]","51":"[15134.5283 -9699.8008 -16075.4922]","52":"[15135.5625 -10211.8887 -16075.416]","53":"[15135.0225 -10731.2285 -16075.54]","54":"[15134.4912 -11249.3877 -16075.4063]","55":"[15132.8916 -11766.5322 -16075.8525]","56":"[15112.1855 -12278.5996 -16077.1924]","57":"[15055.1768 -12793.75 -16078.8867]","58":"[14949.5664 -13298.6104 -16080.7842]","59":"[14785.7939 -13784.6934 -16082.1436]","60":"[14551.4404 -14245.9707 -16083.2656]","61":"[14246.4561 -14657.7734 -16083.623]","62":"[13886.7129 -14997.8672 -16083.5742]","63":"[13462.5459 -15277.04 -16082.9453]","64":"[12988.3232 -15489.4922 -16081.7275]","65":"[12494.6211 -15634.4424 -16080.2334]","66":"[11982.165 -15724.6016 -16078.4424]","67":"[11465.9111 -15767.5869 -16076.6064]","68":"[10951.4229 -15780.5801 -16075.6855]","69":"[10438.9951 -15780.5713 -16075.335]","70":"[9919.2529 -15781.2871 -16075.4639]","71":"[9400.7539 -15781.0225 -16075.4678]","72":"[8883.6543 -15775.4873 -16076.0029]","73":"[8368.3438 -15758.1748 -16076.9268]","74":"[7855.5933 -15721.1533 -16077.9229]","75":"[7346.4321 -15663.2383 -16078.7969]","76":"[6834.1167 -15582.0361 -16079.8535]","77":"[6327.3721 -15475.4902 -16080.541]","78":"[5825.0942 -15340.1309 -16081.3037]","79":"[5339.6143 -15175.9434 -16082.0371]","80":"[4859.3755 -14976.7422 -16082.6416]","81":"[4397.0024 -14742.2373 -16083.1484]","82":"[3956.4241 -14472.2441 -16083.4971]","83":"[3541.8855 -14166.9453 -16083.8398]","84":"[3157.9126 -13827.1543 -16083.9658]","85":"[2801.7241 -13449.5654 -16083.9307]","86":"[2482.3372 -13043.6211 -16083.6455]","87":"[2200.9507 -12613.2949 -16083.418]","88":"[1953.4203 -12155.7734 -16082.8271]","89":"[1742.3356 -11682.8799 -16082.3066]","90":"[1566.946 -11201.4209 -16081.6152]","91":"[1421.3712 -10704.4365 -16080.8682]","92":"[1305.4266 -10202.1855 -16080.1113]","93":"[1215.9142 -9696.7305 -16079.2031]","94":"[1149.2407 -9181.7617 -16078.3838]","95":"[1104.9945 -8667.2129 -16077.2461]","96":"[1080.8459 -8154.9526 -16076.1387]","97":"[1072.0139 -7636.4731 -16075.6133]","98":"[1071.1643 -7118.2529 -16075.4912]","99":"[1071.4144 -6605.7964 -16075.543]","100":"[1070.9999 -6085.7681 -16075.5264]","101":"[1071.1707 -5566.835 -16075.5049]","102":"[1071.2371 -5048.9907 -16075.5322]","103":"[1071.4198 -4532.2871 -16075.4434]","104":"[1070.6383 -4016.668 -16075.4883]","105":"[1070.8149 -3502.167 -16075.5322]","106":"[1071.5189 -2988.7813 -16075.4668]","107":"[1070.7515 -2476.5117 -16075.4902]","108":"[1071.3213 -1956.8198 -16075.4951]","109":"[1070.8636 -1438.2463 -16075.54]","110":"[1071.3882 -920.8117 -16075.5146]","111":"[1071.0138 -404.5113 -16075.4658]","112":"[1070.7422 110.6538 -16075.4551]","113":"[1071.3099 624.699 -16075.5195]","114":"[1071.4124 1137.6248 -16075.5117]","115":"[1070.9911 1657.777 -16075.3926]","116":"[1070.5707 2176.7402 -16075.4307]","117":"[1071.5204 2694.5276 -16075.4385]","118":"[1070.6351 3211.1675 -16075.4316]","119":"[1070.9934 3730.0842 -16075.4385]","120":"[1071.1365 4250.7158 -16075.3896]","121":"[1070.6251 4770.2319 -16075.4766]","122":"[1071.4209 5288.604 -16075.4619]","123":"[1071.256 5805.8784 -16075.4795]","124":"[1070.97 6322.0005 -16075.377]","125":"[1066.4186 6836.4941 -16075.1416]","126":"[1049.1384 7348.499 -16074.0908]","127":"[1013.1406 7865.9648 -16073.085]","128":"[957.1602 8379.4219 -16072.3018]","129":"[879.4567 8887.7871 -16071.541]","130":"[777.4229 9389.5723 -16070.8574]","131":"[647.0332 9891.0195 -16070.1895]","132":"[488.5112 10381.6094 -16069.3955]","133":"[300.3449 10858.2109 -16069.0566]","134":"[77.1111 11324.1191 -16068.4883]","135":"[-179.5315 11769.7881 -16068.2559]","136":"[-474.7612 12198.2969 -16067.9121]","137":"[-803.6143 12598.4189 -16067.9131]","138":"[-1164.3374 12966.7607 -16067.7852]","139":"[-1553.6029 13301.4463 -16067.9844]","140":"[-1974.7745 13606.0342 -16068.0049]","141":"[-2418.0613 13873.873 -16068.5459]","142":"[-2879.4763 14105.3867 -16068.8477]","143":"[-3354.7903 14303.1436 -16069.4521]","144":"[-3840.9312 14468.5381 -16070.0508]","145":"[-4339.4673 14606.0977 -16070.6426]","146":"[-4845.4966 14716.0303 -16071.2988]","147":"[-5355.7407 14800.1133 -16071.957]","148":"[-5868.5483 14861.1357 -16073.0098]","149":"[-6382.8135 14901.9141 -16073.8369]","150":"[-6897.9268 14923.3701 -16074.7813]","151":"[-7412.5996 14926.2197 -16074.8936]","152":"[-7925.667 14912.0039 -16074.0957]","153":"[-8444.2646 14878.5 -16073.2129]","154":"[-8958.8955 14824.626 -16072.5293]","155":"[-9468.5 14748.8301 -16071.5684]","156":"[-9971.6846 14649.6201 -16071.0859]","157":"[-10474.6494 14522.7275 -16070.1318]","158":"[-10966.9629 14366.9453 -16069.5498]","159":"[-11446.1357 14181.0498 -16069.0889]","160":"[-11909.9434 13963.832 -16068.5957]","161":"[-12358.8252 13710.3975 -16068.2109]","162":"[-12784.0498 13423.1523 -16068.0664]","163":"[-13188.6836 13097.5693 -16067.791]","164":"[-13562.126 12739.9316 -16067.8301]","165":"[-13901.6943 12352.9697 -16067.7861]","166":"[-14206.1592 11940.4678 -16068.1104]","167":"[-14478.9678 11498.8477 -16068.2695]","168":"[-14715.5264 11038.8594 -16068.8018]","169":"[-14917.6016 10564.3916 -16069.375]","170":"[-15087.1309 10078.7334 -16069.9502]","171":"[-15228.5635 9578.6113 -16070.4385]","172":"[-15341.6514 9072.4521 -16071.2617]","173":"[-15429.0156 8561.9287 -16072.0586]","174":"[-15492.6094 8048.5083 -16072.7988]","175":"[-15535.5107 7533.4258 -16073.7988]","176":"[-15558.9443 7017.4824 -16074.6221]","177":"[-15567.2383 6501.4951 -16075.0938]","178":"[-15567.8115 5986.166 -16075.4854]","179":"[-15567.9824 5471.8931 -16075.4766]","180":"[-15568.6924 4958.7251 -16075.5068]","181":"[-15567.8506 4446.7163 -16075.4639]","182":"[-15568.1973 3927.2976 -16075.4688]","183":"[-15567.5781 3408.999 -16075.4756]","184":"[-15568.1201 2891.8362 -16075.4951]","185":"[-15568.2217 2377.2268 -16063.4482]","186":"[-15568.8379 1860.3184 -16031.7061]","187":"[-15568.1084 1347.6101 -15981.001]","188":"[-15567.8867 836.5643 -15923.3311]","189":"[-15568.084 323.537 -15862.7598]","190":"[-15568.4678 -187.8866 -15800.748]","191":"[-15568.6982 -699.2289 -15738.2666]","192":"[-15567.5029 -1211.5094 -15675.2021]","193":"[-15567.3574 -1722.6373 -15612.376]","194":"[-15568.5645 -2232.9128 -15549.7334]","195":"[-15568.293 -2745.2542 -15486.8525]","196":"[-15567.9023 -3258.1697 -15423.8662]","197":"[-15568.1533 -3769.3125 -15361.1162]","198":"[-15568.0977 -4280.5698 -15298.3379]","199":"[-15568.1475 -4792.2837 -15235.4512]","200":"[-15568.0371 -5302.647 -15173.4238]","201":"[-15567.3799 -5816.0713 -15112.0332]","202":"[-15567.5088 -6329.4746 -15053.1934]","203":"[-15567.8848 -6842.1484 -14999.5967]","204":"[-15567.9307 -7357.9863 -14959.8994]","205":"[-15563.2529 -7873.3433 -14942.2695]","206":"[-15547.3203 -8392.8965 -14939.0449]","207":"[-15512.3926 -8908.7549 -14938.1816]","208":"[-15457.2363 -9420.6582 -14937.3027]","209":"[-15380.5488 -9927.3164 -14936.7363]","210":"[-15278.8682 -10435.4609 -14935.8389]","211":"[-15150.0869 -10935.0146 -14935.1641]","212":"[-14993.5088 -11424.1523 -14934.5811]","213":"[-14805.7461 -11903.9971 -14934.0146]","214":"[-14584.5195 -12369.252 -14933.5391]","215":"[-14329.8877 -12814.3291 -14933.2412]","216":"[-14037.5039 -13243.0459 -14932.9893]","217":"[-13711.165 -13643.5332 -14932.8564]","218":"[-13353.0371 -14012.749 -14932.7969]","219":"[-12966.2412 -14348.5586 -14932.9863]","220":"[-12547.4375 -14654.2461 -14933.0469]","221":"[-12106.4082 -14923.3281 -14933.3926]","222":"[-11647.501 -15156.6338 -14933.8281]","223":"[-11174.3672 -15356.041 -14934.4307]","224":"[-10686.4668 -15524.8145 -14935.0107]","225":"[-10187.877 -15663.5234 -14935.6885]","226":"[-9683.3945 -15774.627 -14936.2441]","227":"[-9174.7578 -15860.5908 -14937.0957]","228":"[-8663.3008 -15923.0039 -14937.8691]","229":"[-8150.1899 -15964.6631 -14938.751]","230":"[-7636.3506 -15987.4492 -14939.8115]","231":"[-7122.5659 -15995.082 -14940.332]","232":"[-6609.5005 -15995.9307 -14940.5059]","233":"[-6088.9834 -15996.5293 -14940.3379]","234":"[-5569.6104 -15995.4521 -14940.4033]","235":"[-5051.4023 -15996.334 -14940.5713]","236":"[-4534.2944 -15995.8945 -14940.5059]","237":"[-4018.2842 -15996.1211 -14940.4424]","238":"[-3503.3684 -15995.9473 -14940.5]","239":"[-2989.5681 -15995.8291 -14940.4453]","240":"[-2476.9204 -15996.5889 -14940.4395]","241":"[-1957.0065 -15995.5566 -14940.3848]","242":"[-1438.2572 -15996.0479 -14940.459]","243":"[-920.6996 -15995.7617 -14940.5293]","244":"[-404.3284 -15996.2178 -14940.5176]","245":"[109.5028 -15996.1523 -14940.5254]","246":"[629.839 -15996.3857 -14940.2148]","247":"[1143.53 -15995.6924 -14929.3877]","248":"[1658.0585 -15996.0371 -14899.9785]","249":"[2173.0681 -15996.0244 -14859.3994]","250":"[2687.6511 -15995.8271 -14826.9385]","251":"[3199.7002 -15995.4707 -14813.9014]","252":"[3719.9121 -15996.0273 -14812.3594]","253":"[4238.5132 -15996.4453 -14812.4697]","254":"[4755.9019 -15995.3389 -14812.4824]","255":"[5272.0747 -15996.0322 -14812.5322]","256":"[5789.8765 -15996.6318 -14812.3516]","257":"[6309.9937 -15995.4766 -14812.501]","258":"[6828.9619 -15995.9336 -14812.3369]","259":"[7345.8047 -15990.3516 -14811.8838]","260":"[7860.0386 -15972.291 -14811.0303]","261":"[8371.1416 -15935.501 -14810.1768]","262":"[8886.7559 -15877.7432 -14809.3545]","263":"[9396.8887 -15797.8271 -14808.2686]","264":"[9900.1768 -15694.0303 -14807.792]","265":"[10402.9521 -15561.2041 -14807.0176]","266":"[10894.6563 -15399.4795 -14806.5088]","267":"[11372.5918 -15207.2988 -14806.001]","268":"[11833.7881 -14983.2373 -14805.4355]","269":"[12279.752 -14722.6611 -14805.2383]","270":"[12701.3438 -14428.2402 -14804.9434]","271":"[13101.1006 -14095.0693 -14804.9766]","272":"[13468.9932 -13730.3662 -14804.8643]","273":"[13802.499 -13336.9023 -14804.9473]","274":"[14100.8975 -12918.5547 -14805.0869]","275":"[14363.2158 -12478.7588 -14805.4727]","276":"[14593.7441 -12014.085 -14805.7061]","277":"[14789.9629 -11535.6279 -14806.3379]","278":"[14954.2861 -11046.5977 -14806.9199]","279":"[15088.7334 -10549.6016 -14807.8193]","280":"[15195.8721 -10046.8359 -14808.3457]","281":"[15278.4434 -9539.2822 -14809.1631]","282":"[15338.6641 -9023.8916 -14810.0283]","283":"[15377.8457 -8506.9893 -14810.8711]","284":"[15398.4297 -7989.4536 -14811.7451]","285":"[15404.5352 -7471.4331 -14797.541]","286":"[15404.8975 -6955.9551 -14762.5029]","287":"[15405.1738 -6442.3735 -14710.5576]","288":"[15405 -5930.1235 -14652.4355]","289":"[15404.8193 -5417.5684 -14591.457]","290":"[15404.8574 -4905.6938 -14530.0283]","291":"[15404.5029 -4393.6436 -14469.1543]","292":"[15404.4209 -3881.0745 -14410.3262]","293":"[15404.752 -3367.0239 -14357.1289]","294":"[15404.8838 -2852.6514 -14318.7373]","295":"[15405.0996 -2336.6768 -14302.4092]","296":"[15404.6846 -1820.6188 -14300.4004]","297":"[15405.377 -1305.9698 -14300.4873]","298":"[15404.8525 -792.4127 -14300.5498]","299":"[15404.7051 -279.9584 -14300.458]","300":"[15405.0645 239.8911 -14300.5117]","301":"[15404.9736 758.6158 -14300.4932]","302":"[15404.5342 1276.2104 -14300.5566]","303":"[15405.333 1792.6498 -14300.5225]","304":"[15405.248 2307.9548 -14300.3311]","305":"[15404.8271 2822.105 -14300.5078]","306":"[15404.9453 3335.1155 -14300.4316]","307":"[15405.207 3855.377 -14300.5313]","308":"[15404.9434 4374.4785 -14300.4795]","309":"[15405.124 4892.3994 -14300.5088]","310":"[15404.9512 5409.2305 -14300.3398]","311":"[15398.8301 5929.7212 -14299.792]","312":"[15379.2871 6447.3125 -14298.9688]","313":"[15340.5352 6961.3525 -14298.0957]","314":"[15281.9082 7471.3018 -14297.1553]","315":"[15199.4482 7984.4072 -14296.3037]","316":"[15093.1865 8490.873 -14295.7373]","317":"[14959.5996 8988.5576 -14295.1016]","318":"[14797.0146 9474.9668 -14294.4473]","319":"[14601.1738 9955.3975 -14293.9053]","320":"[14372.7236 10418.4336 -14293.4961]","321":"[14110.998 10860.6631 -14293.292]","322":"[13811.7227 11283.8418 -14292.9219]","323":"[13479.3203 11677.6895 -14292.9141]","324":"[13116.1016 12039.9951 -14292.8154]","325":"[12717.6318 12373.2139 -14292.9912]","326":"[12294.3926 12671.043 -14293.3096]","327":"[11849.7646 12932.54 -14293.5615]","328":"[11387.8623 13158.7041 -14293.8906]","329":"[10912.2949 13350.9775 -14294.4805]","330":"[10418.6182 13514.374 -14295.123]","331":"[9917.0371 13647.665 -14295.7432]","332":"[9409.6387 13753.1924 -14296.5107]","333":"[8898.4404 13833.9795 -14297.2949]","334":"[8384.7568 13892.1523 -14298.0703]","335":"[7869.6235 13929.4678 -14298.9639]","336":"[7353.9922 13948.0684 -14299.8975]","337":"[6836.2051 13961.3242 -14300.4893]","338":"[6317.7305 13993.623 -14300.834]","339":"[5805.9746 14064.1904 -14300.6377]","340":"[5299.9624 14158.7637 -14300.7607]","341":"[4797.3623 14259.5645 -14300.6455]","342":"[4288.4683 14362.0029 -14300.5684]","343":"[3780.3547 14461.9512 -14300.7139]","344":"[3273.5745 14562.1641 -14300.6396]","345":"[2765.1807 14640.0566 -14300.585]","346":"[2246.9915 14683.918 -14300.7822]","347":"[1729.2251 14697.1807 -14300.4912]","348":"[1211.9886 14698.1367 -14300.582]","349":"[699.8677 14697.7119 -14300.3291]","350":"[180.1601 14698.0459 -14300.499]","351":"[-338.4329 14697.7686 -14300.4453]","352":"[-855.9151 14698.5947 -14300.5674]","353":"[-1372.3098 14698.165 -14300.5566]","354":"[-1887.6371 14697.9512 -14300.5068]","355":"[-2401.887 14698.2266 -14300.4131]","356":"[-2915.0552 14697.6738 -14300.4424]","357":"[-3427.082 14698.3516 -14300.5537]","358":"[-3946.4734 14698.6338 -14300.5303]","359":"[-4464.6763 14697.2402 -14300.4023]","360":"[-4981.7222 14697.9404 -14300.5059]","361":"[-5497.5742 14698.4648 -14300.4688]","362":"[-6012.2383 14697.9316 -14300.3955]","363":"[-6525.314 14697.4932 -14300.4199]","364":"[-7044.9434 14698.1045 -14300.5166]","365":"[-7563.1558 14697.4297 -14300.3398]","366":"[-8079.499 14692.7168 -14300.4912]","367":"[-8594.2061 14677.4678 -14300.4492]","368":"[-9106.4727 14643.082 -14300.4072]","369":"[-9621.9844 14586.6738 -14300.4512]","370":"[-10133.2695 14508.8105 -14300.5234]","371":"[-10638.8145 14406.5674 -14300.4902]","372":"[-11136.4023 14276.6748 -14300.4316]","373":"[-11623.9873 14118.4688 -14300.5986]","374":"[-12106.4473 13926.2813 -14300.5977]","375":"[-12571.9219 13700.2549 -14300.54]","376":"[-13016.5938 13439.6738 -14300.5527]","377":"[-13436.6816 13144.9795 -14300.6621]","378":"[-13834.5928 12811.333 -14300.7627]","379":"[-14199.2578 12444.9932 -14300.624]","380":"[-14529.0557 12049.8779 -14300.6416]","381":"[-14822.7822 11629.8135 -14300.6094]","382":"[-15083.1084 11184.1846 -14300.5518]","383":"[-15306.9004 10720.3633 -14300.498]","384":"[-15496.8076 10243.4658 -14300.5176]","385":"[-15656.9043 9748.4922 -14300.4609]","386":"[-15786.707 9246.3545 -14300.5439]","387":"[-15888.626 8739.3604 -14300.5225]","388":"[-15965.8086 8229.3682 -14300.5869]","389":"[-16020.0059 7717.8398 -14300.3311]","390":"[-16054.4063 7205.9561 -14300.4199]","391":"[-16070.9814 6686.1382 -14300.3721]","392":"[-16075.3486 6167.3071 -14300.4023]","393":"[-16074.7334 5647.9292 -14297.7686]","394":"[-16074.0947 5130.5098 -14278.4775]","395":"[-16075.5957 4615.3145 -14237.1289]","396":"[-16075.5381 4103.0537 -14182.791]","397":"[-16074.8711 3589.5449 -14123.1582]","398":"[-16074.8398 3077.929 -14062.0176]","399":"[-16074.9961 2565.6931 -13999.5879]","400":"[-16074.7842 2053.1018 -13936.7256]","401":"[-16074.5674 1542.2904 -13874.0225]","402":"[-16074.249 1030.2562 -13811.2676]","403":"[-16074.4639 518.8933 -13748.3496]","404":"[-16075.168 8.1397 -13685.7363]","405":"[-16074.2949 -503.824 -13622.8135]","406":"[-16074.6895 -1015.1428 -13560.0244]","407":"[-16074.4277 -1526.9818 -13497.1777]","408":"[-16074.5176 -2037.8484 -13434.4492]","409":"[-16074.8428 -2550.3372 -13371.5205]","410":"[-16075.0674 -3062.1985 -13308.6748]","411":"[-16074.3623 -3573.0674 -13245.9619]","412":"[-16074.7129 -4085.6692 -13183.3291]","413":"[-16074.9092 -4597.1392 -13121.4053]","414":"[-16074.3955 -5108.2959 -13061.3311]","415":"[-16074.5234 -5621.8877 -13004.085]","416":"[-16074.6875 -6135.6626 -12954.9688]","417":"[-16074.6738 -6651.7993 -12926.6279]","418":"[-16074.4775 -7170.8628 -12916.2305]","419":"[-16074.0234 -7684.834 -12916.6201]","420":"[-16065.5342 -8197.127 -12916.4131]","421":"[-16040.1084 -8716.0928 -12916.3906]","422":"[-15995.6309 -9232.4219 -12916.2871]","423":"[-15930.1758 -9744.6143 -12916.3574]","424":"[-15840.6592 -10251.3604 -12916.4072]","425":"[-15726.3799 -10751.6104 -12916.5098]","426":"[-15581.9453 -11251.085 -12916.5996]","427":"[-15406.7695 -11738.8115 -12916.5479]","428":"[-15198.9805 -12211.4678 -12916.6514]","429":"[-14957.7676 -12665.6025 -12916.6299]","430":"[-14680.1982 -13101.0215 -12916.6523]","431":"[-14366.4902 -13511.0488 -12916.5967]","432":"[-14019.7969 -13890.4951 -12916.6494]","433":"[-13636.3838 -14242.1553 -12916.5605]","434":"[-13224.9346 -14556.8213 -12916.5088]","435":"[-12790.4072 -14834.7646 -12916.668]","436":"[-12337.1406 -15076.7695 -12916.501]","437":"[-11860.6387 -15285.749 -12916.6348]","438":"[-11372.6533 -15460.8867 -12916.5938]","439":"[-10876.4209 -15605.1406 -12916.5752]","440":"[-10374.2285 -15720.1426 -12916.4561]","441":"[-9867.9658 -15809.3994 -12916.417]","442":"[-9353.5557 -15875.2354 -12916.4932]","443":"[-8838.125 -15920.001 -12916.5254]","444":"[-8322.6201 -15944.7734 -12916.5264]","445":"[-7807.7271 -15953.5674 -12916.4697]","446":"[-7293.9409 -15954.8564 -12916.5332]","447":"[-6777.2871 -15955.0645 -12906.5576]","448":"[-6262.9336 -15955.6035 -12877.5264]","449":"[-5748.6128 -15955.1436 -12828.0908]","450":"[-5235.1172 -15954.7646 -12770.6973]","451":"[-4724.0034 -15954.9414 -12710.3838]","452":"[-4211.5806 -15954.9746 -12648.3701]","453":"[-3699.6775 -15953.9609 -12585.8857]","454":"[-3188.6401 -15954.6543 -12523.1406]","455":"[-2677.5225 -15955.126 -12460.4209]","456":"[-2165.9651 -15954.5957 -12397.6152]","457":"[-1653.9159 -15954.5811 -12334.7422]","458":"[-1142.2128 -15954.5371 -12271.876]","459":"[-629.0639 -15954.4463 -12208.8477]","460":"[-117.6797 -15954.958 -12146.041]","461":"[393.867 -15954.6729 -12083.2314]","462":"[905.9209 -15954.3242 -12020.3555]","463":"[1417.3564 -15955.3008 -11957.5352]","464":"[1928.155 -15954.4307 -11894.9033]","465":"[2440.9285 -15955.0762 -11831.8994]","466":"[2952.7073 -15954.1885 -11769.668]","467":"[3463.3872 -15954.7725 -11708.4424]","468":"[3975.167 -15954.4824 -11649.5234]","469":"[4486.9531 -15954.6074 -11595.376]","470":"[5001.9678 -15955.0234 -11554.1025]","471":"[5520.4482 -15954.748 -11535.251]","472":"[6033.6157 -15954.6582 -11532.4551]","473":"[6553.2598 -15954.5254 -11532.4209]","474":"[7071.292 -15954.1318 -11532.3965]","475":"[7587.8447 -15944.8477 -11532.3672]","476":"[8102.3027 -15920.3037 -11532.3311]","477":"[8612.9365 -15876.8242 -11532.3506]","478":"[9127.042 -15811.4492 -11532.458]","479":"[9636.0488 -15722.0518 -11532.4795]","480":"[10137.9834 -15607.3691 -11532.4688]","481":"[10630.9639 -15465.1641 -11532.4814]","482":"[11120.4102 -15289.7715 -11532.4746]","483":"[11595.2295 -15082.6221 -11532.3887]","484":"[12051.3525 -14841.292 -11532.5723]","485":"[12484.5898 -14565.0176 -11532.7783]","486":"[12897.9629 -14249.6309 -11532.6523]","487":"[13280.3457 -13900.7842 -11532.6846]","488":"[13628.9961 -13521.3252 -11532.6143]","489":"[13941.3193 -13114.1504 -11532.5215]","490":"[14220.3594 -12680.3496 -11532.6641]","491":"[14463.1582 -12225.8008 -11532.6152]","492":"[14670.6309 -11756.1729 -11532.5]","493":"[14847.8271 -11267.0313 -11532.5117]","494":"[14992.8604 -10769.1914 -11532.4746]","495":"[15108.5273 -10265.373 -11532.4404]","496":"[15199.0986 -9757.9102 -11532.5098]","497":"[15265.1016 -9248.0566 -11532.6162]","498":"[15309.5488 -8737.1943 -11532.5]","499":"[15335.2539 -8217.9883 -11532.4512]","500":"[15344.6885 -7699.4766 -11532.4453]","501":"[15345.6143 -7182.2881 -11532.3926]","502":"[15345.8809 -6662.1587 -11522.6846]","503":"[15346.6367 -6148.3916 -11493.8779]","504":"[15345.6504 -5635.4585 -11444.7305]","505":"[15345.5713 -5123.3545 -11387.5439]","506":"[15346.7441 -4610.9102 -11327.3281]","507":"[15345.7852 -4098.8428 -11265.3516]","508":"[15345.1699 -3588.1116 -11202.876]","509":"[15345.9922 -3075.3513 -11139.9111]","510":"[15345.6289 -2564.2427 -11077.1514]","511":"[15346.1699 -2052.6301 -11014.3359]","512":"[15345.04 -1540.8846 -10951.4883]","513":"[15346.375 -1028.6575 -10888.6025]","514":"[15345.3984 -518.1984 -10825.9619]","515":"[15345.7266 -6.1599 -10763.5693]","516":"[15345.627 505.1206 -10702.3477]","517":"[15345.2656 1017.4252 -10643.0146]","518":"[15345.8496 1530.9784 -10588.2461]","519":"[15345.9551 2045.7305 -10545.6699]","520":"[15345.8555 2561.863 -10524.8193]","521":"[15345.2813 3075.2786 -10521.4668]","522":"[15342.3633 3595.0676 -10521.5]","523":"[15329.0098 4112.9395 -10521.3838]","524":"[15295.7979 4628.4038 -10521.4902]","525":"[15243.0938 5140.8579 -10521.4473]","526":"[15169.0781 5648.9702 -10521.5127]","527":"[15069.0215 6159.2754 -10521.335]","528":"[14941.8857 6661.2686 -10521.542]","529":"[14786.0127 7153.3442 -10521.6689]","530":"[14599.5176 7632.7334 -10521.7207]","531":"[14380.1748 8095.9341 -10521.5928]","532":"[14122.4189 8547.1182 -10521.5381]","533":"[13831.2178 8971.4824 -10521.6143]","534":"[13506.2178 9367.8232 -10521.6348]","535":"[13142.9619 9738.3203 -10521.625]","536":"[12750.2051 10073.9121 -10521.6787]","537":"[12331.8418 10373.2705 -10521.6572]","538":"[11891.8486 10635.9023 -10521.4736]","539":"[11426.8926 10866.0313 -10521.5566]","540":"[10948.2188 11060.9609 -10521.4609]","541":"[10459.5684 11223.3721 -10521.5068]","542":"[9959.5869 11356.4326 -10521.4424]","543":"[9452.6455 11462.1602 -10521.5898]","544":"[8942.4854 11542.4316 -10521.4297]","545":"[8430.7344 11599.7139 -10521.4414]","546":"[7918.4961 11636.6982 -10521.3818]","547":"[7406.4741 11654.2656 -10521.377]","548":"[6886.769 11659.9512 -10521.4658]","549":"[6368.2832 11658.9238 -10521.4502]","550":"[5851.103 11658.9375 -10521.4355]","551":"[5335.8579 11660.1094 -10521.5273]","552":"[4822.2773 11658.1201 -10521.5361]","553":"[4309.9263 11657.8467 -10521.4463]","554":"[3790.4023 11659.5059 -10521.459]","555":"[3272.0796 11658.0635 -10521.4502]","556":"[2754.9087 11658.7549 -10521.4531]","557":"[2238.8821 11658.6338 -10521.4531]","558":"[1724.9816 11658.3818 -10521.4707]","559":"[1204.9137 11658.5762 -10521.5332]","560":"[685.9205 11658.6563 -10521.4248]","561":"[167.9899 11658.3418 -10521.4189]","562":"[-348.848 11659.1729 -10521.46]","563":"[-864.6102 11658.5039 -10521.4551]","564":"[-1379.2941 11658.9736 -10521.4541]","565":"[-1892.8937 11658.582 -10521.4531]","566":"[-2405.427 11658.7939 -10521.4668]","567":"[-2925.3713 11658.751 -10521.5146]","568":"[-3444.1812 11658.6934 -10521.4189]","569":"[-3961.8997 11658.9561 -10521.3711]","570":"[-4478.4941 11659.0713 -10521.5586]","571":"[-4993.9844 11658.915 -10521.4609]","572":"[-5508.3257 11658.7139 -10521.374]","573":"[-6021.2554 11659.7646 -10521.3408]","574":"[-6541.2163 11658.7676 -10521.5811]","575":"[-7059.6235 11658.4336 -10521.5068]","576":"[-7576.4023 11658.0732 -10521.4082]","577":"[-8090.7334 11640.1357 -10521.417]","578":"[-8600.6055 11588.8467 -10521.4307]","579":"[-9107.667 11492.3311 -10521.3477]","580":"[-9604.4561 11338.4824 -10521.5156]","581":"[-10071.9639 11120.7432 -10521.5879]","582":"[-10503.042 10830.2871 -10521.6719]","583":"[-10874.5322 10473.1689 -10521.4199]","584":"[-11181.2441 10053.4307 -10521.6289]","585":"[-11415.1133 9592.5342 -10521.4531]","586":"[-11582.3506 9105.1553 -10521.5566]","587":"[-11692.4502 8597.4023 -10521.3682]","588":"[-11753.2256 8083.0825 -10521.4629]","589":"[-11775.8262 7566.978 -10521.3291]","590":"[-11780.3066 7051.6978 -10521.498]","591":"[-11779.6475 6537.8086 -10521.4814]","592":"[-11768.8857 6017.7891 -10521.1445]","593":"[-11709.1465 5507.3281 -10521.1396]","594":"[-11569.9561 5010.8228 -10521.6025]","595":"[-11361.4824 4536.894 -10521.5596]","596":"[-11098.5088 4092.3928 -10521.5488]","597":"[-10793.3135 3678.7966 -10521.5371]","598":"[-10456.6885 3292.9275 -10521.0547]","599":"[-10096.0859 2918.2283 -10520.3057]","600":"[-9728.5938 2551.3325 -10520.3047]","601":"[-9363.6729 2186.0552 -10520.5098]","602":"[-8999.0234 1822.1549 -10520.4785]","603":"[-8636.1924 1457.9723 -10520.4619]","604":"[-8272.7646 1095.9276 -10520.4189]","605":"[-7905.3745 727.3884 -10520.5322]","606":"[-7538.1436 360.2902 -10520.4844]","607":"[-7171.4009 -5.6853 -10520.541]","608":"[-6806.1494 -371.4585 -10520.4404]","609":"[-6441.7295 -736.4481 -10520.5508]","610":"[-6077.5186 -1100.0186 -10520.4336]","611":"[-5714.0669 -1462.7487 -10520.5371]","612":"[-5352.0703 -1825.3297 -10520.4873]","613":"[-4985.0986 -2193.2017 -10520.9131]","614":"[-4616.3687 -2557.1428 -10520.9863]","615":"[-4223.1582 -2885.7583 -10521.1357]","616":"[-3786.728 -3157.9656 -10521.5879]","617":"[-3314.7383 -3363.5542 -10521.5811]","618":"[-2822.9019 -3506.2007 -10521.54]","619":"[-2312.4644 -3596.8142 -10521.3906]","620":"[-1797.9023 -3642.8792 -10521.3223]","621":"[-1283.0155 -3657.1011 -10521.3613]","622":"[-764.3973 -3658.8748 -10521.4629]","623":"[-245.7268 -3658.8677 -10521.458]","624":"[271.8557 -3658.7637 -10521.4551]","625":"[788.3609 -3658.2813 -10521.4531]","626":"[1303.7826 -3658.8354 -10521.4531]","627":"[1818.1407 -3658.5042 -10521.4756]","628":"[2331.4131 -3659.0222 -10521.3379]","629":"[2849.1011 -3685.7764 -10521.2852]","630":"[3361.5022 -3773.334 -10521.2373]","631":"[3852.3875 -3940.4255 -10521.3301]","632":"[4313.9155 -4172.7393 -10521.4844]","633":"[4744.4722 -4452.7959 -10521.5859]","634":"[5151.9307 -4774.7207 -10521.1963]","635":"[5533.3203 -5124.2734 -10521.417]","636":"[5901.5938 -5486.1934 -10521.4551]","637":"[6265.209 -5851.1807 -10521.4531]","638":"[6629.1274 -6214.2886 -10521.4521]","639":"[6991.8457 -6577.0273 -10521.4531]","640":"[7359.543 -6945.0713 -10521.4053]","641":"[7726.7061 -7312.043 -10521.4502]","642":"[8093.0576 -7678.1929 -10521.5371]","643":"[8450.5322 -8053.5547 -10521.2334]","644":"[8766.9307 -8460.2217 -10521.2148]","645":"[9016.835 -8913.2764 -10521.4268]","646":"[9199.6787 -9393.2002 -10521.6201]","647":"[9325.5 -9897.8369 -10521.5439]","648":"[9400.1641 -10411.0117 -10521.2363]","649":"[9432.6094 -10923.0811 -10521.4287]","650":"[9424.7422 -11443.3867 -10521.2939]","651":"[9375.8193 -11959.0537 -10521.5918]","652":"[9282.9658 -12464.8887 -10521.3809]","653":"[9133.2168 -12961.9639 -10521.499]","654":"[8921.2246 -13429.8594 -10521.5986]","655":"[8637.2637 -13862.4805 -10521.5693]","656":"[8284.6104 -14240.2588 -10521.499]","657":"[7872.7388 -14550.0225 -10521.417]","658":"[7418.6992 -14788.0381 -10521.543]","659":"[6929.625 -14961.835 -10521.4395]","660":"[6425.1572 -15075.7158 -10521.543]","661":"[5914.0371 -15140.6904 -10521.2813]","662":"[5401.3101 -15166.4072 -10521.4766]","663":"[4881.0454 -15171.9316 -10521.4277]","664":"[4362.0806 -15170.8555 -10521.4561]","665":"[3844.2698 -15171.1113 -10521.4531]","666":"[3327.5918 -15171.9326 -10521.4512]","667":"[2807.4324 -15170.9805 -10521.4775]","668":"[2295.4309 -15171.4453 -10521.4854]","669":"[1775.8087 -15171.6836 -10521.3965]","670":"[1257.2615 -15171.1533 -10521.4678]","671":"[739.7901 -15171.458 -10521.4746]","672":"[223.3935 -15171.1865 -10521.4639]","673":"[-291.9331 -15171.2207 -10521.4561]","674":"[-806.1935 -15172.0234 -10521.4531]","675":"[-1319.3759 -15170.8027 -10521.4912]","676":"[-1831.4642 -15171.752 -10521.5078]","677":"[-2350.9702 -15170.791 -10521.5068]","678":"[-2869.364 -15171.8213 -10521.5078]","679":"[-3386.6123 -15170.9385 -10521.4902]","680":"[-3902.7297 -15171.6416 -10521.4609]","681":"[-4417.7363 -15171.459 -10521.4561]","682":"[-4931.6372 -15171.1846 -10521.4531]","683":"[-5444.4355 -15171.8545 -10521.4785]","684":"[-5964.4985 -15170.9063 -10521.4707]","685":"[-6483.4058 -15171.6426 -10521.5107]","686":"[-7000.7856 -15169.5967 -10521.4277]","687":"[-7513.3833 -15158.1016 -10521.5156]","688":"[-8031.938 -15127.6709 -10521.4453]","689":"[-8547.5283 -15078.1289 -10521.542]","690":"[-9058.2344 -15006.1611 -10521.4678]","691":"[-9563.2188 -14911 -10521.5732]","692":"[-10060.9219 -14789.5928 -10521.3818]","693":"[-10556.9473 -14637.8145 -10521.5791]","694":"[-11039.7061 -14454.8467 -10521.5186]","695":"[-11506.9199 -14239.7813 -10521.6016]","696":"[-11954.7354 -13990.9131 -10521.6748]","697":"[-12385.9375 -13703.0176 -10521.6621]","698":"[-12790.2061 -13379.9199 -10521.6025]","699":"[-13166.043 -13020.7119 -10521.5977]","700":"[-13507.0049 -12631.0898 -10521.6729]","701":"[-13812.0273 -12215.3213 -10521.6221]","702":"[-14079.499 -11776.7969 -10521.5264]","703":"[-14314.5947 -11312.7979 -10521.584]","704":"[-14514.5449 -10834.8721 -10521.4961]","705":"[-14681.1582 -10346.4453 -10521.458]","706":"[-14817.2314 -9850.3174 -10521.4756]","707":"[-14925.2539 -9348.8408 -10521.4697]","708":"[-15009.4521 -8835.7998 -10521.5137]","709":"[-15070.0381 -8321.0713 -10521.4092]","710":"[-15109.2715 -7803.9131 -10521.293]","711":"[-15129.5654 -7284.5752 -10521.3281]","712":"[-15136.0273 -6766.7598 -10521.4629]","713":"[-15136.583 -6250.0527 -10521.4844]","714":"[-15136.3281 -5734.415 -10521.458]","715":"[-15136.2588 -5219.8647 -10521.4551]","716":"[-15136.3301 -4706.3828 -10521.4531]","717":"[-15136.0762 -4193.9722 -10521.457]","718":"[-15136.7646 -3674.1089 -10521.5322]","719":"[-15136.2246 -3155.3643 -10521.4717]","720":"[-15136.5518 -2637.7632 -10521.4639]","721":"[-15136.2256 -2121.314 -10521.4727]","722":"[-15136.4307 -1605.981 -10521.459]","723":"[-15136.2461 -1091.7545 -10521.4561]","724":"[-15136.5605 -578.6236 -10521.4541]","725":"[-15136.5811 -66.5868 -10521.4541]","726":"[-15136.6484 452.7386 -10521.4551]","727":"[-15136.1289 970.6085 -10520.3242]","728":"[-15136.3164 1482.3792 -10503.7002]","729":"[-15135.8428 1995.6334 -10465.7373]","730":"[-15135.5596 2508.3066 -10412.8975]","731":"[-15135.8877 3020.4053 -10354.2461]","732":"[-15136.209 3533.6606 -10293.209]","733":"[-15136.2109 4044.25 -10231.7266]","734":"[-15136.084 4555.6206 -10171.1387]","735":"[-15136.6689 5069.6865 -10112.6543]","736":"[-15136.5596 5583.0176 -10060.4541]","737":"[-15136.1709 6098.6016 -10024.7158]","738":"[-15129.792 6612.3696 -10010.4717]","739":"[-15110.999 7131.2065 -10009.3818]","740":"[-15072.4697 7646.354 -10009.543]","741":"[-15013.4814 8157.2554 -10009.5518]","742":"[-14932.0703 8663.6523 -10009.4482]","743":"[-14824.0732 9172.2598 -10009.376]","744":"[-14688.8857 9671.5313 -10009.624]","745":"[-14524.2148 10159.9707 -10009.4453]","746":"[-14328.0322 10634.2334 -10009.5498]","747":"[-14094.9863 11098.7207 -10009.6602]","748":"[-13829.5225 11538.4629 -10009.6055]","749":"[-13529.2773 11954.0439 -10009.6445]","750":"[-13189.167 12346.335 -10009.6377]","751":"[-12817.5771 12705.7578 -10009.5996]","752":"[-12417.6416 13029.9141 -10009.5107]","753":"[-11992.96 13317.1553 -10009.5615]","754":"[-11541.4141 13572.3457 -10009.5859]","755":"[-11073.418 13790.7529 -10009.5947]","756":"[-10593.252 13974.8779 -10009.6104]","757":"[-10103.8838 14127.3584 -10009.6777]","758":"[-9599.9346 14252.79 -10009.2881]","759":"[-9091.4111 14350.5986 -10009.3682]","760":"[-8583.9434 14423.7344 -10009.3203]","761":"[-8073.9697 14474.7949 -10009.4473]","762":"[-7555.5605 14505.8574 -10009.4209]","763":"[-7038.4102 14519.1084 -10009.4424]","764":"[-6522.5459 14522.7998 -10009.4521]","765":"[-6007.7813 14522.2783 -10009.5078]","766":"[-5494.0845 14522.3711 -10009.376]","767":"[-4981.4834 14521.7959 -10009.4541]","768":"[-4461.4395 14522.0605 -10009.4551]","769":"[-3942.4883 14522.0664 -10009.4521]","770":"[-3424.6436 14522.2891 -10009.3428]","771":"[-2907.8796 14522.2383 -10009.4844]","772":"[-2392.2378 14522.0088 -10009.417]","773":"[-1877.7117 14522.3672 -10009.4971]","774":"[-1364.301 14522.1494 -10009.4189]","775":"[-852.0064 14522.0313 -10009.4541]","776":"[-332.4465 14521.9336 -10009.4521]","777":"[185.9746 14521.9912 -10009.4531]","778":"[703.2646 14522.3887 -10009.4463]","779":"[1219.4073 14521.9121 -10009.4199]","780":"[1736.4364 14522.4775 -10009.5039]","781":"[2256.5811 14522.2256 -10009.499]","782":"[2775.6431 14522.959 -10009.4395]","783":"[3293.6133 14522.3184 -10009.458]","784":"[3810.51 14522.3857 -10009.4551]","785":"[4326.3423 14522.6338 -10009.4521]","786":"[4841.0874 14521.8525 -10009.4375]","787":"[5354.7593 14522.5049 -10009.4766]","788":"[5867.3252 14522.21 -10009.4951]","789":"[6387.3096 14520.9189 -10009.3896]","790":"[6905.8154 14508.9629 -10009.4023]","791":"[7422.1646 14480.1895 -10009.501]","792":"[7935.0317 14431.958 -10009.499]","793":"[8443.291 14362.2949 -10009.6309]","794":"[8954.4668 14267.6631 -10009.54]","795":"[9454.5322 14147.541 -10009.5264]","796":"[9945.9355 13999.4023 -10009.54]","797":"[10433.041 13817.5938 -10009.5791]","798":"[10904.1563 13602.8311 -10009.5488]","799":"[11355.7197 13353.9668 -10009.6689]","800":"[11784.0127 13071.2891 -10009.6602]","801":"[12191.502 12748.8945 -10009.6074]","802":"[12567.3838 12393.2949 -10009.6309]","803":"[12908.8057 12007.5146 -10009.502]","804":"[13214.1377 11595.4727 -10009.7158]","805":"[13487.3018 11153.9248 -10009.6494]","806":"[13722.8721 10695.3008 -10009.5762]","807":"[13923.2119 10223.2871 -10009.5967]","808":"[14093.042 9732.1406 -10009.5537]","809":"[14232.0088 9233.3135 -10009.4697]","810":"[14342.8125 8729.2891 -10009.4121]","811":"[14427.4111 8221.7041 -10009.4023]","812":"[14489.1143 7712.1118 -10009.4658]","813":"[14530.0225 7193.5562 -10009.4209]","814":"[14551.6191 6676.0562 -10009.5264]","815":"[14559.1455 6159.6719 -10009.4932]","816":"[14559.0391 5644.3657 -10009.4717]","817":"[14559.0146 5130.1826 -10009.459]","818":"[14559.0674 4617.0957 -10009.4551]","819":"[14559.0811 4096.7222 -10009.4531]","820":"[14559.4268 3577.4883 -10009.4268]","821":"[14559.3984 3059.3857 -10009.415]","822":"[14559.1416 2542.4451 -10009.376]","823":"[14559.1396 2024.3628 -10009.4707]","824":"[14559.4756 1512.1377 -10009.4512]","825":"[14559.3174 992.2941 -10009.457]","826":"[14559.2666 473.5057 -10009.4541]","827":"[14559.2861 -44.2241 -10009.4521]","828":"[14559.5449 -560.9041 -10009.4727]","829":"[14559.7939 -1076.5372 -10009.4834]","830":"[14559.2178 -1591.0861 -10009.3838]","831":"[14559.4502 -2104.5659 -10009.4629]","832":"[14559.5801 -2616.9744 -10009.4717]","833":"[14559.1982 -3136.8232 -10009.458]","834":"[14559.3486 -3655.5508 -10009.4551]","835":"[14559.334 -4173.1689 -10009.4541]","836":"[14559.1152 -4689.6748 -10009.4355]","837":"[14559.4805 -5205.0825 -10009.4795]","838":"[14559.3301 -5719.3706 -10009.4258]","839":"[14553.0479 -6232.3916 -10009.4785]","840":"[14534.5088 -6751.7295 -10009.5674]","841":"[14496.0234 -7267.8745 -10009.5107]","842":"[14436.6328 -7781.9565 -10009.5176]","843":"[14354.1152 -8295.249 -10009.3555]","844":"[14246.377 -8801.1592 -10009.5596]","845":"[14112.1621 -9298.1748 -10009.5498]","846":"[13948.415 -9784.4004 -10009.6348]","847":"[13749.3965 -10264.6201 -10009.5947]","848":"[13517.0742 -10727.3047 -10009.7305]","849":"[13250.4453 -11168.4863 -10009.5859]","850":"[12949.2666 -11584.1318 -10009.6582]","851":"[12609.001 -11976.7246 -10009.5996]","852":"[12234.3291 -12338.2656 -10009.5176]","853":"[11835.7217 -12660.2539 -10009.6289]","854":"[11405.7607 -12950.9883 -10009.584]","855":"[10955.0449 -13204.416 -10009.5664]","856":"[10487.7158 -13421.2021 -10009.5576]","857":"[10008.2354 -13604.418 -10009.4814]","858":"[9512.2627 -13758.6416 -10009.4951]","859":"[9009.7461 -13882.9219 -10009.4512]","860":"[8502.751 -13979.9229 -10009.3066]","861":"[7992.9937 -14051.8525 -10009.3271]","862":"[7482.3994 -14102.6494 -10009.3154]","863":"[6963.1372 -14133.9053 -10009.5332]","864":"[6444.3555 -14146.625 -10009.4707]","865":"[5926.8608 -14149.1768 -10009.376]","866":"[5410.6499 -14148.9561 -10009.458]","867":"[4897.3267 -14149.2246 -10009.4551]","868":"[4377.0698 -14149.4893 -10009.4521]","869":"[3857.877 -14149.4688 -10009.4131]","870":"[3339.7473 -14149.1455 -10009.4844]","871":"[2822.7173 -14149.4912 -10009.5293]","872":"[2306.7639 -14149.2461 -10009.4951]","873":"[1792.0841 -14149.4678 -10009.4971]","874":"[1278.8464 -14149.1113 -10009.4561]","875":"[758.5356 -14149.1641 -10009.5029]","876":"[239.3907 -14149.3018 -10009.4834]","877":"[-278.6018 -14149.0088 -10009.3682]","878":"[-795.3325 -14149.5566 -10009.3721]","879":"[-1310.506 -14149.5879 -10009.4482]","880":"[-1824.5256 -14149.3545 -10009.4092]","881":"[-2337.3796 -14149.5137 -10009.334]","882":"[-2857.0452 -14145.5459 -10009.1553]","883":"[-3369.0566 -14121.3809 -10009.21]","884":"[-3885.0286 -14057.7402 -10009.5068]","885":"[-4389.6201 -13948.4346 -10009.3887]","886":"[-4875.6978 -13783.5557 -10009.5449]","887":"[-5338.8589 -13551.4668 -10009.458]","888":"[-5756.8359 -13252.8135 -10009.3096]","889":"[-6136.3262 -12908.9883 -10009.2656]","890":"[-6501.7832 -12541.498 -10009.3945]","891":"[-6868.397 -12177.1689 -10009.4707]","892":"[-7236.7852 -11809.3125 -10009.4482]","893":"[-7604.4761 -11440.7471 -10009.5039]","894":"[-7971.5039 -11073.0752 -10009.4395]","895":"[-8338.4502 -10706.8955 -10009.3672]","896":"[-8704.376 -10341.2988 -10009.4727]","897":"[-9069.1357 -9976.127 -10009.5254]","898":"[-9433.1035 -9611.7158 -10009.4668]","899":"[-9796.8633 -9248.6514 -10009.3574]","900":"[-10159.0811 -8885.5801 -10009.3359]","901":"[-10527.3506 -8518.0537 -10009.5459]","902":"[-10894.2041 -8150.7158 -10009.5156]","903":"[-11260.1113 -7784.7803 -10009.1895]","904":"[-11623.7188 -7419.9644 -10009.1367]","905":"[-11972.6445 -7045.1313 -10009.5137]","906":"[-12297.0205 -6648.4106 -10009.4199]","907":"[-12586.1338 -6225.5474 -10009.6416]","908":"[-12830.0195 -5769.2192 -10009.7764]","909":"[-13011.2246 -5288.9595 -10009.4326]","910":"[-13118.1143 -4782.5469 -10009.4258]","911":"[-13154.6826 -4267.9448 -10009.2373]","912":"[-13157.5332 -3752.9011 -10009.4756]","913":"[-13158.5283 -3239.0239 -10009.3076]","914":"[-13157.2891 -2726.2727 -10009.4639]","915":"[-13158.2744 -2206.3081 -10009.4697]","916":"[-13157.8125 -1687.4976 -10009.459]","917":"[-13158.0518 -1169.834 -10009.4551]","918":"[-13158.3564 -653.3178 -10009.3701]","919":"[-13148.5889 -136.3253 -10009.4023]","920":"[-13113.8047 380.1443 -10009.3916]","921":"[-13034.8721 888.5176 -10009.3584]","922":"[-12903.1963 1389.7212 -10009.4336]","923":"[-12711.8066 1866.8231 -10009.376]","924":"[-12450.4248 2314.1726 -10009.4785]","925":"[-12118.5693 2710.7363 -10009.3896]","926":"[-11730.5723 3036.8484 -10009.5566]","927":"[-11289.6895 3297.6455 -10009.4873]","928":"[-10809.3301 3492.7295 -10009.4092]","929":"[-10309.8301 3625.0835 -10009.4404]","930":"[-9800.9805 3705.29 -10009.2744]","931":"[-9289.1514 3741.8901 -10008.1494]","932":"[-8771.2686 3752.6987 -9990.3369]","933":"[-8258.4961 3751.4688 -9951.9688]","934":"[-7744.6553 3751.6489 -9898.5527]","935":"[-7233.062 3751.9626 -9839.9336]","936":"[-6720.8774 3752.7017 -9778.8184]","937":"[-6209.375 3751.9846 -9717.335]","938":"[-5698.3457 3752.127 -9656.6572]","939":"[-5184.4956 3752.6174 -9598.4287]","940":"[-4670.0283 3752.5195 -9546.6807]","941":"[-4156.3232 3752.2334 -9511.582]","942":"[-3638.3379 3745.1145 -9497.9932]","943":"[-3120.7 3725.678 -9497.457]","944":"[-2606.5117 3686.5984 -9497.4795]","945":"[-2090.4019 3625.7097 -9497.5273]","946":"[-1579.9265 3542.2866 -9497.5049]","947":"[-1076.1515 3434.2075 -9497.5869]","948":"[-580.7645 3298.2214 -9497.5801]","949":"[-96.0081 3133.208 -9497.3691]","950":"[382.5576 2933.887 -9497.459]","951":"[843.6133 2700.9502 -9497.5518]","952":"[1282.8044 2432.9888 -9497.6865]","953":"[1696.7711 2131.231 -9497.5557]","954":"[2087.7537 1790.6322 -9497.6289]","955":"[2444.5869 1419.6426 -9497.5273]","956":"[2770.2224 1014.0372 -9497.6006]","957":"[3058.8774 583.7493 -9497.458]","958":"[3310.9106 133.1951 -9497.5596]","959":"[3526.4312 -333.5839 -9497.5859]","960":"[3710.9299 -820.2642 -9497.4873]","961":"[3863.3833 -1315.9879 -9497.4629]","962":"[3986.4302 -1818.1268 -9497.3223]","963":"[4082.0205 -2324.6765 -9497.4707]","964":"[4153.1104 -2833.8198 -9497.3232]","965":"[4203.1543 -3343.7791 -9497.541]","966":"[4233.6704 -3862.2966 -9497.1992]","967":"[4244.4546 -4380.3359 -9497.4268]","968":"[4237.6367 -4893.3027 -9497.5049]","969":"[4212.4502 -5405.2329 -9497.3613]","970":"[4167.5879 -5922.8276 -9497.3262]","971":"[4100.8057 -6436.1851 -9497.4238]","972":"[4010.9551 -6943.5884 -9497.4238]","973":"[3895.9502 -7442.7231 -9497.3877]","974":"[3750.6738 -7940.9722 -9497.5371]","975":"[3574.7129 -8427.1484 -9497.4688]","976":"[3366.9666 -8898.4531 -9497.4727]","977":"[3125.9082 -9351.1191 -9497.5693]","978":"[2845.5161 -9787.8613 -9497.541]","979":"[2533.9077 -10194.251 -9497.5654]","980":"[2182.1985 -10578.0244 -9497.6094]","981":"[1798.9386 -10927.0732 -9497.5986]","982":"[1388.2037 -11239.9404 -9497.6895]","983":"[954.5222 -11516.585 -9497.6875]","984":"[501.7322 -11756.8711 -9497.4668]","985":"[26.2413 -11965.0039 -9497.6865]","986":"[-460.2421 -12139.4014 -9497.5039]","987":"[-955.1085 -12282.5244 -9497.5273]","988":"[-1455.8251 -12397.1855 -9497.4795]","989":"[-1960.2365 -12485.584 -9497.502]","990":"[-2474.822 -12551.7588 -9497.4346]","991":"[-2990.3979 -12596.1152 -9497.4287]","992":"[-3510.1792 -12621.248 -9497.4668]","993":"[-4022.5647 -12627.5381 -9497.4092]","994":"[-4542.209 -12615.71 -9497.4316]","995":"[-5059.5938 -12584.4932 -9497.5479]","996":"[-5574.1196 -12533.9785 -9497.3828]","997":"[-6083.9253 -12460.9434 -9497.3779]","998":"[-6587.3911 -12364.4922 -9497.2988]","999":"[-7091.2075 -12239.7666 -9497.5234]","1000":"[-7584.7642 -12086.8223 -9497.4609]","1001":"[-8065.1719 -11902.8623 -9497.5127]","1002":"[-8529.9766 -11686.9424 -9497.5449]","1003":"[-8982.1641 -11432.6094 -9497.6377]","1004":"[-9410.8027 -11142.8779 -9497.6533]","1005":"[-9815.2197 -10815.4014 -9497.6211]","1006":"[-10188.0938 -10455.5049 -9497.5908]","1007":"[-10525.9043 -10065.3584 -9497.7041]","1008":"[-10827.3281 -9649.2676 -9497.5039]","1009":"[-11096.2744 -9203.9473 -9497.5391]","1010":"[-11328.1455 -8740.374 -9497.6758]","1011":"[-11525.5166 -8262.9766 -9497.4609]","1012":"[-11689.291 -7774.8169 -9497.5762]","1013":"[-11823.4121 -7279.5137 -9497.4512]","1014":"[-11931.0898 -6770.7842 -9497.4775]","1015":"[-12013.4512 -6258.7954 -9497.4111]","1016":"[-12072.1992 -5744.9956 -9497.3926]","1017":"[-12110.5527 -5225.9595 -9497.415]","1018":"[-12129.4814 -4706.1411 -9497.1367]","1019":"[-12135.1621 -4186.9258 -9482.0732]","1020":"[-12134.6348 -3672.4766 -9446.7803]","1021":"[-12134.623 -3159.2085 -9394.4287]","1022":"[-12135.2041 -2647.4822 -9336.2705]","1023":"[-12135.2959 -2135.0886 -9275.3096]","1024":"[-12135.3506 -1623.4022 -9213.1748]","1025":"[-12135.5879 -1111.9685 -9150.5762]","1026":"[-12135.6514 -599.2625 -9087.6328]","1027":"[-12135.6689 -88.2999 -9024.8945]","1028":"[-12135.5801 423.2002 -8962.0898]","1029":"[-12135.0654 935.9566 -8899.1338]","1030":"[-12135.3242 1446.9442 -8836.3311]","1031":"[-12134.9219 1958.481 -8773.6162]","1032":"[-12135.4395 2470.6338 -8711.459]","1033":"[-12135.6768 2982.3157 -8650.5107]","1034":"[-12135.4492 3495.6199 -8592.2676]","1035":"[-12135.2988 4008.2268 -8539.9023]","1036":"[-12135.251 4524.77 -8503.0342]","1037":"[-12123.1992 5043.3364 -8488.2031]","1038":"[-12083.6445 5559.5747 -8486.9883]","1039":"[-11999.5527 6066.8105 -8486.7012]","1040":"[-11861.4492 6566.4644 -8486.7314]","1041":"[-11660.9668 7044.2876 -8486.6934]","1042":"[-11392.4189 7482.6855 -8486.832]","1043":"[-11051.4668 7872.9736 -8486.8955]","1044":"[-10651.1777 8195.6074 -8486.8896]","1045":"[-10198.6455 8450.1924 -8486.7891]","1046":"[-9715.627 8635.5039 -8486.6787]","1047":"[-9218.625 8758.7773 -8486.7549]","1048":"[-8704.8711 8832.8701 -8486.7002]","1049":"[-8188.583 8864.5176 -8486.2969]","1050":"[-7673.3057 8872.9258 -8486.291]","1051":"[-7160.9326 8871.0488 -8486.4512]","1052":"[-6641.229 8871.6953 -8486.3477]","1053":"[-6122.7256 8872.707 -8486.4785]","1054":"[-5605.4355 8872.0869 -8486.4756]","1055":"[-5089.3208 8871.5137 -8486.4609]","1056":"[-4574.3628 8871.8945 -8486.46]","1057":"[-4060.5479 8871.792 -8486.4941]","1058":"[-3547.8694 8871.7861 -8486.4121]","1059":"[-3027.9783 8872.0723 -8486.4424]","1060":"[-2509.2668 8871.6963 -8486.5322]","1061":"[-1991.7151 8872.0596 -8486.4795]","1062":"[-1475.3446 8871.9746 -8486.5127]","1063":"[-957.7928 8872.2813 -8486.4336]","1064":"[-437.4679 8871.6787 -8486.5322]","1065":"[81.7649 8871.6572 -8486.501]","1066":"[599.8956 8872.1641 -8486.4355]","1067":"[1116.9335 8871.7158 -8486.4443]","1068":"[1632.8992 8871.6543 -8486.4756]","1069":"[2147.811 8871.7402 -8486.3604]","1070":"[2661.6399 8872.2363 -8486.46]","1071":"[3174.4126 8871.5107 -8486.4541]","1072":"[3694.6252 8871.627 -8486.4541]","1073":"[4213.7095 8870.9648 -8486.3662]","1074":"[4731.3848 8860.5762 -8486.4424]","1075":"[5247.0127 8834.3105 -8486.4893]","1076":"[5759.5249 8788.2793 -8486.3867]","1077":"[6268 8721.4736 -8486.3936]","1078":"[6779.3994 8629.458 -8486.4658]","1079":"[7283.5835 8511.666 -8486.584]","1080":"[7781.4116 8364.2422 -8486.3818]","1081":"[8269.2178 8185.5571 -8486.6201]","1082":"[8741.5527 7974.2539 -8486.6455]","1083":"[9195.0752 7729.166 -8486.6309]","1084":"[9625.6641 7449.478 -8486.5762]","1085":"[10035.916 7130.1694 -8486.5137]","1086":"[10414.8115 6777.5537 -8486.6455]","1087":"[10759.4668 6394.5498 -8486.543]","1088":"[11068.3291 5985.0396 -8486.6953]","1089":"[11344.4785 5545.5815 -8486.6777]","1090":"[11582.8584 5089.8164 -8486.5771]","1091":"[11786.4131 4619.3267 -8486.459]","1092":"[11959.5 4129.2031 -8486.4863]","1093":"[12101.0889 3630.8848 -8486.4629]","1094":"[12214.3604 3126.917 -8486.4619]","1095":"[12301.6221 2619.5767 -8486.3232]","1096":"[12365.1641 2109.9993 -8486.3506]","1097":"[12407.4893 1599.4766 -8486.5313]","1098":"[12431.1777 1081.2227 -8486.4482]","1099":"[12439.1494 566.1353 -8475.4961]","1100":"[12439.5762 49.2818 -8444.7363]","1101":"[12440.2686 -463.5329 -8394.6152]","1102":"[12440.0381 -975.0377 -8337.2266]","1103":"[12439.8975 -1488.2159 -8276.6621]","1104":"[12440.2451 -1998.7141 -8214.7725]","1105":"[12439.9355 -2510.5012 -8152.1396]","1106":"[12440.4951 -3022.5979 -8089.249]","1107":"[12440.6221 -3534.0842 -8026.4482]","1108":"[12439.5742 -4045.707 -7963.6289]","1109":"[12440.5449 -4558.9424 -7900.6123]","1110":"[12440.4746 -5070.4116 -7837.8569]","1111":"[12440.5771 -5582.0195 -7775.0205]","1112":"[12439.9785 -6094.5034 -7712.6763]","1113":"[12440.6045 -6605.1587 -7651.5503]","1114":"[12440.5684 -7117.6431 -7592.4746]","1115":"[12440.2744 -7631.2612 -7538.2397]","1116":"[12439.8975 -8146.5771 -7497.0669]","1117":"[12432.2412 -8663.8193 -7478.0786]","1118":"[12401.5117 -9177.4502 -7474.9985]","1119":"[12326.2871 -9688.4932 -7475.2544]","1120":"[12201.2471 -10185.5547 -7475.2441]","1121":"[12016.3125 -10666.9111 -7475.5923]","1122":"[11761.2295 -11118.8389 -7475.4697]","1123":"[11437.9854 -11519.0586 -7475.4565]","1124":"[11049.0342 -11857.5049 -7475.478]","1125":"[10611.8564 -12124.8096 -7475.4175]","1126":"[10133.792 -12325.5186 -7475.5103]","1127":"[9635.7734 -12462.8389 -7475.1914]","1128":"[9128.208 -12547.0088 -7475.2466]","1129":"[8616.9492 -12587.3066 -7475.1978]","1130":"[8097.2183 -12599.4072 -7475.4253]","1131":"[7578.4512 -12599.0479 -7475.4478]","1132":"[7060.8389 -12599.0654 -7475.4526]","1133":"[6544.3574 -12599.5908 -7475.4512]","1134":"[6025.1484 -12599.8506 -7475.4507]","1135":"[5504.6724 -12599.1738 -7475.4756]","1136":"[4985.2661 -12599.3408 -7475.439]","1137":"[4466.9497 -12599.334 -7475.4487]","1138":"[3949.7292 -12599.6084 -7475.4155]","1139":"[3433.615 -12599.0449 -7475.5]","1140":"[2918.592 -12599.1201 -7475.4209]","1141":"[2404.8145 -12599.791 -7475.4712]","1142":"[1892.5146 -12599.4531 -7475.4141]","1143":"[1373.275 -12599.4785 -7475.4541]","1144":"[855.1445 -12599.4639 -7475.4521]","1145":"[338.1243 -12599.6113 -7475.4521]","1146":"[-177.7817 -12599.5254 -7475.4517]","1147":"[-692.5881 -12599.6406 -7475.5244]","1148":"[-1206.2775 -12599.0791 -7475.5]","1149":"[-1718.8525 -12599.9385 -7475.4365]","1150":"[-2238.6372 -12599.3916 -7475.3555]","1151":"[-2756.8574 -12599.5596 -7475.4561]","1152":"[-3273.4893 -12599.3564 -7475.4771]","1153":"[-3785.5156 -12599.3086 -7475.333]","1154":"[-4305.5469 -12599.0801 -7475.4097]","1155":"[-4824.5347 -12599.8604 -7475.3853]","1156":"[-5342.4102 -12599.2021 -7475.3657]","1157":"[-5858.8618 -12598.9014 -7475.4448]","1158":"[-6374.2271 -12598.1777 -7475.5352]","1159":"[-6887.9829 -12586.0313 -7475.4111]","1160":"[-7406.0405 -12543.5264 -7475.3613]","1161":"[-7917.6323 -12463.5205 -7475.561]","1162":"[-8424.6963 -12365.5596 -7475.3369]","1163":"[-8931.6211 -12284.0293 -7475.6206]","1164":"[-9448.1533 -12233.0039 -7475.5239]","1165":"[-9965.458 -12216.1104 -7475.3643]","1166":"[-10481.7803 -12215.084 -7475.501]","1167":"[-10997.0938 -12215.1367 -7475.457]","1168":"[-11517.4121 -12214.5781 -7475.543]","1169":"[-12036.6123 -12214.334 -7475.2964]","1170":"[-12554.7129 -12215.4385 -7475.4966]","1171":"[-13072.0488 -12208.2891 -7477.6685]","1172":"[-13586.8535 -12169.7979 -7481.1782]","1173":"[-14090.6455 -12068.5283 -7485.9712]","1174":"[-14574.1719 -11881.1494 -7489.3345]","1175":"[-14855.4658 -11710.4297 -7490.6753]","1176":"[-15138.3838 -11462.0869 -7491.0649]","1177":"[-15345.4688 -11202.8398 -7490.4692]","1178":"[-15543.1533 -10840.1328 -7488.3892]","1179":"[-15684.1475 -10419.5537 -7485.314]","1180":"[-15774.9023 -9913.166 -7480.5132]","1181":"[-15807.5205 -9401.3184 -7476.8501]","1182":"[-15813.0781 -8884.2607 -7475.0591]","1183":"[-15811.9053 -8369.7734 -7475.0674]","1184":"[-15812.6445 -7856.3789 -7475.064]","1185":"[-15812.5508 -7344.0625 -7475.0566]","1186":"[-15812.7158 -6824.2881 -7475.0947]","1187":"[-15811.8555 -6305.5967 -7474.9629]","1188":"[-15812.1504 -5788.0645 -7475.0977]","1189":"[-15807.2188 -5271.3086 -7477.1274]","1190":"[-15770.5732 -4756.7607 -7480.9077]","1191":"[-15671.9658 -4251.1489 -7485.6509]","1192":"[-15492.5918 -3770.9138 -7489.1294]","1193":"[-15318.3984 -3475.9656 -7490.4956]","1194":"[-15081.2607 -3199.2346 -7491.0063]","1195":"[-14816.7813 -2982.1997 -7490.5205]","1196":"[-14475.2412 -2790.126 -7488.8154]","1197":"[-14036.8105 -2636.3994 -7485.4351]","1198":"[-13525.2705 -2542.3088 -7480.6133]","1199":"[-13009.1602 -2509.394 -7476.9575]","1200":"[-12497.0342 -2502.8403 -7475.0767]","1201":"[-11979.5654 -2504.1177 -7475.0703]","1202":"[-11463.2695 -2503.7754 -7475.1514]","1203":"[-10948.1348 -2502.9795 -7475.0278]","1204":"[-10434.1172 -2504.1245 -7475.0679]","1205":"[-9921.2236 -2503.4956 -7475.1265]","1206":"[-9401.0488 -2503.4114 -7475.1152]","1207":"[-8882.041 -2503.6067 -7474.978]","1208":"[-8364.1953 -2503.4331 -7475.063]","1209":"[-7847.5249 -2504.1919 -7475.0508]","1210":"[-7332.7236 -2503.1479 -7475.0317]","1211":"[-6812.1123 -2504.0801 -7475.0806]","1212":"[-6292.6348 -2502.8916 -7475.0811]","1213":"[-5774.2729 -2503.8955 -7475.0479]","1214":"[-5256.9902 -2503.5625 -7475.0298]","1215":"[-4740.7861 -2503.9854 -7475.0137]","1216":"[-4225.729 -2502.7783 -7475.0747]","1217":"[-3711.8232 -2503.9419 -7475.0474]","1218":"[-3199.0142 -2503.4333 -7475.1104]","1219":"[-2678.7419 -2504.0217 -7475.0884]","1220":"[-2159.5818 -2503.1196 -7475.0732]","1221":"[-1641.566 -2503.8425 -7475.0747]","1222":"[-1124.7019 -2503.4026 -7475.0454]","1223":"[-608.9527 -2503.8132 -7475.0137]","1224":"[-94.3149 -2503.999 -7475.0728]","1225":"[419.2049 -2503.2422 -7475.1021]","1226":"[931.5927 -2504.0764 -7475.0054]","1227":"[1451.2319 -2503.2964 -7475.0713]","1228":"[1969.7103 -2503.7266 -7475.0718]","1229":"[2487.0193 -2503.7583 -7475.0728]","1230":"[3003.135 -2503.3887 -7475.0342]","1231":"[3522.0168 -2503.7036 -7475.0801]","1232":"[4042.1028 -2503.5732 -7475.0796]","1233":"[4559.7578 -2495.0078 -7475.0361]","1234":"[5073.5205 -2463.199 -7475.1885]","1235":"[5580.189 -2388.9014 -7475.2417]","1236":"[6082.7065 -2263.5154 -7475.3022]","1237":"[6563.5537 -2080.5879 -7475.125]","1238":"[7017.5039 -1829.17 -7474.7285]","1239":"[7424.0381 -1512.296 -7474.9751]","1240":"[7802.3862 -1155.4811 -7475.1108]","1241":"[8168.8262 -786.8887 -7475.0991]","1242":"[8535.0654 -419.7356 -7475.0952]","1243":"[8901.876 -54.7823 -7475.0776]","1244":"[9266.5889 310.6848 -7475.1128]","1245":"[9630.8213 675.0805 -7474.9712]","1246":"[9994.5889 1038.4017 -7475.0703]","1247":"[10357.3027 1401.2654 -7475.1069]","1248":"[10724.875 1769.8229 -7475.1553]","1249":"[11092.6953 2136.5269 -7475.0859]","1250":"[11458.7764 2503.3711 -7475.064]","1251":"[11824.9189 2868.561 -7475.1143]","1252":"[12189.5234 3233.6975 -7475.125]","1253":"[12553.8242 3597.5403 -7474.9517]","1254":"[12916.7861 3961.1238 -7475.0645]","1255":"[13279.0293 4323.834 -7475.1187]","1256":"[13647.7031 4690.3457 -7475.1211]","1257":"[14010.2129 5059.4282 -7474.6572]","1258":"[14356.9531 5439.2749 -7474.2188]","1259":"[14675.1514 5843.1025 -7474.4409]","1260":"[14953.4775 6276.0581 -7474.4263]","1261":"[15178.1318 6744.478 -7474.4819]","1262":"[15327.6602 7237.7993 -7473.5093]","1263":"[15396.9775 7750.8496 -7468.584]","1264":"[15381.6758 8270.585 -7456.1172]","1265":"[15278.3848 8772.126 -7435.7705]","1266":"[15095.9922 9252.2041 -7406.9556]","1267":"[14852.9756 9708.2266 -7368.6841]","1268":"[14566.8584 10139.4365 -7320.0737]","1269":"[14245.7842 10541.6221 -7263.0894]","1270":"[13899.1533 10915.1895 -7202.7324]","1271":"[13538.8066 11279.4316 -7141.3804]","1272":"[13178.4648 11641.6201 -7082.3428]","1273":"[12814.1582 12004.8604 -7027.623]","1274":"[12449.582 12368.3965 -6985.5952]","1275":"[12078.46 12726.1143 -6965.6323]","1276":"[11683.2705 13063.1025 -6962.0635]","1277":"[11253.707 13346.333 -6962.3726]","1278":"[10782.3809 13560.4727 -6962.5298]","1279":"[10374.2725 13665.3457 -6962.4971]","1280":"[9974.3154 13695.6621 -6962.3901]","1281":"[9610.6396 13659.4219 -6962.4219]","1282":"[9149.166 13529.3105 -6962.5098]","1283":"[8725.5195 13324.7998 -6962.3545]","1284":"[8295.7393 13033.4932 -6962.2988]","1285":"[7903.5322 12695.3916 -6962.4912]","1286":"[7533.4258 12337.7988 -6957.7163]","1287":"[7169.6577 11972.6533 -6934.3564]","1288":"[6806.8657 11609.7305 -6889.3706]","1289":"[6444.2139 11247.3818 -6833.7998]","1290":"[6082.6147 10885.9824 -6774.1826]","1291":"[5721.0747 10523.9033 -6712.6001]","1292":"[5359.5591 10161.7051 -6649.7515]","1293":"[4998.0562 9800.7979 -6587.0444]","1294":"[4636.4453 9438.584 -6524.1855]","1295":"[4274.5244 9077.3926 -6461.4004]","1296":"[3913.2861 8716.2139 -6398.6797]","1297":"[3551.6716 8353.9844 -6335.8193]","1298":"[3189.1072 7991.7944 -6272.9482]","1299":"[2827.8174 7630.7861 -6210.2261]","1300":"[2465.9988 7267.9873 -6147.7793]","1301":"[2103.636 6906.5981 -6086.7607]","1302":"[1742.71 6545.5005 -6027.8755]","1303":"[1379.9342 6181.8491 -5973.9829]","1304":"[1016.3318 5818.6958 -5933.4092]","1305":"[632.4696 5467.6372 -5914.812]","1306":"[213.0132 5160.1064 -5912.52]","1307":"[-245.1044 4926.8213 -5912.4746]","1308":"[-735.4808 4757.6641 -5912.5151]","1309":"[-1242.9271 4645.0601 -5912.3057]","1310":"[-1758.6414 4580.6885 -5912.5146]","1311":"[-2275.4065 4561.9521 -5912.1421]","1312":"[-2787.8271 4592.5854 -5912.3975]","1313":"[-3295.9705 4685.8203 -5912.7393]","1314":"[-3783.4761 4847.3901 -5913.0034]","1315":"[-4222.3301 5084.2275 -5913.3804]","1316":"[-4502.0313 5306.1992 -5913.3218]","1317":"[-4790.8447 5632.7769 -5913.293]","1318":"[-4996.4272 5968.5845 -5913.0894]","1319":"[-5187.1626 6445.3213 -5912.7573]","1320":"[-5302.9858 6949.3901 -5912.4858]","1321":"[-5356.8818 7458.7178 -5912.3984]","1322":"[-5372.6099 7976.2944 -5912.4907]","1323":"[-5371.3794 8496.4346 -5912.3945]","1324":"[-5372.6499 9008.6924 -5912.5098]","1325":"[-5372.7178 9528.4961 -5912.5151]","1326":"[-5378.7891 10046.9453 -5912.3599]","1327":"[-5409.8965 10562.4502 -5912.4243]","1328":"[-5483.7349 11071.0625 -5911.9414]","1329":"[-5608.3486 11574.0273 -5912.2666]","1330":"[-5791.6987 12054.4346 -5912.5537]","1331":"[-6045.1812 12507.0254 -5912.5996]","1332":"[-6367.0137 12908.0361 -5912.4795]","1333":"[-6756.4766 13249.6084 -5912.5923]","1334":"[-7194.4858 13518.1455 -5912.6235]","1335":"[-7670.7676 13719.2754 -5912.4731]","1336":"[-8167.1743 13858.042 -5912.2144]","1337":"[-8673.9258 13942.8145 -5912.3574]","1338":"[-9184.5381 13983.4189 -5912.2949]","1339":"[-9703.7813 13989.3584 -5912.4736]","1340":"[-10220.1416 13959.8936 -5912.3828]","1341":"[-10729.5713 13889.7031 -5912.3555]","1342":"[-11234.502 13767.4873 -5912.4312]","1343":"[-11719.3086 13585.5293 -5912.4932]","1344":"[-12173.5332 13335.0439 -5912.5474]","1345":"[-12577.0801 13015.9541 -5912.5059]","1346":"[-12921.7109 12628.5264 -5912.606]","1347":"[-13194.1758 12191.3613 -5912.4434]","1348":"[-13396.4229 11720.4961 -5912.3301]","1349":"[-13538.0859 11221.6123 -5912.3086]","1350":"[-13625.0645 10715.7783 -5912.2734]","1351":"[-13667.7012 10203.8496 -5912.0449]","1352":"[-13680.5654 9690.2178 -5897.3423]","1353":"[-13680.5703 9173.5342 -5862.1558]","1354":"[-13681.1055 8660.6406 -5810.0557]","1355":"[-13680.8477 8148.4497 -5751.8901]","1356":"[-13681.0928 7636.2495 -5691.001]","1357":"[-13681.1963 7125.1997 -5628.9517]","1358":"[-13680.3125 6613.6909 -5566.4023]","1359":"[-13680.7539 6101.7573 -5503.584]","1360":"[-13680.3564 5589.73 -5440.7637]","1361":"[-13680.8594 5078.3169 -5377.958]","1362":"[-13680.7012 4566.3936 -5315.106]","1363":"[-13680.6875 4054.3464 -5252.2324]","1364":"[-13680.9209 3542.9294 -5189.4067]","1365":"[-13680.3271 3032.0874 -5126.7524]","1366":"[-13681 2520.0098 -5063.9355]","1367":"[-13680.9941 2008.1211 -5001.6831]","1368":"[-13680.1943 1496.6819 -4940.96]","1369":"[-13680.5078 983.0609 -4882.354]","1370":"[-13680.6992 470.1623 -4829.8784]","1371":"[-13680.7461 -44.2031 -4793.0054]","1372":"[-13680.7686 -559.2672 -4777.8662]","1373":"[-13680.5693 -1077.2634 -4776.4785]","1374":"[-13680.1191 -1593.8879 -4776.4873]","1375":"[-13680.9082 -2109.3594 -4776.4243]","1376":"[-13680.6943 -2623.708 -4776.4614]","1377":"[-13681.1973 -3136.959 -4776.4531]","1378":"[-13680.4404 -3649.1475 -4776.4502]","1379":"[-13680.5488 -4168.7729 -4776.4526]","1380":"[-13680.6719 -4687.2886 -4776.4526]","1381":"[-13681.0303 -5204.6851 -4776.4502]","1382":"[-13680.3408 -5720.9736 -4776.48]","1383":"[-13680.6953 -6236.1299 -4776.436]","1384":"[-13680.6104 -6750.1616 -4776.4443]","1385":"[-13680.292 -7262.9951 -4776.376]","1386":"[-13674.3398 -7782.5894 -4776.3369]","1387":"[-13653.4561 -8300.3877 -4776.2944]","1388":"[-13614.7959 -8815.8232 -4776.3633]","1389":"[-13554.1094 -9327.7236 -4776.4702]","1390":"[-13470.8496 -9834.9512 -4776.4458]","1391":"[-13361.3418 -10343.6992 -4776.6499]","1392":"[-13224.7168 -10842.0166 -4776.5952]","1393":"[-13058.3818 -11329.5254 -4776.521]","1394":"[-12860.0449 -11803.0635 -4776.4756]","1395":"[-12624.8096 -12266.8799 -4776.563]","1396":"[-12354.6982 -12708.7275 -4776.5103]","1397":"[-12049.6768 -13124.4834 -4776.6216]","1398":"[-11711.4326 -13510.7363 -4776.563]","1399":"[-11336.0088 -13869.9072 -4776.7188]","1400":"[-10931.9844 -14192.9043 -4776.6074]","1401":"[-10503.6387 -14478.9756 -4776.7285]","1402":"[-10052.9541 -14729.5098 -4776.6392]","1403":"[-9583.2148 -14946.2676 -4776.5679]","1404":"[-9100.9346 -15128.7529 -4776.6582]","1405":"[-8609.3779 -15279.1768 -4776.5161]","1406":"[-8111.4077 -15400.6318 -4776.4629]","1407":"[-7600.9043 -15497.4014 -4776.3867]","1408":"[-7087.7139 -15569.2646 -4776.4692]","1409":"[-6573.314 -15618.8564 -4776.3721]","1410":"[-6058.7134 -15648.5117 -4776.3804]","1411":"[-5544.6519 -15659.9551 -4776.458]","1412":"[-5031.6772 -15663.501 -4776.3174]","1413":"[-4511.4878 -15662.8545 -4776.4497]","1414":"[-3992.7014 -15662.7461 -4776.4863]","1415":"[-3475.4731 -15663.0479 -4776.271]","1416":"[-2955.1846 -15662.9131 -4776.4863]","1417":"[-2443.0366 -15663.1426 -4776.4648]","1418":"[-1923.2946 -15663.1738 -4776.4688]","1419":"[-1404.6556 -15662.8281 -4776.4712]","1420":"[-887.0888 -15663.0918 -4776.4761]","1421":"[-370.6032 -15662.9121 -4776.5527]","1422":"[144.7945 -15663.5508 -4776.5156]","1423":"[659.0933 -15663.1582 -4776.5029]","1424":"[1172.3439 -15662.9365 -4776.498]","1425":"[1684.4738 -15663.4307 -4776.5313]","1426":"[2204.0464 -15662.8047 -4776.5054]","1427":"[2722.479 -15662.6123 -4776.3647]","1428":"[3239.783 -15663.0742 -4776.3828]","1429":"[3755.6643 -15662.6123 -4776.52]","1430":"[4270.1494 -15662.7119 -4776.4102]","1431":"[4782.9146 -15659.2227 -4776.3662]","1432":"[5301.0796 -15634.7197 -4776.041]","1433":"[5812.8438 -15570.1494 -4776.3945]","1434":"[6313.1851 -15458.8604 -4776.3584]","1435":"[6803.6587 -15287.7246 -4776.5977]","1436":"[7264.7173 -15049.1934 -4776.4927]","1437":"[7677.4834 -14741.5117 -4776.5928]","1438":"[8033.3105 -14364.0605 -4776.5415]","1439":"[8317.1025 -13934.8145 -4776.3872]","1440":"[8533.3975 -13461.9473 -4776.5845]","1441":"[8683.8564 -12966.541 -4776.5181]","1442":"[8779.2451 -12456.5645 -4776.3882]","1443":"[8827.5957 -11946.3369 -4776.4365]","1444":"[8843.7197 -11426.6201 -4776.5]","1445":"[8845.4326 -10907.8457 -4776.4834]","1446":"[8845.2051 -10390.1982 -4776.5073]","1447":"[8844.8789 -9873.6934 -4776.5107]","1448":"[8844.5459 -9358.3438 -4776.5176]","1449":"[8844.3721 -8844.126 -4776.4668]","1450":"[8845.0537 -8331.0244 -4776.46]","1451":"[8844.9531 -7810.646 -4776.4541]","1452":"[8844.9209 -7291.4048 -4776.4531]","1453":"[8844.5742 -6773.3032 -4776.438]","1454":"[8844.5537 -6256.3486 -4776.4697]","1455":"[8844.6836 -5743.9331 -4776.4473]","1456":"[8844.0586 -5231.7178 -4776.4751]","1457":"[8844.9209 -4711.9121 -4776.4502]","1458":"[8844.2568 -4193.1924 -4776.4546]","1459":"[8844.8662 -3675.543 -4776.4531]","1460":"[8844.6523 -3158.9827 -4776.4526]","1461":"[8844.9961 -2643.5015 -4776.4561]","1462":"[8844.8232 -2129.0793 -4776.4795]","1463":"[8844.1748 -1615.7401 -4776.4565]","1464":"[8845.0469 -1103.4763 -4776.4736]","1465":"[8844.3496 -583.7855 -4776.4722]","1466":"[8844.6328 -65.1935 -4776.4634]","1467":"[8844.5859 452.3054 -4776.457]","1468":"[8844.2715 968.7048 -4776.4536]","1469":"[8844.6631 1483.9921 -4776.4648]","1470":"[8844.6934 1998.1698 -4776.4644]","1471":"[8844.5361 2511.2336 -4776.397]","1472":"[8844.5 3031.5759 -4776.4648]","1473":"[8845.2441 3550.7517 -4776.4619]","1474":"[8844.3984 4068.7771 -4776.4561]","1475":"[8844.9668 4585.6626 -4776.4531]","1476":"[8844.8516 5103.2852 -4776.4517]","1477":"[8844.1738 5615.4531 -4776.4839]","1478":"[8844.9248 6135.2139 -4776.4731]","1479":"[8845.1172 6653.8628 -4776.4585]","1480":"[8844.3867 7171.4033 -4776.4219]","1481":"[8844.3906 7687.6523 -4776.5005]","1482":"[8830.9219 8201.6953 -4776.356]","1483":"[8788.208 8712.0098 -4776.3887]","1484":"[8699.877 9222.9482 -4776.2568]","1485":"[8557.5938 9718.167 -4776.2588]","1486":"[8350.0215 10194.8223 -4776.4492]","1487":"[8074.8828 10630.9795 -4776.522]","1488":"[7727.019 11016.9072 -4776.5977]","1489":"[7320.6499 11334.252 -4776.6362]","1490":"[6866.7876 11581.3848 -4776.5669]","1491":"[6381.9116 11760.1855 -4776.4224]","1492":"[5880.9844 11879.5254 -4776.3716]","1493":"[5372.3403 11948.7451 -4776.3652]","1494":"[4852.8301 11977.876 -4776.4453]","1495":"[4333.6304 11984.9395 -4776.416]","1496":"[3815.6372 11984.1387 -4776.4727]","1497":"[3298.8506 11983.4492 -4776.4902]","1498":"[2786.2173 11983.7334 -4776.5132]","1499":"[2266.333 11983.5859 -4776.418]","1500":"[1747.8673 11983.1016 -4776.5288]","1501":"[1230.5017 11983.1182 -4776.5093]","1502":"[714.2642 11983.5195 -4776.4561]","1503":"[199.1222 11982.7549 -4776.4561]","1504":"[-314.9344 11983.1387 -4776.4531]","1505":"[-827.9122 11982.8799 -4776.4526]","1506":"[-1348.3519 11982.7432 -4776.4727]","1507":"[-1867.662 11982.9365 -4776.4102]","1508":"[-2385.8464 11983.6182 -4776.4697]","1509":"[-2902.9214 11982.8408 -4776.5293]","1510":"[-3418.8804 11983.3848 -4776.4219]","1511":"[-3933.6724 11982.6904 -4776.4521]","1512":"[-4447.3364 11983.3994 -4776.4517]","1513":"[-4959.8823 11982.9258 -4776.4497]","1514":"[-5475.0205 11982.7275 -4770.168]","1515":"[-5990.9111 11983.0361 -4744.0493]","1516":"[-6504.6069 11982.7998 -4697.4526]","1517":"[-7017.8696 11982.9473 -4641.3359]","1518":"[-7529.6963 11983.3096 -4581.3296]","1519":"[-8042.0327 11982.8838 -4519.7505]","1520":"[-8552.9482 11982.876 -4458.7314]","1521":"[-9063.6406 11982.8145 -4398.9629]","1522":"[-9577.5049 11983.0781 -4342.8672]","1523":"[-10091.7676 11982.9883 -4295.7959]","1524":"[-10609.5713 11982.3809 -4270.4033]","1525":"[-11125.0898 11983.0879 -4263.5781]","1526":"[-11642.25 11980.4639 -4263.4194]","1527":"[-12156.5732 11956.5645 -4263.2891]","1528":"[-12673.0801 11893.9102 -4263.106]","1529":"[-13177.8877 11784.7939 -4263.4971]","1530":"[-13663.1484 11618.8057 -4263.4917]","1531":"[-14124.4561 11384.8145 -4263.4224]","1532":"[-14538.6211 11082.4111 -4263.563]","1533":"[-14897.127 10710.2871 -4263.6602]","1534":"[-15188.3809 10279.8682 -4263.3682]","1535":"[-15407.3047 9811.7461 -4263.3599]","1536":"[-15560.9023 9320.5 -4263.4048]","1537":"[-15658.5635 8816.9932 -4263.3555]","1538":"[-15710.9639 8299.8965 -4263.4253]","1539":"[-15727.708 7781.7007 -4263.4233]","1540":"[-15729.4375 7264.3877 -4263.5293]","1541":"[-15729.9092 6748.2598 -4263.5278]","1542":"[-15729.585 6232.0327 -4263.5313]","1543":"[-15726.0156 5712.0479 -4263.5688]","1544":"[-15713.2432 5193.5391 -4263.2803]","1545":"[-15679.5195 4677.2563 -4263.4736]","1546":"[-15626.6191 4163.9468 -4263.5]","1547":"[-15552.4092 3654.6555 -4263.4082]","1548":"[-15453.4561 3150.9734 -4263.5503]","1549":"[-15326.1416 2646.4219 -4263.5317]","1550":"[-15168.9512 2152.0334 -4263.5508]","1551":"[-14981.377 1670.2914 -4263.668]","1552":"[-14760.6563 1204.9515 -4263.3989]","1553":"[-14505.6689 759.7989 -4263.5459]","1554":"[-14211.5986 331.8753 -4263.6191]","1555":"[-13883.3721 -67.4946 -4263.5444]","1556":"[-13522.7637 -434.3782 -4263.6304]","1557":"[-13133.0459 -766.6641 -4263.6147]","1558":"[-12714.9443 -1065.8279 -4263.6416]","1559":"[-12273.2813 -1329.4893 -4263.5654]","1560":"[-11813.9971 -1556.4985 -4263.5479]","1561":"[-11333.4229 -1752.6769 -4263.6465]","1562":"[-10842.4482 -1915.9412 -4263.5405]","1563":"[-10343.9336 -2048.2563 -4263.46]","1564":"[-9840.5098 -2153.4124 -4263.4595]","1565":"[-9333.917 -2233.1418 -4263.3921]","1566":"[-8817.332 -2291.2632 -4263.4146]","1567":"[-8300.2188 -2328.356 -4263.3789]","1568":"[-7783.4575 -2346.5342 -4263.4648]","1569":"[-7266.0884 -2351.6436 -4263.3687]","1570":"[-6753.8994 -2351.0286 -4263.4673]","1571":"[-6234.146 -2352.1458 -4263.4912]","1572":"[-5715.5049 -2351.844 -4263.4702]","1573":"[-5197.9683 -2351.9211 -4263.459]","1574":"[-4681.4937 -2351.6729 -4263.4551]","1575":"[-4166.0894 -2351.4878 -4263.4307]","1576":"[-3651.7522 -2351.4478 -4263.459]","1577":"[-3138.4978 -2351.6382 -4263.4678]","1578":"[-2626.3521 -2352.2695 -4263.4873]","1579":"[-2106.9841 -2351.8303 -4263.5562]","1580":"[-1589.193 -2351.6917 -4263.5161]","1581":"[-1072.8927 -2351.9451 -4263.46]","1582":"[-557.7775 -2351.6667 -4263.4229]","1583":"[-44.2845 -2351.9807 -4263.4688]","1584":"[468.1249 -2351.5928 -4263.4648]","1585":"[987.715 -2351.856 -4263.4946]","1586":"[1505.7214 -2351.9927 -4263.3354]","1587":"[2022.4138 -2352.2434 -4263.3301]","1588":"[2539.1086 -2351.5474 -4263.3853]","1589":"[3059.675 -2351.7654 -4263.4009]","1590":"[3579.1533 -2351.9482 -4263.4561]","1591":"[4097.5547 -2351.4412 -4263.4854]","1592":"[4614.4492 -2352.2847 -4263.5576]","1593":"[5130.2295 -2352.4272 -4263.459]","1594":"[5644.8818 -2351.3564 -4263.4487]","1595":"[6158.4019 -2352.6697 -4263.4722]","1596":"[6670.7964 -2352.0659 -4263.3628]","1597":"[7190.5693 -2351.0071 -4263.4595]","1598":"[7709.1797 -2352.5728 -4263.4492]","1599":"[8226.6309 -2352.2385 -4263.394]","1600":"[8742.8857 -2352.1135 -4263.5474]","1601":"[9257.9639 -2351.8362 -4263.5059]","1602":"[9771.9209 -2352.2336 -4263.4873]","1603":"[10284.7373 -2351.9529 -4263.5127]","1604":"[10804.5039 -2351.7014 -4263.4873]","1605":"[11322.6738 -2351.8577 -4263.4321]","1606":"[11839.3135 -2351.1848 -4263.3296]","1607":"[12353.4941 -2331.0044 -4263.3589]","1608":"[12869.9473 -2276.7046 -4263.3955]","1609":"[13375.0596 -2176.3086 -4263.353]","1610":"[13870.2021 -2018.9146 -4263.4863]","1611":"[14335.7119 -1796.1563 -4263.6191]","1612":"[14762.9326 -1499.7594 -4263.3135]","1613":"[15129.585 -1138.4442 -4263.6533]","1614":"[15431.3477 -715.9349 -4263.5952]","1615":"[15660.6875 -253.3936 -4263.5532]","1616":"[15824.1387 236.2885 -4263.3452]","1617":"[15929.959 744.2368 -4263.4028]","1618":"[15987.916 1258.3254 -4263.3101]","1619":"[16008.0566 1773.717 -4263.3828]","1620":"[16011.7246 2288.1038 -4263.5303]","1621":"[16012.3994 2801.2588 -4263.417]","1622":"[16011.5635 3321.5972 -4263.5054]","1623":"[16011.3613 3840.7356 -4263.4653]","1624":"[16011.2734 4358.7251 -4263.4561]","1625":"[16011.7148 4875.562 -4263.3989]","1626":"[16011.625 5393.8989 -4263.4536]","1627":"[16011.7041 5906.0117 -4263.4878]","1628":"[16011.5986 6425.7354 -4263.4971]","1629":"[16011.582 6944.3696 -4263.4927]","1630":"[16011.6318 7461.9033 -4263.4912]","1631":"[16011.4707 7978.3843 -4263.4639]","1632":"[16011.71 8493.7803 -4263.4561]","1633":"[16011.6865 9008.0996 -4263.4536]","1634":"[16012.0439 9521.334 -4263.438]","1635":"[16011.1172 10033.5068 -4263.4688]","1636":"[16012.2715 10553.0928 -4263.4819]","1637":"[16011.2617 11071.5527 -4263.4482]","1638":"[16012.1572 11588.5674 -4263.4409]","1639":"[16004.7168 12104.1123 -4263.4355]","1640":"[15973.3057 12616.8594 -4263.3315]","1641":"[15898.8994 13131.0361 -4263.415]","1642":"[15773.5723 13631.8301 -4263.3179]","1643":"[15586.9697 14117.0566 -4263.4741]","1644":"[15333.2324 14565.9473 -4263.5381]","1645":"[15010.0439 14966.7021 -4263.7119]","1646":"[14623.4102 15303.8096 -4263.5752]","1647":"[14181.5068 15573.5586 -4263.5205]","1648":"[13706.498 15772.7734 -4263.4976]","1649":"[13211.9443 15909.5381 -4263.3662]","1650":"[12699.3037 15994.6846 -4263.2769]","1651":"[12180.7441 16035.3818 -4263.27]","1652":"[11666.2197 16046.5615 -4263.4243]","1653":"[11153.1416 16046.4014 -4263.4736]","1654":"[10632.6602 16047.209 -4263.4531]","1655":"[10113.2988 16046.8105 -4263.4526]","1656":"[9595.0342 16046.5459 -4263.4268]","1657":"[9077.8887 16047.1445 -4263.3716]","1658":"[8561.8604 16046.2178 -4263.4663]","1659":"[8047.2979 16047.0186 -4262.1621]","1660":"[7531.1445 16047.3691 -4244.8091]","1661":"[7017.6431 16047.2588 -4206.001]","1662":"[6504.2168 16046.6357 -4152.5073]","1663":"[5992.9668 16047.3125 -4093.9849]","1664":"[5480.5132 16047.2148 -4033.0869]","1665":"[4969.5581 16046.834 -3971.6077]","1666":"[4457.1436 16046.6309 -3910.9036]","1667":"[3943.8406 16046.4854 -3852.7078]","1668":"[3429.2078 16046.9043 -3800.627]","1669":"[2915.9033 16046.6094 -3765.824]","1670":"[2397.146 16046.6621 -3752.0249]","1671":"[1884.7185 16046.4023 -3751.3616]","1672":"[1365.2025 16047.0605 -3751.4563]","1673":"[846.8345 16046.0313 -3751.4524]","1674":"[329.6155 16046.5439 -3751.4524]","1675":"[-186.4641 16046.4307 -3751.3735]","1676":"[-703.0905 16046.623 -3751.4443]","1677":"[-1223.1909 16047.0117 -3751.4836]","1678":"[-1742.1989 16046.6807 -3751.4358]","1679":"[-2260.1428 16046.8711 -3751.3792]","1680":"[-2776.9941 16046.5566 -3751.46]","1681":"[-3292.7915 16046.6211 -3751.4546]","1682":"[-3807.5342 16046.6689 -3751.4534]","1683":"[-4321.2246 16046.6221 -3751.4558]","1684":"[-4833.8579 16046.8379 -3751.4744]","1685":"[-5353.9258 16046.2549 -3751.4656]","1686":"[-5872.626 16047.292 -3751.4246]","1687":"[-6389.9224 16046.6191 -3751.436]","1688":"[-6906.0425 16046.5898 -3751.4519]","1689":"[-7420.9116 16046.7871 -3751.4592]","1690":"[-7934.2412 16046.9395 -3751.4719]","1691":"[-8446.4756 16046.2617 -3751.4409]","1692":"[-8965.9365 16047.0713 -3751.4707]","1693":"[-9484.2031 16047.3613 -3751.5278]","1694":"[-10000.9697 16046.3486 -3751.5461]","1695":"[-10521.5918 16046.9082 -3751.5149]","1696":"[-11041.8672 16046.4365 -3751.4312]","1697":"[-11560.8506 16045.7607 -3751.53]","1698":"[-12077.4795 16025.7461 -3751.3499]","1699":"[-12589.4639 15971.4941 -3751.2568]","1700":"[-13091.7354 15872 -3751.3608]","1701":"[-13584.5264 15714.8643 -3751.4897]","1702":"[-14047.7637 15494.0234 -3751.4319]","1703":"[-14473.7217 15200.5859 -3751.6106]","1704":"[-14840.4287 14842.0732 -3751.5762]","1705":"[-15142.501 14422.4619 -3751.6768]","1706":"[-15374.6641 13958.2813 -3751.5042]","1707":"[-15539.7109 13466.7656 -3751.4819]","1708":"[-15646.1699 12961.2256 -3751.3381]","1709":"[-15704.9727 12449.6709 -3751.4526]","1710":"[-15726.0156 11936.4414 -3751.3672]","1711":"[-15730.0449 11423.8867 -3751.46]","1712":"[-15729.9629 10904.1016 -3751.4551]","1713":"[-15729.5723 10385.4795 -3751.447]","1714":"[-15729.3691 9868.0137 -3751.4524]","1715":"[-15729.2861 9351.6885 -3751.4612]","1716":"[-15729.9727 8831.0996 -3751.3916]","1717":"[-15729.5986 8310.793 -3751.5015]","1718":"[-15729.752 7791.5527 -3751.4851]","1719":"[-15729.6826 7273.3931 -3751.4871]","1720":"[-15729.8145 6756.2944 -3751.457]","1721":"[-15729.1123 6240.2661 -3751.4514]","1722":"[-15729.8506 5725.3159 -3751.4524]","1723":"[-15729.5879 5211.4443 -3751.5056]","1724":"[-15729.8174 4698.6343 -3751.4031]","1725":"[-15729.7129 4178.3672 -3751.4397]","1726":"[-15714.0186 3661.4973 -3751.324]","1727":"[-15645.1846 3147.7048 -3751.2131]","1728":"[-15496.709 2657.0972 -3751.6909]","1729":"[-15279.623 2187.4736 -3751.5535]","1730":"[-15011.7285 1749.636 -3751.4194]","1731":"[-14698.252 1334.5842 -3751.2124]","1732":"[-14353.9717 947.7053 -3751.4202]","1733":"[-13994.1064 576.8898 -3751.4924]","1734":"[-13628.8145 213.1095 -3751.3896]","1735":"[-13265.3281 -150.8817 -3751.4229]","1736":"[-12902.4727 -513.9404 -3751.3223]","1737":"[-12540.0996 -875.9631 -3751.4321]","1738":"[-12172.9863 -1243.5355 -3751.4233]","1739":"[-11806.4346 -1610.0522 -3751.4248]","1740":"[-11440.9326 -1975.6772 -3751.4426]","1741":"[-11078.874 -2337.7012 -3751.4753]","1742":"[-10712.3037 -2703.7551 -3751.4224]","1743":"[-10348.7148 -3069.0403 -3751.3979]","1744":"[-9984.9473 -3430.5068 -3751.4697]","1745":"[-9618.9561 -3798.1919 -3751.4563]","1746":"[-9253.7031 -4162.4219 -3751.3662]","1747":"[-8891.4287 -4524.8398 -3751.3691]","1748":"[-8524.1357 -4892.5649 -3751.387]","1749":"[-8157.4541 -5260.168 -3751.4475]","1750":"[-7791.9238 -5624.6465 -3751.5203]","1751":"[-7433.6919 -5992.1079 -3751.5698]","1752":"[-7087.3618 -6377.5435 -3751.502]","1753":"[-6773.2969 -6785.0483 -3751.3318]","1754":"[-6477.249 -7212.9639 -3751.4561]","1755":"[-6190.4756 -7645.2271 -3751.5303]","1756":"[-5902.2651 -8075.0718 -3751.4336]","1757":"[-5615.52 -8504.4824 -3751.4629]","1758":"[-5327.1528 -8936.0674 -3751.46]","1759":"[-5038.021 -9368.6719 -3751.4563]","1760":"[-4749.5049 -9800.4043 -3751.4539]","1761":"[-4456.8823 -10226.6719 -3751.4045]","1762":"[-4144.6597 -10634.7764 -3751.6162]","1763":"[-3799.1387 -11023.0947 -3751.3613]","1764":"[-3437.7209 -11394.5244 -3751.4348]","1765":"[-3072.5986 -11759.5449 -3751.4937]","1766":"[-2708.6145 -12124.002 -3751.4092]","1767":"[-2345.1003 -12486.4248 -3751.406]","1768":"[-1971.5873 -12848.1631 -3751.4573]","1769":"[-1589.1665 -13197.8389 -3751.4109]","1770":"[-1194.4374 -13531.4375 -3751.3091]","1771":"[-787.2825 -13847.5078 -3751.3979]","1772":"[-364.2501 -14146.501 -3751.5566]","1773":"[73.6299 -14423.501 -3751.6541]","1774":"[525.4905 -14673.7666 -3751.4509]","1775":"[990.069 -14895.6367 -3751.5786]","1776":"[1467.0348 -15084.6152 -3751.4375]","1777":"[1963.1005 -15239.377 -3751.6584]","1778":"[2468.0027 -15353.3057 -3751.749]","1779":"[2978.5271 -15424.1396 -3751.5215]","1780":"[3490.9658 -15450.3916 -3751.5955]","1781":"[4009.8442 -15430.9961 -3751.6707]","1782":"[4522.6504 -15366.0391 -3751.5598]","1783":"[5026.0615 -15258.375 -3751.689]","1784":"[5523.4453 -15109.4287 -3751.4922]","1785":"[6006.1758 -14923.8682 -3751.5417]","1786":"[6473.6387 -14706.4092 -3751.4316]","1787":"[6924.9282 -14460.5566 -3751.5452]","1788":"[7360.1128 -14190.208 -3751.4521]","1789":"[7786.5718 -13893.8545 -3751.4399]","1790":"[8197.4482 -13578.6211 -3751.4912]","1791":"[8593.9639 -13247.5508 -3751.52]","1792":"[8976.4004 -12902.2334 -3751.4253]","1793":"[9346.7725 -12545.7559 -3751.4575]","1794":"[9710.1807 -12184.2529 -3751.4131]","1795":"[10077.543 -11816.8271 -3751.5029]","1796":"[10444.3691 -11450.5518 -3751.5281]","1797":"[10808.2871 -11083.5068 -3751.3669]","1798":"[11164.417 -10711.0039 -3751.3831]","1799":"[11510.1318 -10322.3525 -3751.4587]","1800":"[11839.6064 -9921.4668 -3751.5474]","1801":"[12151.3682 -9508.3281 -3751.4463]","1802":"[12441.6875 -9081.6826 -3751.4341]","1803":"[12708.7197 -8641.8311 -3751.5295]","1804":"[12949.0244 -8188.5933 -3751.4927]","1805":"[13162.2344 -7714.5752 -3751.5879]","1806":"[13340.6455 -7228.4395 -3751.541]","1807":"[13481.4277 -6732.1157 -3751.6311]","1808":"[13580.5625 -6227.957 -3751.6946]","1809":"[13636.9785 -5711.0503 -3751.7312]","1810":"[13647.6924 -5193.4102 -3751.6782]","1811":"[13612.8838 -4678.9863 -3751.6257]","1812":"[13533.6641 -4171.6797 -3751.6389]","1813":"[13411.3652 -3667.3577 -3751.6995]","1814":"[13250.2334 -3177.6453 -3751.582]","1815":"[13054.9961 -2702.5144 -3751.5962]","1816":"[12824.9307 -2235.667 -3751.5503]","1817":"[12567.6221 -1785.188 -3751.479]","1818":"[12286.665 -1350.9402 -3751.4919]","1819":"[11985.2158 -932.4088 -3751.365]","1820":"[11665.8955 -529.0475 -3751.2844]","1821":"[11331.4521 -139.8286 -3751.333]","1822":"[10978.3242 242.2102 -3751.3953]","1823":"[10615.4766 613.2404 -3751.4197]","1824":"[10249.5078 979.3846 -3751.4185]","1825":"[9884.5117 1344.8264 -3751.4146]","1826":"[9520.7168 1709.0782 -3750.8811]","1827":"[9153.0752 2076.1172 -3735.1736]","1828":"[8790.6104 2439.8835 -3698.4102]","1829":"[8428.0801 2802.4736 -3645.876]","1830":"[8065.5479 3164.7573 -3587.5725]","1831":"[7702.8149 3526.9482 -3526.6543]","1832":"[7341.582 3888.9089 -3465.1877]","1833":"[6978.729 4251.0264 -3404.0349]","1834":"[6615.6411 4613.4009 -3345.6514]","1835":"[6253.063 4976.1807 -3293.0776]","1836":"[5888.1338 5341.8594 -3256.0239]","1837":"[5523.4761 5706.3218 -3240.8042]","1838":"[5158.4526 6072.4424 -3239.5308]","1839":"[4793.4106 6436.6626 -3239.4932]","1840":"[4430.1069 6801.0708 -3239.4556]","1841":"[4066.364 7163.5044 -3239.4561]","1842":"[3704.1794 7525.9893 -3239.4534]","1843":"[3336.8164 7893.8247 -3239.5098]","1844":"[2970.1558 8260.7861 -3239.4495]","1845":"[2603.6809 8626.4043 -3239.4651]","1846":"[2238.8547 8992.0742 -3239.4453]","1847":"[1873.9344 9356.0176 -3239.4575]","1848":"[1510.4927 9719.7979 -3239.4768]","1849":"[1147.969 10082.9287 -3239.4607]","1850":"[785.7878 10444.8594 -3239.4551]","1851":"[418.4886 10811.9453 -3239.4526]","1852":"[52.0138 11178.2705 -3239.4526]","1853":"[-313.0872 11544.3496 -3239.4539]","1854":"[-679.079 11909.5088 -3239.5273]","1855":"[-1041.3788 12271.6729 -3239.446]","1856":"[-1408.9733 12639.3047 -3239.4709]","1857":"[-1775.7545 13006.2451 -3239.4558]","1858":"[-2142.0674 13372.1523 -3239.4534]","1859":"[-2507.3848 13737.5449 -3239.4524]","1860":"[-2871.8101 14102.3174 -3239.4897]","1861":"[-3235.3325 14466.4658 -3239.4802]","1862":"[-3600.0757 14827.6748 -3239.3069]","1863":"[-3993.9675 15162.1641 -3239.3516]","1864":"[-4428.772 15441.9229 -3239.3762]","1865":"[-4896.9976 15651.6553 -3239.5581]","1866":"[-5394.1973 15799.2324 -3239.5447]","1867":"[-5905.4771 15892.6533 -3239.5693]","1868":"[-6415.522 15940.998 -3239.3608]","1869":"[-6933.6748 15950.0742 -3239.0413]","1870":"[-7448.291 15919.9619 -3239.5386]","1871":"[-7956.1133 15846.2832 -3239.4001]","1872":"[-8458.8848 15720.0732 -3239.4517]","1873":"[-8939.1973 15534.9707 -3239.4353]","1874":"[-9391.209 15280.084 -3239.5588]","1875":"[-9791.7314 14956.9238 -3239.4172]","1876":"[-10130.1631 14568.3994 -3239.583]","1877":"[-10397.543 14130.2197 -3239.5835]","1878":"[-10598.6738 13651.5547 -3239.4399]","1879":"[-10735.9434 13152.9736 -3239.4055]","1880":"[-10820.0088 12644.373 -3239.3022]","1881":"[-10859.9277 12132.0068 -3239.4587]","1882":"[-10871.7461 11619.6396 -3238.6946]","1883":"[-10871.8076 11103.1826 -3222.8735]","1884":"[-10872.0449 10588.0732 -3185.6699]","1885":"[-10872.3604 10075.0732 -3132.856]","1886":"[-10871.9229 9563.8926 -3074.7371]","1887":"[-10871.9648 9052.123 -3013.8267]","1888":"[-10871.8545 8539.9912 -2952.2734]","1889":"[-10871.8428 8029.1304 -2891.4824]","1890":"[-10871.1904 7516.3853 -2833.1621]","1891":"[-10871.4014 7003.1455 -2780.5979]","1892":"[-10871.4775 6486.1602 -2743.5813]","1893":"[-10871.9326 5969.5869 -2728.8359]","1894":"[-10870.4229 5456.2339 -2727.4902]","1895":"[-10870.4463 4935.7402 -2727.3772]","1896":"[-10871.8271 4416.4229 -2727.4478]","1897":"[-10871.3545 3898.4897 -2727.4338]","1898":"[-10870.2744 3381.8643 -2727.4702]","1899":"[-10870.9775 2866.3523 -2727.3303]","1900":"[-10871.668 2352.0112 -2727.491]","1901":"[-10870.6299 1838.8138 -2727.4773]","1902":"[-10870.627 1318.432 -2727.4712]","1903":"[-10872.002 799.2529 -2727.5066]","1904":"[-10871.1006 281.3285 -2727.4299]","1905":"[-10870.4717 -235.3656 -2727.4875]","1906":"[-10871.1006 -749.4357 -2727.4949]","1907":"[-10871.1699 -1270.0343 -2727.4187]","1908":"[-10870.7803 -1789.5389 -2727.4556]","1909":"[-10871.0127 -2307.9685 -2727.4175]","1910":"[-10871.5771 -2825.3162 -2727.5518]","1911":"[-10870.96 -3341.5859 -2727.4277]","1912":"[-10870.957 -3856.7168 -2727.4934]","1913":"[-10866.1318 -4370.605 -2727.4304]","1914":"[-10834.3086 -4889.624 -2727.4448]","1915":"[-10760.0488 -5398.8657 -2727.3247]","1916":"[-10658.4199 -5905.7197 -2727.3599]","1917":"[-10546.8281 -6408.1221 -2727.1309]","1918":"[-10406.7998 -6904.1226 -2727.428]","1919":"[-10224.2881 -7386.312 -2727.4836]","1920":"[-9993.2676 -7844.125 -2727.5728]","1921":"[-9705.2402 -8274.4805 -2727.3845]","1922":"[-9359.9268 -8654.9873 -2727.1841]","1923":"[-8964.29 -8992.3008 -2727.1165]","1924":"[-8577.2793 -9336.835 -2727.106]","1925":"[-8246.8135 -9729.5391 -2727.3794]","1926":"[-7970.8242 -10167.8564 -2727.4724]","1927":"[-7750.2114 -10634 -2727.5103]","1928":"[-7578.3252 -11117.6367 -2727.3608]","1929":"[-7444.6006 -11619.6182 -2727.3889]","1930":"[-7334.6924 -12125.7305 -2727.4192]","1931":"[-7234.5894 -12632.458 -2727.1868]","1932":"[-7116.3667 -13136.6035 -2727.4802]","1933":"[-6967.9082 -13632.918 -2727.4194]","1934":"[-6777.3003 -14112.0664 -2727.4604]","1935":"[-6531.7192 -14570.6084 -2727.5027]","1936":"[-6229.7144 -14989.6055 -2727.5178]","1937":"[-5869.397 -15354.0381 -2727.5479]","1938":"[-5449.4233 -15654.6025 -2727.5286]","1939":"[-4987.3926 -15876.0928 -2727.5271]","1940":"[-4490.8486 -16021.543 -2727.5361]","1941":"[-3979.4612 -16095.6055 -2727.5156]","1942":"[-3459.644 -16108.4629 -2727.3335]","1943":"[-2942.5085 -16071.252 -2727.5396]","1944":"[-2431.0613 -15994.5547 -2727.4734]","1945":"[-1923.8619 -15899.1904 -2727.3999]","1946":"[-1419.0427 -15798.1426 -2727.4771]","1947":"[-915.4288 -15697.0381 -2727.4016]","1948":"[-413.1798 -15595.7256 -2727.2839]","1949":"[90.6734 -15473.2568 -2727.3237]","1950":"[581.9183 -15315.3916 -2727.4634]","1951":"[1054.0582 -15114.5674 -2727.4194]","1952":"[1504.5045 -14858.4717 -2727.3965]","1953":"[1913.9271 -14543.1914 -2727.6067]","1954":"[2268.04 -14166.8213 -2727.5005]","1955":"[2549.8289 -13738.8877 -2727.4287]","1956":"[2755.9236 -13264.8994 -2727.6052]","1957":"[2884.2241 -12767.1367 -2727.4392]","1958":"[2943.9856 -12250.5898 -2727.3167]","1959":"[2945.3538 -11732.1455 -2727.2908]","1960":"[2898.9709 -11219.834 -2727.3923]","1961":"[2816.7363 -10713.2598 -2727.3745]","1962":"[2719.792 -10210.3701 -2727.5493]","1963":"[2619.6636 -9701.4141 -2727.4756]","1964":"[2517.1514 -9195.2393 -2727.5168]","1965":"[2416.6826 -8690.3213 -2727.5042]","1966":"[2317.7324 -8186.4912 -2727.46]","1967":"[2217.3525 -7684.1499 -2727.4915]","1968":"[2115.5842 -7174.7285 -2727.4727]","1969":"[2015.0288 -6666.2529 -2727.4802]","1970":"[1913.3762 -6159.1753 -2727.3076]","1971":"[1812.4227 -5651.1602 -2727.302]","1972":"[1711.4368 -5141.3447 -2727.5037]","1973":"[1610.3785 -4632.8169 -2727.4014]","1974":"[1510.5343 -4125.3896 -2727.3362]","1975":"[1408.6396 -3619.488 -2727.5059]","1976":"[1308.6597 -3114.364 -2727.531]","1977":"[1209.1177 -2610.3096 -2727.5222]","1978":"[1108.3109 -2107.6667 -2727.4612]","1979":"[1006.8449 -1597.5774 -2727.5415]","1980":"[905.4391 -1088.603 -2727.45]","1981":"[804.9708 -580.5711 -2727.509]","1982":"[703.9757 -73.7582 -2727.5186]","1983":"[602.9025 431.9398 -2727.4673]","1984":"[503.005 936.6994 -2727.5112]","1985":"[402.7975 1440.2087 -2727.4185]","1986":"[322.6355 1952.5964 -2727.4014]","1987":"[280.0528 2463.4827 -2727.4434]","1988":"[270.8343 2983.2593 -2727.51]","1989":"[272.6052 3501.2268 -2727.3596]","1990":"[271.7754 4017.7004 -2727.4919]","1991":"[271.0296 4532.998 -2727.5291]","1992":"[272.5186 5047.1504 -2727.4194]","1993":"[271.791 5560.1396 -2727.5896]","1994":"[272.0433 6076.7866 -2719.0151]","1995":"[272.0415 6590.8818 -2691.0046]","1996":"[271.8534 7104.3916 -2642.6917]","1997":"[272.05 7618.6431 -2585.6355]","1998":"[272.1549 8129.7363 -2525.4744]","1999":"[271.7199 8642.0361 -2463.9031]","2000":"[271.4669 9153.7529 -2402.6172]","2001":"[271.4628 9666.0068 -2342.9619]","2002":"[271.4165 10178.1182 -2287.7825]","2003":"[271.5657 10693.3203 -2242.9204]","2004":"[277.2374 11211.791 -2219.303]","2005":"[303.9093 11729.8633 -2214.5027]","2006":"[370.4565 12238.1035 -2214.3389]","2007":"[485.9474 12741.4844 -2214.0059]","2008":"[661.1917 13230.459 -2214.4431]","2009":"[904.1228 13687.9639 -2214.5234]","2010":"[1216.402 14096.9541 -2214.8167]","2011":"[1597.3217 14448.2383 -2214.4229]","2012":"[2029.1357 14727.9648 -2214.6116]","2013":"[2503.9973 14939.8877 -2214.5562]","2014":"[3000.4026 15086.4688 -2214.4192]","2015":"[3510.5471 15178.9766 -2214.4351]","2016":"[4028.3081 15225.0752 -2214.1729]","2017":"[4545.7949 15230.7314 -2214.52]","2018":"[5059.8999 15198.8525 -2214.5234]","2019":"[5567.3359 15124.0703 -2214.4392]","2020":"[6069.0771 14996.0547 -2214.7222]","2021":"[6546.9287 14809.5674 -2214.4922]","2022":"[6997.3599 14552.874 -2214.1716]","2023":"[7397.5786 14225.8936 -2214.3833]","2024":"[7731.9258 13837.5215 -2214.6208]","2025":"[7999.499 13394.3184 -2214.5522]","2026":"[8196.7939 12918.3105 -2214.5928]","2027":"[8331.6406 12423.0596 -2214.4656]","2028":"[8415.2529 11909.9482 -2214.4771]","2029":"[8454.5332 11393.4824 -2214.426]","2030":"[8465.1602 10876.8428 -2214.7981]","2031":"[8464.8643 10357.8379 -2215.0447]","2032":"[8465.3906 9837.3203 -2215.4641]","2033":"[8465.2246 9318.2246 -2215.531]","2034":"[8464.5625 8800.2295 -2215.4919]","2035":"[8465.2275 8283.3643 -2215.3872]","2036":"[8465.1289 7769.1074 -2214.6707]","2037":"[8464.834 7253.5366 -2214.6423]","2038":"[8465.2549 6734.7109 -2214.4688]","2039":"[8466.0107 6217.98 -2214.2859]","2040":"[8465.5322 5703.7085 -2214.5327]","2041":"[8465.0986 5183.418 -2214.4011]","2042":"[8465.1748 4664.4307 -2214.5149]","2043":"[8464.9785 4146.8394 -2214.4526]","2044":"[8464.8281 3630.749 -2214.5256]","2045":"[8464.7334 3115.7971 -2214.4363]","2046":"[8464.9844 2601.8835 -2215.0549]","2047":"[8464.5908 2089.1357 -2215.25]","2048":"[8464.6963 1568.9832 -2215.4858]","2049":"[8464.8994 1049.9244 -2215.4827]","2050":"[8465.0508 532.0253 -2215.6187]","2051":"[8464.9707 15.2572 -2215.4993]","2052":"[8464.4805 -500.3689 -2215.4856]","2053":"[8465.5156 -1014.8588 -2215.4497]","2054":"[8465.3066 -1528.1608 -2215.4609]","2055":"[8464.6084 -2040.3241 -2215.396]","2056":"[8464.585 -2559.7083 -2215.417]","2057":"[8465.7314 -3077.8623 -2215.5166]","2058":"[8465.001 -3594.7747 -2215.5083]","2059":"[8464.3721 -4115.0552 -2215.4607]","2060":"[8464.7402 -4627.1978 -2215.5469]","2061":"[8465.4678 -5146.9126 -2215.4404]","2062":"[8464.8086 -5665.5459 -2215.5242]","2063":"[8465.0527 -6183.1108 -2215.522]","2064":"[8463.9619 -6699.2881 -2215.5015]","2065":"[8455.3926 -7213.814 -2215.4089]","2066":"[8430.4893 -7726.0361 -2215.3743]","2067":"[8385.8389 -8243.2314 -2215.5039]","2068":"[8320.4307 -8756.498 -2215.4668]","2069":"[8231.085 -9263.8789 -2215.5071]","2070":"[8116.4282 -9763.6514 -2215.5942]","2071":"[7972.2515 -10262.2178 -2215.5627]","2072":"[7798.6001 -10746.3721 -2215.5649]","2073":"[7593.2524 -11215.5938 -2215.5581]","2074":"[7350.2358 -11673.9873 -2215.4966]","2075":"[7072.6543 -12109.4551 -2215.5437]","2076":"[6760.8584 -12518.3916 -2215.5496]","2077":"[6415.876 -12896.8379 -2215.6201]","2078":"[6034.3613 -13247.8018 -2215.5857]","2079":"[5625.1553 -13562.2998 -2215.6079]","2080":"[5192.646 -13839.9902 -2215.6633]","2081":"[4733.8037 -14085.3613 -2215.5771]","2082":"[4259.5225 -14294.8027 -2215.499]","2083":"[3769.9099 -14471.1592 -2215.3462]","2084":"[3270.0857 -14616.3457 -2215.4727]","2085":"[2764.3501 -14732.5879 -2215.4124]","2086":"[2254.5725 -14822.1045 -2215.5334]","2087":"[1742.4607 -14887.8945 -2215.373]","2088":"[1229.9427 -14931.835 -2215.5498]","2089":"[717.5089 -14956.9395 -2215.4963]","2090":"[201.2818 -14965.6338 -2205.9255]","2091":"[-314.1047 -14966.9717 -2177.2625]","2092":"[-827.9447 -14966.8477 -2128.1462]","2093":"[-1340.9581 -14966.9316 -2070.9277]","2094":"[-1852.4235 -14966.8418 -2010.6675]","2095":"[-2364.7593 -14967.0098 -1948.7751]","2096":"[-2876.3613 -14967.7275 -1886.2521]","2097":"[-3387.4258 -14967.0391 -1823.8809]","2098":"[-3899.9749 -14967.3369 -1762.4535]","2099":"[-4412.9346 -14967.9482 -1702.9175]","2100":"[-4926.8716 -14967.4658 -1648.0052]","2101":"[-5442.5283 -14966.8896 -1604.505]","2102":"[-5960.8887 -14967.4775 -1583.0862]","2103":"[-6473.7939 -14967.9316 -1579.4832]","2104":"[-6992.5557 -14963.8877 -1579.4279]","2105":"[-7509.5332 -14949.9834 -1579.3596]","2106":"[-8021.3252 -14919.1582 -1579.3447]","2107":"[-8538.6631 -14866.6699 -1579.4978]","2108":"[-9050.7637 -14791.6045 -1579.6456]","2109":"[-9557.1143 -14693.2686 -1579.6365]","2110":"[-10054.9863 -14568.6816 -1579.4285]","2111":"[-10550.6426 -14412.7051 -1579.5786]","2112":"[-11032.7568 -14225.8691 -1579.5564]","2113":"[-11498.7744 -14006.291 -1579.4744]","2114":"[-11944.6914 -13752.6748 -1579.5212]","2115":"[-12372.6357 -13460.3105 -1579.5502]","2116":"[-12773.2588 -13133.1943 -1579.4659]","2117":"[-13145.4648 -12770.0352 -1579.6794]","2118":"[-13482.1816 -12376.6553 -1579.4897]","2119":"[-13782.4365 -11957.2842 -1579.5964]","2120":"[-14046.1895 -11516.3232 -1579.5548]","2121":"[-14273.917 -11057.7529 -1579.5668]","2122":"[-14470.3047 -10577.8906 -1579.5786]","2123":"[-14633.5693 -10087.6973 -1579.4366]","2124":"[-14765.959 -9590.1074 -1579.6086]","2125":"[-14871.7695 -9087.9355 -1579.5339]","2126":"[-14953.6172 -8574.1846 -1579.4475]","2127":"[-15011.0576 -8058.5298 -1579.4019]","2128":"[-15048.6016 -7542.5439 -1579.5203]","2129":"[-15067.127 -7024.8643 -1579.5908]","2130":"[-15071.8408 -6504.936 -1579.4937]","2131":"[-15072.2549 -5986.0752 -1579.4507]","2132":"[-15072.7734 -5468.3623 -1579.4719]","2133":"[-15072.6484 -4951.7979 -1579.4373]","2134":"[-15072.3535 -4436.3755 -1579.4756]","2135":"[-15072.041 -3922.0266 -1579.4369]","2136":"[-15072.4756 -3409.1521 -1578.0748]","2137":"[-15071.7939 -2894.7646 -1560.6061]","2138":"[-15071.8369 -2380.8374 -1521.498]","2139":"[-15071.709 -1867.899 -1468.0275]","2140":"[-15072.2412 -1355.7634 -1409.1959]","2141":"[-15072.1309 -844.0811 -1348.0105]","2142":"[-15071.5547 -332.1529 -1285.8621]","2143":"[-15072.1094 180.0818 -1222.8956]","2144":"[-15072.8818 691.6774 -1160.1714]","2145":"[-15071.8398 1202.599 -1097.589]","2146":"[-15071.2197 1714.6967 -1034.7729]","2147":"[-15072.2598 2226.082 -972.0891]","2148":"[-15071.6924 2736.5115 -909.1253]","2149":"[-15071.5645 3249.1765 -846.725]","2150":"[-15071.8789 3760.7126 -783.4699]","2151":"[-15072.3701 4272.2524 -720.6637]","2152":"[-15071.9336 4782.9443 -657.9728]","2153":"[-15071.6758 5295.0791 -595.197]","2154":"[-15071.9678 5808.0605 -532.3126]","2155":"[-15072.1563 6319.272 -469.5245]","2156":"[-15072.0215 6831.395 -406.5273]","2157":"[-15071.3604 7343.2695 -343.7542]","2158":"[-15071.6543 7854.5181 -280.9847]","2159":"[-15071.6895 8366.6807 -218.0997]","2160":"[-15072.0166 8878.5039 -155.2752]","2161":"[-15072.415 9389.7363 -93.1601]","2162":"[-15072.3848 9902.0107 -32.2062]","2163":"[-15072.3447 10414.9473 26.4101]","2164":"[-15072.3857 10927.4404 78.9809]","2165":"[-15072.335 11443.3164 116.2648]","2166":"[-15055.8281 11961.585 128.874]","2167":"[-14999.1865 12475.6484 125.973]","2168":"[-14870.4971 12975.2041 121.761]","2169":"[-14689.835 13372.2744 119.0678]","2170":"[-14482.8896 13672.5068 117.9796]","2171":"[-14246.5674 13911.5791 118.0324]","2172":"[-13940.4131 14128.0537 119.064]","2173":"[-13577.5654 14298.9326 121.4478]","2174":"[-13082.4902 14435.8818 125.5355]","2175":"[-12570.4707 14500.9307 130.8674]","2176":"[-12053.3975 14519.4473 148.0097]","2177":"[-11541.4014 14518.9775 183.5476]","2178":"[-11026.7627 14520.0039 235.824]","2179":"[-10514.3604 14520.9756 294.0156]","2180":"[-10002.0439 14519.998 354.7366]","2181":"[-9490.3711 14519.7998 416.1696]","2182":"[-8977.5088 14520.4805 477.1253]","2183":"[-8466.3838 14520.8262 535.5989]","2184":"[-7953.1128 14520.5381 588.7958]","2185":"[-7439.1821 14520.4199 627.5622]","2186":"[-6923.1689 14519.8574 643.5084]","2187":"[-6407.1782 14520.7373 645.4828]","2188":"[-5889.0151 14519.8438 645.5515]","2189":"[-5371.9277 14520.4453 645.621]","2190":"[-4855.8999 14520.4844 645.5226]","2191":"[-4340.9497 14520.5225 645.5137]","2192":"[-3827.0903 14519.9326 645.5916]","2193":"[-3314.3564 14520.1279 645.5922]","2194":"[-2794.2666 14521.0967 645.5259]","2195":"[-2275.3652 14520.0518 645.5421]","2196":"[-1757.6169 14520.4951 645.5017]","2197":"[-1240.9806 14520.3154 645.5173]","2198":"[-725.4647 14520.3164 645.4966]","2199":"[-211.0622 14520.7295 645.5145]","2200":"[302.2231 14519.9971 645.5337]","2201":"[814.408 14520.5557 645.6238]","2202":"[1333.8622 14520.3721 645.5334]","2203":"[1852.1725 14520.791 645.5406]","2204":"[2369.3359 14519.7822 645.5236]","2205":"[2885.4724 14520.499 645.6393]","2206":"[3397.7903 14520.0703 645.6024]","2207":"[3917.8521 14520.7217 645.5403]","2208":"[4436.8135 14519.9707 645.5107]","2209":"[4955.0952 14520.1865 643.3448]","2210":"[5469.1196 14520.0635 625.3154]","2211":"[5983.625 14519.8613 584.8334]","2212":"[6496.8701 14519.8037 530.8705]","2213":"[7008.7876 14519.9629 472.0246]","2214":"[7521.9512 14520.1006 410.9412]","2215":"[8034.5552 14520.375 348.373]","2216":"[8547.4609 14520.4463 285.4099]","2217":"[9059.5498 14520.2197 222.5441]","2218":"[9572.7119 14520.6436 159.5418]","2219":"[10084.2861 14520.334 96.6882]","2220":"[10597.2646 14520.126 33.6729]","2221":"[11108.6475 14521.0381 -29.0501]","2222":"[11621.5869 14519.2363 -94.4917]","2223":"[12134.6143 14496.6172 -163.3069]","2224":"[12643.875 14437.4307 -230.1989]","2225":"[13147.2373 14331.6104 -284.3442]","2226":"[13638.4199 14172.2979 -323.2578]","2227":"[14099.2314 13943.2676 -349.8283]","2228":"[14486.7764 13657.5342 -366.0634]","2229":"[14836.1953 13290.1641 -374.9946]","2230":"[15112.9502 12872.8828 -377.6241]","2231":"[15322.2539 12401.7666 -376.4571]","2232":"[15458.9063 11899.7588 -373.6023]","2233":"[15536.8213 11391.0176 -370.3062]","2234":"[15571.1758 10878.6475 -366.1371]","2235":"[15570.6895 10359.5098 -364.2484]","2236":"[15542.2607 9845.165 -364.4735]","2237":"[15488.5137 9334.8428 -364.4908]","2238":"[15405.1436 8821.4287 -364.4608]","2239":"[15291.6016 8316.1787 -364.5146]","2240":"[15147.8018 7822.0088 -364.3606]","2241":"[14980.79 7329.48 -364.1503]","2242":"[14821.0459 6838.7031 -364.1661]","2243":"[14691.5273 6341.6519 -364.4818]","2244":"[14591.7773 5839.2349 -364.3425]","2245":"[14520.6768 5327.3149 -364.4781]","2246":"[14476.7051 4814.6206 -364.7068]","2247":"[14456.2744 4294.5874 -364.5146]","2248":"[14452.0645 3776.093 -364.3408]","2249":"[14452.5967 3259.145 -364.4456]","2250":"[14451.1904 2743.3335 -364.4902]","2251":"[14452.4229 2228.6523 -364.54]","2252":"[14451.7754 1715.1239 -364.463]","2253":"[14451.3857 1202.7451 -364.4202]","2254":"[14452.1641 683.1643 -364.388]","2255":"[14452.0283 164.7652 -364.4687]","2256":"[14451.7764 -352.3867 -364.4047]","2257":"[14451.6563 -868.3729 -364.5012]","2258":"[14451.8545 -1382.1937 -364.4747]","2259":"[14452.123 -1902.1787 -364.4924]","2260":"[14451.9111 -2421.103 -364.3757]","2261":"[14452.3359 -2938.6135 -364.5882]","2262":"[14452.4248 -3454.7725 -364.2846]","2263":"[14451.9805 -3969.093 -364.3623]","2264":"[14452.7588 -4481.8057 -364.5449]","2265":"[14451.7549 -5001.8086 -364.5027]","2266":"[14451.7285 -5520.6714 -364.481]","2267":"[14452.7158 -6038.3896 -364.5076]","2268":"[14451.4131 -6554.9624 -364.5142]","2269":"[14451.6924 -7070.4077 -364.5207]","2270":"[14452.4629 -7584.7236 -364.46]","2271":"[14451.2949 -8097.9072 -364.4141]","2272":"[14452.2715 -8609.9287 -364.4445]","2273":"[14451.6074 -9129.1787 -364.4516]","2274":"[14452.2803 -9647.2822 -364.455]","2275":"[14448.6006 -10167.7129 -364.002]","2276":"[14425.043 -10686.5977 -361.5381]","2277":"[14363.6914 -11196.4805 -355.7155]","2278":"[14257.5791 -11701.1338 -345.0258]","2279":"[14098.3887 -12195.3613 -328.8665]","2280":"[13884.3203 -12666.2979 -305.3829]","2281":"[13607.9824 -13104.627 -271.6005]","2282":"[13266.4355 -13487.0459 -225.0551]","2283":"[12944.5332 -13740.1904 -178.3784]","2284":"[12496.9209 -13984.666 -118.1513]","2285":"[12018.2275 -14145.9434 -66.5264]","2286":"[11526.126 -14221.1455 -29.3939]","2287":"[11009.9326 -14244.5303 -2.1667]","2288":"[10491.917 -14247.3623 14.9122]","2289":"[9976.1787 -14227.376 24.6248]","2290":"[9465.332 -14163.7178 30.9015]","2291":"[8965.083 -14041.8672 36.1144]","2292":"[8486.8906 -13846.6855 39.7913]","2293":"[8057.5171 -13575.6748 41.7879]","2294":"[7742.1377 -13288.5254 42.1295]","2295":"[7437.5854 -12893.7783 41.0079]","2296":"[7221.5225 -12480.6885 38.49]","2297":"[7055.4556 -11990.1299 34.3365]","2298":"[6957.2427 -11480.7832 28.4941]","2299":"[6916.5508 -10970.4287 22.4021]","2300":"[6947.2393 -10451.1982 16.3963]","2301":"[7059.0972 -9946.1533 13.2836]","2302":"[7246.9805 -9466.667 11.8719]","2303":"[7495.8994 -9018.3359 12.373]","2304":"[7794.9648 -8595.8896 14.4599]","2305":"[8130.981 -8198.6836 17.5469]","2306":"[8483.874 -7826.668 19.2887]","2307":"[8851.2773 -7459.3306 19.5398]","2308":"[9217.6943 -7092.6372 19.64]","2309":"[9582.8271 -6726.1167 19.5294]","2310":"[9948.7832 -6361.9883 19.5108]","2311":"[10312.4453 -5997.0962 19.5412]","2312":"[10676.0576 -5633.6689 19.5477]","2313":"[11039.0586 -5271.1421 19.5457]","2314":"[11406.749 -4902.7949 19.5471]","2315":"[11774.502 -4536.1147 19.5364]","2316":"[12141.0166 -4169.7798 19.5311]","2317":"[12505.6699 -3803.1365 19.5303]","2318":"[12871.499 -3439.2917 19.5451]","2319":"[13234.9971 -3074.7017 19.547]","2320":"[13598.4639 -2711.6506 19.5476]","2321":"[13960.6934 -2349.1077 19.9956]","2322":"[14316.3047 -1973.3966 21.9364]","2323":"[14647.7119 -1579.9794 24.5761]","2324":"[14944.0762 -1161.7441 26.4275]","2325":"[15199.2578 -711.8623 27.1594]","2326":"[15396.9014 -237.2132 26.4104]","2327":"[15525.6377 258.3521 24.0645]","2328":"[15581.0527 775.4844 21.0846]","2329":"[15593.0322 1288.4562 19.4989]","2330":"[15591.2471 1801.0587 19.4844]","2331":"[15591.7119 2320.8662 19.5479]","2332":"[15592.3008 2839.491 19.5754]","2333":"[15591.4414 3356.9409 19.5457]","2334":"[15591.5273 3873.2378 19.5475]","2335":"[15591.8906 4391.5127 19.5473]","2336":"[15591.9473 4911.8042 19.5505]","2337":"[15591.8516 5431.0171 19.4461]","2338":"[15591.7061 5949.1367 19.6063]","2339":"[15591.708 6466.1758 19.517]","2340":"[15586.2764 6980.1011 23.8274]","2341":"[15554.8877 7493.4102 31.768]","2342":"[15474.4717 8004.752 41.3697]","2343":"[15336.1406 8499.75 49.0191]","2344":"[15126.9551 8975.2412 54.5811]","2345":"[14845.3574 9408.4375 57.6267]","2346":"[14514.2197 9762.7686 58.089]","2347":"[14104.1133 10072.8369 56.3414]","2348":"[13648.6025 10308.8467 51.5765]","2349":"[13160.8027 10475.2959 44.7695]","2350":"[12658.8135 10577.5645 36.0587]","2351":"[12141.6865 10627.2207 26.3895]","2352":"[11626.9951 10628.3877 20.9882]","2353":"[11113.2168 10586.8408 20.132]","2354":"[10607.167 10501.6533 20.1324]","2355":"[10108.2246 10359.3037 20.0045]","2356":"[9635.5 10155.002 20.0665]","2357":"[9194.9922 9880.8955 20.2088]","2358":"[8800.8193 9548.2334 20.3678]","2359":"[8429.1299 9185.2422 20.6631]","2360":"[8062.9985 8819.0088 20.5045]","2361":"[7697.6807 8453.4834 20.4491]","2362":"[7333.0713 8088.791 20.5293]","2363":"[6969.2959 7724.8179 20.545]","2364":"[6605.9336 7361.9775 20.5476]","2365":"[6243.8511 6999.3794 20.548]","2366":"[5876.1807 6631.8667 20.5262]","2367":"[5509.2783 6265.1782 20.5108]","2368":"[5146.21 5897.1567 20.696]","2369":"[4815.248 5506.0186 20.6232]","2370":"[4538.2598 5071.8096 20.4626]","2371":"[4328.2075 4597.2852 20.4263]","2372":"[4183.5103 4103.2754 20.2958]","2373":"[4093.6011 3599.01 20.6824]","2374":"[4048.5481 3082.3367 20.7959]","2375":"[4034.5923 2566.0679 20.548]","2376":"[4034.3652 2051.4895 20.7143]","2377":"[4033.3801 1538.5859 20.4329]","2378":"[4034.0386 1019.2311 20.4311]","2379":"[4035.4194 501.6642 20.5548]","2380":"[4034.0945 -16.9003 20.6127]","2381":"[4033.303 -529.1265 20.5074]","2382":"[4033.9609 -1047.5844 21.0319]","2383":"[4034.3186 -1566.9366 21.0853]","2384":"[4034.272 -2079.8083 21.5768]","2385":"[4033.28 -2599.269 21.5434]","2386":"[4034.7219 -3117.5574 21.5096]","2387":"[4033.4302 -3634.6604 21.536]","2388":"[4034.1584 -4150.6021 21.5426]","2389":"[4034.021 -4668.5981 21.545]","2390":"[4033.626 -5188.5498 21.5881]","2391":"[4033.7761 -5707.4438 21.5788]","2392":"[4033.9746 -6225.2705 21.4955]","2393":"[4033.583 -6742.0254 21.5466]","2394":"[4034.4341 -7257.6943 21.6142]","2395":"[4033.7163 -7772.2681 21.5505]","2396":"[4034.4785 -8285.7646 21.5508]","2397":"[4033.7212 -8798.1807 21.5478]","2398":"[4032.3127 -9318.0664 20.9384]","2399":"[3990.3857 -9832.8086 18.7585]","2400":"[3878.4414 -10340.1191 14.9925]","2401":"[3688.9768 -10821.5996 13.785]","2402":"[3437.179 -11273.8701 14.3314]","2403":"[3138.0295 -11695.6279 16.5534]","2404":"[2806.0483 -12086.5547 19.5705]","2405":"[2448.8401 -12461.8281 21.3514]","2406":"[2084.6531 -12826.793 21.5512]","2407":"[1721.3793 -13190.9746 21.6185]","2408":"[1357.2734 -13552.498 21.2858]","2409":"[968.4418 -13896.1211 18.8673]","2410":"[540.3362 -14188.4775 15.7411]","2411":"[72.2928 -14405.6973 13.7867]","2412":"[-418.4337 -14555.6904 14.1063]","2413":"[-927.8293 -14651.6953 15.9209]","2414":"[-1438.9785 -14701.377 19.4442]","2415":"[-1956.3428 -14718.0811 21.134]","2416":"[-2476.5891 -14720.1924 21.5453]","2417":"[-2995.5845 -14719.498 21.6116]","2418":"[-3513.502 -14719.7324 21.5394]","2419":"[-4030.3547 -14720.2139 21.5273]","2420":"[-4546.144 -14719.5254 21.5497]","2421":"[-5060.8667 -14719.8047 21.5471]","2422":"[-5574.519 -14720.0928 21.6051]","2423":"[-6087.1152 -14720.1064 21.5399]","2424":"[-6607.1499 -14719.7979 21.5396]","2425":"[-7126.0615 -14719.6885 21.5134]","2426":"[-7643.8003 -14719.9561 21.4017]","2427":"[-8160.4014 -14719.6338 21.5024]","2428":"[-8675.8633 -14720.2256 21.5394]","2429":"[-9190.1953 -14719.3447 21.5472]","2430":"[-9703.415 -14719.6797 21.574]","2431":"[-10215.5352 -14719.6123 21.5512]","2432":"[-10734.4531 -14718.6162 21.4762]","2433":"[-11254.5762 -14701.1641 21.1465]","2434":"[-11771.0645 -14648.5439 21.0969]","2435":"[-12276.4951 -14550.459 21.1046]","2436":"[-12771.3428 -14395.4463 20.7037]","2437":"[-13236.083 -14176.8721 20.8713]","2438":"[-13664.0381 -13886.1025 21.0707]","2439":"[-14036.7998 -13526.0723 20.8963]","2440":"[-14339.4277 -13109.8096 21.0547]","2441":"[-14574.2822 -12645.4053 21.0382]","2442":"[-14740.8398 -12154.9023 21.0682]","2443":"[-14848.9639 -11650.3057 21.1308]","2444":"[-14909.0234 -11139.3447 21.0697]","2445":"[-14931.5986 -10626.5908 20.9028]","2446":"[-14935.0879 -10114.5059 26.9631]","2447":"[-14934.9189 -9598.2275 53.3081]","2448":"[-14935.0928 -9084.8555 100.2378]","2449":"[-14935.0117 -8572.0234 156.515]","2450":"[-14934.9453 -8060.3672 216.5038]","2451":"[-14935.083 -7548.3823 278.3852]","2452":"[-14935.5537 -7036.4263 340.9502]","2453":"[-14935.1875 -6524.396 403.3326]","2454":"[-14935.0654 -6012.2798 465.1671]","2455":"[-14935.2725 -5498.9316 524.9931]","2456":"[-14935.54 -4986.4551 580.9123]","2457":"[-14935.3066 -4471.6279 627.0864]","2458":"[-14935.29 -3956.0542 651.2401]","2459":"[-14935.1533 -3442.6887 657.3889]","2460":"[-14935.958 -2928.2021 657.5295]","2461":"[-14934.9756 -2414.7937 657.5419]","2462":"[-14935.0977 -1902.4775 657.5471]","2463":"[-14935.4717 -1382.7231 657.5703]","2464":"[-14935.5537 -864.0669 657.6213]","2465":"[-14935.1074 -346.5584 657.5224]","2466":"[-14936.0986 169.8224 657.5546]","2467":"[-14935.1104 685.0703 657.5081]","2468":"[-14935.333 1199.207 657.5361]","2469":"[-14935.1484 1712.243 657.5457]","2470":"[-14935.3184 2232.5708 657.5469]","2471":"[-14935.7539 2751.7703 657.4709]","2472":"[-14934.9453 3269.8186 657.5888]","2473":"[-14935.582 3786.6934 657.4869]","2474":"[-14935.1064 4302.9575 657.4811]","2475":"[-14934.5156 4823.3882 657.5066]","2476":"[-14934.9238 5342.7109 657.4988]","2477":"[-14934.7705 5860.9644 657.5178]","2478":"[-14934.8701 6378.1465 657.467]","2479":"[-14934.7578 6894.2314 657.4761]","2480":"[-14935.2734 7409.2358 657.5111]","2481":"[-14935.1846 7923.1592 657.5358]","2482":"[-14934.6709 8436.0029 657.5422]","2483":"[-14935.0635 8956.29 657.5467]","2484":"[-14929.3291 9475.54 656.8527]","2485":"[-14906.3848 9994.332 654.0695]","2486":"[-14853.9941 10504.625 647.3089]","2487":"[-14763.0771 11014.7764 635.6118]","2488":"[-14625.7139 11512.248 617.327]","2489":"[-14428.6416 11989.5029 591.146]","2490":"[-14161.293 12426.6816 555.7089]","2491":"[-13884.9775 12739.4863 518.8727]","2492":"[-13564.9219 12993.6953 476.0641]","2493":"[-13222.8115 13178.7324 430.2234]","2494":"[-12787.2793 13322.957 372.0393]","2495":"[-12279.3135 13397.5303 304.2189]","2496":"[-11766.9326 13392.3174 235.2361]","2497":"[-11260.3584 13308.0342 167.6617]","2498":"[-10835.5654 13157.2617 110.673]","2499":"[-10488.8359 12959.8984 64.4903]","2500":"[-10189.8018 12710.8936 24.603]","2501":"[-9899.0469 12366.3672 -14.2626]","2502":"[-9653.7588 11944.624 -47.1278]","2503":"[-9464.9189 11467.165 -72.2595]","2504":"[-9334.3047 10970.6807 -89.727]","2505":"[-9248.2373 10460.0859 -100.9913]","2506":"[-9199.1406 9948.8164 -107.3724]","2507":"[-9178.4043 9435.2363 -114.1777]","2508":"[-9174.0098 8919.0156 -136.583]","2509":"[-9174.707 8406.6855 -179.2815]","2510":"[-9174.0742 7892.6831 -234.2312]","2511":"[-9173.8887 7380.4331 -293.6467]","2512":"[-9174.3682 6868.2324 -355.2246]","2513":"[-9173.5039 6356.2891 -417.4937]","2514":"[-9174.3486 5843.2549 -480.4618]","2515":"[-9173.6729 5330.665 -543.4033]","2516":"[-9174.168 4817.7715 -606.3726]","2517":"[-9173.6758 4305.3062 -669.3719]","2518":"[-9173.5381 3791.7791 -732.3615]","2519":"[-9173.8291 3280.2461 -795.2213]","2520":"[-9173.3525 2766.8804 -858.3192]","2521":"[-9174.1279 2255.4866 -921.0752]","2522":"[-9173.4736 1742.2821 -984.1259]","2523":"[-9173.626 1229.9048 -1047.0403]","2524":"[-9173.6689 717.94 -1109.902]","2525":"[-9173.4229 204.5357 -1172.8611]","2526":"[-9173.8652 -307.2971 -1235.8317]","2527":"[-9173.3623 -820.5447 -1298.8149]","2528":"[-9173.6621 -1333.2821 -1361.5596]","2529":"[-9173.5293 -1846.5562 -1423.5455]","2530":"[-9173.8447 -2358.6055 -1483.575]","2531":"[-9174.1455 -2871.2898 -1540.2471]","2532":"[-9173.4336 -3384.0671 -1588.2366]","2533":"[-9173.5068 -3896.2705 -1614.3104]","2534":"[-9173.6445 -4409.4785 -1622.4789]","2535":"[-9173.7354 -4929.5283 -1622.5291]","2536":"[-9172.9668 -5448.3853 -1622.2914]","2537":"[-9161.6162 -5965.5923 -1622.4305]","2538":"[-9133.8096 -6480.4277 -1622.5508]","2539":"[-9087.3896 -6992.6118 -1622.4941]","2540":"[-9019.709 -7503.5713 -1622.5315]","2541":"[-8926.626 -8013.0122 -1622.4695]","2542":"[-8807.6484 -8515.582 -1622.4106]","2543":"[-8660.3174 -9009.04 -1622.5261]","2544":"[-8483.4004 -9490.9072 -1622.5518]","2545":"[-8269.7891 -9965.0547 -1622.667]","2546":"[-8022.1763 -10420.0605 -1622.641]","2547":"[-7740.0938 -10852.0801 -1622.6188]","2548":"[-7423.5869 -11256.7871 -1622.5924]","2549":"[-7068.3813 -11636.4141 -1622.6077]","2550":"[-6682.7319 -11981.4775 -1622.5553]","2551":"[-6270.2607 -12290.1152 -1622.4688]","2552":"[-5835.5435 -12562.1465 -1622.5469]","2553":"[-5377.1475 -12800.6074 -1622.4739]","2554":"[-4903.5264 -13003.8506 -1622.5334]","2555":"[-4418.8159 -13174.0488 -1622.5222]","2556":"[-3926.0042 -13313.6465 -1622.423]","2557":"[-3419.2751 -13426.8193 -1622.4178]","2558":"[-2908.9399 -13513.8457 -1622.3734]","2559":"[-2396.5537 -13577.5762 -1622.3258]","2560":"[-1883.2791 -13619.3975 -1622.4492]","2561":"[-1370.1357 -13642.2549 -1622.3652]","2562":"[-857.7379 -13650.0303 -1622.3894]","2563":"[-338.1085 -13650.8682 -1622.4683]","2564":"[180.3293 -13651.7793 -1622.449]","2565":"[697.5762 -13650.96 -1622.4821]","2566":"[1213.6251 -13651.209 -1622.4781]","2567":"[1729.3901 -13651.4014 -1622.5251]","2568":"[2249.3677 -13651.0742 -1622.4824]","2569":"[2768.2559 -13651.5127 -1622.4603]","2570":"[3286.0742 -13651.1162 -1622.4508]","2571":"[3802.8093 -13651.002 -1622.4276]","2572":"[4318.4746 -13650.9668 -1622.4136]","2573":"[4833.0439 -13650.5449 -1622.4421]","2574":"[5346.4395 -13646.5908 -1622.5352]","2575":"[5866.3853 -13630.8232 -1622.3882]","2576":"[6383.9785 -13595.543 -1622.4553]","2577":"[6898.4424 -13539.9834 -1622.4464]","2578":"[7408.6738 -13462.4512 -1622.4175]","2579":"[7913.0503 -13360.2148 -1622.3679]","2580":"[8409.666 -13230.9502 -1622.4415]","2581":"[8904.1523 -13070.4502 -1622.6241]","2582":"[9385.3008 -12878.4629 -1622.7145]","2583":"[9849.6924 -12653.1338 -1622.6516]","2584":"[10293.3799 -12393.542 -1622.603]","2585":"[10719.0586 -12094.6816 -1622.4827]","2586":"[11116.293 -11760.8174 -1622.7129]","2587":"[11478.6885 -11396.584 -1622.6576]","2588":"[11811.8027 -10997.0938 -1622.5825]","2589":"[12107.7725 -10571.9893 -1622.5153]","2590":"[12366.5947 -10125.7373 -1622.5939]","2591":"[12589.543 -9662.6641 -1622.5184]","2592":"[12778.4395 -9186.6572 -1622.5922]","2593":"[12937.5 -8692.9531 -1622.4379]","2594":"[13066.0029 -8192.1865 -1622.4603]","2595":"[13167.7412 -7686.9097 -1622.4841]","2596":"[13244.1299 -7178.7417 -1622.4424]","2597":"[13298.9863 -6663.3345 -1622.4619]","2598":"[13333.1875 -6147.1001 -1622.3564]","2599":"[13348.6904 -5631.2666 -1622.4866]","2600":"[13353.5986 -5116.3525 -1622.3433]","2601":"[13352.9629 -4602.6108 -1622.282]","2602":"[13340.4922 -4090.4893 -1622.4399]","2603":"[13300.8936 -3573.9951 -1622.3695]","2604":"[13218.0039 -3064.7881 -1622.4761]","2605":"[13083.2031 -2569.605 -1622.5876]","2606":"[12886.3604 -2090.3752 -1622.5751]","2607":"[12624.3428 -1648.2295 -1622.2891]","2608":"[12295.2002 -1246.7188 -1622.369]","2609":"[11934.4717 -872.7379 -1622.5042]","2610":"[11569.8975 -508.3631 -1622.3958]","2611":"[11205.2305 -145.7631 -1622.486]","2612":"[10843.0664 217.7929 -1622.4579]","2613":"[10480.8721 579.7758 -1622.4529]","2614":"[10113.3057 946.9196 -1622.453]","2615":"[9747.2119 1313.9611 -1622.4331]","2616":"[9381.1982 1679.5242 -1622.4856]","2617":"[9016.0771 2044.4166 -1622.4589]","2618":"[8651.9189 2408.7205 -1622.3827]","2619":"[8288.0664 2771.7126 -1622.4392]","2620":"[7926.0469 3134.8464 -1622.4751]","2621":"[7558.7114 3502.0894 -1622.3981]","2622":"[7192.7964 3867.8613 -1622.1749]","2623":"[6828.1411 4232.96 -1622.2437]","2624":"[6463.9282 4596.8506 -1622.2032]","2625":"[6100.5288 4959.856 -1622.208]","2626":"[5738.5596 5322.6084 -1622.1741]","2627":"[5370.8008 5689.5781 -1622.283]","2628":"[5004.7939 6056.6143 -1622.181]","2629":"[4638.6406 6421.771 -1622.256]","2630":"[4274.1157 6786.8408 -1622.1818]","2631":"[3909.5217 7150.1436 -1622.2904]","2632":"[3547.1313 7513.9307 -1622.2477]","2633":"[3184.7036 7875.9087 -1622.2278]","2634":"[2817.2002 8242.4844 -1622.3406]","2635":"[2451.2737 8608.7813 -1622.3656]","2636":"[2086.9045 8974.8076 -1622.4337]","2637":"[1722.1071 9338.5996 -1622.496]","2638":"[1358.3278 9701.4297 -1622.5256]","2639":"[996.5794 10063.9658 -1622.4293]","2640":"[630.5446 10430.834 -1622.376]","2641":"[264.4026 10795.667 -1622.2334]","2642":"[-100.0604 11160.1523 -1622.2959]","2643":"[-462.9668 11523.958 -1622.3492]","2644":"[-825.6285 11886.1465 -1622.3845]","2645":"[-1191.8497 12253.4014 -1622.4996]","2646":"[-1557.6785 12619.1338 -1622.5363]","2647":"[-1922.9546 12983.4785 -1622.3834]","2648":"[-2286.0264 13348.0654 -1622.4539]","2649":"[-2649.4678 13710.375 -1622.452]","2650":"[-3016.7283 14077.9551 -1622.4523]","2651":"[-3383.5693 14443.9697 -1622.4432]","2652":"[-3760.2542 14797.126 -1622.2668]","2653":"[-4156.1704 15124.502 -1622.5941]","2654":"[-4582.4468 15419.6025 -1622.5739]","2655":"[-5034.502 15665.833 -1622.7061]","2656":"[-5517.6484 15852.5752 -1622.5513]","2657":"[-6018.4375 15963.4854 -1622.3605]","2658":"[-6534.3921 16003.8408 -1622.3541]","2659":"[-7050.2671 16007.2754 -1622.4641]","2660":"[-7564.5649 16008.6904 -1622.5278]","2661":"[-8077.2725 16007.9502 -1622.5084]","2662":"[-8595.7285 16008.5342 -1622.4584]","2663":"[-9112.6143 16008.2041 -1622.4564]","2664":"[-9627.9355 16008.5254 -1622.4536]","2665":"[-10141.6807 16008.377 -1622.4521]","2666":"[-10653.8506 16008.4863 -1622.4568]","2667":"[-11171.6221 16008.0459 -1622.4409]","2668":"[-11687.7578 16008.3496 -1622.3619]","2669":"[-12202.2217 16007.6777 -1622.5143]","2670":"[-12714.9766 16007.8271 -1622.4437]","2671":"[-13233.1738 16007.7842 -1622.4545]","2672":"[-13749.6807 16008.2832 -1622.4532]","2673":"[-13834.4248 16008.1436 -1622.4515]"},"3":{"1":"[-5684.7476 15039.6465 -3756.4209]","2":"[-6199.4663 15056.8027 -3756.4556]","3":"[-6708.3145 15115.623 -3756.5195]","4":"[-7209.0005 15233.3184 -3756.3623]","5":"[-7693.7002 15399.5156 -3756.4556]","6":"[-8169.4634 15591.1133 -3756.3997]","7":"[-8650.0898 15777.4717 -3756.3459]","8":"[-9145.3164 15920.6621 -3756.3352]","9":"[-9650.2705 16009.1484 -3756.4275]","10":"[-10161.6025 16042.5752 -3756.4158]","11":"[-10248.2197 16044.8516 -3756.4739]"},"4":{"1":"[-10870.9697 2876.0461 -2732.3955]","2":"[-10851.7891 3389.571 -2732.4009]","3":"[-10790.0303 3900.5088 -2732.4231]","4":"[-10691.5918 4403.1987 -2732.3853]","5":"[-10594.8818 4908.7271 -2732.4729]","6":"[-10534.1016 5421.9829 -2732.4558]","7":"[-10506.9912 5939.0391 -2732.4268]","8":"[-10499.6895 6456.1357 -2732.3462]","9":"[-10498.7041 6968.6128 -2732.3586]","10":"[-10498.8965 7484.6821 -2732.3196]","11":"[-10498.8232 7998.1997 -2732.4529]","12":"[-10498.2842 8510.585 -2732.3843]","13":"[-10498.9365 9027.2412 -2732.4929]","14":"[-10499.2383 9542.0664 -2732.4312]","15":"[-10498.4736 10054.79 -2732.5627]","16":"[-10499.3115 10570.7178 -2732.4778]","17":"[-10498.8154 11083.9873 -2732.4065]","18":"[-10498.4463 11599.6904 -2732.4309]","19":"[-10499.0693 12112.0625 -2732.4797]","20":"[-10498.6924 12626.0029 -2732.4651]","21":"[-10499.0215 13140.9766 -2732.3877]","22":"[-10499.1367 13656.459 -2732.4504]","23":"[-10498.5117 14168.543 -2732.4463]","24":"[-10498.4082 14293.583 -2732.4363]"},"5":{"1":"[-10499.1016 8653.5928 -2732.4209]","2":"[-10499.3047 8552.2803 -2732.4316]","3":"[-10478.5361 8040.644 -2732.4504]","4":"[-10415.5908 7531.7734 -2732.3193]","5":"[-10325.9219 7026.3838 -2732.2939]","6":"[-10258.5771 6518.0098 -2732.4668]","7":"[-10241.1084 6256.7397 -2732.3896]"},"6":{"1":"[-9862.5449 2859.6384 -2732.4199]","2":"[-9881.4268 3372.1169 -2732.5044]","3":"[-9941.2979 3883.0371 -2732.5037]","4":"[-10039.7617 4390.1416 -2732.0195]","5":"[-10137.1777 4894.9668 -2732.293]","6":"[-10198.958 5404.9341 -2732.1785]","7":"[-10226.585 5918.1406 -2732.3113]","8":"[-10234.0381 6430.9316 -2732.4185]","9":"[-10235.0088 6945.4531 -2732.5281]","10":"[-10235.1914 7463.8018 -2732.406]","11":"[-10234.8799 7977.769 -2732.4302]","12":"[-10235.2588 8493.21 -2732.332]","13":"[-10235.2217 9010.167 -2732.3789]","14":"[-10235.3271 9522.9629 -2732.4431]","15":"[-10234.7588 10037.9932 -2732.4866]","16":"[-10234.6953 10551.8457 -2732.4199]","17":"[-10235.4102 11071.3037 -2732.5166]","18":"[-10234.625 11587.127 -2732.4851]","19":"[-10235.1689 12099.3809 -2732.4175]","20":"[-10235.5205 12616.9268 -2732.4824]","21":"[-10234.8359 13130.1836 -2732.481]","22":"[-10235.1455 13647.0703 -2732.4517]","23":"[-10234.6035 14159.7119 -2732.4519]","24":"[-10234.793 14288.9648 -2732.4077]"},"7":{"1":"[-10234.8252 8606.8115 -2732.5483]","2":"[-10235.4902 8505.8613 -2732.374]","3":"[-10258.6172 7990.5928 -2732.3567]","4":"[-10327.5469 7482.2612 -2731.9226]","5":"[-10416.5527 6976.5674 -2732.3235]","6":"[-10480.1611 6466.103 -2732.3516]","7":"[-10505.3428 5984.5674 -2732.426]"},"8":{"1":"[1665.5681 -4909.7021 -2732.3977]","2":"[1750.8396 -5417.0923 -2732.3972]","3":"[1795.9111 -5930.332 -2732.4075]","4":"[1782.5428 -6446.896 -2732.1335]","5":"[1715.8392 -6958.3818 -2732.4668]","6":"[1619.9119 -7463.3911 -2732.4868]","7":"[1530.3253 -7971.896 -2732.3442]","8":"[1483.0995 -8482.4043 -2732.2544]","9":"[1493.1205 -8996.3535 -2732.3369]","10":"[1556.3998 -9505.2305 -2732.373]","11":"[1608.6178 -9794.9531 -2732.4241]"},"9":{"1":"[8464.0391 7329.519 -2219.8528]","2":"[8442.3105 7841.3652 -2219.9539]","3":"[8374.5029 8354.9814 -2220.3052]","4":"[8273.168 8861.0664 -2220.5132]","5":"[8179.0747 9371.3047 -2220.3933]","6":"[8123.2798 9882.373 -2220.4546]","7":"[8099.3086 10398.2432 -2219.7349]","8":"[8093.4692 10912.2705 -2219.491]","9":"[8075.1519 11430.0537 -2219.4182]","10":"[8017.0835 11939.6875 -2219.3787]","11":"[7893.2485 12440.5508 -2219.3975]","12":"[7686.874 12915.2041 -2219.5813]","13":"[7481.8213 13224.7109 -2219.5127]","14":"[7183.6704 13537.7344 -2219.3708]","15":"[6901.502 13745.4111 -2219.3496]","16":"[6447.1436 13970.4863 -2219.2546]","17":"[5965.9585 14111.5957 -2219.384]","18":"[5456.8418 14187.0449 -2219.2791]","19":"[4944.4458 14205.9336 -2219.0903]","20":"[4432.7183 14171.1201 -2219.4001]","21":"[3926.0503 14075.7734 -2219.4194]","22":"[3438.0378 13904.4307 -2219.4736]","23":"[3060.1375 13691.8496 -2219.4058]","24":"[2758.4426 13443.7285 -2219.4385]","25":"[2497.2036 13137.7324 -2219.4592]","26":"[2287.1897 12780.2197 -2219.3794]","27":"[2107.0083 12296.5313 -2219.356]","28":"[2003.8759 11787.6895 -2219.4521]","29":"[1961.5043 11274.5176 -2219.4324]","30":"[1952.2203 10756.7168 -2219.4277]","31":"[1968.1733 10242.7275 -2219.2842]","32":"[2023.9193 9731.7549 -2219.4651]","33":"[2111.8494 9221.8115 -2219.425]","34":"[2212.6255 8715.2051 -2219.4351]","35":"[2314.9934 8207.1914 -2219.3252]","36":"[2415.187 7698.1533 -2219.3589]","37":"[2516.6079 7192.5425 -2219.4209]","38":"[2616.4897 6687.1992 -2219.4226]","39":"[2717.323 6181.7598 -2219.4204]","40":"[2816.991 5679.3799 -2219.3721]","41":"[2918.3196 5170.0103 -2219.4421]","42":"[3018.8171 4663.8726 -2219.4241]","43":"[3118.583 4160.9497 -2219.5229]","44":"[3220.3608 3651.2888 -2219.4163]","45":"[3320.7813 3144.554 -2219.3977]","46":"[3422.0498 2637.3794 -2219.4429]","47":"[3522.4128 2130.531 -2219.4104]","48":"[3622.7124 1624.8605 -2219.3909]","49":"[3723.9478 1116.42 -2219.3987]","50":"[3824.9465 612.8533 -2219.4331]","51":"[3925.6108 104.2535 -2219.4063]","52":"[4025.0479 -398.821 -2219.4634]","53":"[4126.3604 -902.9211 -2219.2979]","54":"[4225.7803 -1406.4818 -2219.3489]","55":"[4292.4487 -1741.5797 -2219.4448]"},"10":{"1":"[8465.4473 6873.0542 -2219.313]","2":"[8465.9063 6770.187 -2219.3118]","3":"[8487.6377 6255.9019 -2219.3662]","4":"[8557.4531 5744.3428 -2219.3228]","5":"[8684.1133 5244.6875 -2219.5649]","6":"[8859.2363 4759.811 -2219.4839]","7":"[9053.0117 4281.4937 -2219.428]","8":"[9233.0469 3799.1748 -2219.4509]","9":"[9366.4316 3304.6978 -2219.3796]","10":"[9444.5186 2797.9265 -2219.259]","11":"[9471.0947 2285.0151 -2219.6453]","12":"[9472.6074 2169.4646 -2219.71]"},"11":{"1":"[14452.4785 -2731.0142 -369.4182]","2":"[14454.2002 -2831.9658 -369.4692]","3":"[14482.083 -3343.5774 -369.4999]","4":"[14557.5244 -3853.1855 -369.3214]","5":"[14659.2002 -4357.2568 -369.4039]","6":"[14747.3506 -4862.127 -369.2599]","7":"[14798.8984 -5374.5898 -369.2908]","8":"[14819.1982 -5889.1943 -371.5239]","9":"[14823.8555 -6405.9067 -386.2061]","10":"[14824.1826 -6919.1714 -420.1409]","11":"[14824.2656 -7435.9111 -460.6422]","12":"[14824.4912 -7952.4697 -487.708]","13":"[14824.7656 -8469.334 -497.2754]","14":"[14824.791 -8987.0361 -497.3188]","15":"[14824.8252 -9504.7686 -497.4149]","16":"[14824.5078 -10023.4893 -497.5075]","17":"[14824.1074 -10536.4775 -497.3666]","18":"[14823.96 -11050.8027 -497.3991]","19":"[14824.3506 -11568.084 -497.403]","20":"[14824.457 -12084.0654 -497.4504]","21":"[14824.2295 -12596.1074 -497.4329]","22":"[14824.0693 -13112.5508 -497.4748]","23":"[14824.9277 -13624.9541 -497.4376]","24":"[14823.834 -14141.4824 -497.4262]","25":"[14823.8789 -14657.0488 -497.4437]","26":"[14824.4023 -15158.624 -497.4097]"},"12":{"1":"[14824.7061 -10471.8936 -497.4314]","2":"[14842.1445 -9958.9053 -497.4393]","3":"[14900.6436 -9446.8135 -497.5256]","4":"[14989.5449 -8939.2881 -497.4455]","5":"[15061.46 -8430.8877 -497.1534]","6":"[15087.6133 -7918.98 -486.7771]","7":"[15087.8369 -7895.8794 -485.8729]"},"13":{"1":"[15459.5244 -2775.7981 -369.4145]","2":"[15457.3789 -2876.5476 -369.3204]","3":"[15426.6797 -3389.1758 -369.2701]","4":"[15346.6777 -3899.5076 -369.3903]","5":"[15243.6523 -4403.4243 -369.3727]","6":"[15157.8711 -4913.2451 -369.4397]","7":"[15109.9346 -5429.7661 -369.2259]","8":"[15091.8701 -5943.3579 -372.2113]","9":"[15087.8271 -6457.4341 -388.7292]","10":"[15088.083 -6972.0869 -424.4951]","11":"[15087.9932 -7483.1079 -464.1251]","12":"[15088.3145 -8000.6929 -489.0957]","13":"[15088.291 -8513.501 -497.4406]","14":"[15088.2754 -9031.9248 -497.169]","15":"[15088.3994 -9544.6934 -497.3565]","16":"[15088.2432 -10061.2842 -497.4388]","17":"[15088.29 -10573.668 -497.4427]","18":"[15087.8008 -11090.1865 -497.4804]","19":"[15088.7334 -11602.541 -497.382]","20":"[15088.7197 -12118.8389 -497.4926]","21":"[15088.373 -12630.9336 -497.3958]","22":"[15088.416 -13146.7646 -497.4641]","23":"[15088.2754 -13663.2471 -497.4361]","24":"[15087.9932 -14176.5176 -497.4692]","25":"[15088.0967 -14691.3916 -497.4488]","26":"[15088.2773 -15158.3818 -497.4299]"},"14":{"1":"[15088.3174 -10517.4385 -497.337]","2":"[15073.7637 -10003.3516 -497.3589]","3":"[15020.3604 -9491.54 -496.9701]","4":"[14931.2314 -8984.3027 -497.3188]","5":"[14855.6484 -8476.3047 -497.207]","6":"[14826.627 -7965.0142 -488.1588]","7":"[14824.6279 -7774.7686 -481.018]"},"15":{"1":"[-2072.5559 -13606.8916 -7494.1548]","2":"[-2585.6052 -13590.5117 -7494.2002]","3":"[-3095.532 -13532.8281 -7494.0781]","4":"[-3597.5498 -13417.1309 -7494.0869]","5":"[-4086.3401 -13251.4805 -7494.2886]","6":"[-4563.9575 -13058.9697 -7494.1948]","7":"[-5042.9023 -12872.9463 -7494.2314]","8":"[-5537.064 -12728.0215 -7494.0288]","9":"[-6042.8818 -12638.6738 -7494.0703]","10":"[-6555.4917 -12602.6621 -7488.6216]","11":"[-6624.7017 -12598.6367 -7488.6069]"},"16":{"1":"[5518.9653 -11179.8574 -8900.0264]","2":"[5419.165 -11180.2002 -8892.5713]","3":"[4904.5747 -11180.0928 -8843.9697]","4":"[4388.2876 -11180.3184 -8786.5869]","5":"[3879.6548 -11179.9346 -8726.6611]","6":"[3367.1443 -11180.1875 -8664.6191]","7":"[2849.8997 -11180.7041 -8601.4639]","8":"[2333.4307 -11179.8213 -8537.9863]","9":"[1822.1011 -11180.6094 -8475.3174]","10":"[1302.9396 -11180.5352 -8411.4775]","11":"[780.661 -11180.4023 -8347.3496]","12":"[265.732 -11180.7578 -8284.123]","13":"[-257.8615 -11180.3555 -8219.9102]","14":"[-774.1168 -11180.4023 -8156.4312]","15":"[-1296.4147 -11180.4639 -8092.3193]","16":"[-1809.7366 -11180.0625 -8029.3032]","17":"[-2330.4265 -11180.2568 -7965.3936]","18":"[-2839.0793 -11180.4795 -7902.9004]","19":"[-3363.8037 -11180.6387 -7838.4673]","20":"[-3879.4321 -11180.5117 -7775.1528]","21":"[-4388.9165 -11179.8799 -7712.6689]","22":"[-4908.4351 -11180.2041 -7648.8228]","23":"[-5435.998 -11180.793 -7583.9902]","24":"[-5950.7275 -11180.4463 -7520.8838]","25":"[-6471.6826 -11180.2793 -7456.9663]","26":"[-6997.4482 -11180.5615 -7392.3452]","27":"[-7508.5786 -11180.6426 -7329.5615]","28":"[-8022.6338 -11180.4092 -7266.4385]","29":"[-8538.1045 -11180.3916 -7203.1226]","30":"[-9053.4619 -11180.7402 -7139.9404]","31":"[-9571.9883 -11180.4619 -7076.2544]","32":"[-10092.2334 -11180.4229 -7013.2227]","33":"[-10610.8994 -11180.4219 -6951.8022]","34":"[-11126.957 -11180.3516 -6893.6924]","35":"[-11639.3193 -11180.3242 -6842.6602]","36":"[-12156.1592 -11179.627 -6809.3442]","37":"[-12671.2803 -11158.9961 -6796.5713]","38":"[-13183.3789 -11094.8193 -6796.4067]","39":"[-13680.502 -10964.082 -6796.4058]","40":"[-14146.502 -10751.1514 -6796.2793]","41":"[-14442.8398 -10546.375 -6796.355]","42":"[-14756.8389 -10235.375 -6796.4424]","43":"[-14961.2969 -9945.543 -6796.4312]","44":"[-15179.0303 -9482.0918 -6796.2778]","45":"[-15314.6846 -8982.2129 -6796.4014]","46":"[-15382.0547 -8469.8994 -6796.3013]","47":"[-15402.8945 -7952.0684 -6796.4224]","48":"[-15404.292 -7430.3242 -6796.4893]","49":"[-15404.6484 -6911.1577 -6796.3989]","50":"[-15404.7021 -6391.5859 -6796.4966]","51":"[-15403.873 -5872.2202 -6796.4121]","52":"[-15404.0625 -5350.2065 -6796.4209]","53":"[-15404.2773 -4834.105 -6796.4189]","54":"[-15404.6309 -4312.2798 -6796.501]","55":"[-15404.3438 -3785.8848 -6796.5449]","56":"[-15404.0947 -3258.7322 -6796.5063]","57":"[-15404.2402 -2736.6458 -6796.4688]","58":"[-15404.7236 -2213.7068 -6796.4956]","59":"[-15404.7471 -1698.5889 -6796.4438]","60":"[-15404.541 -1172.1184 -6796.4341]","61":"[-15404.5391 -647.5566 -6796.4248]","62":"[-15404.3496 -122.594 -6796.5225]","63":"[-15404.4648 389.4152 -6796.4761]","64":"[-15404.2285 917.8057 -6796.3462]","65":"[-15403.7285 1444.3104 -6796.4155]","66":"[-15404.3174 1968.9227 -6794.502]","67":"[-15404.2979 2497.9331 -6774.0283]","68":"[-15403.7383 3014.1501 -6731.5435]","69":"[-15404.2256 3532.4958 -6676.1553]","70":"[-15403.9014 4054.8867 -6615.5483]","71":"[-15404.0723 4581.8398 -6552.1816]","72":"[-15404.8994 5102.7378 -6488.5825]","73":"[-15404.7227 5619.1147 -6425.5781]","74":"[-15404.1426 6133.5977 -6362.4834]","75":"[-15404.4795 6645.7373 -6299.6104]","76":"[-15405.1035 7161.0127 -6236.2671]","77":"[-15404.8887 7677.7603 -6172.8794]","78":"[-15403.915 8192.1338 -6109.772]","79":"[-15404.8867 8700.9814 -6047.5293]","80":"[-15404.5547 9210.4814 -5985.9985]","81":"[-15404.8389 9722.041 -5926.085]","82":"[-15404.3701 10234.9053 -5869.4341]","83":"[-15404.54 10745.3027 -5821.376]","84":"[-15404.7822 11262.001 -5794.6172]","85":"[-15401.6426 11777.501 -5785.0396]","86":"[-15373.5938 12292.1572 -5785.1738]","87":"[-15294.1895 12799.2949 -5785.373]","88":"[-15144.752 13291.6426 -5785.355]","89":"[-14924.3086 13725.7773 -5785.6343]","90":"[-14714.624 14004.1191 -5785.5742]","91":"[-14383.9648 14312.0703 -5785.4624]","92":"[-14095.2109 14498.9434 -5785.2734]","93":"[-13620.0908 14703.3867 -5785.2998]","94":"[-13120.4912 14825.7686 -5785.374]","95":"[-12603.625 14882.9727 -5784.9204]","96":"[-12087.0332 14899.292 -5785.1719]","97":"[-11573.8164 14898.167 -5784.8877]","98":"[-11053.248 14899.085 -5784.8989]","99":"[-10530.4355 14899.0166 -5784.8677]","100":"[-10012.291 14899.3779 -5784.8823]","101":"[-9493.7012 14898.9814 -5784.9082]","102":"[-8973.4111 14898.9863 -5784.9077]","103":"[-8454.9863 14899.3467 -5784.873]","104":"[-7938.4004 14899.0771 -5784.9141]","105":"[-7413.3525 14898.8369 -5784.9502]","106":"[-6888.1631 14898.999 -5784.8086]","107":"[-6376.0811 14899.0234 -5784.8975]","108":"[-5852.1948 14899.4385 -5784.9165]","109":"[-5332.1836 14899.1387 -5784.9038]","110":"[-4814.5034 14899.1357 -5784.9053]","111":"[-4297.2354 14898.5986 -5785.1128]","112":"[-3784.1001 14876.9141 -5785.0869]","113":"[-3269.7175 14811.7568 -5785.1992]","114":"[-2766.4773 14674.9463 -5785.4097]","115":"[-2299.0232 14454.6104 -5785.2573]","116":"[-2006.8336 14247.999 -5785.5044]","117":"[-1709.613 13947.8438 -5785.3687]","118":"[-1492.7274 13633.6143 -5785.1919]","119":"[-1287.4567 13184.2559 -5785.3687]","120":"[-1154.2697 12681.6191 -5785.3013]","121":"[-1089.1102 12167.8164 -5784.981]","122":"[-1069.0697 11645.2744 -5785.082]","123":"[-1069.0673 11124.0156 -5771.0322]","124":"[-1069.1348 10599.6182 -5736.3491]","125":"[-1068.5175 10087.501 -5684.3174]","126":"[-1069.8293 9574.917 -5625.9546]","127":"[-1068.6647 9049.8945 -5563.6353]","128":"[-1068.4429 8540.9492 -5502.3257]","129":"[-1068.4012 8030.5435 -5441.814]","130":"[-1068.4486 7519.3984 -5383.3491]","131":"[-1068.7521 7001.1738 -5329.6289]","132":"[-1068.749 6487.1455 -5291.311]","133":"[-1068.9097 5971.6841 -5274.7598]","134":"[-1069.381 5448.9785 -5273.5264]","135":"[-1068.7133 4927.7935 -5273.314]","136":"[-1068.9852 4406.5947 -5273.3774]","137":"[-1069.573 3889.4258 -5273.439]","138":"[-1068.9806 3367.9844 -5273.4229]","139":"[-1068.913 2850.1274 -5273.418]","140":"[-1069.1246 2328.2776 -5273.3442]","141":"[-1069.3137 1809.4321 -5273.4111]","142":"[-1068.8923 1286.6053 -5273.4688]","143":"[-1069.0417 761.3607 -5273.3882]","144":"[-1069.7817 237.9673 -5273.2295]","145":"[-1068.9418 -283.5324 -5273.3926]","146":"[-1068.7813 -803.2028 -5273.4155]","147":"[-1069.2131 -1321.0343 -5273.4248]","148":"[-1069.4551 -1837.0529 -5273.4268]","149":"[-1068.8628 -2349.9243 -5273.3975]","150":"[-1068.7008 -2877.1797 -5273.438]","151":"[-1068.724 -3401.5579 -5273.4756]","152":"[-1069.123 -3923.1584 -5273.4751]","153":"[-1068.929 -4442.5562 -5273.4492]","154":"[-1068.6428 -4959.9468 -5273.4287]","155":"[-1068.8357 -5475.3438 -5273.4248]","156":"[-1070.0065 -5988.6177 -5273.2544]","157":"[-1086.7894 -6511.8613 -5273.0996]","158":"[-1139.1967 -7029.3901 -5273.6025]","159":"[-1237.9387 -7535.8589 -5273.2222]","160":"[-1396.3795 -8036.6851 -5272.8618]","161":"[-1619.1816 -8507.6621 -5273.1445]","162":"[-1912.2506 -8933.4512 -5273.1729]","163":"[-2270.8291 -9300.9961 -5273.2466]","164":"[-2696.5378 -9605.8271 -5273.0957]","165":"[-3163.1902 -9838.2471 -5273.4253]","166":"[-3659.0403 -10002.5762 -5273.3047]","167":"[-4162.9634 -10108.0273 -5273.3242]","168":"[-4672.7036 -10165.1846 -5273.4424]","169":"[-5196.23 -10183.0742 -5272.8608]","170":"[-5715.8262 -10160.9023 -5273.1875]","171":"[-6227.8115 -10097.2334 -5273.3164]","172":"[-6739.7515 -9983.8154 -5273.019]","173":"[-7230.7534 -9810.3223 -5273.5337]","174":"[-7689.0483 -9571.543 -5273.2539]","175":"[-8099.4868 -9264.0977 -5273.2046]","176":"[-8455.6035 -8883.6777 -5273.2563]","177":"[-8740.4492 -8450.7305 -5273.2998]","178":"[-8953.0723 -7980.4868 -5273.2437]","179":"[-9101.9199 -7488.3198 -5273.3589]","180":"[-9195.7949 -6981.4263 -5273.2939]","181":"[-9245.1152 -6465.7275 -5273.375]","182":"[-9259.3115 -5948.3613 -5273.3721]","183":"[-9261.1895 -5432.3809 -5273.4614]","184":"[-9259.459 -4912.8359 -5273.4023]","185":"[-9260.9229 -4394.0474 -5273.5063]","186":"[-9260.4482 -3879.1904 -5273.4478]","187":"[-9259.7754 -3352.272 -5273.4248]","188":"[-9260.251 -2835.2437 -5273.4185]","189":"[-9260.6475 -2307.364 -5273.4497]","190":"[-9260.1758 -1785.9907 -5273.4209]","191":"[-9260.083 -1271.9915 -5273.3604]","192":"[-9260.6924 -751.6728 -5273.4048]","193":"[-9260.3496 -230.1136 -5273.4521]","194":"[-9259.958 289.5346 -5273.3789]","195":"[-9260.0508 807.2825 -5273.2935]","196":"[-9260.1621 1323.1759 -5273.377]","197":"[-9260.4209 1837.2067 -5273.4009]","198":"[-9260.6523 2359.9744 -5273.3936]","199":"[-9260.2871 2883.6086 -5273.3916]","200":"[-9259.3184 3402.8679 -5273.3848]","201":"[-9260.8076 3922.1951 -5273.2983]","202":"[-9260.4434 4438.1431 -5273.4165]","203":"[-9259.9131 4952.0894 -5273.3589]","204":"[-9260.7197 5478.271 -5273.3745]","205":"[-9260.1309 5999.0078 -5273.2803]","206":"[-9260.8721 6521.0659 -5273.3677]","207":"[-9260.3623 7041.0918 -5273.4404]","208":"[-9260.2568 7559.1182 -5273.4253]","209":"[-9260.4727 8075.1724 -5273.4238]","210":"[-9260.4258 8589.2637 -5273.3633]","211":"[-9260.3037 9101.4072 -5273.4561]","212":"[-9260.8809 9625.7402 -5273.4893]","213":"[-9259.6074 10147.9141 -5273.1631]","214":"[-9245.0049 10667.1768 -5273.3975]","215":"[-9196.8623 11180.9453 -5273.3638]","216":"[-9102.8926 11684.8848 -5273.2578]","217":"[-8952.6885 12185.5713 -5273.2529]","218":"[-8736.9941 12657.3223 -5273.1816]","219":"[-8453.9912 13087.1221 -5273.1289]","220":"[-8094.2178 13468.7412 -5273.2734]","221":"[-7675.4331 13779.4082 -5272.9458]","222":"[-7214.6387 14016.6992 -5273.3511]","223":"[-6727.0352 14186.165 -5273.4106]","224":"[-6224.9082 14297.0547 -5273.3823]","225":"[-5716.3994 14359.7324 -5273.2939]","226":"[-5194.9038 14383.9609 -5273.4863]","227":"[-4670.0415 14388.2715 -5273.3862]","228":"[-4144.6543 14386.8936 -5273.4819]","229":"[-3621.3635 14387.4756 -5273.4409]","230":"[-3100.1382 14387.835 -5273.4307]","231":"[-2580.9771 14387.5107 -5273.3462]","232":"[-2063.823 14387.3662 -5273.4497]","233":"[-1548.7195 14387.7129 -5273.5137]","234":"[-1035.6228 14387.124 -5273.5044]","235":"[-521.0953 14387.5869 -5273.3433]","236":"[4.6396 14387.5791 -5273.4019]","237":"[521.9709 14387.0654 -5273.4189]","238":"[1039.2723 14387.1895 -5273.4199]","239":"[1554.7543 14387.6152 -5273.3867]","240":"[2068.4307 14387.5127 -5273.4546]","241":"[2597.8962 14387.2568 -5273.4985]","242":"[3125.4609 14387.4746 -5273.5068]","243":"[3651.1133 14387.7822 -5273.417]","244":"[4174.8784 14387.79 -5273.4365]","245":"[4689.9434 14387.5791 -5273.439]","246":"[5212.3242 14387.4746 -5273.4268]","247":"[5727.9551 14387.3936 -5273.3926]","248":"[6241.666 14387.4014 -5273.4048]","249":"[6764.1089 14387.3691 -5273.4961]","250":"[7283.0591 14382.3916 -5273.271]","251":"[7798.188 14352 -5273.1265]","252":"[8306.0049 14281.6787 -5273.2329]","253":"[8813.8438 14158.4004 -5273.1919]","254":"[9299.0234 13976.4063 -5273.0229]","255":"[9748.7285 13726.4766 -5273.4307]","256":"[10159.3281 13400.7236 -5273.3584]","257":"[10495.4863 13020.251 -5273.3828]","258":"[10769.2949 12580.0518 -5273.4146]","259":"[10971.6104 12105.8379 -5273.1113]","260":"[11110.6563 11611.4482 -5273.1284]","261":"[11198.4131 11094.582 -5273.1367]","262":"[11240.1621 10574.3447 -5273.27]","263":"[11251.4004 10054.2979 -5273.4678]","264":"[11251.1973 9536.0654 -5273.4478]","265":"[11251.2129 9020.4023 -5273.4595]","266":"[11251.5371 8504.4668 -5273.4287]","267":"[11251.5107 7977.9951 -5273.4229]","268":"[11251.501 7463.0894 -5273.4258]","269":"[11251.0605 6937.2358 -5273.4302]","270":"[11251.043 6420.5361 -5273.478]","271":"[11251.4697 5899.9902 -5273.4194]","272":"[11251.4736 5374.9224 -5273.4453]","273":"[11251.6484 4851.7417 -5273.4839]","274":"[11251.4824 4330.417 -5273.4473]","275":"[11250.834 3810.947 -5273.4307]","276":"[11251.1816 3293.3179 -5273.3765]","277":"[11251.8174 2777.5005 -5273.4395]","278":"[11251.2744 2263.5022 -5273.4619]","279":"[11251.1982 1751.3064 -5273.3164]","280":"[11251.4277 1222.6715 -5273.3789]","281":"[11251.249 699.8514 -5273.4375]","282":"[11251.2109 172.1956 -5273.3784]","283":"[11251.3369 -355.5267 -5273.3218]","284":"[11251.2031 -881.2529 -5273.3882]","285":"[11251.373 -1404.9948 -5273.3252]","286":"[11251.0088 -1926.7977 -5273.3984]","287":"[11251.2266 -2450.1458 -5273.4268]","288":"[11250.9082 -2973.311 -5278.8022]","289":"[11251.2129 -3495.0869 -5302.1641]","290":"[11250.9219 -4008.896 -5347.8154]","291":"[11250.7783 -4523.0679 -5403.582]","292":"[11251.1201 -5043.5015 -5464.3882]","293":"[11251.2236 -5555.1836 -5525.5933]","294":"[11251.6904 -6070.1211 -5587.0723]","295":"[11251.459 -6586.4077 -5648.022]","296":"[11251.4443 -7110.6445 -5705.8286]","297":"[11251.5811 -7631.2402 -5753.6304]","298":"[11251.377 -8145.8442 -5778.1963]","299":"[11251.3457 -8671.5029 -5785.686]","300":"[11251.3867 -9196.502 -5785.479]","301":"[11251.377 -9719.3838 -5785.4253]","302":"[11251.6104 -10240.208 -5785.2944]","303":"[11251.4922 -10758.9121 -5785.4297]","304":"[11247.8877 -11274.71 -5785.1787]","305":"[11219.96 -11796.4707 -5785.3008]","306":"[11152.9824 -12315.2041 -5785.3633]","307":"[11036.4482 -12816.0996 -5785.3872]","308":"[10862.0947 -13298.7549 -5785.2544]","309":"[10618.8779 -13756.5664 -5785.397]","310":"[10306.6445 -14165.0029 -5785.4526]","311":"[9924.001 -14517.1895 -5785.3877]","312":"[9490.1357 -14797.25 -5785.4321]","313":"[9021.0605 -15006.3115 -5785.2949]","314":"[8521.6426 -15153.4424 -5785.4092]","315":"[8012.2397 -15245.1865 -5785.3135]","316":"[7500.3154 -15291.0303 -5785.4165]","317":"[6985.7505 -15305.207 -5798.5752]","318":"[6469.4966 -15305.4512 -5830.749]","319":"[5950.9097 -15306.8252 -5882.502]","320":"[5436.228 -15305.2822 -5940.3877]","321":"[4916.1392 -15306.5215 -6002.0376]","322":"[4406.0532 -15305.8301 -6063.9248]","323":"[3897.6814 -15305.9531 -6126.1963]","324":"[3380.4963 -15306.1045 -6189.689]","325":"[2870.7241 -15305.8604 -6252.2705]","326":"[2356.7229 -15305.6934 -6315.3389]","327":"[1840.1534 -15306.2646 -6378.7769]","328":"[1322.6 -15306.1748 -6442.3252]","329":"[808.8389 -15305.8799 -6505.3398]","330":"[300.2185 -15305.9375 -6567.8491]","331":"[-216.0235 -15306.4316 -6631.2881]","332":"[-729.3888 -15306.0977 -6694.3335]","333":"[-1238.113 -15306 -6756.7153]","334":"[-1746.5685 -15306.3018 -6819.1772]","335":"[-2269.8577 -15306.1582 -6883.4277]","336":"[-2790.8577 -15306.1064 -6947.396]","337":"[-3308.1555 -15306.0186 -7010.8823]","338":"[-3820.3669 -15305.6992 -7073.811]","339":"[-4344.4565 -15306.1016 -7138.2144]","340":"[-4861.6797 -15305.8848 -7201.728]","341":"[-5370.73 -15306.1348 -7264.168]","342":"[-5881.2861 -15306.1045 -7326.9146]","343":"[-6400.2295 -15305.6943 -7390.5996]","344":"[-6913.7495 -15305.6748 -7453.6284]","345":"[-7431.5693 -15306.0537 -7517.1206]","346":"[-7949.3638 -15305.9629 -7580.7686]","347":"[-8462.499 -15306.3896 -7643.6611]","348":"[-8975.7236 -15306.333 -7705.6499]","349":"[-9491.4453 -15306.5898 -7766.9956]","350":"[-10009.2168 -15306.5596 -7825.1079]","351":"[-10521.292 -15306.2969 -7875.6675]","352":"[-11042.043 -15306.4658 -7907.665]","353":"[-11560.0117 -15306.4795 -7919.5903]","354":"[-12075.6484 -15305.2148 -7919.5215]","355":"[-12594.8037 -15280.5635 -7919.1279]","356":"[-13103.1475 -15210.1816 -7919.3975]","357":"[-13598.6963 -15071.4473 -7919.2065]","358":"[-14054.7725 -14851.8008 -7919.1387]","359":"[-14334.6553 -14650.5479 -7919.4185]","360":"[-14652.0693 -14324.3936 -7919.4019]","361":"[-14847.1201 -14037.0635 -7919.415]","362":"[-15058.2813 -13568.9922 -7919.3691]","363":"[-15188.1064 -13067.123 -7919.2832]","364":"[-15250.6504 -12557.7705 -7919.2344]","365":"[-15269.1641 -12045.46 -7923.8931]","366":"[-15269.1748 -11531.624 -7947.2285]","367":"[-15270.2227 -11016.5693 -7991.1074]","368":"[-15270.2305 -10499.584 -8046.6943]","369":"[-15269.875 -9982.9971 -8106.9829]","370":"[-15270.248 -9473.5762 -8168.147]","371":"[-15270.1045 -8955.2178 -8231.3018]","372":"[-15270.6182 -8444.2393 -8294.1094]","373":"[-15271.0811 -7932.8433 -8356.875]","374":"[-15270.4746 -7411.1235 -8420.9365]","375":"[-15269.9131 -6895.209 -8484.3369]","376":"[-15270.7305 -6373.748 -8548.3662]","377":"[-15270.3799 -5863.7183 -8610.9658]","378":"[-15270.0684 -5352.52 -8673.3213]","379":"[-15270.6318 -4841.7769 -8734.875]","380":"[-15270.1797 -4319.9219 -8795.8516]","381":"[-15270.4629 -3797.5054 -8853.207]","382":"[-15270.4336 -3279.6167 -8900.2627]","383":"[-15269.3721 -2755.6028 -8924.5576]","384":"[-15257.6191 -2226.9663 -8930.6191]","385":"[-15228.2217 -1713.653 -8930.1494]","386":"[-15177.4863 -1186.085 -8930.2393]","387":"[-15103.8721 -663.8593 -8930.3047]","388":"[-15005.9697 -149.2033 -8930.249]","389":"[-14880.918 356.9326 -8930.375]","390":"[-14726.9512 852.7014 -8930.4697]","391":"[-14542.4053 1335.5033 -8930.457]","392":"[-14320.2217 1810.8513 -8930.4561]","393":"[-14067.3906 2259.031 -8930.334]","394":"[-13779.9365 2682.9495 -8930.0303]","395":"[-13447.2471 3092.8853 -8930.2236]","396":"[-13080.5645 3469.1775 -8930.3193]","397":"[-12683.5684 3809.604 -8930.2461]","398":"[-12260.167 4112.6255 -8930.1709]","399":"[-11814.8311 4377.9165 -8930.1816]","400":"[-11352.0439 4606.5435 -8930.3096]","401":"[-10875.9561 4800.4282 -8930.3955]","402":"[-10373.1133 4966.6592 -8930.3252]","403":"[-9863.1064 5101.3662 -8930.2305]","404":"[-9348.2637 5206.7964 -8930.2012]","405":"[-8830.7725 5286.4326 -8930.2969]","406":"[-8312.2832 5342.752 -8930.1826]","407":"[-7794.0933 5377.8584 -8930.1914]","408":"[-7277.9629 5394.1958 -8930.4805]","409":"[-6763.7432 5397.1509 -8930.5244]","410":"[-6251.4282 5396.8818 -8930.4199]","411":"[-5723.979 5397.0752 -8930.3545]","412":"[-5198.8394 5397.2036 -8930.293]","413":"[-4680.2642 5396.8164 -8930.3955]","414":"[-4163.4736 5397.4204 -8930.4365]","415":"[-3648.6272 5397.0908 -8930.5107]","416":"[-3135.6936 5396.8921 -8930.4609]","417":"[-2610.5286 5397.5386 -8930.291]","418":"[-2088.8403 5396.5903 -8930.373]","419":"[-1574.0404 5397.2959 -8930.4043]","420":"[-1054.9766 5397.1631 -8930.4258]","421":"[-541.0719 5396.7104 -8930.4463]","422":"[-27.88 5397.3496 -8930.415]","423":"[32.0801 5396.3413 -8930.29]"},"17":{"1":"[-5.4018 6404.8491 -8930.4209]","2":"[-107.5083 6404.8486 -8930.458]","3":"[-621.8191 6405.1279 -8930.4629]","4":"[-1136.0247 6404.8452 -8930.4482]","5":"[-1655.3812 6405.2769 -8930.3564]","6":"[-2177.3679 6404.7393 -8930.5293]","7":"[-2690.6777 6405.1167 -8930.3926]","8":"[-3217.5635 6404.8237 -8930.4746]","9":"[-3742.4534 6404.9966 -8930.458]","10":"[-4265.3267 6404.7422 -8930.2646]","11":"[-4786.2358 6405.2207 -8930.3418]","12":"[-5305.1792 6404.8008 -8930.5088]","13":"[-5822.1841 6405.0938 -8930.4971]","14":"[-6337.2397 6404.7822 -8930.3516]","15":"[-6850.3726 6405.3145 -8930.3896]","16":"[-7376.2515 6404.4297 -8930.2041]","17":"[-7900.0034 6399.4956 -8930.4131]","18":"[-8420.3584 6379.6348 -8930.3105]","19":"[-8934.4375 6341.1812 -8930.4287]","20":"[-9450.0469 6281.0791 -8930.5088]","21":"[-9960.2393 6198.4707 -8930.3926]","22":"[-10463.3809 6090.4199 -8930.4023]","23":"[-10957.9717 5956.3779 -8930.3564]","24":"[-11457.4336 5786.9629 -8930.5996]","25":"[-11941.6523 5585.355 -8930.4131]","26":"[-12406.8027 5348.5098 -8930.3613]","27":"[-12850.0059 5077.7139 -8930.3984]","28":"[-13266.251 4771.4619 -8930.4033]","29":"[-13652.9531 4432.5659 -8930.3438]","30":"[-14008.5488 4059.8345 -8930.375]","31":"[-14334.1729 3652.3462 -8930.2441]","32":"[-14619.5781 3224.4897 -8930.3145]","33":"[-14872.4219 2767.9092 -8930.3164]","34":"[-15092.5967 2287.2681 -8930.3486]","35":"[-15276.0449 1797.9171 -8930.3213]","36":"[-15425.8789 1301.0996 -8930.1543]","37":"[-15546.3086 800.1798 -8930.2217]","38":"[-15641.9971 281.706 -8930.3252]","39":"[-15711.6924 -232.3162 -8930.2988]","40":"[-15760.8477 -760.877 -8930.2441]","41":"[-15788.1611 -1281.7568 -8930.2021]","42":"[-15797.9668 -1810.36 -8930.5771]","43":"[-15798.1885 -2326.9365 -8930.3018]","44":"[-15797.5215 -2853.9341 -8921.8389]","45":"[-15798.1338 -3386.5449 -8892.5879]","46":"[-15798.1348 -3904.366 -8842.3184]","47":"[-15797.7695 -4430.7837 -8783.3311]","48":"[-15797.8467 -4961.123 -8720.6533]","49":"[-15797.915 -5490.6621 -8656.4268]","50":"[-15797.7666 -6016.4761 -8592.209]","51":"[-15797.9043 -6538.0386 -8528.127]","52":"[-15797.8701 -7050.8506 -8465.083]","53":"[-15797.7979 -7573.1816 -8401.0635]","54":"[-15797.9424 -8083.4917 -8338.4063]","55":"[-15797.8154 -8601.5576 -8274.7871]","56":"[-15797.7998 -9125.9893 -8210.3662]","57":"[-15798.0293 -9636.8662 -8148.2134]","58":"[-15797.3896 -10157.2305 -8086.354]","59":"[-15797.6787 -10677.2881 -8026.7358]","60":"[-15797.7637 -11197.7822 -7973.354]","61":"[-15797.5596 -11716.7939 -7936.3271]","62":"[-15797.8916 -12236.4336 -7920.6411]","63":"[-15797.8408 -12752.6953 -7919.3057]","64":"[-15781.7363 -13272.7021 -7919.2534]","65":"[-15726.5801 -13787.8037 -7919.3521]","66":"[-15604.0234 -14286.6582 -7918.9834]","67":"[-15400.1045 -14763.6162 -7919.4238]","68":"[-15202.9697 -15065.2412 -7919.1792]","69":"[-14895.5605 -15392.501 -7919.3608]","70":"[-14626.6445 -15593.0586 -7919.3052]","71":"[-14165.5459 -15824.8457 -7919.436]","72":"[-13668.0234 -15973.2148 -7919.3091]","73":"[-13150.8936 -16047.3857 -7919.2192]","74":"[-12626.1709 -16072.6279 -7919.2861]","75":"[-12108.8203 -16074.5439 -7919.4653]","76":"[-11591.3877 -16073.6133 -7919.3296]","77":"[-11079.251 -16074.2705 -7908.644]","78":"[-10549.8594 -16074.0635 -7877.269]","79":"[-10037.7549 -16073.5703 -7826.5576]","80":"[-9511.1914 -16074.332 -7767.3789]","81":"[-9001.3848 -16074.2549 -7707.0449]","82":"[-8491.9824 -16073.4043 -7645.5024]","83":"[-7961.5747 -16073.2217 -7580.2959]","84":"[-7435.4009 -16073.7939 -7515.6001]","85":"[-6916.2134 -16074.0547 -7451.9336]","86":"[-6406.7681 -16073.7578 -7389.4131]","87":"[-5881.6382 -16073.5615 -7324.9487]","88":"[-5369.7778 -16073.4668 -7262.0825]","89":"[-4844.0449 -16073.3428 -7197.5439]","90":"[-4335.2729 -16073.4014 -7135.0991]","91":"[-3797.4167 -16073.585 -7069.0591]","92":"[-3266.7954 -16073.5283 -7003.9248]","93":"[-2743.4106 -16073.1846 -6939.5552]","94":"[-2227.1277 -16073.2959 -6876.2124]","95":"[-1717.9338 -16073.7363 -6813.6914]","96":"[-1188.0939 -16073.96 -6748.6245]","97":"[-666.0563 -16073.6641 -6684.4971]","98":"[-141.332 -16073.2256 -6620.1201]","99":"[382.418 -16073.4297 -6555.7666]","100":"[898.4272 -16073.876 -6492.4385]","101":"[1406.7307 -16073.8242 -6430.0967]","102":"[1933.5457 -16073.3193 -6365.3252]","103":"[2451.9883 -16073.0645 -6301.6816]","104":"[2962.1021 -16073.5391 -6239.063]","105":"[3488.8252 -16073.8252 -6174.3984]","106":"[4006.5081 -16073.6621 -6110.8828]","107":"[4515.2168 -16073.1855 -6048.4902]","108":"[5038.835 -16073.4297 -5985.103]","109":"[5549.6855 -16073.8086 -5925.1924]","110":"[6066.1201 -16073.6436 -5868.3628]","111":"[6592.2485 -16073.5273 -5819.2407]","112":"[7112.7993 -16074.3516 -5793.1787]","113":"[7638.4111 -16073.8672 -5785.0557]","114":"[8152.2417 -16072.1182 -5785.4741]","115":"[8666.4941 -16049.5059 -5785.2002]","116":"[9180.5293 -15991.4551 -5785.2666]","117":"[9683.1719 -15884.1475 -5785.2314]","118":"[10179.7207 -15717.2354 -5785.4424]","119":"[10644.7139 -15483.8721 -5785.0488]","120":"[11062.8145 -15180.71 -5785.5386]","121":"[11420.4238 -14812.8545 -5785.353]","122":"[11714.8154 -14380.6387 -5785.3052]","123":"[11934.1064 -13915.3174 -5785.2495]","124":"[12091.6729 -13414.1543 -5785.3208]","125":"[12189.7471 -12904.9258 -5785.1758]","126":"[12241.585 -12393.6582 -5785.1626]","127":"[12257.8486 -11868.0342 -5785.2739]","128":"[12259.4229 -11346.7441 -5785.3057]","129":"[12258.6318 -10823.1963 -5785.4331]","130":"[12259.2734 -10298.167 -5785.4248]","131":"[12259.0859 -9766.6064 -5785.3516]","132":"[12258.7148 -9238.5771 -5785.3843]","133":"[12259.2139 -8723.2568 -5785.2896]","134":"[12259.1377 -8204.2549 -5781.8496]","135":"[12258.9355 -7670.4551 -5757.0664]","136":"[12258.7783 -7142.397 -5708.6821]","137":"[12259.0957 -6622.541 -5652.23]","138":"[12259.085 -6111.5444 -5592.1245]","139":"[12258.5664 -5588.5034 -5529.4639]","140":"[12258.3359 -5079.7266 -5468.0552]","141":"[12258.7598 -4557.7847 -5407.4004]","142":"[12258.6582 -4040.8159 -5350.8936]","143":"[12258.5088 -3519.4194 -5303.9097]","144":"[12258.9609 -2998.0039 -5279.9331]","145":"[12257.8369 -2475.7393 -5273.3574]","146":"[12258.6318 -1957.5621 -5273.4619]","147":"[12258.1094 -1434.9935 -5273.4272]","148":"[12258.3291 -914.3333 -5273.4268]","149":"[12258.4463 -395.7527 -5273.4668]","150":"[12258.1787 120.7575 -5273.4556]","151":"[12258.3193 634.9905 -5273.2402]","152":"[12258.2783 1160.1113 -5273.3916]","153":"[12258.9434 1674.4263 -5273.5254]","154":"[12258.8203 2193.3943 -5273.4722]","155":"[12259.0537 2715.0925 -5273.4683]","156":"[12258.3896 3231.7842 -5272.9971]","157":"[12258.9033 3753.8167 -5273.2241]","158":"[12258.5313 4278.9019 -5273.3906]","159":"[12258.6855 4801.3315 -5273.291]","160":"[12259.2188 5321.6899 -5273.4546]","161":"[12258.8975 5840.082 -5273.4585]","162":"[12258.6445 6356.5361 -5273.4292]","163":"[12259.6426 6871.0483 -5273.4419]","164":"[12258.3916 7383.6421 -5273.4761]","165":"[12258.7236 7909.3203 -5273.4385]","166":"[12259.0752 8432.9775 -5273.4204]","167":"[12258.9961 8954.6533 -5273.4224]","168":"[12258.8721 9474.3672 -5273.3984]","169":"[12258.9688 9992.123 -5273.4214]","170":"[12258.7217 10507.9199 -5273.3906]","171":"[12259.2842 11021.7764 -5273.48]","172":"[12250.1729 11544.6445 -5273.2168]","173":"[12213.082 12059.4023 -5273.1685]","174":"[12130.9531 12577.7891 -5273.4824]","175":"[11994.6826 13080.4805 -5273.3506]","176":"[11798.6631 13560.5225 -5273.46]","177":"[11531.7598 14003.5342 -5273.2061]","178":"[11197.7939 14393.2559 -5273.4697]","179":"[10793.7578 14724.3096 -5273.356]","180":"[10342.3516 14981.8398 -5273.3965]","181":"[9860.0313 15169.3955 -5273.3691]","182":"[9357.3086 15296.3008 -5273.3413]","183":"[8842.167 15372.4873 -5273.3579]","184":"[8327.4053 15404.2158 -5273.4155]","185":"[7814.1724 15411.7588 -5273.3916]","186":"[7302.0811 15410.8193 -5273.4453]","187":"[6777.9058 15410.4629 -5273.4854]","188":"[6252.3115 15411.5859 -5273.3638]","189":"[5720.2266 15410.8809 -5273.4678]","190":"[5191.7173 15410.3867 -5273.4224]","191":"[4675.9634 15410.749 -5273.4668]","192":"[4155.9443 15411.1494 -5273.4526]","193":"[3637.5127 15411.0576 -5273.436]","194":"[3115.835 15410.8545 -5273.3281]","195":"[2595.949 15410.8125 -5273.3916]","196":"[2077.9121 15410.9717 -5273.4946]","197":"[1561.6761 15411.0557 -5273.438]","198":"[1047.222 15411.0205 -5273.4243]","199":"[534.542 15410.8691 -5273.4478]","200":"[-1.8559 15410.8096 -5273.459]","201":"[-531.2456 15410.8711 -5273.4399]","202":"[-1055.4476 15411.0771 -5273.3735]","203":"[-1567.8252 15410.959 -5273.334]","204":"[-2083.6575 15410.8506 -5273.3066]","205":"[-2612.5996 15411.127 -5273.4702]","206":"[-3135.8745 15411.335 -5273.5366]","207":"[-3652.4653 15411.0225 -5273.4756]","208":"[-4171.4492 15410.6709 -5273.4473]","209":"[-4692.4717 15410.8994 -5273.4326]","210":"[-5214.8481 15411.084 -5273.3677]","211":"[-5735.1343 15410.834 -5273.4746]","212":"[-6253.1045 15407.1211 -5273.1182]","213":"[-6767.3486 15379.3066 -5273.2373]","214":"[-7287.0708 15311.5762 -5272.9189]","215":"[-7793.8311 15192.6299 -5273.3223]","216":"[-8279.3652 15015.3281 -5273.2178]","217":"[-8731.4277 14772.2695 -5273.2705]","218":"[-9144.4307 14452.6729 -5273.4912]","219":"[-9493.1172 14068.3779 -5273.5439]","220":"[-9769.8555 13632.5947 -5273.3506]","221":"[-9976.2832 13161.8125 -5273.5122]","222":"[-10118.96 12669.9961 -5273.3262]","223":"[-10209.9727 12155.458 -5273.2295]","224":"[-10255.9043 11635.4443 -5273.2866]","225":"[-10268.5713 11118.5557 -5273.3418]","226":"[-10267.9863 10588.5332 -5273.4292]","227":"[-10267.2773 10063.0352 -5273.4629]","228":"[-10268.2236 9535.8438 -5273.4937]","229":"[-10268.4736 9016.5625 -5273.3384]","230":"[-10267.7695 8497.125 -5273.3159]","231":"[-10267.4629 7978.1489 -5273.4648]","232":"[-10268.0068 7460.9902 -5273.4526]","233":"[-10268.3467 6945.6299 -5273.4312]","234":"[-10268.1299 6422.4048 -5273.3706]","235":"[-10267.457 5894.6328 -5273.4331]","236":"[-10267.5137 5369.5518 -5273.4565]","237":"[-10268.3809 4856.2808 -5273.4624]","238":"[-10268.3506 4325.9097 -5273.3359]","239":"[-10267.4072 3797.4197 -5273.3677]","240":"[-10267.3711 3270.8516 -5273.4512]","241":"[-10268.1865 2752.0938 -5273.4043]","242":"[-10267.8516 2225.5496 -5273.3916]","243":"[-10267.3418 1699.1801 -5273.3677]","244":"[-10267.9912 1174.7889 -5273.3237]","245":"[-10267.54 652.3561 -5273.2026]","246":"[-10267.6982 131.9049 -5273.2813]","247":"[-10267.8652 -386.6249 -5273.2246]","248":"[-10267.791 -902.9102 -5273.5093]","249":"[-10268.1475 -1416.8861 -5273.1553]","250":"[-10268.0225 -1943.3081 -5273.4321]","251":"[-10267.8418 -2467.751 -5273.3711]","252":"[-10268.0625 -2990.2261 -5273.3677]","253":"[-10268.2705 -3510.7058 -5273.4077]","254":"[-10267.8008 -4029.2324 -5273.4229]","255":"[-10267.9326 -4545.8208 -5273.4224]","256":"[-10267.9756 -5060.4873 -5273.5]","257":"[-10267.873 -5573.2202 -5273.3716]","258":"[-10268.0938 -6098.6006 -5273.5298]","259":"[-10267.8643 -6621.9492 -5273.4629]","260":"[-10265.4736 -7143.2202 -5273.3027]","261":"[-10240.9883 -7661.3594 -5273.1167]","262":"[-10179.2412 -8172.8638 -5273.1592]","263":"[-10065.3994 -8685.4229 -5272.9438]","264":"[-9895.8887 -9171.3086 -5273.3276]","265":"[-9656.6592 -9627.1074 -5273.522]","266":"[-9349.1367 -10043.3516 -5273.4136]","267":"[-8979.1797 -10394.3262 -5273.5386]","268":"[-8551.0449 -10679.9707 -5273.2544]","269":"[-8082.4561 -10897.1455 -5273.2695]","270":"[-7589.1445 -11047.7959 -5273.1587]","271":"[-7081.7168 -11145.1455 -5273.2612]","272":"[-6560.5825 -11195.4424 -5273.3335]","273":"[-6041.9258 -11211.0791 -5273.416]","274":"[-5524.8213 -11212.5547 -5273.4277]","275":"[-5009.811 -11211.3545 -5273.3774]","276":"[-4496.894 -11212.7158 -5273.5244]","277":"[-3973.1819 -11205.7129 -5273.2876]","278":"[-3453.3235 -11173.3828 -5273.2959]","279":"[-2941.3301 -11099.3252 -5273.4951]","280":"[-2433.4944 -10972.3027 -5273.311]","281":"[-1947.6086 -10781.2695 -5273.4277]","282":"[-1499.0898 -10527.4043 -5273.3687]","283":"[-1097.8524 -10200.6963 -5273.3462]","284":"[-776.9085 -9829.3369 -5273.4736]","285":"[-503.7673 -9387.1982 -5273.4185]","286":"[-302.1321 -8905.4658 -5273.3052]","287":"[-163.7737 -8403.7246 -5273.373]","288":"[-78.7555 -7890.0063 -5273.2451]","289":"[-40.0906 -7377.7207 -5273.2017]","290":"[-28.6935 -6852.2964 -5273.5239]","291":"[-29.5488 -6328.6221 -5273.6021]","292":"[-30.3848 -5805.7695 -5273.4629]","293":"[-28.763 -5286.7246 -5273.4634]","294":"[-29.1629 -4765.459 -5273.4219]","295":"[-29.974 -4251.5771 -5273.4028]","296":"[-29.7129 -3729.4805 -5273.3882]","297":"[-28.9291 -3203.4353 -5273.5322]","298":"[-29.2922 -2677.4915 -5273.4312]","299":"[-29.9069 -2155.4749 -5273.375]","300":"[-29.5148 -1640.9183 -5273.5293]","301":"[-29.2025 -1107.1121 -5273.3701]","302":"[-29.4021 -593.1847 -5273.4312]","303":"[-29.8698 -81.016 -5273.4307]","304":"[-29.7186 459.3324 -5273.2725]","305":"[-29.2637 990.9053 -5273.5161]","306":"[-29.0921 1527.42 -5273.4595]","307":"[-29.4778 2040.2571 -5273.3066]","308":"[-29.5624 2573.7058 -5273.3979]","309":"[-29.466 3100.1348 -5273.4854]","310":"[-29.4409 3626.5376 -5273.4277]","311":"[-29.2446 4145.1875 -5273.4131]","312":"[-29.5044 4662.0361 -5273.3623]","313":"[-29.7514 5177.1079 -5273.457]","314":"[-29.3182 5712.9644 -5273.502]","315":"[-29.1183 6245.0713 -5279.98]","316":"[-29.0677 6764.251 -5307.7544]","317":"[-28.2108 7286.228 -5358.3711]","318":"[-29.4914 7806.7852 -5416.0171]","319":"[-29.0127 8318.9033 -5476.2051]","320":"[-29.3379 8828.418 -5537.6084]","321":"[-29.4658 9348.1787 -5599.6826]","322":"[-29.2436 9870.2236 -5660.3745]","323":"[-29.3694 10384.0059 -5715.7417]","324":"[-29.5538 10903.6445 -5759.689]","325":"[-28.906 11422.2998 -5781.1538]","326":"[-35.1585 11941.918 -5785.1211]","327":"[-64.5186 12457.8193 -5785.2988]","328":"[-135.0236 12966.2705 -5785.3901]","329":"[-256.2578 13471.0811 -5785.1357]","330":"[-436.1104 13953.2432 -5785.502]","331":"[-685.9932 14408.5859 -5785.355]","332":"[-1004.7524 14812.5996 -5785.5269]","333":"[-1391.4972 15158.7988 -5785.4658]","334":"[-1828.0461 15432.0293 -5785.4478]","335":"[-2306.7502 15638.8154 -5785.5132]","336":"[-2803.5891 15779.5303 -5785.2832]","337":"[-3318.9873 15867.6729 -5785.3491]","338":"[-3833.282 15909.8975 -5784.7412]","339":"[-4356.2041 15921.6084 -5785.0049]","340":"[-4878.3438 15921.5879 -5784.9683]","341":"[-5401.0049 15921.2354 -5784.8818]","342":"[-5915.0615 15922.1025 -5784.9048]","343":"[-6427.6782 15921.8867 -5784.8828]","344":"[-6949.3398 15921.1172 -5784.9175]","345":"[-7469.0215 15922.0039 -5784.895]","346":"[-7986.7148 15921.25 -5784.8403]","347":"[-8502.4639 15921.4219 -5784.8223]","348":"[-9016.2646 15921.6318 -5784.8872]","349":"[-9542.7168 15921.4717 -5784.9673]","350":"[-10067.1299 15921.5596 -5784.8735]","351":"[-10589.5244 15921.7393 -5784.9595]","352":"[-11109.9014 15921.4453 -5784.7324]","353":"[-11623.249 15921.2979 -5785.1577]","354":"[-12144.0742 15906.5244 -5785.0493]","355":"[-12659.6045 15862.126 -5784.8755]","356":"[-13171.1104 15768.9053 -5785.4297]","357":"[-13666.6777 15623.2656 -5785.1982]","358":"[-14135.3164 15414.8184 -5785.4458]","359":"[-14572.082 15133.2598 -5785.3789]","360":"[-14951.6807 14784.3193 -5785.1235]","361":"[-15265.5439 14376.0537 -5785.4165]","362":"[-15507.375 13923.0898 -5785.3633]","363":"[-15684.3125 13434.0625 -5785.416]","364":"[-15800.8701 12929.4229 -5785.3408]","365":"[-15867.8789 12417.8184 -5785.2749]","366":"[-15893.8896 11904.5684 -5785.3569]","367":"[-15900.3662 11392.4492 -5790.3091]","368":"[-15898.502 10877.0908 -5811.6714]","369":"[-15899.6855 10363.9229 -5856.1362]","370":"[-15898.873 9845.5215 -5911.813]","371":"[-15899.3467 9333.4297 -5971.2905]","372":"[-15898.9277 8815.2803 -6033.6274]","373":"[-15899.1592 8306.8232 -6095.5122]","374":"[-15899.5615 7795.8154 -6158.395]","375":"[-15899.1318 7283.6196 -6221.3696]","376":"[-15899.2666 6771.7549 -6284.0454]","377":"[-15899.2598 6261.791 -6346.7515]","378":"[-15899.5439 5737.9712 -6411.0767]","379":"[-15899.5596 5217.9697 -6474.9219]","380":"[-15898.8145 4703.6187 -6537.793]","381":"[-15898.5098 4193.0811 -6599.1938]","382":"[-15898.5859 3672.354 -6660.2993]","383":"[-15898.4746 3158.9053 -6716.856]","384":"[-15898.4268 2633.0476 -6765.2759]","385":"[-15898.6768 2116.2043 -6789.6968]","386":"[-15898.5586 1595.6915 -6796.7065]","387":"[-15898.5791 1076.3518 -6796.6904]","388":"[-15898.9658 559.1996 -6796.48]","389":"[-15899.2285 43.9011 -6796.416]","390":"[-15898.624 -469.5618 -6796.5044]","391":"[-15898.6514 -997.6718 -6796.4072]","392":"[-15899.3379 -1523.8198 -6796.4141]","393":"[-15899.2451 -2048.0342 -6796.4229]","394":"[-15898.9238 -2570.3335 -6796.4209]","395":"[-15899.1436 -3090.7327 -6796.4829]","396":"[-15899.0137 -3609.2256 -6796.4429]","397":"[-15898.8955 -4125.8237 -6796.3101]","398":"[-15899.0674 -4649.7837 -6796.4517]","399":"[-15899.0527 -5169.8101 -6796.4429]","400":"[-15898.957 -5684.9038 -6796.4243]","401":"[-15898.7939 -6197.9775 -6796.4263]","402":"[-15899.042 -6722.4619 -6796.4209]","403":"[-15898.6348 -7236.6084 -6796.4131]","404":"[-15899.1465 -7749.7202 -6796.4478]","405":"[-15898.9375 -8262.7266 -6796.437]","406":"[-15888.4033 -8782.0498 -6796.3569]","407":"[-15843.9639 -9295.6426 -6796.3135]","408":"[-15735.3242 -9804.0908 -6796.3101]","409":"[-15550.4072 -10283.999 -6796.3018]","410":"[-15328.9805 -10649.9102 -6796.459]","411":"[-15090.7578 -10921.6855 -6796.3989]","412":"[-14740.3418 -11201.9209 -6796.3569]","413":"[-14410.6934 -11381.6475 -6796.4604]","414":"[-13926.2695 -11551.8877 -6796.4614]","415":"[-13416.8018 -11647.8242 -6796.1001]","416":"[-12898.5205 -11684.9277 -6796.2793]","417":"[-12380.5313 -11693.2305 -6801.0693]","418":"[-11866.7285 -11691.1602 -6823.8667]","419":"[-11356.4297 -11691.9121 -6867.6177]","420":"[-10836.3203 -11692.3096 -6923.874]","421":"[-10316.9238 -11692.0781 -6984.2217]","422":"[-9795.2354 -11691.6875 -7047.0435]","423":"[-9268.166 -11692.4912 -7111.1216]","424":"[-8741.8828 -11691.876 -7175.8794]","425":"[-8227.1885 -11691.3545 -7239.062]","426":"[-7704.1382 -11691.9541 -7303.313]","427":"[-7194.1855 -11692.5068 -7365.9336]","428":"[-6676.6235 -11692.3486 -7429.4961]","429":"[-6151.4751 -11692.1953 -7493.9751]","430":"[-5635.1484 -11691.7422 -7557.354]","431":"[-5109.2124 -11691.8613 -7621.8975]","432":"[-4588.6157 -11692.2412 -7685.8555]","433":"[-4080.05 -11691.9414 -7748.333]","434":"[-3562.2375 -11691.7275 -7811.9917]","435":"[-3047.498 -11691.7617 -7875.1377]","436":"[-2530.3049 -11691.8867 -7938.6162]","437":"[-2020.2939 -11691.8438 -8001.23]","438":"[-1511.6769 -11691.9355 -8063.689]","439":"[-988.9805 -11691.8271 -8127.917]","440":"[-478.6815 -11692.3662 -8190.4707]","441":"[32.1578 -11692.0469 -8253.3066]","442":"[551.7845 -11691.8867 -8317.0547]","443":"[1067.3556 -11691.8896 -8380.3594]","444":"[1581.5137 -11691.7305 -8443.4795]","445":"[2095.9663 -11692.2021 -8506.6426]","446":"[2611.2307 -11691.9932 -8569.9395]","447":"[3125.0654 -11691.7676 -8633.0137]","448":"[3639.4731 -11691.877 -8695.6416]","449":"[4150.3696 -11691.6133 -8756.6855]","450":"[4660.5132 -11691.6729 -8815.3838]","451":"[5173.3569 -11691.8135 -8869.3457]","452":"[5526.583 -11691.7451 -8899.6953]"},"18":{"1":"[11251.2822 -2846.6602 -5276.2046]","2":"[11250.5547 -2745.4106 -5274.5405]","3":"[11273.752 -2232.116 -5273.4658]","4":"[11341.5039 -1723.3824 -5273.4878]","5":"[11467.9209 -1224.1456 -5273.5161]","6":"[11640.8496 -741.1426 -5273.5127]","7":"[11834.1465 -266.414 -5273.4561]","8":"[12013.6611 215.2262 -5273.4136]","9":"[12149.1484 711.9863 -5273.4116]","10":"[12227.374 1218.7456 -5273.3076]","11":"[12256.1387 1730.2482 -5273.457]","12":"[12257.7246 1841.8517 -5273.4448]"},"19":{"1":"[-5088.1846 15041.7471 -3751.4431]","2":"[-4575.7266 15072.3008 -3751.1946]","3":"[-4068.468 15151.6064 -3751.3816]","4":"[-3566.6575 15254.1895 -3751.3569]","5":"[-3059.1482 15340.1133 -3751.5522]","6":"[-2549.1782 15387.6436 -3751.4622]","7":"[-2034.6593 15406.7793 -3754.8049]","8":"[-1517.8894 15411.1045 -3774.1689]","9":"[-1003.7453 15410.8066 -3816.3381]","10":"[-491.0555 15410.291 -3870.7959]","11":"[18.2716 15410.4434 -3929.6108]","12":"[529.1116 15410.9424 -3991.2002]","13":"[1041.2151 15410.4189 -4053.7305]","14":"[1557.1549 15410.6826 -4117.3198]","15":"[2070.2734 15410.3516 -4180.3618]","16":"[2581.3459 15410.6816 -4242.9468]","17":"[3101.8079 15410.3574 -4306.9878]","18":"[3616.731 15410.0518 -4370.1782]","19":"[4132.4795 15410.376 -4433.5]","20":"[4653.084 15410.6426 -4497.0845]","21":"[5164.8159 15410.9658 -4558.8579]","22":"[5679.0669 15411.2314 -4619.5156]","23":"[6200.2905 15410.9639 -4677.21]","24":"[6720.7627 15411.1885 -4726.457]","25":"[7236.314 15410.5293 -4753.728]","26":"[7758.1084 15409.0059 -4762.3979]","27":"[8277.9482 15387.3701 -4762.2563]","28":"[8791.1377 15331.1006 -4762.5537]","29":"[9292.5322 15225.5449 -4761.7378]","30":"[9786.915 15062.2725 -4762.3984]","31":"[10250.4766 14833.5918 -4762.166]","32":"[10668.8291 14536.2686 -4762.4609]","33":"[11035.9824 14164.6934 -4762.293]","34":"[11331.1084 13737.4707 -4762.3521]","35":"[11553.9971 13271.4854 -4762.438]","36":"[11710.9414 12781.7256 -4762.2095]","37":"[11813.2139 12268.0918 -4762.1836]","38":"[11867.6133 11749.6787 -4762.2969]","39":"[11884.8125 11230.001 -4771.4277]","40":"[11887.5918 10717.1074 -4800.3481]","41":"[11886.208 10203.3428 -4848.8604]","42":"[11887.0176 9682.8047 -4906.8706]","43":"[11886.4697 9168.1455 -4967.54]","44":"[11887.1777 8647.9619 -5029.8628]","45":"[11886.7549 8131.7217 -5091.7813]","46":"[11887.0723 7613.2217 -5151.7207]","47":"[11886.7861 7092.0405 -5207.522]","48":"[11886.8984 6570.021 -5250.395]","49":"[11887.0781 6054.8618 -5270.7061]","50":"[11891.5586 5538.7471 -5273.4063]","51":"[11910.3457 5025.1523 -5273.5386]","52":"[11959.6152 4515.0508 -5273.356]","53":"[12045.7783 4009.2742 -5273.2725]","54":"[12148.3408 3507.6252 -5273.3984]","55":"[12227.0449 3000.5256 -5273.251]","56":"[12256.3164 2488.7876 -5273.4839]","57":"[12257.3389 2431.7844 -5273.4976]"},"20":{"1":"[2151.4246 -15157.0889 -10009.4219]","2":"[2049.3037 -15157.1465 -10009.4521]","3":"[1537.4489 -15138.3076 -10009.4473]","4":"[1023.1358 -15074.9795 -10009.3574]","5":"[521.5983 -14953.917 -10009.4229]","6":"[34.8936 -14783.71 -10009.251]","7":"[-440.8094 -14590.8457 -10009.3672]","8":"[-921.0248 -14408.6563 -10009.3828]","9":"[-1419.4646 -14267.8105 -10009.4707]","10":"[-1929.4438 -14182.6152 -10009.4355]","11":"[-2441.8982 -14153.0117 -10009.4229]","12":"[-2747.0869 -14146.4424 -10009.6514]"},"21":{"1":"[-7064.8794 10649.3223 -10521.3027]","2":"[-6964.8081 10651.0742 -10521.4063]","3":"[-6453.1411 10669.6846 -10521.4961]","4":"[-5944.4819 10730.8672 -10521.4609]","5":"[-5439.1509 10830.0332 -10521.418]","6":"[-4934.4395 10927.1113 -10521.5088]","7":"[-4425.979 10987.6084 -10521.4756]","8":"[-3910.8796 11015.8438 -10521.3906]","9":"[-3393.3833 11023.4385 -10521.3887]","10":"[-2877.9756 11024.5146 -10521.4512]","11":"[-2359.4197 11025.1895 -10521.4131]","12":"[-1837.0775 11024.7598 -10521.2305]","13":"[-1313.5604 11024.4824 -10521.3477]","14":"[-797.0997 11024.6689 -10521.4619]","15":"[-272.6636 11024.8623 -10521.4287]","16":"[246.4557 11024.4756 -10521.5049]","17":"[760.2831 11024.3945 -10521.418]","18":"[1285.0769 11024.5771 -10521.5381]","19":"[1805.2994 11024.3945 -10521.4326]","20":"[2322.8381 11024.5088 -10521.3633]","21":"[2836.7688 11024.0986 -10521.4453]","22":"[3355.2957 11024.2959 -10521.4229]","23":"[3872.1084 11024.0605 -10521.3633]","24":"[4385.064 11024.1533 -10521.418]","25":"[4474.5356 11024.0137 -10521.1191]"},"22":{"1":"[-1167.4999 11024.5273 -10521.4629]","2":"[-1681.0438 11037.7881 -10521.5]","3":"[-2192.5417 11089.5332 -10521.3994]","4":"[-2701.8257 11178.9482 -10521.2764]","5":"[-3211.1145 11256.8789 -10521.375]","6":"[-3726.5107 11291.1055 -10521.3965]","7":"[-4111.668 11304.9463 -10521.4346]"},"23":{"1":"[4464.2183 11288.0918 -10521.4229]","2":"[3942.1597 11288.3926 -10521.4082]","3":"[3427.7063 11288.25 -10521.4824]","4":"[2905.4509 11288.2939 -10521.3945]","5":"[2381.0239 11288.751 -10521.4912]","6":"[1861.7886 11288.5039 -10521.3789]","7":"[1347.7365 11288.2939 -10521.4922]","8":"[826.1921 11288.4541 -10521.4092]","9":"[310.0796 11288.3506 -10521.4814]","10":"[-204.0466 11288.3711 -10521.418]","11":"[-725.96 11288.1914 -10521.4375]","12":"[-1245.606 11288.5928 -10521.4688]","13":"[-1762.453 11288.1953 -10521.4668]","14":"[-2275.8979 11288.7217 -10521.2764]","15":"[-2792.5251 11288.5654 -10521.3369]","16":"[-3307.199 11289.127 -10521.2139]","17":"[-3831.1672 11294.7881 -10521.2666]","18":"[-4354.438 11318.8916 -10521.5195]","19":"[-4874.5313 11376.6406 -10521.2451]","20":"[-5386.6436 11472.1299 -10521.334]","21":"[-5890.8584 11572.4707 -10521.4375]","22":"[-6401.8311 11638.7178 -10521.5371]","23":"[-6920.0518 11660.043 -10521.4258]","24":"[-7110.6406 11659.9717 -10521.2363]"},"24":{"1":"[-4051.9509 11302.3018 -10521.3145]","2":"[-3951.1082 11298.623 -10521.4404]","3":"[-3431.9077 11274.4834 -10521.3164]","4":"[-2918.7256 11218.1758 -10521.46]","5":"[-2410.2966 11126.8223 -10521.2334]","6":"[-1903.3087 11052.8477 -10521.2607]","7":"[-1385.6346 11025.8086 -10521.3311]","8":"[-957.9063 11024.2373 -10521.4238]"},"25":{"1":"[-536.0779 11596.6396 -1622.4255]","2":"[-181.6411 11226.7441 -1622.4861]","3":"[145.9695 10829.6475 -1622.6833]","4":"[427.8542 10398.0811 -1622.4144]","5":"[660.5457 9940.5381 -1622.3754]","6":"[862.7678 9468.8721 -1622.2606]","7":"[1065.4482 8998.4248 -1622.3685]","8":"[1305.1803 8541.917 -1622.3842]","9":"[1591.6849 8116.3594 -1622.142]","10":"[1922.4342 7724.21 -1622.333]","11":"[2187.0742 7447.2251 -1622.3037]"},"26":{"1":"[4298.915 -648.7664 20.5584]","2":"[4298.6138 -548.6555 20.5322]","3":"[4278.6479 -35.0244 20.6325]","4":"[4216.3296 473.6113 20.5588]","5":"[4124.7251 979.5752 20.5589]","6":"[4057.8076 1489.1124 20.5382]","7":"[4034.5989 2002.4259 20.5669]","8":"[4033.4734 2126.3059 20.5809]"},"27":{"1":"[4238.0347 11023.249 -10521.501]","2":"[4338.4165 11023.1865 -10521.4824]","3":"[4852.3125 11022.9512 -10521.4336]","4":"[5366.8091 11022.792 -10521.5137]","5":"[5883.7925 11022.6396 -10521.4443]","6":"[6398.1641 11022.7549 -10522.6592]","7":"[6913.9722 11023.3379 -10539.124]","8":"[7425.8677 11023.2207 -10576.1016]","9":"[7935.77 11023.2275 -10628.2656]","10":"[8447.7939 11023.1514 -10686.4639]","11":"[8963.0283 11022.7695 -10748.293]","12":"[9470.3594 11006.1514 -10816.2783]","13":"[9980.0381 10961.2754 -10884.6279]","14":"[10485.9043 10864.0586 -10942.2803]","15":"[10979.0332 10718.6973 -10984.4023]","16":"[11446.6357 10509.749 -11013.3584]","17":"[11871.9932 10224.1436 -11032.2285]","18":"[12182.8584 9924.8086 -11041.709]","19":"[12492.6885 9511.1025 -11046.2842]","20":"[12715.2324 9071.1904 -11045.833]","21":"[12875.4395 8582.6084 -11043.6436]","22":"[12971.3477 8079.4424 -11040.5479]","23":"[13020.6201 7560.7363 -11036.4004]","24":"[13034.9463 7041.8457 -11033.9756]","25":"[13036.1924 6524.2529 -11033.4922]","26":"[13035.7598 6007.4399 -11033.3984]","27":"[13036.0146 5491.0664 -11033.4863]","28":"[13036.167 4971.9756 -11046.5938]","29":"[13035.5996 4453.7441 -11079.0684]","30":"[13036.2012 3939.8345 -11130.2383]","31":"[13035.8027 3421.7888 -11188.6582]","32":"[13036.0908 2904.0906 -11249.8008]","33":"[13025.6943 2387.0759 -11318.7295]","34":"[12983.7139 1878.4086 -11387.1318]","35":"[12896.2588 1377.252 -11445.7461]","36":"[12758.1709 875.1086 -11491.2295]","37":"[12557.5625 397.8955 -11521.7783]","38":"[12277.3164 -38.9672 -11542.1455]","39":"[11976.1963 -365.3413 -11552.6611]","40":"[11565.1328 -681.3035 -11558.1064]","41":"[11107.6162 -921.2552 -11558.1035]","42":"[10618.5498 -1084.5851 -11555.5371]","43":"[10114.1572 -1183.0703 -11552.6455]","44":"[9604.4209 -1233.3522 -11548.667]","45":"[9092.665 -1248.0078 -11556.3701]","46":"[8574.3711 -1250.9382 -11586.3516]","47":"[8055.3291 -1249.3761 -11636.2832]","48":"[7544.6719 -1250.5852 -11693.585]","49":"[7028.4692 -1249.4918 -11754.4668]","50":"[6508.5537 -1244.0417 -11823.3857]","51":"[5995.1333 -1205.6755 -11892.2471]","52":"[5492.6885 -1122.3002 -11952.6846]","53":"[4999.4014 -992.3585 -11998.2627]","54":"[4519.2119 -800.7273 -12030.8174]","55":"[4077.772 -532.398 -12052.1709]","56":"[3754.041 -248.0152 -12063.4639]","57":"[3426.3699 151.997 -12069.6494]","58":"[3186.1943 580.9349 -12070.5215]","59":"[3007.2297 1061.0388 -12068.5]","60":"[2896.5254 1566.0378 -12065.3398]","61":"[2836.3066 2079.844 -12061.5635]","62":"[2816.4148 2596.8494 -12058.5332]","63":"[2828.8569 3115.8613 -12057.5996]","64":"[2867.4927 3631.9348 -12057.5273]","65":"[2932.2263 4140.7251 -12057.5713]","66":"[3027.2756 4651.7261 -12057.4854]","67":"[3151.6941 5152.4385 -12057.5176]","68":"[3308.6055 5646.0776 -12057.2959]","69":"[3474.8245 6131.1523 -12057.3984]","70":"[3627.7642 6631.5386 -12057.7695]","71":"[3746.4387 7141.9766 -12057.3945]","72":"[3834.8308 7651.0215 -12057.6318]","73":"[3893.4155 8163.6689 -12057.6025]","74":"[3927.2642 8677.8672 -12057.1289]","75":"[3937.9963 9191.0625 -12057.582]","76":"[3944.9438 9715.2822 -12057.5332]","77":"[3971.7166 10236.5469 -12057.2178]","78":"[4041.6216 10750.5762 -12057.2178]","79":"[4159.1157 11253.1963 -12057.085]","80":"[4336.4756 11733.9814 -12057.3936]","81":"[4583.9111 12192.6885 -12057.2285]","82":"[4902.0273 12602.0762 -12057.291]","83":"[5284.8716 12948.2959 -12057.293]","84":"[5719.4473 13223.6377 -12057.3379]","85":"[6189.2339 13429.4873 -12057.3643]","86":"[6680.9502 13572.5859 -12057.2051]","87":"[7196.377 13663.2422 -12057.2217]","88":"[7709.9956 13708.3311 -12057.3838]","89":"[8222.9668 13713.1992 -12057.2568]","90":"[8746.2051 13679.8086 -12057.2744]","91":"[9261.8018 13600.1602 -12057.2969]","92":"[9764.6035 13470.0049 -12057.2656]","93":"[10243.8164 13278.6357 -12057.2178]","94":"[10686.3379 13021.0664 -12057.4707]","95":"[11086.8887 12687.3115 -12057.4131]","96":"[11413.9512 12300.0684 -12057.208]","97":"[11678.1563 11855.2441 -12057.3838]","98":"[11871.8926 11376.668 -12057.3428]","99":"[12004.7363 10878.6621 -12057.2773]","100":"[12084.8076 10369.9795 -12057.458]","101":"[12122.0264 9856.9805 -12057.0693]","102":"[12131.2725 9343.4824 -12057.5117]","103":"[12130.917 8822.9297 -12057.4131]","104":"[12130.791 8302.8682 -12057.4072]","105":"[12131.3838 7781.3921 -12057.499]","106":"[12130.5996 7257.8525 -12057.4658]","107":"[12131.4717 6743.1729 -12057.4951]","108":"[12131.1416 6220.6978 -12057.4443]","109":"[12130.8594 5703.1025 -12057.4346]","110":"[12130.8281 5186.042 -12057.3838]","111":"[12131.4863 4669.4878 -12057.3604]","112":"[12131.1113 4153.4922 -12057.4063]","113":"[12130.8945 3638.0278 -12057.3535]","114":"[12131.5957 3123.0933 -12057.4893]","115":"[12130.4316 2608.6814 -12057.4697]","116":"[12130.3848 2094.8298 -12057.4316]","117":"[12131.3721 1581.5061 -12057.4189]","118":"[12131.0049 1068.7216 -12057.3467]","119":"[12131.0225 549.2548 -12057.4463]","120":"[12131.0361 35.6875 -12057.4541]","121":"[12130.9844 -486.0617 -12057.4512]","122":"[12129.7598 -1009.6346 -12056.791]","123":"[12130.5732 -1527.1187 -12056.1279]","124":"[12129.0225 -2051.9507 -12056.2207]","125":"[12111.3242 -2574.6555 -12054.5166]","126":"[12059.1855 -3092.3679 -12049.2607]","127":"[11961.834 -3599.2649 -12039.5811]","128":"[11812.6758 -4099.9717 -12024.5098]","129":"[11611.2412 -4571.6558 -12002.79]","130":"[11351.7061 -5012.6831 -11972.0645]","131":"[11023.6514 -5409.6821 -11927.9844]","132":"[10703.3408 -5682.4922 -11881.7881]","133":"[10260.4609 -5942.9229 -11821.3506]","134":"[9803.1787 -6113.0015 -11768.9658]","135":"[9295.4746 -6209.6992 -11727.3701]","136":"[8778.6934 -6239.3921 -11698.2041]","137":"[8257.4668 -6242.4429 -11680.959]","138":"[7740.6914 -6245.8389 -11672.8125]","139":"[7227.5522 -6247.1851 -11673.0605]","140":"[6711.7031 -6247.6982 -11673.1484]","141":"[6199.519 -6247.3599 -11672.9053]","142":"[5685.2983 -6246.9683 -11672.8975]","143":"[5169.7168 -6247.4805 -11673.1572]","144":"[4648.1338 -6246.6216 -11672.9434]","145":"[4133.8267 -6247.6226 -11672.9678]","146":"[3619.9009 -6246.6816 -11673.125]","147":"[3106.4141 -6248.0605 -11673.1973]","148":"[2593.3257 -6247.2065 -11673.0742]","149":"[2078.5833 -6247.5586 -11672.9375]","150":"[1560.2836 -6247.9917 -11673.0508]","151":"[1046.3217 -6247.1592 -11673.1406]","152":"[546.3865 -6247.9097 -11673.083]"},"28":{"1":"[7994.2739 -6502.501 -11673.2051]","2":"[8509.9658 -6501.1587 -11674.6445]","3":"[9027.5664 -6481.0063 -11679.5693]","4":"[9539.2998 -6447.4766 -11687.9629]","5":"[10053.9258 -6377.4683 -11699.8008]","6":"[10558.7275 -6252.2178 -11715.9746]","7":"[11040.8359 -6063.438 -11735.4561]","8":"[11493.001 -5816.1299 -11758.123]","9":"[11902.1729 -5507.1543 -11782.3906]","10":"[12253.5576 -5133.8643 -11807.9531]","11":"[12541.5313 -4704.3687 -11833.8691]","12":"[12766.1982 -4235.0254 -11860.6045]","13":"[12931.29 -3742.2339 -11889.2363]","14":"[13043.3955 -3234.1895 -11920.5381]","15":"[13108.4414 -2719.9607 -11953.7988]","16":"[13133.5576 -2205.04 -11991.7871]","17":"[13138.8965 -1693.4707 -12027.3301]","18":"[13137.4072 -1179.95 -12050.6777]","19":"[13138.6172 -658.592 -12057.6436]","20":"[13137.2617 -135.9899 -12057.4668]","21":"[13138.7031 386.157 -12057.4121]","22":"[13137.3926 907.8809 -12057.4873]","23":"[13138.0459 1429.1836 -12057.498]","24":"[13138.5547 1950.0883 -12057.4336]","25":"[13138.1641 2470.6082 -12057.4287]","26":"[13138.166 2990.7563 -12057.4248]","27":"[13137.9014 3510.5305 -12057.4414]","28":"[13138.0303 4029.9265 -12057.3945]","29":"[13137.6035 4551.8384 -12057.5059]","30":"[13137.9766 5065.75 -12057.4756]","31":"[13137.9971 5581.8848 -12057.4922]","32":"[13137.5635 6104.769 -12057.4502]","33":"[13137.6592 6627.7051 -12057.4365]","34":"[13137.7402 7148.2432 -12057.4258]","35":"[13137.7744 7670.502 -12057.4199]","36":"[13137.8936 8183.2246 -12057.3682]","37":"[13138.0752 8699.6963 -12057.502]","38":"[13137.8672 9213.4277 -12057.3301]","39":"[13138.3711 9726.2158 -12057.416]","40":"[13138.7168 10238.5771 -12057.4863]","41":"[13132.0947 10756.9385 -12057.3037]","42":"[13101.5215 11278.5342 -12056.9541]","43":"[13028.1533 11792.415 -12057.4385]","44":"[12906.0225 12294.2734 -12057.4141]","45":"[12723.2598 12774.7344 -12057.5195]","46":"[12468.8428 13231.3857 -12057.4688]","47":"[12143.7539 13636.7744 -12057.4717]","48":"[11755.3789 13977.8633 -12057.2891]","49":"[11316.2832 14247.1172 -12057.3027]","50":"[10842.5654 14448.1572 -12057.3916]","51":"[10342.1367 14586.4883 -12057.3027]","52":"[9830.8252 14672.2002 -12057.1211]","53":"[9314.6357 14712.6289 -12057.4258]","54":"[8797.1689 14723.6904 -12057.4521]","55":"[8279.9541 14723.0488 -12057.3828]","56":"[7763.0815 14723.8633 -12057.4805]","57":"[7239.7632 14723.1641 -12057.3301]","58":"[6716.5049 14710.1582 -12057.2217]","59":"[6196.9829 14667.1719 -12057.2324]","60":"[5686.1929 14576.7139 -12056.8818]","61":"[5190.2305 14434.8623 -12057.668]","62":"[4720.064 14229.252 -12057.4463]","63":"[4281.7319 13953.2236 -12057.4121]","64":"[3899.4187 13608.0576 -12057.2979]","65":"[3583.3723 13204.1406 -12057.4316]","66":"[3334.2532 12748.1719 -12057.3711]","67":"[3154.4729 12261.9092 -12057.4111]","68":"[3035.4187 11761.8594 -12057.4521]","69":"[2965.1726 11244.5527 -12057.2881]","70":"[2936.4963 10722.6943 -12057.3496]","71":"[2930.7593 10200.3174 -12057.3174]","72":"[2931.5095 9678.6572 -12057.5488]","73":"[2930.1697 9157.8887 -12057.2656]","74":"[2915.5168 8637.8652 -12057.7402]","75":"[2868.7598 8121.2432 -12057.4727]","76":"[2785.5518 7610.1577 -12057.7158]","77":"[2686.3027 7102.6421 -12057.4111]","78":"[2606.2927 6585.332 -12057.8037]","79":"[2559.4109 6064.8745 -12057.7402]","80":"[2549.3762 5543.0493 -12057.5762]","81":"[2546.3459 5021.5718 -12057.7129]","82":"[2548.657 4500.374 -12057.6367]","83":"[2546.5649 3979.7576 -12057.7129]","84":"[2548.3748 3466.1577 -12057.5361]","85":"[2546.8318 2953.9036 -12057.6924]","86":"[2554.8513 2434.0842 -12057.2832]","87":"[2583.9458 1914.8698 -12057.2402]","88":"[2656.8918 1401.532 -12057.2744]","89":"[2779.5745 898.0455 -12057.2373]","90":"[2968.1882 418.6499 -12057.3994]","91":"[3227.5288 -25.7816 -12055.6494]","92":"[3553.9138 -421.8961 -12049.0732]","93":"[3941.4771 -760.9238 -12035.2168]","94":"[4373.1538 -1021.8484 -12013.3633]","95":"[4856.0645 -1222.4259 -11982.167]","96":"[5352.3267 -1359.1747 -11941.7129]","97":"[5860.4385 -1452.76 -11891.2949]","98":"[6367.1973 -1499.3593 -11833.8154]","99":"[6884.1128 -1513.8931 -11771.8818]","100":"[7403.7583 -1513.6985 -11710.0244]","101":"[7919.0635 -1514.1713 -11651.3945]","102":"[8433.1836 -1513.381 -11598.8037]","103":"[8952.6172 -1514.6958 -11561.3545]","104":"[9467.3008 -1503.402 -11546.292]","105":"[9988.124 -1466.454 -11545.0762]","106":"[10501.1406 -1382.0667 -11545.2686]","107":"[11000.3369 -1246.0283 -11545.3184]","108":"[11472.46 -1040.7552 -11545.3535]","109":"[11905.6758 -767.3871 -11542.7168]","110":"[12294.3232 -420.072 -11534.6973]","111":"[12621.001 -16.5702 -11518.167]","112":"[12850.501 398.9348 -11496.2451]","113":"[13038.0605 881.4165 -11463.332]","114":"[13164.8066 1379.9117 -11421.5322]","115":"[13250.9355 1888.292 -11369.5693]","116":"[13289.8789 2406.8765 -11309.9121]","117":"[13301.0371 2916.3557 -11248.3125]","118":"[13298.8174 3428.7852 -11187.9502]","119":"[13301.0762 3946.8499 -11129.4561]","120":"[13299.0117 4459.7705 -11078.7832]","121":"[13300.7793 4974.9712 -11045.8271]","122":"[13300.0508 5494.4341 -11033.2607]","123":"[13300.8018 6016.335 -11033.5693]","124":"[13300.3594 6537.8154 -11033.3887]","125":"[13300.0244 7059.0122 -11033.376]","126":"[13283.0791 7578.4189 -11033.2764]","127":"[13237.1045 8092.4287 -11033.2725]","128":"[13143.3477 8601.0361 -11033.1211]","129":"[12992.4102 9093.0215 -11033.3135]","130":"[12768.1299 9566.0957 -11032.6523]","131":"[12472.4727 9994.4561 -11029.585]","132":"[12114.835 10365.2295 -11019.2783]","133":"[11698.1934 10671.7412 -11001.3652]","134":"[11236.7666 10902.3701 -10974.8936]","135":"[10752.9951 11067.4805 -10939.9248]","136":"[10254.8789 11182.416 -10895.0303]","137":"[9743.1025 11252.6592 -10840.1299]","138":"[9233.8135 11281.6465 -10780.6934]","139":"[8724.0459 11288.334 -10719.1182]","140":"[8212.041 11286.417 -10659.252]","141":"[7700.1777 11286.1455 -10602.7256]","142":"[7183.3252 11286.8857 -10555.3496]","143":"[6666.7441 11287.4521 -10528.8994]","144":"[6153.3667 11287.7715 -10521.5166]","145":"[5638.1484 11286.9834 -10521.4346]","146":"[5124.5444 11287.4561 -10521.5303]","147":"[4787.7764 11287.5342 -10521.4248]"},"29":{"1":"[3532.1907 13689.9111 -14300.3789]","2":"[3637.6326 13689.5146 -14300.4346]","3":"[4151.2427 13669.3574 -14300.4785]","4":"[4662.6792 13608.2383 -14300.5801]","5":"[5166.9854 13513.9854 -14300.6943]","6":"[5670.8188 13413.8008 -14300.6475]","7":"[6176.1987 13313.4531 -14300.6445]","8":"[6685.8833 13211.9502 -14305.5508]","9":"[7190.1514 13112.7139 -14328.8223]","10":"[7690.9946 13014.3271 -14373.4766]","11":"[8191.3208 12916.1318 -14428.5693]","12":"[8704.0469 12814.9385 -14489.5225]","13":"[9217.333 12713.9297 -14551.8555]","14":"[9722.1348 12614.6729 -14613.7168]","15":"[10229.8125 12515.2178 -14674.3721]","16":"[10741.3018 12414.8809 -14731.8809]","17":"[11247.6689 12315.0752 -14779.6143]","18":"[11760.8115 12214.0283 -14805.3232]","19":"[12268.5947 12110.3643 -14812.5039]","20":"[12769.8848 11978.6484 -14812.2646]","21":"[13249.5586 11795.1641 -14812.3965]","22":"[13709.1201 11537.7188 -14812.5225]","23":"[14054.5781 11254.6338 -14812.2773]","24":"[14305.8818 10961.0352 -14812.4521]","25":"[14518.1992 10598.8457 -14812.4609]","26":"[14650.5098 10241.4531 -14812.5078]","27":"[14745.7246 9726.8428 -14812.4941]","28":"[14756.4453 9205.8105 -14812.3359]","29":"[14702.8076 8689.5225 -14812.2822]","30":"[14614.9277 8179.4707 -14812.1758]","31":"[14512.9619 7670.0083 -14812.4189]","32":"[14415.0898 7166.7329 -14812.4307]","33":"[14315.4668 6662.7358 -14812.4756]","34":"[14210.9521 6133.7271 -14812.4658]","35":"[14105.4131 5594.0381 -14812.458]","36":"[14004.4629 5078.1772 -14812.4541]","37":"[13902.0127 4557.3125 -14811.9893]","38":"[13794.2822 4011.7439 -14812.4512]","39":"[13687.041 3467.667 -14812.4736]","40":"[13580.3311 2924.9451 -14812.4717]","41":"[13473.791 2383.6846 -14812.415]","42":"[13367.5557 1843.9121 -14812.4912]","43":"[13261.6963 1305.54 -14812.4648]","44":"[13156.2207 768.5407 -14812.4414]","45":"[13051.1758 232.887 -14812.541]","46":"[12946.3242 -301.3565 -14812.4844]","47":"[12841.1309 -834.0632 -14812.4287]","48":"[12736.3564 -1365.4163 -14812.3877]","49":"[12632.9277 -1895.6097 -14812.4365]","50":"[12529.0928 -2424.3159 -14812.4717]","51":"[12424.8076 -2951.5457 -14812.4609]","52":"[12322.6963 -3468.9883 -14812.4014]","53":"[12221.6289 -3983.2571 -14812.4238]","54":"[12115.4307 -4526.8765 -14812.4473]","55":"[12012.4883 -5049.9829 -14812.498]","56":"[11911.7744 -5557.7222 -14812.4814]","57":"[11807.5889 -6089.9521 -14812.4473]","58":"[11704.6592 -6617.0322 -14812.4561]","59":"[11601.7881 -7138.7261 -14812.4521]","60":"[11497.9385 -7645.5449 -14812.3701]","61":"[11370.8867 -8145.4121 -14812.3359]","62":"[11207.4727 -8631.8457 -14812.1855]","63":"[10985.7334 -9120.2275 -14812.2236]","64":"[10707.4961 -9574.3887 -14812.2139]","65":"[10367.2148 -9979.3262 -14812.1309]","66":"[9966.1563 -10318.8604 -14812.6221]","67":"[9514.0195 -10581.1357 -14812.3281]","68":"[9025.7471 -10762.0039 -14812.3691]","69":"[8517.5166 -10866.0938 -14812.2822]","70":"[8001.6758 -10904.6338 -14812.0938]","71":"[7486.3853 -10888.1133 -14812.335]","72":"[6975.248 -10828.7578 -14812.1953]","73":"[6469.3018 -10739.4375 -14812.3555]","74":"[5953.8057 -10638.9258 -14812.4229]","75":"[5440.7104 -10536.4258 -14812.5117]","76":"[4924.5425 -10436.7705 -14812.3857]","77":"[4394.1738 -10331.7734 -14812.4121]","78":"[3874.5334 -10228.7383 -14812.3838]","79":"[3354.5271 -10127.8555 -14812.3174]","80":"[2835.9783 -10025.417 -14812.4434]","81":"[2318.46 -9923.0635 -14812.4629]","82":"[1801.6915 -9822.2734 -14812.377]","83":"[1286.1272 -9720.8418 -14812.3213]","84":"[771.7814 -9618.9336 -14812.3516]","85":"[258.157 -9518.6484 -14812.2949]","86":"[-254.3105 -9417.6113 -14812.3965]","87":"[-765.7764 -9316.8818 -14812.4053]","88":"[-1276.2814 -9216.7656 -14812.335]","89":"[-1785.7622 -9116.5039 -14812.3291]","90":"[-2302.0156 -9014.5088 -14812.2979]","91":"[-2822.1394 -8912.5107 -14812.4961]","92":"[-3325.3206 -8811.4951 -14812.4805]","93":"[-3848.8625 -8690.293 -14812.5742]","94":"[-4360.4126 -8532.7119 -14812.2529]","95":"[-4859.2964 -8342.459 -14812.1875]","96":"[-5340.8159 -8145.1392 -14812.4326]","97":"[-5831.0542 -7943.9414 -14812.457]","98":"[-6327.3013 -7742.0845 -14812.4531]","99":"[-6825.6875 -7537.9863 -14812.3555]","100":"[-7323.0659 -7334.0566 -14812.4033]","101":"[-7819.7192 -7131.0264 -14812.5234]","102":"[-8315.3896 -6928.2427 -14812.5195]","103":"[-8809.8018 -6725.1943 -14812.3115]","104":"[-9303.793 -6523.6772 -14812.501]","105":"[-9796.7266 -6322.229 -14812.4775]","106":"[-10288.3955 -6120.4043 -14812.4658]","107":"[-10775.8184 -5921.5703 -14812.418]","108":"[-11266.582 -5714.626 -14812.4941]","109":"[-11742.8369 -5483.5513 -14811.6885]","110":"[-12196.8525 -5214.0283 -14812.0742]","111":"[-12617.6992 -4902.4585 -14812.0742]","112":"[-12989.2393 -4544.9155 -14812.3975]","113":"[-13308.3916 -4133.0068 -14812.333]","114":"[-13551.2832 -3677.2957 -14812.5264]","115":"[-13713.2988 -3185.416 -14812.4492]","116":"[-13789.6328 -2671.4226 -14812.4043]","117":"[-13787.9414 -2153.9885 -14812.6162]","118":"[-13721.8457 -1642.849 -14812.2451]","119":"[-13603.709 -1142.548 -14812.2891]","120":"[-13443.5576 -653.5704 -14811.0918]","121":"[-13256.4287 -175.9238 -14793.9199]","122":"[-13057.6094 297.5261 -14755.6387]","123":"[-12853.2021 783.9495 -14700.6465]","124":"[-12654.5674 1259.3628 -14641.4053]","125":"[-12456.04 1731.5317 -14579.9219]","126":"[-12248.9492 2228.2607 -14515.2139]","127":"[-12039.7764 2726.0203 -14451.4619]","128":"[-11840.4307 3199.9285 -14393.915]","129":"[-11631.3447 3699.7581 -14341.0283]","130":"[-11431.666 4176.4258 -14310.4902]","131":"[-11227.2998 4667.6899 -14300.0625]","132":"[-11022.8232 5160.1245 -14300.3701]","133":"[-10811.8613 5647.6357 -14300.209]","134":"[-10583.8955 6128.3774 -14300.3018]","135":"[-10338.0498 6598.3325 -14300.251]","136":"[-10073.2451 7055.7876 -14300.1836]","137":"[-9787.2314 7498.6182 -14300.0801]","138":"[-9479.7793 7924.729 -14300.2412]","139":"[-9148.1768 8330.6582 -14300.3574]","140":"[-8792.1396 8713.4961 -14300.3643]","141":"[-8391.3193 9087.4277 -14300.3008]","142":"[-7988.7739 9406.3984 -14300.4229]","143":"[-7563.4204 9691.4805 -14300.251]","144":"[-7084.0127 9954.4395 -14300.4893]","145":"[-6584.0459 10171.2852 -14300.4424]","146":"[-6067.6401 10340.125 -14300.4502]","147":"[-5539.3472 10460.459 -14300.3145]","148":"[-5004.3076 10535.1035 -14300.4512]","149":"[-4466.4209 10565.3809 -14300.4814]","150":"[-3928.9919 10555.4111 -14300.5361]","151":"[-3394.5896 10509.6758 -14300.4609]","152":"[-2865.228 10431.0566 -14300.3984]","153":"[-2342.0264 10323.7227 -14300.4082]","154":"[-1825.7256 10191.0918 -14300.4551]","155":"[-1316.8772 10035.958 -14300.5137]","156":"[-815.629 9860.8193 -14300.2773]","157":"[-306.6468 9662.9404 -14300.374]","158":"[184.0505 9460.5 -14300.5566]","159":"[686.3942 9250.7256 -14292.6309]","160":"[1193.7112 9039.4072 -14262.7373]","161":"[1672.2434 8837.8496 -14212.5273]","162":"[2156.592 8634.4297 -14153.7764]","163":"[2630.5078 8436.7168 -14093.1689]","164":"[3127.7014 8227.7197 -14028.2295]","165":"[3612.6086 8024.7544 -13965.5762]","166":"[4085.3877 7827.0356 -13906.1758]","167":"[4560.1206 7627.1006 -13851.6719]","168":"[5054.3516 7420.4502 -13808.6807]","169":"[5539.4746 7217.3291 -13790.083]","170":"[6020.5854 7018.9482 -13788.5791]","171":"[6500.4556 6815.6738 -13788.5195]","172":"[6995.1919 6592.4409 -13788.4805]","173":"[7457.6963 6361.5771 -13788.4521]","174":"[7909.3311 6112.916 -13788.5186]","175":"[8348.6416 5845.936 -13788.5459]","176":"[8773.0244 5558.1069 -13788.374]","177":"[9204.626 5228.8613 -13788.3721]","178":"[9593.9756 4892.1265 -13788.2891]","179":"[9972.6201 4517.7275 -13788.2695]","180":"[10320.4697 4116.5693 -13788.2617]","181":"[10634.5723 3690.436 -13788.3369]","182":"[10909.8135 3240.0752 -13788.293]","183":"[11143.5 2768.4653 -13788.4717]","184":"[11333.8525 2279.4902 -13788.3809]","185":"[11478.2207 1776.4305 -13788.416]","186":"[11579.1875 1264.2792 -13788.4277]","187":"[11638.0625 738.99 -13788.4258]","188":"[11656.4004 221.6532 -13788.3721]","189":"[11637.7168 -294.4873 -13788.2393]","190":"[11586.4121 -807.1337 -13788.376]","191":"[11506.2842 -1315.0856 -13788.3662]","192":"[11399.6074 -1817.1313 -13788.3457]","193":"[11269.917 -2312.7676 -13788.3604]","194":"[11109.0498 -2833.9116 -13788.3721]","195":"[10929.7217 -3340.8635 -13788.3652]","196":"[10740.1572 -3822.4094 -13788.4258]","197":"[10544.4268 -4299.7437 -13788.4463]","198":"[10352.082 -4777.2983 -13788.5049]","199":"[10192.9385 -5264.6738 -13788.1982]","200":"[10061.4268 -5789.5898 -13788.3691]","201":"[9952.8115 -6318.7407 -13788.4873]","202":"[9849.2764 -6831.0093 -13788.4453]","203":"[9734.418 -7359.2036 -13787.9844]","204":"[9607.7734 -7866.082 -13788.2969]","205":"[9458.9395 -8371.71 -13788.4199]","206":"[9286.8408 -8876.8691 -13787.7969]","207":"[9091.7285 -9372.0557 -13788.0723]","208":"[8877.2012 -9842.8516 -13788.3594]","209":"[8633.3643 -10304.0605 -13788.4629]","210":"[8361.2578 -10747.374 -13788.2051]","211":"[8060.0845 -11169.3838 -13787.9502]","212":"[7729.0269 -11565.8408 -13788.4482]","213":"[7355.0459 -11943.8281 -13788.5195]","214":"[6944.2427 -12292.4023 -13788.4355]","215":"[6505.2671 -12601.8496 -13788.5479]","216":"[6040.4282 -12867.5615 -13788.4268]","217":"[5555.4067 -13090.6514 -13788.332]","218":"[5054.1807 -13270.4082 -13788.2705]","219":"[4541.3652 -13408.5332 -13788.3105]","220":"[4020.9392 -13508.0225 -13788.4307]","221":"[3496.3337 -13571.4531 -13788.4443]","222":"[2969.9172 -13602.457 -13788.4043]","223":"[2443.7104 -13604.6133 -13788.4043]","224":"[1919.0599 -13580.1309 -13788.457]","225":"[1396.9669 -13532.6211 -13788.3652]","226":"[878.332 -13463.9072 -13788.3584]","227":"[363.3982 -13376.6357 -13788.4746]","228":"[-157.9193 -13274.9561 -13788.3662]","229":"[-683.1862 -13168.2373 -13788.3057]","230":"[-1193.7418 -13065.4316 -13788.4541]","231":"[-1703.8014 -12963.1982 -13788.5195]","232":"[-2218.967 -12859.8262 -13788.4922]","233":"[-2732.8047 -12756.3164 -13788.4561]","234":"[-3245.2788 -12652.8564 -13788.4668]","235":"[-3756.6428 -12550.2734 -13788.4551]","236":"[-4266.8203 -12448.0322 -13788.4609]","237":"[-4810.0586 -12338.7568 -13788.3584]","238":"[-5333.458 -12232.9102 -13788.2041]","239":"[-5850.3169 -12128.7627 -13788.4463]","240":"[-6354.7813 -12027.9443 -13788.4805]","241":"[-6884.9858 -11918.917 -13789.0498]","242":"[-7391.1919 -11805.6621 -13789.5947]","243":"[-7890.4663 -11676.2773 -13789.2383]","244":"[-8384.1309 -11525.082 -13789.2256]","245":"[-8869.2578 -11354.8027 -13789.3691]","246":"[-9344.8096 -11163.6094 -13788.9551]","247":"[-9842.2813 -10928.7744 -13789.3047]","248":"[-10323.8076 -10665.75 -13789.3535]","249":"[-10784.1836 -10370.4609 -13789.251]","250":"[-11219.5938 -10042.4707 -13788.6611]","251":"[-11625.1738 -9681.7119 -13789.0293]","252":"[-11996.041 -9287.623 -13789.334]","253":"[-12329.8457 -8864.0049 -13789.3428]","254":"[-12621.084 -8412.0811 -13789.4199]","255":"[-12869.3477 -7936.9048 -13789.4814]","256":"[-13074.3584 -7443.2295 -13789.2773]","257":"[-13235.7119 -6935.1152 -13789.2754]","258":"[-13357.0283 -6417.332 -13789.4014]","259":"[-13440.5762 -5893.3418 -13789.2793]","260":"[-13489.5635 -5366.2915 -13789.3135]","261":"[-13507.5811 -4838.5127 -13788.9893]","262":"[-13497.2275 -4312.0503 -13789.1621]","263":"[-13462.0029 -3787.7629 -13789.3037]","264":"[-13404.9023 -3266.4746 -13789.3506]","265":"[-13327.5225 -2749.2166 -13788.998]","266":"[-13233.1104 -2236.5908 -13789.291]","267":"[-13130.3486 -1726.7643 -13789.3643]","268":"[-13024.7314 -1202.9604 -13780.1416]","269":"[-12917.8281 -681.2442 -13749.6094]","270":"[-12814.2783 -182.1558 -13699.8193]","271":"[-12708.1523 335.6203 -13640.7783]","272":"[-12601.459 854.7872 -13577.9814]","273":"[-12495.8105 1367.4259 -13515.0264]","274":"[-12392.9854 1870.0587 -13453.7109]","275":"[-12286.6611 2388.0776 -13392.4785]","276":"[-12179.8896 2905.3899 -13337.2061]","277":"[-12072.7617 3425.3354 -13295.9199]","278":"[-11965.8174 3934.824 -13278.7178]","279":"[-11846.7852 4435.7729 -13277.5781]","280":"[-11707.6914 4948.2329 -13277.3428]","281":"[-11543.4424 5460.1738 -13277.3252]","282":"[-11361.5762 5954.2065 -13277.5732]","283":"[-11153.8818 6436.6938 -13277.4199]","284":"[-10921.3486 6906.3701 -13277.5156]","285":"[-10660.4355 7358.917 -13277.4785]","286":"[-10371.2373 7791.501 -13277.3398]","287":"[-10052.0186 8200.5186 -13277.373]","288":"[-9701.9434 8581.4531 -13277.583]","289":"[-9323.375 8931.8027 -13277.3262]","290":"[-8916.1836 9246.1289 -13277.5059]","291":"[-8484.7939 9523.7285 -13277.4512]","292":"[-8004.2505 9773.6338 -13277.502]","293":"[-7504.8442 9979.5859 -13277.3916]","294":"[-6990.9165 10141.7197 -13277.5254]","295":"[-6467.0991 10262.5439 -13277.4111]","296":"[-5936.998 10344.7734 -13277.4775]","297":"[-5403.7358 10392.417 -13277.3682]","298":"[-4869.8877 10408.0713 -13277.3984]","299":"[-4336.895 10395.4199 -13277.4912]","300":"[-3806.0623 10357.418 -13277.376]","301":"[-3278.6365 10296.7168 -13277.3096]","302":"[-2755.5706 10216.4541 -13277.2998]","303":"[-2236.6558 10118.8643 -13277.3418]","304":"[-1719.5542 10016.0313 -13277.4873]","305":"[-1208.9558 9896.415 -13276.8906]","306":"[-728.6043 9718.4072 -13277.1699]","307":"[-259.6806 9458.6992 -13277.3555]","308":"[164.0954 9134.2197 -13277.3857]","309":"[546.6168 8764.2832 -13277.2539]","310":"[890.4574 8360.0713 -13277.291]","311":"[1202.7516 7932.4331 -13277.4385]","312":"[1498.2418 7493.8325 -13277.4307]","313":"[1773.548 7043.8413 -13277.4492]","314":"[2017.6675 6578.5142 -13277.21]","315":"[2229.8982 6098.8726 -13277.1455]","316":"[2430.0586 5615.9746 -13277.4434]","317":"[2631.5864 5134.7231 -13277.2627]","318":"[2831.689 4653.6758 -13277.3838]","319":"[3031.9026 4173.4312 -13277.1914]","320":"[3231.7554 3693.8618 -13277.4463]","321":"[3431.3108 3214.8982 -13277.2129]","322":"[3630.6021 2736.6545 -13277.3975]","323":"[3833.3118 2260.9045 -13277.4453]","324":"[4059.6628 1798.2139 -13277.1514]","325":"[4318.7656 1354.9869 -13277.3164]","326":"[4597.104 924.3375 -13277.3545]","327":"[4881.3906 498.4594 -13277.4883]","328":"[5176.5654 52.7148 -13277.5244]","329":"[5472.936 -391.3092 -13277.3662]","330":"[5767.5142 -835.6326 -13277.5127]","331":"[6062.978 -1278.4274 -13277.3584]","332":"[6358.3203 -1720.4373 -13277.5176]","333":"[6654.1211 -2161.1477 -13277.5371]","334":"[6949.1885 -2600.2788 -13277.5586]","335":"[7237.3242 -3030.3508 -13277.5186]","336":"[7529.5527 -3465.7361 -13277.5156]","337":"[7822.9219 -3900.7373 -13277.5801]","338":"[8113.7607 -4336.3979 -13277.5557]","339":"[8405.7031 -4770.4067 -13277.4902]","340":"[8697.2607 -5203.7437 -13277.4951]","341":"[8985.4082 -5634.8643 -13277.5791]","342":"[9272.2178 -6059.7314 -13277.6045]","343":"[9569.4727 -6504.5615 -13277.6445]","344":"[9867.998 -6947.3828 -13277.5449]","345":"[10163.8252 -7390.209 -13277.6035]","346":"[10452.7314 -7819.5078 -13276.9463]","347":"[10746.7852 -8258.1025 -13277.5498]","348":"[11040.0908 -8695.1641 -13277.168]","349":"[11333.2178 -9130.6787 -13277.6025]","350":"[11625.2588 -9565.3721 -13277.7246]","351":"[11916.0146 -9999.1182 -13277.5137]","352":"[12206.4229 -10432.2061 -13277.5635]","353":"[12497.1572 -10864.2119 -13277.6094]","354":"[12786.5332 -11296.2256 -13277.6084]","355":"[13076.2656 -11727.1631 -13277.5615]","356":"[13365.3174 -12157.6533 -13277.5811]","357":"[13653.2188 -12588.0566 -13277.3418]","358":"[13942.0371 -13016.1143 -13277.6025]","359":"[14229.2236 -13446.0283 -13277.4189]","360":"[14518.5137 -13875.7363 -13277.4805]","361":"[14804.3311 -14301.1514 -13277.5615]","362":"[15092.2686 -14730.123 -13277.4971]","363":"[15210.0459 -14906.4482 -13277.2363]"},"30":{"1":"[14990.9238 -15054.8789 -13277.3682]","2":"[14934.8086 -14970.667 -13277.5615]","3":"[14646.3857 -14541.3037 -13277.6123]","4":"[14359.3076 -14111.625 -13277.5537]","5":"[14073.1758 -13686.8389 -13277.6191]","6":"[13786.7793 -13260.3662 -13277.5693]","7":"[13499.957 -12833.6504 -13277.5742]","8":"[13214.6338 -12406.9961 -13277.583]","9":"[12925.6797 -11978.0908 -13277.5029]","10":"[12639.9883 -11551.9492 -13277.5762]","11":"[12351.877 -11123.0264 -13277.5557]","12":"[12065.6455 -10696.8457 -13277.5938]","13":"[11774.5703 -10263.2314 -13277.5283]","14":"[11488.7021 -9836.8789 -13277.6104]","15":"[11190.6436 -9392.0361 -13277.3359]","16":"[10898.3311 -8958.5029 -13277.4268]","17":"[10606.2373 -8521.8496 -13277.3564]","18":"[10316.7432 -8091.7925 -13277.3389]","19":"[10028.6836 -7661.5469 -13277.4561]","20":"[9739.6631 -7231.6992 -13277.3223]","21":"[9441.8291 -6787.7837 -13277.4297]","22":"[9153.04 -6357.3887 -13277.4932]","23":"[8855.3418 -5914.6191 -13277.6719]","24":"[8558.5254 -5471.8691 -13277.5996]","25":"[8268.7197 -5039.1885 -13277.4941]","26":"[7977.6846 -4607.3833 -13277.3535]","27":"[7687.8076 -4175.8364 -13277.5137]","28":"[7398.8521 -3744.6987 -13277.5576]","29":"[7103.2568 -3304.6543 -13277.6104]","30":"[6798.0674 -2849.6523 -13277.4873]","31":"[6493.2476 -2395.5803 -13277.4893]","32":"[6188.7661 -1942.5642 -13277.582]","33":"[5885.3638 -1490.002 -13277.583]","34":"[5583.979 -1037.261 -13277.4316]","35":"[5283.5308 -585.0884 -13277.4434]","36":"[4983.4458 -133.9091 -13277.5176]","37":"[4683.8193 316.4288 -13277.458]","38":"[4385.0229 765.9813 -13277.2246]","39":"[4086.1826 1213.9291 -13277.1738]","40":"[3787.72 1660.7482 -13277.1348]","41":"[3489.7861 2106.3677 -13277.376]","42":"[3192.4285 2550.4861 -13277.4355]","43":"[2896.4121 2994.4006 -13277.4521]","44":"[2600.6211 3437.4033 -13277.458]","45":"[2305.1641 3879.4922 -13277.457]","46":"[2010.0603 4320.4141 -13277.457]","47":"[1722.1283 4751.332 -13277.4072]","48":"[1436.7898 5179.7007 -13277.54]","49":"[1148.597 5608.1758 -13277.5322]","50":"[834.3696 6042.6167 -13277.5713]","51":"[493.5273 6453.2549 -13277.1846]","52":"[115.9582 6826.7285 -13277.5049]","53":"[-298.9617 7153.6265 -13277.5107]","54":"[-752.2369 7419.0674 -13277.083]","55":"[-1237.5333 7608.4321 -13276.1904]","56":"[-1737.2817 7732.9688 -13276.8994]","57":"[-2258.2256 7837.9531 -13276.3779]","58":"[-2778.9063 7937.3379 -13276.3047]","59":"[-3301.6978 8019.3931 -13276.5313]","60":"[-3825.5051 8083.6133 -13276.459]","61":"[-4350.7808 8123.811 -13276.6113]","62":"[-4875.9561 8140.7939 -13276.3672]","63":"[-5400.0942 8130.5156 -13276.5225]","64":"[-5919.2373 8090.3008 -13276.4209]","65":"[-6446.7832 8016.4976 -13276.4883]","66":"[-6970.1313 7905.0645 -13276.4131]","67":"[-7483.333 7753.9858 -13276.5625]","68":"[-7980.4517 7560.397 -13276.5869]","69":"[-8457.6934 7325.8145 -13276.4551]","70":"[-8909.9971 7049.1069 -13276.5156]","71":"[-9330.1094 6739.229 -13276.5225]","72":"[-9727.0195 6384.6763 -13276.416]","73":"[-10091.4961 5998.6792 -13276.4355]","74":"[-10422.2012 5585.147 -13276.4688]","75":"[-10723.5156 5144.5757 -13276.29]","76":"[-10985.5771 4700.478 -13276.2998]","77":"[-11221.6963 4230.7227 -13276.4248]","78":"[-11431.7002 3749.9583 -13276.3604]","79":"[-11617.25 3260.4116 -13276.4111]","80":"[-11778.0635 2763.3086 -13276.4258]","81":"[-11919.665 2261.5046 -13276.377]","82":"[-12041.8135 1755.6522 -13276.4443]","83":"[-12148.8271 1247.2883 -13276.4814]","84":"[-12251.1172 738.8724 -13276.501]","85":"[-12357.7607 206.7843 -13276.4512]","86":"[-12462.2842 -311.1961 -13276.4551]","87":"[-12567.5488 -834.473 -13276.4492]","88":"[-12672.5488 -1356.6351 -13276.4023]","89":"[-12777.4941 -1877.5859 -13276.4629]","90":"[-12882.0078 -2397.1887 -13276.3682]","91":"[-12987.707 -2922.3506 -13276.3242]","92":"[-13090.6152 -3434.0808 -13276.3496]","93":"[-13187.6328 -3951.8586 -13276.3652]","94":"[-13269.0596 -4483.271 -13276.3145]","95":"[-13329.792 -5016.3452 -13276.4971]","96":"[-13366.7354 -5550.0381 -13276.6191]","97":"[-13378.8652 -6083.5264 -13276.4697]","98":"[-13361.4326 -6615.3115 -13276.6973]","99":"[-13313.7852 -7143.6958 -13276.4678]","100":"[-13231.3057 -7666.3584 -13276.3066]","101":"[-13112.2314 -8180.4409 -13276.3232]","102":"[-12954.8643 -8682.3965 -13276.5371]","103":"[-12756.1953 -9167.7949 -13276.4971]","104":"[-12517.8867 -9633.2822 -13276.4648]","105":"[-12239.5801 -10074.0645 -13276.3164]","106":"[-11923.9746 -10487.1328 -13276.4854]","107":"[-11574.3252 -10869.9434 -13276.3408]","108":"[-11194.9941 -11221.3828 -13276.4297]","109":"[-10779.9014 -11547.8408 -13276.3223]","110":"[-10354.9258 -11835.2656 -13276.3057]","111":"[-9881.918 -12107.9922 -13276.4268]","112":"[-9393.9131 -12350.373 -13276.3555]","113":"[-8893.5371 -12563.1328 -13276.3193]","114":"[-8383.9443 -12749.5889 -13276.3066]","115":"[-7867.4746 -12912.4238 -13276.2354]","116":"[-7345.397 -13052.4463 -13276.3271]","117":"[-6819.4941 -13174.1963 -13278.8535]","118":"[-6288.501 -13284.8984 -13301.3281]","119":"[-5785.3647 -13387.8594 -13345.2734]","120":"[-5272.9351 -13493.8477 -13401.5244]","121":"[-4748.4912 -13601.6182 -13463.6826]","122":"[-4247.3901 -13704.5869 -13525.1631]","123":"[-3734.6516 -13809.5967 -13588.0586]","124":"[-3210.512 -13917.373 -13650.7402]","125":"[-2675.3191 -14027.7305 -13711.0146]","126":"[-2169.3037 -14131.8633 -13758.3555]","127":"[-1657.9064 -14236.5684 -13782.4287]","128":"[-1142.9711 -14340.9951 -13788.6064]","129":"[-627.7871 -14443.8037 -13788.5752]","130":"[-93.3905 -14551.5176 -13788.5479]","131":"[423.8394 -14656.3545 -13788.5098]","132":"[940.3125 -14759.7109 -13788.4639]","133":"[1456.0538 -14861.8193 -13788.2432]","134":"[1973.0281 -14951.5283 -13788.4951]","135":"[2492.0532 -15020.2334 -13788.3145]","136":"[3012.1216 -15070.1201 -13788.3779]","137":"[3532.6245 -15095.9795 -13787.8027]","138":"[4052.1797 -15095.8506 -13788.1299]","139":"[4569.6919 -15068.9844 -13788.2178]","140":"[5083.1992 -15009.9697 -13788.1826]","141":"[5590.5244 -14918.2539 -13788.252]","142":"[6088.645 -14791.4131 -13788.2432]","143":"[6573.7393 -14626.2061 -13788.4443]","144":"[7075.4941 -14407.3164 -13788.2861]","145":"[7553.3228 -14143.9092 -13788.2256]","146":"[8002.9922 -13837.9102 -13788.3066]","147":"[8421.4375 -13492.9336 -13788.3203]","148":"[8805.7266 -13112.459 -13788.2451]","149":"[9155.7344 -12702.1758 -13788.293]","150":"[9470.5508 -12265.9248 -13788.3789]","151":"[9753.0313 -11809.4824 -13788.3496]","152":"[10004.0176 -11336.4336 -13788.3857]","153":"[10225.6689 -10850.2344 -13788.3564]","154":"[10421.0371 -10354.0127 -13788.2881]","155":"[10592.0879 -9850.0518 -13788.4385]","156":"[10740.7578 -9340.1016 -13788.2793]","157":"[10869.585 -8825.8008 -13788.4688]","158":"[10981.3018 -8308.8984 -13788.4199]","159":"[11082.3994 -7805.9434 -13788.4287]","160":"[11188.6436 -7277.6699 -13788.377]","161":"[11291.0859 -6769.5918 -13788.5742]","162":"[11392.4395 -6262.1377 -13788.4473]","163":"[11494.8975 -5755.8623 -13788.6924]","164":"[11599.6006 -5251.0669 -13788.4863]","165":"[11723.9434 -4752.5376 -13788.3398]","166":"[11894.8643 -4238.5415 -13788.6367]","167":"[12096.709 -3737.4424 -13788.2236]","168":"[12301.708 -3239.2986 -13788.3779]","169":"[12494.8115 -2738.1045 -13788.4189]","170":"[12663.0586 -2254.2495 -13788.3467]","171":"[12813.2285 -1760.0607 -13788.2676]","172":"[12941.624 -1260.8057 -13788.4521]","173":"[13047.9082 -745.6946 -13788.3506]","174":"[13129.2637 -205.9638 -13788.3779]","175":"[13175.8203 336.4721 -13788.376]","176":"[13186.2402 861.8286 -13788.2334]","177":"[13157.4443 1391.4506 -13788.3105]","178":"[13086.9375 1915.6223 -13788.3701]","179":"[12973.0391 2430.4377 -13788.4668]","180":"[12814.1182 2931.4375 -13788.541]","181":"[12611.9443 3414.9187 -13788.3965]","182":"[12368.2285 3877.1584 -13788.3848]","183":"[12085.21 4314.6611 -13788.3828]","184":"[11768.4111 4726.6812 -13788.3701]","185":"[11421.2451 5111.812 -13788.5518]","186":"[11048.1084 5470.1138 -13788.4355]","187":"[10653.7588 5803.2148 -13788.4209]","188":"[10240.6982 6111.0757 -13788.3916]","189":"[9812.8076 6396.2085 -13788.3477]","190":"[9372.5908 6659.8911 -13788.4248]","191":"[8922.1426 6903.7212 -13788.3301]","192":"[8432.5225 7144.0063 -13788.2744]","193":"[7935.3535 7365.5127 -13788.2334]","194":"[7434.0742 7575.0293 -13788.252]","195":"[6933.1865 7782.0547 -13788.502]","196":"[6433.7559 7989.5313 -13788.5713]","197":"[5934.3115 8196.8252 -13795.4141]","198":"[5432.3218 8407.0752 -13823.584]","199":"[4956.1313 8606.8389 -13872.7402]","200":"[4470.0303 8810.5713 -13931.3164]","201":"[3972.3584 9019.1924 -13995.0596]","202":"[3496.7832 9218.5313 -14056.8926]","203":"[3010.5735 9422.1016 -14120.0898]","204":"[2513.7661 9630.4727 -14182.4785]","205":"[2043.1874 9827.7998 -14236.7539]","206":"[1565.1273 10028.248 -14279.0391]","207":"[1091.0209 10226.2168 -14297.8115]","208":"[612.6835 10424.165 -14300.2773]","209":"[136.1031 10622.5693 -14300.2949]","210":"[-340.4397 10818.9531 -14300.5059]","211":"[-816.7238 11013.8594 -14300.3477]","212":"[-1313.172 11202.1729 -14300.6211]","213":"[-1822.8488 11374.5684 -14300.4385]","214":"[-2344.6631 11526.7129 -14300.3242]","215":"[-2871.978 11653.085 -14300.4629]","216":"[-3403.5891 11752.6563 -14300.3975]","217":"[-3938.7405 11820.8447 -14300.415]","218":"[-4449.9487 11853.3711 -14300.5723]","219":"[-4989.7607 11850.3721 -14300.5]","220":"[-5518.7676 11807.625 -14300.4629]","221":"[-6050.6113 11719.541 -14300.4424]","222":"[-6571.4541 11587.2422 -14300.3291]","223":"[-7076.2012 11407.6387 -14300.5576]","224":"[-7556.3257 11187.0713 -14300.2969]","225":"[-8014.4326 10922.3672 -14300.4404]","226":"[-8447.6367 10621.0723 -14300.4365]","227":"[-8852.9502 10285.208 -14300.4365]","228":"[-9231.4453 9921.1123 -14300.416]","229":"[-9582.4756 9532.0264 -14300.2529]","230":"[-9917.0566 9110.1484 -14300.4551]","231":"[-10226.7617 8668.7354 -14300.3633]","232":"[-10511.9443 8212.2725 -14300.3945]","233":"[-10775.0693 7743.8667 -14300.4541]","234":"[-11017.3281 7265.4873 -14300.4053]","235":"[-11241.0088 6779.1143 -14300.3789]","236":"[-11450.6943 6286.5737 -14300.3525]","237":"[-11657.3389 5787.0103 -14300.502]","238":"[-11864.3203 5286.2192 -14300.4287]","239":"[-12072.3965 4786.8286 -14301.7832]","240":"[-12280.4922 4285.7539 -14322.3701]","241":"[-12491.709 3782.6482 -14367.6611]","242":"[-12690.9775 3309.4878 -14422.125]","243":"[-12892.0088 2827.7385 -14482.5205]","244":"[-13097.249 2337.7463 -14545.8662]","245":"[-13306.7578 1839.2516 -14611.0771]","246":"[-13519.3906 1331.3479 -14675.5713]","247":"[-13719.1543 854.7452 -14732.6494]","248":"[-13921.8594 371.4726 -14781.1729]","249":"[-14120.1514 -100.9917 -14805.2998]","250":"[-14321.1475 -579.5796 -14812.668]","251":"[-14520.5791 -1064.4591 -14812.3457]","252":"[-14698.8691 -1570.0078 -14812.4883]","253":"[-14835.5293 -2078.7136 -14812.1045]","254":"[-14920.2471 -2583.7212 -14812.707]","255":"[-14944.5859 -3115.0969 -14812.4854]","256":"[-14890.5215 -3645.2271 -14812.3555]","257":"[-14749.0293 -4155.6201 -14812.5576]","258":"[-14532.457 -4609.4717 -14812.293]","259":"[-14229.9316 -5037.9028 -14812.4365]","260":"[-13866.1943 -5413.4858 -14812.5645]","261":"[-13456.6299 -5736.353 -14812.2861]","262":"[-13016.0439 -6013.3154 -14812.3164]","263":"[-12550.9209 -6250.8975 -14812.208]","264":"[-12059.1729 -6465.79 -14812.2959]","265":"[-11568.4404 -6666.6021 -14812.6455]","266":"[-11073.3994 -6867.187 -14812.4648]","267":"[-10589.2988 -7066.0972 -14812.4414]","268":"[-10106.3301 -7264.6152 -14812.4707]","269":"[-9623.8193 -7461.168 -14812.4707]","270":"[-9142.4834 -7657.3809 -14812.4453]","271":"[-8662.7324 -7854.3335 -14812.3936]","272":"[-8184.0596 -8051.0078 -14812.4844]","273":"[-7682.2915 -8256.1094 -14812.502]","274":"[-7182.6597 -8459.7314 -14812.5029]","275":"[-6684.0303 -8663.958 -14812.4619]","276":"[-6200.8569 -8861.7822 -14812.4629]","277":"[-5706.3823 -9064.2236 -14812.458]","278":"[-5212.4141 -9266.0029 -14812.4541]","279":"[-4717.771 -9463.6699 -14812.5166]","280":"[-4214.2339 -9631.0117 -14812.3213]","281":"[-3701.5808 -9762.3701 -14812.1787]","282":"[-3183.958 -9868.6221 -14812.4883]","283":"[-2662.0857 -9971.791 -14812.2285]","284":"[-2136.1021 -10074.5898 -14812.1523]","285":"[-1595.9132 -10182.1152 -14812.123]","286":"[-1079.009 -10282.5264 -14812.2695]","287":"[-563.3532 -10383.9336 -14812.4395]","288":"[-48.9226 -10485.9932 -14812.4355]","289":"[464.7746 -10586.5381 -14812.4248]","290":"[977.5349 -10686.6016 -14812.4648]","291":"[1488.9122 -10788.2949 -14812.3936]","292":"[1999.5326 -10888.3828 -14812.3906]","293":"[2509.2246 -10987.9131 -14812.3115]","294":"[3017.6902 -11088.7471 -14812.3389]","295":"[3525.333 -11188.4717 -14812.2725]","296":"[4032.042 -11287.5771 -14812.3057]","297":"[4537.5908 -11387.4873 -14812.3145]","298":"[5042.0254 -11486.4258 -14812.6055]","299":"[5545.231 -11585.4863 -14812.3545]","300":"[6080.0381 -11691.0518 -14812.543]","301":"[6595.2676 -11792.1367 -14812.7158]","302":"[7112.8496 -11894.208 -14812.3115]","303":"[7620.5205 -11993.5957 -14812.0811]","304":"[8140.9204 -12080.5791 -14812.3408]","305":"[8678.3887 -12135.7148 -14812.0781]","306":"[9206.4121 -12137.8115 -14812.2256]","307":"[9728.9355 -12082.3379 -14812.6846]","308":"[10235.877 -11955.5771 -14812.2256]","309":"[10713.9854 -11751.7637 -14812.1865]","310":"[11147.3369 -11470.0068 -14812.249]","311":"[11523.9844 -11118.9268 -14812.123]","312":"[11838.7783 -10713.2783 -14812.4219]","313":"[12094.6641 -10269.2002 -14812.2529]","314":"[12306.4727 -9772.5527 -14812.3135]","315":"[12469.1865 -9258.6523 -14812.3613]","316":"[12586.3838 -8760.208 -14812.2822]","317":"[12694.3379 -8228.4277 -14812.1221]","318":"[12796.2432 -7701.0762 -14812.3555]","319":"[12896.8867 -7189.1846 -14812.7061]","320":"[13004.9951 -6647.0391 -14812.5771]","321":"[13111.5342 -6105.9502 -14812.4102]","322":"[13216.6787 -5565.9736 -14812.4404]","323":"[13322.6914 -5024.8608 -14812.3848]","324":"[13427.46 -4495.0796 -14812.2998]","325":"[13530.0361 -3976.2078 -14812.5391]","326":"[13639.7236 -3417.5862 -14812.4043]","327":"[13743.4141 -2888.3052 -14812.3164]","328":"[13849.2168 -2348.6189 -14812.5381]","329":"[13954.8916 -1810.6359 -14812.4287]","330":"[14060.3291 -1274.3892 -14812.4443]","331":"[14165.998 -739.8583 -14812.4189]","332":"[14271.2471 -206.8896 -14812.459]","333":"[14375.9287 324.3065 -14811.8086]","334":"[14479.7891 853.7997 -14812.9902]","335":"[14582.9229 1381.6122 -14812.2529]","336":"[14686.2529 1907.7643 -14812.583]","337":"[14789.8818 2432.2334 -14812.4531]","338":"[14893.0977 2955.2104 -14812.4775]","339":"[14995.6914 3476.7495 -14812.415]","340":"[15093.9648 3980.4333 -14812.4805]","341":"[15197.666 4506.4121 -14812.2402]","342":"[15303.2813 5040.9609 -14812.3916]","343":"[15406.7021 5569.0933 -14812.5205]","344":"[15505.5918 6073.9585 -14812.4863]","345":"[15609.8027 6600.8862 -14812.4668]","346":"[15708.5186 7103.3501 -14812.3428]","347":"[15808.6406 7613.1772 -14812.3701]","348":"[15909.582 8124.4263 -14812.502]","349":"[16006.3096 8634.8867 -14812.3848]","350":"[16082.0566 9159.002 -14812.1963]","351":"[16115.4834 9692.249 -14812.4453]","352":"[16093.4053 10214.0176 -14812.5898]","353":"[16005.9658 10734.9883 -14812.5381]","354":"[15846.6133 11231.6328 -14812.6357]","355":"[15603.4375 11702.8262 -14812.5645]","356":"[15308.7871 12089.2539 -14812.3447]","357":"[14928.2227 12448.3506 -14812.2686]","358":"[14498.1787 12742.7969 -14812.3301]","359":"[14034.9189 12977.7793 -14812.4971]","360":"[13539.709 13166.2725 -14812.4043]","361":"[13023.4414 13310.8379 -14812.2148]","362":"[12496.9648 13426.0518 -14812.1436]","363":"[11966.2568 13529.9082 -14812.6582]","364":"[11463.2568 13628.167 -14804.0459]","365":"[10933.2803 13733.417 -14774.0088]","366":"[10400.248 13837.54 -14721.3604]","367":"[9880.0303 13940.1211 -14661.6279]","368":"[9372.9775 14039.7959 -14600.625]","369":"[8844.8096 14143.0645 -14535.9443]","370":"[8331.8613 14244.0576 -14473.835]","371":"[7820.4771 14344.1299 -14413.6582]","372":"[7317.1914 14443.7549 -14360.04]","373":"[6809.9668 14543.1631 -14320.1816]","374":"[6292.688 14627.1689 -14302.6748]","375":"[5782.6919 14679.1855 -14300.5684]","376":"[5264.4399 14695.8086 -14300.3896]","377":"[4746.4072 14698.4297 -14300.5518]","378":"[4229.084 14698.2051 -14300.4424]","379":"[3711.8418 14697.5625 -14300.4453]","380":"[3197.4041 14697.6074 -14300.4463]","381":"[2887.7629 14697.7695 -14300.4404]"}} \ No newline at end of file diff --git a/lua/ulx/modules/sh/metrostroi.lua b/lua/ulx/modules/sh/metrostroi.lua index 43f30f9..d0a2abb 100644 --- a/lua/ulx/modules/sh/metrostroi.lua +++ b/lua/ulx/modules/sh/metrostroi.lua @@ -3,7 +3,7 @@ local CATEGORY_NAME = "Metrostroi" ------------------------------ Wagons ------------------------------ local waittime = 10 local lasttimeusage = -waittime -function ulx.wagoncount( calling_ply ) +function ulx.wagons( calling_ply ) if lasttimeusage + waittime > CurTime() then ULib.tsayError( calling_ply, "Please wait " .. math.Round(lasttimeusage + waittime - CurTime()) .. " seconds before using this command again", true ) return @@ -27,9 +27,9 @@ function ulx.wagoncount( calling_ply ) end ulx.fancyLog("Max trains: #s.\nMax wagons: #s.\nMax trains per player: #s", GetConVarNumber("metrostroi_maxtrains"), GetConVarNumber("metrostroi_maxwagons"), GetConVarNumber("metrostroi_maxtrains_onplayer")) end -local wagons = ulx.command( CATEGORY_NAME, "ulx trains", ulx.wagoncount, "!trains" ) +local wagons = ulx.command( CATEGORY_NAME, "ulx trains", ulx.wagons, "!trains" ) wagons:defaultAccess( ULib.ACCESS_ALL ) -wagons:help( "Shows you the current wagons count per player." ) +wagons:help( "Shows you the current wagons." ) function ulx.routes( calling_ply ) --if lasttimeusage + waittime > CurTime() then @@ -38,329 +38,51 @@ function ulx.routes( calling_ply ) --end --lasttimeusage = CurTime() - local wagTable = {} - local trains = {} + --ulx.fancyLog("Wagons on server: #s", Metrostroi.TrainCount()) if CPPI then --local N = {} for k,v in pairs(Metrostroi.TrainClasses) do if v == "gmod_subway_base" then continue end local ents = ents.FindByClass(v) - for k2,ent in pairs(ents) do - if ent.NoTrain or trains[ent] or (ent.FrontTrain and ent.RearTrain) then continue end - if ent.WagonList then - local id = table.insert(wagTable,{}) - for i,tr in ipairs(ent.WagonList) do - trains[tr] = id - table.insert(wagTable[id],tr) - end - end - end - end - for i,trains in ipairs(wagTable) do - local owner = trains[1]:GetDriverName() - local routelist = "" - for it,train in pairs(trains) do - if (train.FrontTrain and train.RearTrain) then continue end - local num = train.RouteNumber and train.RouteNumber.RouteNumber - if num and tonumber(num) > 0 then - if routelist ~= "" then routelist = routelist.."," end - routelist = routelist..num:sub(1,train.RouteNumber.Max or -1) - end - end - if routelist ~= "" then - ulx.fancyLog("#s route number #s",owner,routelist) - else - ulx.fancyLog("#s route number not set",owner) - end - end - --[[ + for k2,v2 in pairs(ents) do --N[v2:CPPIGetOwner() or v2:GetNetworkedEntity("Owner", "N/A") or "(disconnected)"] = (N[v2:CPPIGetOwner() or v2:GetNetworkedEntity("Owner", "N/A") or "(disconnected)"] or 0) + 1 - if v2.GetDriverName then - ulx.fancyLog("#s have a route:#d",v2:GetDriverName(),v2.RouteNumber - else - ulx.fancyLog("#s don't have a route",v2:GetDriverName()) - end + if v2.GetDriverName and v2.RouteNumber then ulx.fancyLog("#s have a route:#d",v2:GetDriverName(),v2.RouteNumber) else ulx.fancyLog("#s don't have a route",v2:GetDriverName()) end end - end]] + end end --ulx.fancyLog("Max trains: #s.\nMax wagons: #s.\nMax trains per player: #s", GetConVarNumber("metrostroi_maxtrains"), GetConVarNumber("metrostroi_maxwagons"), GetConVarNumber("metrostroi_maxtrains_onplayer")) end local routes = ulx.command( CATEGORY_NAME, "ulx routes", ulx.routes, "!routes" ) routes:defaultAccess( ULib.ACCESS_ALL ) routes:help( "Shows you the current routes." ) +--[[ +------------------------------ Checkwags ------------------------------ +function ulx.checkwags( calling_ply ) + ulx.fancyLog("Wagons on server: #s", Metrostroi.TrainCount()) + if CPPI then + local N = {} + for k,v in pairs(Metrostroi.TrainClasses) do + if v == "gmod_subway_81-717" or v == "gmod_subway_ezh3" then + local ents = ents.FindByClass(v) + for k2,v2 in pairs(ents) do -function ulx.trains( calling_ply, ToP ) - --if lasttimeusage + waittime > CurTime() then - --ULib.tsayError( calling_ply, "Please wait " .. math.Round(lasttimeusage + waittime - CurTime()) .. " seconds before using this command again", true ) - --return - --end - - --lasttimeusage = CurTime() - - local wagTable = {} - local trains = {} - local found = false - for k,v in pairs(Metrostroi.TrainClasses) do - if v == "gmod_subway_base" then continue end - local ents = ents.FindByClass(v) - for k2,ent in pairs(ents) do - if ent.NoTrain or trains[ent] or (ent.FrontTrain and ent.RearTrain) or not ent.WagonList then continue end - - local owner = CPPI and ent:CPPIGetOwner() or ent:GetOwner() - local canShow = not ToP or ToP == "" or IsValid(owner) and owner:GetName():find(ToP) - - if not canShow and not tonumber(ToP) then continue end - - local consist = "" - local routelist = "" - local drivers = "" - local signal - for i,tr in ipairs(ent.WagonList) do - if ToP then canShow = canShow or tr:GetWagonNumber() == tonumber(ToP) end - - if consist ~= "" then consist = consist.."-" end - consist = consist..string.format("%04d",tr:GetWagonNumber()) - - local num = tr.RouteNumber and tr.RouteNumber.RouteNumber - if num then - if routelist ~= "" then routelist = routelist.."," end - routelist = routelist..num:sub(1,tr.RouteNumber.Max or -1) - end - - local ALSCoil = tr.ALSCoil - if ALSCoil and ALSCoil.Enabled > 0 and IsValid(ALSCoil.Signal) and (IsValid(ent:GetDriver()) or not signal) then - signal = ALSCoil.Signal - end - if IsValid(tr.DriverSeat) and IsValid(tr.DriverSeat:GetDriver()) then - if drivers ~= "" then drivers = drivers.."," end - drivers = drivers..string.format("%s in %04d driver",tr.DriverSeat:GetDriver():GetName(),tr:GetWagonNumber()) - end - trains[tr] = true - end - - if not canShow then continue end - --[[ulx.fancyLog("Consist #s:\n\tOwner #s\n\tType #s\n\tRoute number:#s\n\tSignal:#s", - consist, - owner and owner:GetName() or "N/A", - ent:GetClass():gsub("gmod_subway_",""), - routelist=="" and "N/A" or routelist, - signal and string.format("%s %s",signal.Name,(signal.Red or signal:GetARS(0,true)) and "(prohibited)" or "") or "N/A" - )]] - ulx.fancyLog("Consist #s:",consist) - if IsValid(owner) then ulx.fancyLog("\tOwner #s",owner:GetName()) end - ulx.fancyLog("\tType #s",ent:GetClass():gsub("gmod_subway_","")) - if routelist~="" then ulx.fancyLog("\tRoute number: #s",routelist) end - if signal then ulx.fancyLog("\tSignal: #s",string.format("%s %s",signal.Name,(signal.Red or signal:GetARS(0,true)) and "(prohibited)" or "")) end - if drivers ~= "" then ulx.fancyLog("\tDrivers: #s",drivers) end - found = true - end - end - if not found then ULib.tsayError( calling_ply, "Train not found",true) end -end -local trains = ulx.command( CATEGORY_NAME, "ulx traininfo", ulx.trains, "!tinfo" ) -trains:defaultAccess( ULib.ACCESS_ALL ) -trains:addParam{ type=ULib.cmds.StringArg, hint="Filter by player or wagon number", ULib.cmds.takeRestOfLine, invisible=true } -trains:help( "Shows you the detailed info about all consits" ) - - -function ulx.traingoto( calling_ply, ToP) - if not IsValid(calling_ply) then return end - --if lasttimeusage + waittime > CurTime() then - --ULib.tsayError( calling_ply, "Please wait " .. math.Round(lasttimeusage + waittime - CurTime()) .. " seconds before using this command again", true ) - --return - --end - - --lasttimeusage = CurTime() - local train = not ToP and IsValid(calling_ply.lastTrain) and calling_ply.lastTrain - - for k,v in pairs(Metrostroi.TrainClasses) do - if v == "gmod_subway_base" then continue end - local ents = ents.FindByClass(v) - for k2,ent in pairs(ents) do - if ent.NoTrain then continue end - - local owner = CPPI and ent:CPPIGetOwner() or ent:GetOwner() - local driver = ent:GetDriver() - if not ToS and owner == calling_ply and not (ent.FrontTrain and ent.RearTrain) then train = ent break end - if ToS and driver and driver:GetName():find(ToS) and not ulx.getExclusive(driver,calling_ply) then train = ent break end - - for i,tr in ipairs(ent.WagonList) do - if ToP and tr:GetWagonNumber() == tonumber(ToP) then - train = tr - break - end - end - - if train then break end - end - if train then break end - end - if train then - if calling_ply:InVehicle() then calling_ply:ExitVehicle() end - calling_ply:SetMoveType(MOVETYPE_NOCLIP) - - if IsValid(train.DriverSeat) then - calling_ply:SetPos(train.DriverSeat:LocalToWorld(Vector(-10,0,0))) - calling_ply:SetEyeAngles(train:LocalToWorldAngles(-train.DriverSeat:GetAngles())) - calling_ply:SetLocalVelocity( Vector( 0, 0, 0 ) ) -- Stop! - else - calling_ply:SetPos(train:LocalToWorld(Vector(0,0,20))) - calling_ply:SetEyeAngles(train:GetAngles()) - calling_ply:SetLocalVelocity( Vector( 0, 0, 0 ) ) -- Stop! - end - - ulx.fancyLogAdmin( calling_ply, "#A teleported to #s", train ) - else - ULib.tsayError( calling_ply, "Train not found",true) - end -end -local traingoto = ulx.command( CATEGORY_NAME, "ulx traingoto", ulx.traingoto, "!tgoto" ) -traingoto:defaultAccess( ULib.ACCESS_ALL ) -traingoto:addParam{ type=ULib.cmds.StringArg, hint="Filter by player or wagon number", ULib.cmds.takeRestOfLine, invisible=true } -traingoto:help( "Teleport you to trains" ) - -function ulx.trainback( calling_ply ) - if not IsValid(calling_ply) then return end - if not IsValid(calling_ply.lastTrain) then - ULib.tsayError( calling_ply, "Train not found",true) - return - end - if calling_ply:InVehicle() then - ULib.tsayError( calling_ply, "Leave vehicle first!",true) - return - end - --if lasttimeusage + waittime > CurTime() then - --ULib.tsayError( calling_ply, "Please wait " .. math.Round(lasttimeusage + waittime - CurTime()) .. " seconds before using this command again", true ) - --return - --end - - --lasttimeusage = CurTime() - local train = calling_ply.lastTrain - - local seat = IsValid(calling_ply.lastTrainSeat) and not IsValid(calling_ply.lastTrainSeat:GetDriver()) and calling_ply.lastTrainSeat - - if not seat and IsValid(train.DriverSeat) and not IsValid(train.DriverSeat:GetDriver()) then - seat = train.DriverSeat - end - - if not seat and IsValid(train.InstructorsSeat) and not IsValid(train.InstructorsSeat:GetDriver()) then - seat = train.InstructorsSeat - end - if not seat then - for i=1,5 do - if IsValid(train["InstructorsSeat"..i]) and not IsValid(train["InstructorsSeat"..i]:GetDriver()) then - seat = train["InstructorsSeat"..i] - break - end - if IsValid(train["ExtraSeat"..i]) and not IsValid(train["ExtraSeat"..i]:GetDriver()) then - seat = train["ExtraSeat"..i] - break end end - end - if seat then - --if calling_ply:InVehicle() then calling_ply:ExitVehicle() end - calling_ply:SetPos(seat:LocalToWorld(Vector(0,0,20))) - calling_ply:SetEyeAngles(train:LocalToWorldAngles(-seat:GetAngles())) - calling_ply:EnterVehicle(seat) - else - ULib.tsayError( calling_ply, "Train not found",true) - end -end -local trainback = ulx.command( CATEGORY_NAME, "ulx trainback", ulx.trainback, "!tback" ) -trainback:defaultAccess( ULib.ACCESS_ALL ) -trainback:help( "Teleport you back to your train" ) - - -local function takeSeat(Player, OtherSeat) - if not IsValid(OtherSeat) or IsValid(OtherSeat:GetDriver()) or not IsValid(OtherSeat:GetParent()) then - return false - end - - local Seat = Player:GetVehicle() - Seat:SetVehicleEntryAnim(false) - OtherSeat:SetVehicleEntryAnim(false) - - local OldMoveType = Player:GetMoveType( MOVETYPE_WALK ) - Player:ExitVehicle() - Player:SetMoveType( MOVETYPE_NOCLIP ) - Player:SetPos(OtherSeat:LocalToWorld(Vector(0,0,20))) - Player:SetEyeAngles(OtherSeat:GetParent():LocalToWorldAngles(-OtherSeat:GetAngles())) - - local timerName = "change_cab_"..OtherSeat:EntIndex() - - timer.Create(timerName, 0, 0, function() - if not IsValid(Player) or not IsValid(OtherSeat) or IsValid(Player:GetVehicle()) then - timer.Remove(timerName) - - Player:SetMoveType(OldMoveType) - Seat:SetVehicleEntryAnim(false) - OtherSeat:SetVehicleEntryAnim(false) - return + for k,v in pairs(N) do + ulx.fancyLog("#s wagons have #s",v,(type(k) == "Player" and IsValid(k)) and k:GetName() or k) end - - Player:EnterVehicle(OtherSeat) - - if not IsValid(Player:GetVehicle()) then return end - - timer.Remove(timerName) - - --Player:SetPos(OtherSeat:LocalToWorld(Vector(0,0,20))) - Player:SetEyeAngles(OtherSeat:GetParent():LocalToWorldAngles(-OtherSeat:GetAngles())) - - Seat:SetVehicleEntryAnim(false) - OtherSeat:SetVehicleEntryAnim(false) - end) - - return true + end + ulx.fancyLog("Max trains: #s.\nMax wagons: #s.\nMax trains per player: #s", GetConVarNumber("metrostroi_maxtrains"), GetConVarNumber("metrostroi_maxwagons"), GetConVarNumber("metrostroi_maxtrains_onplayer")) end - -function ulx.changecab( calling_ply ) - if not IsValid(calling_ply) then return end - local Wagon = calling_ply:GetTrain() - if not IsValid(Wagon) then - ULib.tsayError( calling_ply, "You ,ust sit in train",true) - return - end - - local TargetWagon - for i, wag in ipairs(Wagon.WagonList) do - if not IsValid(wag) or Wagon == wag or (wag.FrontTrain and wag.RearTrain) then continue end - TargetWagon = wag - break - end - - if not TargetWagon then - ULib.tsayError( calling_ply, "Can't find back wagon in train!",true) - return - end - - local Seat = calling_ply:GetVehicle(); - - if Seat == Wagon.DriverSeat then - if not takeSeat(calling_ply, TargetWagon.DriverSeat) then - ULib.tsayError( calling_ply, "Driver seat are occupied!",true) - end - return - end - - if takeSeat(calling_ply, TargetWagon.InstructorsSeat) then return end - for i=1,5 do - if takeSeat(calling_ply, TargetWagon["InstructorsSeat"..i]) then return end - end - for i=1,5 do - if takeSeat(calling_ply, TargetWagon["ExtraSeat"..i]) then return end - end - - ULib.tsayError( calling_ply, "Cannot find propper seat...",true) -end -local changecab = ulx.command( CATEGORY_NAME, "ulx changecab", ulx.changecab, "!ccab" ) -changecab:defaultAccess( ULib.ACCESS_ALL ) - -changecab:help( "Change cab" ) +local wagons = ulx.command( CATEGORY_NAME, "ulx trains", ulx.wagons, "!trains" ) +wagons:defaultAccess( ULib.ACCESS_ALL ) +wagons:help( "Shows you the current wagons." ) +]] ------------------------------ Trainfuck ------------------------------ local Models = { + "models/metrostroi/81/81-7036.mdl", + "models/metrostroi/81/81-7037.mdl", "models/z-o-m-b-i-e/metro_2033/train/m_33_metro_train_01_one_part.mdl", "models/z-o-m-b-i-e/metro_2033/train/m_33_train_crush_02.mdl", } @@ -496,52 +218,3 @@ local tps = ulx.command( "Metrostroi", "ulx station", ulx.tps, "!station" ) tps:addParam{ type=ULib.cmds.StringArg, hint="Station or station number", ULib.cmds.takeRestOfLine } tps:defaultAccess( ULib.ACCESS_ALL ) tps:help( "Teleport between stations." ) - ---Костылииии -function ulx.sopen( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sopen "..arg, true) -end -local sopen = ulx.command( CATEGORY_NAME, "ulx sopen", ulx.sopen, "!sopen" ) -sopen:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sopen:defaultAccess( ULib.ACCESS_ALL ) -sopen:help( "Open signal or route" ) - -function ulx.sclose( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sclose "..arg, true) -end -local sclose = ulx.command( CATEGORY_NAME, "ulx sclose", ulx.sclose, "!sclose" ) -sclose:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sclose:defaultAccess( ULib.ACCESS_ALL ) -sclose:help( "Close signal or route" ) - -function ulx.sactiv( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sactiv "..arg, true) -end -local sactiv = ulx.command( CATEGORY_NAME, "ulx sactiv", ulx.sactiv, "!sactiv" ) -sactiv:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sactiv:defaultAccess( ULib.ACCESS_ALL ) -sactiv:help( "Enable auxulary signals" ) - -function ulx.sdeactiv( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sdeactiv "..arg, true) -end -local sdeactiv = ulx.command( CATEGORY_NAME, "ulx sdeactiv", ulx.sdeactiv, "!sdeactiv" ) -sdeactiv:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sdeactiv:defaultAccess( ULib.ACCESS_ALL ) -sdeactiv:help( "Disable auxulary signals" ) - -function ulx.sopps( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sopps "..arg, true) -end -local sopps = ulx.command( CATEGORY_NAME, "ulx sopps", ulx.sopps, "!sopps" ) -sopps:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sopps:defaultAccess( ULib.ACCESS_ALL ) -sopps:help( "Open invitation signal" ) - -function ulx.sclps( calling_ply, arg ) - MSignalSayHook(calling_ply,"!sclps "..arg, true) -end -local sclps = ulx.command( CATEGORY_NAME, "ulx sclps", ulx.sclps, "!sclps" ) -sclps:addParam{ type=ULib.cmds.StringArg, hint="Signal or route name", ULib.cmds.takeRestOfLine } -sclps:defaultAccess( ULib.ACCESS_ALL ) -sclps:help( "Close invitation signal" ) \ No newline at end of file diff --git a/lua/weapons/gmod_tool/stools/signalling.lua b/lua/weapons/gmod_tool/stools/signalling.lua index c0d32f0..5fee590 100644 --- a/lua/weapons/gmod_tool/stools/signalling.lua +++ b/lua/weapons/gmod_tool/stools/signalling.lua @@ -16,47 +16,7 @@ local TypesOfSignal = {"Inside","Outside big","Outside small"} local TypesOfSign = {"NF","40","60","70","80","Station border","C(horn) Street","STOP Street","Dangerous","Deadlock", "Stop marker","!(stop)","X","T Start","T End","T Sbor(engage)","Engines off","Engines on","C(horn)","T stop emer","Shod", "Left doors","Phone▲","Phone▼","1up","STOP Street cyka","NF outside","35 outside","40 outside","60 outside","70 outside","80 outside", - "T Sbor(engage) outside","35","Dangerous 200","CR End","CR End(inv)","2up","3up","4up","5up","6up","X outside", "Metal","50","50 outside", - "Forward x2", - "Ted Off kn", - "Ted Off p1", - "Ted Off p2", - "Ted Off pn", - "Ted Off t1", - "Ted Off t2", - "Ted Off t3", - "Ted Off t4", - "Ted On kn", - "Ted On p1", - "Ted On p2", - "Ted On pn", - "Ted On t1", - "Ted On t2", - "Ted On t3", - "Ted On t4", - "Ted Off 722 10%", - "Ted Off 722 20%", - "Ted Off 722 30%", - "Ted Off 722 40%", - "Ted Off 722 50%", - "Ted Off 722 60%", - "Ted Off 722 70%", - "Ted Off 722 80%", - "Ted Off 722 90%", - "Ted Off 722 100%", - "Ted Off Outside", - "Ted On 722 10%", - "Ted On 722 20%", - "Ted On 722 30%", - "Ted On 722 40%", - "Ted On 722 50%", - "Ted On 722 60%", - "Ted On 722 70%", - "Ted On 722 80%", - "Ted On 722 90%", - "Ted On 722 100%", - "Ted On Outside", - } + "T Sbor(engage) outside","35","Dangerous 200","CR End","CR End(inv)","2up","3up","4up","5up","6up","X outside", "Metal","50","50 outside"} local RouteTypes = {"Auto", "Manual","Repeater","Emerg"} local TypesOfAuto = { @@ -261,14 +221,14 @@ function TOOL:SpawnAutoPlate(ply,trace,param) self.Auto.PAStationHorlift = ent.PAStationHorlift end elseif self.Auto.Type == METROSTROI_SBPPSENSOR and not ent.Linked then - self.Auto.SBPPType = ent.SBPPType + self.Auto.SBPPType = ent.Type self.Auto.SBPPDeadlock = ent.IsDeadlock self.Auto.SBPPStationPath = ent.StationPath self.Auto.SBPPStationID = ent.StationID self.Auto.SBPPDriveMode = ent.DriveMode self.Auto.SBPPRightDoors = ent.RightDoors - self.Auto.SBPPWTime = ent.WTime or 0 - self.Auto.SBPPRK = ent.RKPos or 1 + self.Auto.SBPPWTime = ent.WTime + self.Auto.SBPPRK = ent.RKPos self.Auto.LXp = ent.DistanceToOPV end self.Auto.LXp = ent.DistanceToOPV or ent.LXp or self.Auto.LXp @@ -402,11 +362,11 @@ function TOOL:SpawnAutoPlate(ply,trace,param) ent.PAType = self.Auto.PAType ent.PAStationPath = tonumber(self.Auto.PAStationPath) ent.PAStationID = tonumber(self.Auto.PAStationID) - ent.PAStationName = self.Auto.PAStationName or "N/A" + ent.PAStationName = self.Auto.PAStationName ent.PALastStation = self.Auto.PALastStation ent.PAWrongPath = self.Auto.PAWrongPath - ent.PADeadlockStart = self.Auto.PADeadlockStart or 128 - ent.PADeadlockEnd = self.Auto.PADeadlockEnd or 512 + ent.PADeadlockStart = self.Auto.PADeadlockStart + ent.PADeadlockEnd = self.Auto.PADeadlockEnd ent.PALineChange = self.Auto.PALineChange ent.PALineChangeStationPath = self.Auto.PALineChangeStationPath ent.PALineChangeStationID = self.Auto.PALineChangeStationID @@ -861,7 +821,7 @@ function TOOL:BuildCPanelCustom() tool:SendSettings() end local VEnRouC = CollCat:CheckBox("Enable route number") - VEnRouC:SetTooltip("Enable route number(when disabled route number enables only with invitation signal)") + VEnRouC:SetTooltip("Enable route number(when disabled route number enables only with invation signal)") VEnRouC:SetValue(tool.Signal.Routes[i].EnRou or false) function VEnRouC:OnChange() tool.Signal.Routes[i].EnRou = self:GetChecked() @@ -1243,7 +1203,7 @@ function TOOL:BuildCPanelCustom() end if SBPPType==7 then local SRK = CPanel:NumSlider("RK Pos:",nil,1,18,0) - SRK:SetValue(tool.Auto.SBPPRK or 1) + SRK:SetValue(tool.Auto.SBPPRK or 0) SRK.OnValueChanged = function(num) tool.Auto.SBPPRK = SRK:GetValue() tool:SendSettings() diff --git a/lua/weapons/gmod_tool/stools/train_spawner.lua b/lua/weapons/gmod_tool/stools/train_spawner.lua index 15f5c85..213e24e 100644 --- a/lua/weapons/gmod_tool/stools/train_spawner.lua +++ b/lua/weapons/gmod_tool/stools/train_spawner.lua @@ -5,7 +5,7 @@ TOOL.AddToMenu = false if CLIENT then language.Add("Tool.train_spawner.name", "Train Spawner") language.Add("Tool.train_spawner.desc", "Spawn a train") - language.Add("Tool.train_spawner.0", "Primary: Spawns a full train. Secondary: Reverse facing (yellow ed when facing the opposite side).") + language.Add("Tool.train_spawner.0", "Primary: Spawns a full train. Secondary: self.Reverse facing (yellow ed when facing the opposite side).") language.Add("Undone_81-7036", "Undone 81-7036 (does not work)") language.Add("Undone_81-7037", "Undone 81-7037 (does not work)") language.Add("Undone_81-717", "Undone 81-717") @@ -79,23 +79,6 @@ function UpdateGhostPos(pl) end end -function UpdateWagPos(pl) - local trace = util.TraceLine(util.GetPlayerTrace(pl)) - local tbl = Metrostroi.RerailGetTrackData(trace.HitPos,pl:GetAimVector()) - - if not tbl then tbl = Trace(pl, trace) end - local pos,ang = Vector(0,0,0),Angle(0,0,0) - if tbl[3] ~= nil then - pos = tbl[1] - ang = tbl[2] - return pos,ang,false - else - pos = tbl.centerpos + Vector(0,0,112-55) - ang = tbl.right:Angle()+Angle(0,90,0) - return pos,ang,true - end -end - function TOOL:UpdateGhost() local good,canDraw @@ -166,12 +149,6 @@ function TOOL:Think() self:OnRemove() end end) - - local oldOR = self.GhostEntities[1].OnRemove - self.GhostEntities[1].OnRemove = function(ent) - hook.Remove("Think",ent) - oldOR(ent) - end else self:UpdateGhost() end @@ -213,9 +190,9 @@ function TOOL:SpawnWagon(trace) local ent if i == 1 then if spawnfunc then - ent = self.Train:SpawnFunction(ply,trace,spawnfunc(i,self.Settings,self.Train),self:GetOwner():GetNW2Bool("metrostroi_train_spawner_rev"),UpdateWagPos) + ent = self.Train:SpawnFunction(ply,trace,spawnfunc(i,self.Settings,self.Train),self:GetOwner():GetNW2Bool("metrostroi_train_spawner_rev")) else - ent = self.Train:SpawnFunction(ply,trace,self.Train.Spawner.head or self.Train.ClassName,self:GetOwner():GetNW2Bool("metrostroi_train_spawner_rev"),UpdateWagPos) + ent = self.Train:SpawnFunction(ply,trace,self.Train.Spawner.head or self.Train.ClassName,self:GetOwner():GetNW2Bool("metrostroi_train_spawner_rev")) end --nil,self:GetOwner():GetNW2Bool("metrostroi_train_spawner_rev") and Angle(0,180,0) or Angle(0,0,0)) --Create a first entity in queue if ent then @@ -259,6 +236,7 @@ function TOOL:SpawnWagon(trace) if haveCoupler then bogeyE1:SetAngles(ent:LocalToWorldAngles(bogeyE1.SpawnAng)) bogeyE2:SetAngles(ent:LocalToWorldAngles(bogeyE1.SpawnAng)) + --print(couplL1 == LastEnt.RearBogey,couplL1 == ent.RearCouple,couplL2 == ent.RearCouple) -- Set bogey position by our bogey couple offset and lastent bogey couple offset couplE1:SetPos( couplL1:LocalToWorld( @@ -303,6 +281,7 @@ function TOOL:SpawnWagon(trace) Metrostroi.RerailTrain(ent) --Rerail train --LastEnt:LocalToWorld(bogeyL1:WorldToLocal(Vector)))) + --print) LastRot = rot end @@ -330,7 +309,6 @@ function TOOL:SpawnWagon(trace) if self.Train.Spawner.func then self.Train.Spawner.func(ent,i,self.Settings.WagNum,LastRot) end if self.Train.Spawner.wagfunc then ent:GenerateWagonNumber(function(_,number) return self.Train.Spawner.wagfunc(ent,i,number) end) end if ent.TrainSpawnerUpdate then ent:TrainSpawnerUpdate() end - for k,v in pairs(ent.CustomSpawnerUpdates) do if k ~= "BaseClass" then v(ent) end end hook.Run("MetrostroiSpawnerUpdate",ent,self.Settings) ent:UpdateTextures() ent.FrontAutoCouple = i > 1 and i < self.Settings.WagNum @@ -399,7 +377,6 @@ function TOOL:Reload(trace) spawner:SpawnFunction(self:GetOwner()) end function TOOL:LeftClick(trace) - if not self.Train then return end local class = IsValid(trace.Entity) and trace.Entity:GetClass() if class and (trace.Entity.Spawner or class ~= "func_door" and class ~= "prop_door_rotating") then if SERVER then @@ -427,7 +404,6 @@ function TOOL:LeftClick(trace) if self.Train.Spawner.func then self.Train.Spawner.func(ent,k,self.Settings.WagNum,rot) end ent:GenerateWagonNumber(self.Train.Spawner.wagfunc) if ent.TrainSpawnerUpdate then ent:TrainSpawnerUpdate() end - for k,v in pairs(ent.CustomSpawnerUpdates) do if k ~= "BaseClass" then v(ent) end end hook.Run("MetrostroiSpawnerUpdate",ent,self.Settings) ent:UpdateTextures() table.insert(trains,ent) @@ -459,7 +435,6 @@ function TOOL:LeftClick(trace) end function TOOL:RightClick(trace) - if not self.Train then return end if IsValid(trace.Entity) then if SERVER then if trace.Entity.ClassName == (self.Train.Spawner.head or self.Train.ClassName) or trace.Entity.ClassName == self.Train.Spawner.interim then @@ -482,7 +457,6 @@ function TOOL:RightClick(trace) if self.Train.Spawner.func then self.Train.Spawner.func(ent,k,self.Settings.WagNum,rot) end ent:GenerateWagonNumber(self.Train.Spawner.wagfunc) if ent.TrainSpawnerUpdate then ent:TrainSpawnerUpdate() end - for k,v in pairs(ent.CustomSpawnerUpdates) do if k ~= "BaseClass" then v(ent) end end hook.Run("MetrostroiSpawnerUpdate",ent,self.Settings) ent:UpdateTextures() table.insert(trains,ent) diff --git a/lua/weapons/train_kv_wrench/cl_init.lua b/lua/weapons/train_kv_wrench/cl_init.lua index 67c0468..10131a3 100644 --- a/lua/weapons/train_kv_wrench/cl_init.lua +++ b/lua/weapons/train_kv_wrench/cl_init.lua @@ -339,7 +339,7 @@ function SWEP:CreateModels( tab ) if (v.type == "Model" and v.model and v.model ~= "" and (not IsValid(v.modelEnt) or v.createdModel ~= v.model) and string.find(v.model, ".mdl") and file.Exists (v.model, "GAME") ) then - v.modelEnt = ents.CreateClientProp("models/metrostroi/81-717/reverser.mdl") + v.modelEnt = ents.CreateClientProp("models/metrostroi_train/reversor/reversor_classic.mdl") v.modelEnt:SetModel(v.model) if (IsValid(v.modelEnt)) then v.modelEnt:SetPos(self:GetPos()) diff --git a/lua/weapons/train_kv_wrench_gold/cl_init.lua b/lua/weapons/train_kv_wrench_gold/cl_init.lua index 61b3485..8b0db0f 100644 --- a/lua/weapons/train_kv_wrench_gold/cl_init.lua +++ b/lua/weapons/train_kv_wrench_gold/cl_init.lua @@ -356,7 +356,7 @@ function SWEP:CreateModels( tab ) if (v.type == "Model" and v.model and v.model ~= "" and (not IsValid(v.modelEnt) or v.createdModel ~= v.model) and string.find(v.model, ".mdl") and file.Exists (v.model, "GAME") ) then - v.modelEnt = ents.CreateClientProp("models/metrostroi/81-717/reverser.mdl") + v.modelEnt = ents.CreateClientProp("models/metrostroi_train/reversor/reversor_gold.mdl") v.modelEnt:SetModel(v.model) if (IsValid(v.modelEnt)) then v.modelEnt:SetPos(self:GetPos())