-------------------------------------------------------------------------------- -- 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.ClientPropsInitialized = false ENT.ButtonMap["PUU"] = { pos = Vector(480.5-0.5,41,-19.4+2.0), --446 -- 14 -- -0,5 ang = Angle(0,-90,50), width = 750, height = 135, scale = 0.0625, hideseat=0.2, buttons = { {ID = "!DoorsClosed",x=45.5, y=30.5, radius=8, tooltip = "Двери закрыты",model = { lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="DoorsClosed",z=-7, color=Color(120,255,50)}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(175,250,20),z=-2}, }}, {ID = "StandToggle",x=96, y=30.5, radius=15, tooltip = "Стоянка",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=-5, ang=180, var="Stand",speed=12, vmin=0, vmax=1, 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 = "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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(200,150,60),z=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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(160,255,220),z=0}, }}, {ID = "KAHkToggle",x=137.5+37.83*2-20, y=30.5+10, w=40,h=20, tooltip="Крышка кнопки КАХ\nKAH button cover", model = { model = "models/metrostroi_train/81/krishka.mdl", ang = 0, z = 1, var="KAHk",speed=8,min=0.43,max=0.68, disable="KAHToggle", 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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,80,100),z=0}, }}, {ID = "ALSkToggle",x=137.5+37.83*3-20, y=30.5+10, w=40,h=20, tooltip="Крышка кнопки АЛС\nALS button cover", model = { model = "models/metrostroi_train/81/krishka.mdl", ang = 0, z = 1, var="ALSk",speed=8,min=0.43,max=0.68, disable="ALSToggle", 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, var="FDepot",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 = "!HVoltage",x=137.5+37.83*5, y=30.5, radius=8, tooltip = "Сеть контактная",model = { lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="HVoltage",z=-7, color=Color(255,120,50)}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(255,120,50),z=-2}, }}, {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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,255,255),z=0}, }}, {ID = "EmergencyCompressorSet",x=138+37.83*7, y=30.5, radius=15, tooltip = "Компрессор резервный",model = { model = "models/metrostroi_train/81-720/buttons/b7.mdl",z=7, var="EmergencyCompressor",speed=12, vmin=0, vmax=0.9, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EnableBVSet",x=137.5+37.83*8, y=30.5, radius=15, tooltip = "Включение защиты",model = { model = "models/metrostroi_train/81-720/buttons/b5.mdl",z=6, var="EnableBV",speed=12, vmin=0, vmax=1, 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 = "DisableBVSet",x=137.5+37.83*9, y=30.5, radius=15, tooltip = "Отключение БВ",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=6, var="DisableBV",speed=12, vmin=0, vmax=1, 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 = "RingSet",x=137.5+37.83*10, y=30.5, radius=15, tooltip = "Передача управления(звонок)",model = { model = "models/metrostroi_train/81-720/buttons/b4.mdl",z=6, var="Ring",speed=12, vmin=0, vmax=1, 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 = "R_Program2Set",x=566.63+36.5*0, y=30.5, radius=15, tooltip = "Программа 2",model = { model = "models/metrostroi_train/81-720/buttons/b3.mdl",z=6,--blue var="R_Program2",speed=12, vmin=0, vmax=1, 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 = "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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(50,150,200),z=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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(50,150,200),z=0}, }}, {ID = "R_EmerSet",x=566.63+35.5*3, y=30.5, radius=15, tooltip = "Связь экстренная",model = { model = "models/metrostroi_train/81-720/buttons/b3.mdl",z=6,--blue var="R_Emer",speed=12, vmin=0, vmax=1, 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 = "R_Program1Set",x=566.63+35.2*4, y=30.5, radius=15, tooltip = "Пуск записи",model = { model = "models/metrostroi_train/81-720/buttons/b5.mdl",z=6,--blue var="R_Program1",speed=12, vmin=0, vmax=1, 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 = "EnableBVEmerSet",x=42, y=110, radius=15, tooltip = "Возврат БВ резервный",model = { model = "models/metrostroi_train/81-720/button_circle2.mdl",z=3, var="EnableBVEmer",speed=12, vmin=0, vmax=0.9, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EmergencyControlsToggle",x=566.63+36.5*1, y=90, radius=15, tooltip = "Управление резервное",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=-2, var="EmergencyControls",speed=12, vmin=0, vmax=1, ang=180, 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 = "WiperToggle",x=566.63+35.75*1.5, y=90, radius=15, tooltip = "Стекло-очиститель",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=-2, var="Wiper",speed=12, vmin=0, vmax=1, ang=180, 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 = "!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 = "!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 = "Движение назад"}, } } ENT.ButtonMap["PUL"] = { pos = Vector(473,36,-26.6+1.6), --446 -- 14 -- -0,5 ang = Angle(0,-90,21.5), width = 100, height = 280, scale = 0.0625, hideseat=0.2, 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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,255,255),z=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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,255,255),z=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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,80,100),z=0}, }}, {ID = "!DoorLeftLamp",x=47, y=149, radius=8, tooltip = "Работа кнопки левых дверей",model = { lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="DoorLeftLamp",z=-3, color=Color(120,255,50)}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(175,250,20),z=-1}, }}, {ID = "DoorLeftSet",x=49, y=197, radius=15, tooltip = "Левые двери",model = { model = "models/metrostroi_train/81-720/button_circle1.mdl",z=-2, ang=0, var="DoorLeft",speed=12, vmin=0, vmax=1, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, } } ENT.ButtonMap["PUR"] = { pos = Vector(473,11,-26.6+1.6), --446 -- 14 -- -0,5 ang = Angle(0,-90,21.5), width = 210, height = 280, scale = 0.0625, hideseat=0.2, buttons = { {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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,255,255),z=0}, }}, {ID = "EmerBrakeAddSet",x=58.5, y=79.5, radius=15, tooltip = "(резервный) Тормоз",model = { model = "models/metrostroi_train/81-720/buttons/b2.mdl",z=-6, var="EmerBrakeAdd",speed=12, vmin=0, vmax=1, 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 = "EmerBrakeReleaseSet",x=103, y=79.5, radius=15, tooltip = "(резервный) Отпуск",model = { model = "models/metrostroi_train/81-720/buttons/b5.mdl",z=-6, var="EmerBrakeRelease",speed=12, vmin=0, vmax=1, 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 = "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}, 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, sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(255,80,100),z=0}, }}, {ID = "EmergencyBrakeToggle",x=188, y=79.5, radius=15, tooltip = "Тормоз экстренный",model = { model = "models/metrostroi_train/81-720/tumbler2.mdl",z=-2, ang=180, var="EmergencyBrake",speed=12, vmin=0, vmax=1, 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 = "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}, 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), sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.03,color=Color(80,255,100),z=0}, }}, {ID = "AttentionMessageSet",x=58.5, y=119, radius=15, tooltip = "Восприятие сообщения",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=-6, var="AttentionMessage",speed=12, vmin=0, vmax=1, 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 = "AttentionSet",x=103, y=119, radius=15, tooltip = "Бдительность",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=-6, var="Attention",speed=12, vmin=0, vmax=1, 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 = "AttentionBrakeSet",x=149, y=119, radius=15, tooltip = "Восприятие торможения",model = { model = "models/metrostroi_train/81-720/buttons/b6.mdl",z=-6, var="AttentionBrake",speed=12, vmin=0, vmax=1, 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 = "HornBSet",x=26, y=196, radius=15, tooltip = "Сигнал",model = { model = "models/metrostroi_train/81-720/button_circle1.mdl",z=-2, ang=0, var="HornB",speed=12, vmin=0, vmax=1, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "DoorRightSet",x=111, y=196, radius=15, tooltip = "Прав двери",model = { model = "models/metrostroi_train/81-720/button_circle1.mdl",z=-2, ang=0, var="DoorRight",speed=12, vmin=0, vmax=1, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "!DoorRightLamp",x=108.5, y=144, radius=8, tooltip = "Работа кнопки правых дверей",model = { lamp = {model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",var="DoorRightLamp",z=-3, color=Color(120,255,50)}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(175,250,20),z=-1}, }}, } } ENT.ButtonMap["RV"] = { pos = Vector(473.65,55,-16.65), ang = Angle(-1,-90+3,27), width = 120, height = 250, scale = 0.0625, hideseat=0.2, buttons = { {ID = "EmerX1Set",x=95, y=53, radius=15, tooltip = "Ход 1 резервный",model = { model = "models/metrostroi_train/81-720/button_circle3.mdl",z=3, var="EmerX1",speed=12, vmin=0, vmax=0.9, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EmerX2Set",x=96, y=125, radius=15, tooltip = "Ход 2 резервный",model = { model = "models/metrostroi_train/81-720/button_circle3.mdl",z=3, var="EmerX2",speed=12, vmin=0, vmax=0.9, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EmerCloseDoorsSet",x=97, y=190, radius=15, tooltip = "Закрытие дверей резервное",model = { model = "models/metrostroi_train/81-720/button_circle3.mdl",z=3, var="EmerCloseDoors",speed=12, vmin=0, vmax=0.9, sndvol = 0.5, snd = function(val) return val and "button_press" or "button_release" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "EmergencyDoorsToggle",x=60, y=110, radius=15, tooltip = "Двери резервные",model = { model = "models/metrostroi_train/81-720/tumbler2.mdl",z=-2, var="EmergencyDoors",speed=12, vmin=0, vmax=1, ang=180, 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), }}, } } ENT.ButtonMap["PneumoHelper1"] = { pos = Vector(471,59,24), ang = Angle(0,-30,90), width = 70, height = 76, 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}, } } ENT.ButtonMap["PneumoHelper2"] = { pos = Vector(474,58.5,6.5), ang = Angle(0,-30,90), width = 70, height = 76, 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}, } } ENT.ButtonMap["VoltHelper1"] = { pos = Vector(476,60.5,0.9), ang = Angle(0,-39,90), width = 60, height = 60, 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}, } } ENT.ButtonMap["VoltHelper2"] = { pos = Vector(476,60.5,-5), ang = Angle(0,-43,90), width = 60, height = 190, 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}, } } ENT.ButtonMap["ASNP"] = { pos = Vector(409.4,-10.3,44), --446 -- 14 -- -0,5 ang = Angle(0,92,90), width = 180, height = 100, scale = 0.0625, hide=0.8, buttons = { {ID = "R_ASNPMenuSet",x=28, y=90, 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.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=150, y=38-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.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=150, y=38+8, 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.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=20, y=38, radius=8, tooltip = "АСНП: Включение",model = { model = "models/metrostroi_train/81-720/tumbler2.mdl", ang=0, 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 = Vector(409.0,-8.3,42.4), --446 -- 14 -- -0,5 ang = Angle(0,92,90), width = 512, height = 128, scale = 0.025/2, hide=0.8, } ENT.ButtonMap["IGLAButtons"] = { pos = Vector(409.7,35.6,26.45), --446 -- 14 -- -0,5 ang = Angle(0,83.3,90), width = 87, height = 70, scale = 0.0701, 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="ИГЛА: SR", model = { lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl", var="IGLASR",color=Color(175,250,20),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(175,250,20),z=-1}, }}, {ID = "!IGLARX",x=27.5, y=10.5, radius=3, tooltip="ИГЛА: RX", model = { lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl", var="IGLARX",color=Color(255,56,30),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,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/81-502/lamps/svetodiod_small_502.mdl", var="IGLAErr",color=Color(255,168,0),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(255,168,0),z=-1}, }}, {ID = "!IGLAOSP",x=50, y=10.5, radius=3, tooltip="ИГЛА: ОСП", model = { lamp = {speed=16,model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl", var="IGLAOSP",color=Color(175,250,20),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,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/81-502/lamps/svetodiod_small_502.mdl", var="IGLAPI",color=Color(255,56,30),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,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/81-502/lamps/svetodiod_small_502.mdl", var="IGLAOff",color=Color(255,56,30),z=-3.5}, sprite = {bright=0.4,size=0.25,scale=0.02,vscale=0.02,color=Color(255,56,30),z=-1}, }}, } } --color=Color(175,250,20) green --color=Color(255,56,30) red --color=Color(255,168,000) yellow ENT.ButtonMap["IGLA"] = { pos = Vector(409.75,36.5,24.7), --446 -- 14 -- -0,5 ang = Angle(0,83.3,90), width = 512, height = 128, scale = 0.025/2.96, hide=0.8, } ENT.ButtonMap["Tickers"] = { pos = Vector(-460.5,-31.5,54.8), --446 -- 14 -- -0,5 ang = Angle(0,90,90), width = 852, height = 64, scale = 0.074, hide=true, hideseat=1, } ENT.ButtonMap["BackVent"] = { pos = Vector(407.5,20,27.6), --446 -- 14 -- -0,5 ang = Angle(0,83,90), width = 400, height = 150, scale = 0.0625, hide=0.8, buttons = { {ID = "!VentCondMode",x=173, y=33, 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("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 = "!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), --getfunc = function(ent) return ent:GetPackedRatio("VentHeatMode") end, 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 = "!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,}, } } ENT.ButtonMap["BackPPZ"] = { pos = Vector(407.5,20,12.6), --446 -- 14 -- -0,5 ang = Angle(0,83,90), width = 400, height = 310, scale = 0.0625, hide=0.8, buttons = { {ID = "SF1Toggle",x=61.5+0*28.8, y=73, w=20,h=40, tooltip = "SF1: Питание общее",}, {ID = "SF2Toggle",x=61.5+1*28.8, y=73, w=20,h=40, tooltip = "SF2: Управление основное",}, {ID = "SF3Toggle",x=61.5+2*28.8, y=73, w=20,h=40, tooltip = "SF3: Управление резервное",}, {ID = "SF4Toggle",x=61.5+3*28.8, y=73, w=20,h=40, tooltip = "SF4: БАРС",}, {ID = "SF5Toggle",x=61.5+4*28.8, y=73, w=20,h=40, tooltip = "SF5: БУП",}, {ID = "SF6Toggle",x=61.5+5*28.8, y=73, w=20,h=40, tooltip = "SF6: БЦКУ",}, {ID = "SF7Toggle",x=61.5+6*28.8, y=73, w=20,h=40, tooltip = "SF7: ППО",}, {ID = "SF8Toggle",x=61.5+7*28.8, y=73, w=20,h=40, tooltip = "SF8: Оповещение",}, {ID = "SF9Toggle",x=61.5+8*28.8, y=73, w=20,h=40, tooltip = "SF9: Радиосвязь",}, {ID = "SF10Toggle",x=61.5+9*28.8, y=73, w=20,h=40, tooltip = "SF10: Ориентация вагона",}, {ID = "SF11Toggle",x=61.5+10*28.8, y=73, w=20,h=40, tooltip = "SF11: Направление движения"}, {ID = "SF12Toggle",x=61.5+0*28.8, y=224.5, w=20,h=40, tooltip = "SF12: Фары 1-й группы",}, {ID = "SF13Toggle",x=61.5+1*28.8, y=224.5, w=20,h=40, tooltip = "SF13: Фары 2-й группы",}, {ID = "SF14Toggle",x=61.5+2*28.8, y=224.5, w=20,h=40, tooltip = "SF14: Огни габаритные",}, {ID = "SF15Toggle",x=61.5+3*28.8, y=224.5, w=20,h=40, tooltip = "SF15: Освещение кабины",}, {ID = "SF16Toggle",x=61.5+4*28.8, y=224.5, w=20,h=40, tooltip = "SF16: Отопление",}, {ID = "SF17Toggle",x=61.5+5*28.8, y=224.5, w=20,h=40, tooltip = "SF17: Кондиционер кабины",}, {ID = "SF18Toggle",x=61.5+6*28.8, y=224.5, w=20,h=40, tooltip = "SF18: Гребнесмазыватель",}, {ID = "SF19Toggle",x=61.5+7*28.8, y=224.5, w=20,h=40, tooltip = "SF19: Питание КРМ основное",}, {ID = "SF20Toggle",x=61.5+8*28.8, y=224.5, w=20,h=40, tooltip = "SF20: Питание КРМ резервное",}, {ID = "SF21Toggle",x=61.5+9*28.8, y=224.5, w=20,h=40, tooltip = "SF21: Двери открытие",}, {ID = "SF22Toggle",x=61.5+10*28.8, y=224.5, w=20,h=40, tooltip = "SF22: Двери закрытие"}, } } for k,buttbl in ipairs(ENT.ButtonMap["BackPPZ"].buttons) do buttbl.model = { model = "models/metrostroi_train/81-720/button_av1.mdl",z=-16, ang=-90, var=buttbl.ID:Replace("Toggle",""),speed=9, vmin=0,vmax=1, sndvol = 0.8, snd = function(val) return val and "av_on" or "av_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), } end ENT.ButtonMap["PVZ"] = { pos = Vector(383.4,52,5), --446 -- 14 -- -0,5 ang = Angle(0,0,92), width = 330, height = 350, scale = 0.0625, hideseat=0.2, buttons = { {ID = "SFV1Toggle",x=0*30, y=0, w=30,h=50, tooltip = "SF1: Питание цепей управления вагона",}, {ID = "SFV2Toggle",x=1*30, y=0, w=30,h=50, tooltip = "SF2: Питание БУВ",}, {ID = "SFV3Toggle",x=2*30, y=0, w=30,h=50, tooltip = "SF3: Питание БУТП",}, {ID = "SFV4Toggle",x=3*30, y=0, w=30,h=50, tooltip = "SF4: БУТП Управление",}, {ID = "SFV5Toggle",x=4*30, y=0, w=30,h=50, tooltip = "SF5: БУТП Управление резервное",}, {ID = "SFV6Toggle",x=5*30, y=0, w=30,h=50, tooltip = "SF6: БУТП Питание",}, {ID = "SFV7Toggle",x=6*30, y=0, w=30,h=50, tooltip = "SF7: ББЭ",}, {ID = "SFV8Toggle",x=7*30, y=0, w=30,h=50, tooltip = "SF8: БВ управление",}, {ID = "SFV9Toggle",x=8*30, y=0, w=30,h=50, tooltip = "SF9: БВ питание",}, {ID = "SFV10Toggle",x=9*30, y=0, w=30,h=50, tooltip = "SF10: ППО",}, {ID = "SFV11Toggle",x=10*30, y=0, w=30,h=50, tooltip = "SF11: Мотор-компрессор"}, {ID = "SFV12Toggle",x=0*30, y=150, w=30,h=50, tooltip = "SF12: Двери закрытие",}, {ID = "SFV13Toggle",x=1*30, y=150, w=30,h=50, tooltip = "SF13: Двери открытие левых",}, {ID = "SFV14Toggle",x=2*30, y=150, w=30,h=50, tooltip = "SF14: Двери открытие правых",}, {ID = "SFV15Toggle",x=3*30, y=150, w=30,h=50, tooltip = "SF15: Двери торцевые",}, {ID = "SFV16Toggle",x=4*30, y=150, w=30,h=50, tooltip = "SF16: Оповещение",}, {ID = "SFV17Toggle",x=5*30, y=150, w=30,h=50, tooltip = "SF17: Экстренная связь",}, {ID = "SFV18Toggle",x=6*30, y=150, w=30,h=50, tooltip = "SF18: Резерв",}, {ID = "SFV19Toggle",x=7*30, y=150, w=30,h=50, tooltip = "SF19: Освещение салона питание",}, {ID = "SFV20Toggle",x=8*30, y=150, w=30,h=50, tooltip = "SF20: Освещение салона аварийное",}, {ID = "SFV21Toggle",x=9*30, y=150, w=30,h=50, tooltip = "SF21: Датчик скорости",}, {ID = "SFV22Toggle",x=10*30, y=150, w=30,h=50, tooltip = "SF22: Тормоз стояночный"}, {ID = "SFV23Toggle",x=0*30, y=300, w=30,h=50, tooltip = "SF23: Вентиляция управление 1-я группа",}, {ID = "SFV24Toggle",x=1*30, y=300, w=30,h=50, tooltip = "SF24: Вентиляция управление 2-я группа",}, {ID = "SFV25Toggle",x=2*30, y=300, w=30,h=50, tooltip = "SF25: Вентиляция питание 1-я группа",}, {ID = "SFV26Toggle",x=3*30, y=300, w=30,h=50, tooltip = "SF26: Вентиляция питание 2-я группа",}, {ID = "SFV27Toggle",x=4*30, y=300, w=30,h=50, tooltip = "SF27: Питание возбудителя FIXME",}, {ID = "SFV28Toggle",x=5*30, y=300, w=30,h=50, tooltip = "SF28: Питание ЗКК FIXME",}, {ID = "SFV29Toggle",x=6*30, y=300, w=30,h=50, tooltip = "SF29: Токоприёмники",}, {ID = "SFV30Toggle",x=7*30, y=300, w=30,h=50, tooltip = "SF30: Табло",}, {ID = "SFV31Toggle",x=8*30, y=300, w=30,h=50, tooltip = "SF31: Резерв",}, {ID = "SFV32Toggle",x=9*30, y=300, w=30,h=50, tooltip = "SF32: Резерв",}, {ID = "SFV33Toggle",x=10*30, y=300, w=30,h=50, tooltip = "SF33: Резерв"}, } } for k,buttbl in ipairs(ENT.ButtonMap["PVZ"].buttons) do buttbl.model = { model = "models/metrostroi_train/81-720/button_av1.mdl",z=-16, ang=-90, var=buttbl.ID:Replace("Toggle",""),speed=9, vmin=0,vmax=1, sndvol = 0.8, snd = function(val) return val and "av_on" or "av_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0), } end ENT.ButtonMap["BackDown"] = { pos = Vector(407.65,20,-13), --446 -- 14 -- -0,5 ang = Angle(0,83.5,90), width = 400, height = 330, scale = 0.0625, hide=0.8, buttons = { {ID = "Pant1Toggle",x=85, y=62, radius=12, tooltip = "Отжатие токоприёмников 1-й группы",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Pant1",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), }}, {ID = "Pant2Toggle",x=105, y=62, radius=12, tooltip = "Отжатие токоприёмников 2-й группы",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Pant2",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), }}, {ID = "Vent1Toggle",x=148, y=62, radius=12, tooltip = "Вентиляция 1-я группа",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Vent1",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), }}, {ID = "Vent2Toggle",x=168, y=62, radius=12, tooltip = "Вентиляция 2-я группа",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Vent2",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), }}, {ID = "VentToggle",x=204, y=62, radius=12, model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Vent",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), }}, {ID = "PassLightToggle",x=240, y=62, radius=12, tooltip = "Освещение салона",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="PassLight",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), }}, {ID = "CabLightToggle",x=260, y=62, radius=12, tooltip = "Освещение кабины",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="CabLight",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), }}, {ID = "Headlights1Toggle",x=315, y=62, radius=12, tooltip = "Фары 1-я группа",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Headlights1",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), }}, {ID = "Headlights2Toggle",x=335, y=62, radius=12, tooltip = "Фары 2-я группа",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Headlights2",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), }}, {ID = "ParkingBrakeToggle",x=81, y=118, radius=12, tooltip = "Стояночный тормоз",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="ParkingBrake",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), }}, {ID = "TorecDoorsToggle",x=111, y=118, radius=12, tooltip = "Двери торцевые",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="TorecDoors",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), }}, {ID = "BBERToggle",x=142, y=118, radius=12, tooltip = "ББЭ Резервнео включение",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="BBER",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), }}, {ID = "BBEToggle",x=173, y=118, radius=12, tooltip = "ББЭ",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="BBE",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), }}, {ID = "CompressorToggle",x=204, y=118, radius=12, tooltip = "Компрессор",model = { model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="Compressor",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), }}, {ID = "CabLightStrengthToggle",x=235, y=118, radius=12, tooltip = "Сила освещения кабины",model = { 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, var="AppLights1",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), }}, {ID = "AppLights2Toggle",x=341, y=118, radius=12, model = { --FIXME WHAT IS THIS? model = "models/metrostroi_train/81-720/tumbler1.mdl",z=0, ang=180, var="AppLights2",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), }}, {ID = "!BARSBlock",x=214, y=211, radius=0, model = { model = "models/metrostroi_train/81-720/rc_rotator1.mdl",z=12, getfunc = function(ent) return ent:GetPackedRatio("BARSBlock") end,var="BARSBlock", plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=-90,x=0,y=40,z=-5,var="BARSBlockPl", ID="BARSBlockPl",}, speed=6, min=0.5,max=0.15, sndvol = 1, snd = function(_,val) return val==3 and "switch_batt_on" or val == 0 and "switch_batt_off" or "switch_batt" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), }}, {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, var="Battery",speed=2, sndvol = 1, snd = function(val) return val and "switch_batt_on" or "switch_batt_off" end, sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0), vmin=0.15, vmax=0 }}, {ID = "ALSFreqToggle",x=334, y=295, radius=12, tooltip = "Дешифратор АЛС",model = { 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"} }}, } } ENT.ButtonMap["VityazButtons"] = { pos = Vector(468.1,-10.25,-32.3), ang = Angle(0,-89,36), width = 110, height = 80, scale = 0.0625, hideseat=0.2, buttons = { {ID = "VityazF1Set",x=1, y=0, w=20,h=20, tooltip = "Витязь: F1",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f1.mdl",z=0, ang=0,var="VityazF1",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz3_press" or "button_vityaz3_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF2Set",x=1, y=20, w=20,h=20, tooltip = "Витязь: Следующая страница",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f2.mdl",z=0, ang=0,var="VityazF2",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz2_press" or "button_vityaz2_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF3Set",x=1, y=40, w=20,h=20, tooltip = "Витязь: Предыдущая страница",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f3.mdl",z=0, ang=0,var="VityazF3",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF4Set",x=1, y=60, w=20,h=20, tooltip = "Витязь: Штатный режим",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f4.mdl",z=0, ang=0,var="VityazF4",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz4_press" or "button_vityaz4_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz1Set",x=30, y=0, w=20,h=20, tooltip = "Витязь: 1",model = { model = "models/metrostroi_train/81-720/vyitaz/v_1.mdl",z=0, ang=0, var="Vityaz1",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz4Set",x=30, y=20, w=20,h=20, tooltip = "Витязь: 4",model = { model = "models/metrostroi_train/81-720/vyitaz/v_4.mdl",z=0, ang=0, var="Vityaz4",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz2_press" or "button_vityaz2_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz7Set",x=30, y=40, w=20,h=20, tooltip = "Витязь: 7",model = { model = "models/metrostroi_train/81-720/vyitaz/v_7.mdl",z=0, ang=0, var="Vityaz7",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz2Set",x=47, y=0, w=20,h=20, tooltip = "Витязь: 2",model = { model = "models/metrostroi_train/81-720/vyitaz/v_2.mdl",z=0, ang=0, var="Vityaz2",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz3_press" or "button_vityaz3_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz5Set",x=47, y=20, w=20,h=20, tooltip = "Витязь: 5",model = { model = "models/metrostroi_train/81-720/vyitaz/v_5.mdl",z=0, ang=0, var="Vityaz5",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz8Set",x=47, y=40, w=20,h=20, tooltip = "Витязь: 8",model = { model = "models/metrostroi_train/81-720/vyitaz/v_8.mdl",z=0, ang=0, var="Vityaz8",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz4_press" or "button_vityaz4_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz0Set",x=47, y=60, w=20,h=20, tooltip = "Витязь: 0",model = { model = "models/metrostroi_train/81-720/vyitaz/v_0.mdl",z=0, ang=0, var="Vityaz0",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz2_press" or "button_vityaz2_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz3Set",x=64, y=0, w=20,h=20, tooltip = "Витязь: 3",model = { model = "models/metrostroi_train/81-720/vyitaz/v_3.mdl",z=0, ang=0, var="Vityaz3",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz3_press" or "button_vityaz3_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz6Set",x=64, y=20, w=20,h=20, tooltip = "Витязь: 6",model = { model = "models/metrostroi_train/81-720/vyitaz/v_6.mdl",z=0, ang=0, var="Vityaz6",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz4_press" or "button_vityaz4_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "Vityaz9Set",x=64, y=40, w=20,h=20, tooltip = "Витязь: 9",model = { model = "models/metrostroi_train/81-720/vyitaz/v_9.mdl",z=0, ang=0, var="Vityaz9",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF5Set",x=64, y=60, w=20,h=20, tooltip = "Витязь: ЗВ",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f5.mdl",z=0, ang=0, var="VityazF5",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz3_press" or "button_vityaz3_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF6Set",x=91, y=0, w=20,h=20, tooltip = "Витязь: Вверх\\Скорость",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f6.mdl",z=0, ang=0, var="VityazF6",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz2_press" or "button_vityaz2_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF7Set",x=91, y=20, w=20,h=20, tooltip = "Витязь: Вниз\\Токи",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f7.mdl",z=0, ang=0, var="VityazF7",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz4_press" or "button_vityaz4_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF8Set",x=91, y=40, w=20,h=20, tooltip = "Витязь: Ввод\\Вагонное оборудование",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f8.mdl",z=0, ang=0, var="VityazF8",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz1_press" or "button_vityaz1_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, {ID = "VityazF9Set",x=91, y=60, w=20,h=20, tooltip = "Витязь: Выбор\\Управление вагонным оборудованием",model = { model = "models/metrostroi_train/81-720/vyitaz/v_f9.mdl",z=0, ang=0, var="VityazF9",speed=16, sndvol = 1, snd = function(val) return val and "button_vityaz2_press" or "button_vityaz2_release" end,sndmin = 40, sndmax = 1e3/3, sndang = Angle(-90,0,0), }}, } } ENT.ButtonMap["BTO"] = { pos = Vector(445,-21,-61), --446 -- 14 -- -0,5 ang = Angle(0,0,0), width = 224, height = 50, scale = 0.0625, hideseat=0.2, 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"} }}, {ID = "UAVAToggle", x=24+200, y=26, radius=25, tooltip="УАВА", model = { model = "models/metrostroi_train/81-720/720_cran.mdl", ang=-90, plomb = {var="UAVAPl", ID="UAVAPl", }, var="UAVA",speed=4, max=0.28 }}, } } ENT.ButtonMap["FrontPneumatic"] = { pos = Vector(470-9+38,-45.0+13,-58.0+5-6), ang = Angle(0,90,90), width = 600, height = 100, scale = 0.1, 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"}}, } } ENT.ClientProps["FrontBrake"] = {-- model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl", pos = Vector(449+48, -23, -69), ang = Angle(-15,-90,0), hide = 2,30 } ENT.ClientProps["FrontTrain"] = {-- model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl", pos = Vector(449+48, 23, -69), 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-0.5+4,42,-58.0+5-6), ang = Angle(0,270,90), width = 800, height = 100, scale = 0.1, 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"}}, } } ENT.ClientProps["RearTrain"] = {-- model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl", pos = Vector(-450-18, -30, -69), ang = Angle(-15,90,0), hide = 2, } ENT.ClientProps["RearBrake"] = {-- model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl", pos = Vector(-450-18, 30, -69), 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["PassengerDoor"] = { pos = Vector(380,-55,40), --28 ang = Angle(0,90,90), width = 730, height = 2000, scale = 0.1/2, buttons = { {ID = "PassengerDoor",x=0,y=0,w=730,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door", model = { 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, }}, } } ENT.ButtonMap["PassengerDoor2"] = { pos = Vector(380,-18.5,40), --28 ang = Angle(0,-90,90), width = 730, height = 2000, scale = 0.1/2, buttons = { {ID = "PassengerDoor",x=0,y=0,w=730,h=2000, tooltip="Дверь в кабину машиниста из салона\nPass door"}, } } if not ENT.ClientSounds["OtsekDoor"] then ENT.ClientSounds["OtsekDoor"] = {} end --FIXME перенести нахуй в шеерд table.insert(ENT.ClientSounds["OtsekDoor"],{"door_cab_o",function(ent,var) return var>0 and "door_cab_open" or "door_cab_close" end,1,1,90,1e3,Angle(-90,0,0)}) ENT.ButtonMap["CabinDoorL"] = { pos = Vector(420,64,40), ang = Angle(0,0,90), width = 642, height = 2000, scale = 0.1/2, buttons = { {ID = "CabinDoorLeft",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста\nCabin door", model = { 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, }}, } } ENT.ButtonMap["CabinDoorR"] = { pos = Vector(451,-64,40), ang = Angle(0,180,90), width = 642, height = 2000, scale = 0.1/2, buttons = { {ID = "CabinDoorRight",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста\nCabin door", model = { 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, }}, } } ENT.ButtonMap["RearDoor"] = { pos = Vector(-465,16,42), ang = Angle(0,-90,90), width = 642, height = 2000, scale = 0.1/2, buttons = { {ID = "RearDoor",x=0,y=0,w=642,h=2000, tooltip="Передняя дверь\nFront door", model = { 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, }}, } } ENT.ButtonMap["RearDoor1"] = { pos = Vector(-465,16-32,42), ang = Angle(0,90,90), width = 642, height = 2000, scale = 0.1/2, buttons = { {ID = "RearDoor",x=0,y=0,w=642,h=2000, tooltip="Передняя дверь\nFront door"}, } } for i=0,3 do ENT.ClientProps["TrainNumberL"..i] = { model = "models/metrostroi_train/common/bort_numbers.mdl", pos = Vector(57+i*6.6-4*6.6/2,66.3,18), ang = Angle(0,180,-5), 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(61+i*6.6-4*6.6/2,-66.3,18), ang = Angle(0,0,-5), skin=0, hide = 1.5, callback = function(ent) ent.WagonNumber = false end, } end ENT.ClientProps["salon"] = { model = "models/metrostroi_train/81-720/720_salon.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide=2, } ENT.ClientProps["salon_glass"] = { model = "models/metrostroi_train/81-720/glass_red.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide=2, } ENT.ClientProps["RedLights"] = { model = "models/metrostroi_train/81-720/720_redlights.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), nohide=true, } ENT.ClientProps["HeadLights"] = { model = "models/metrostroi_train/81-720/720_headights.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), nohide=true, } ENT.ClientProps["HeadLights_full"] = { model = "models/metrostroi_train/81-720/720_headights2.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), nohide=true, } ENT.ClientProps["route"] = { model = "models/metrostroi_train/81-720/720_label.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide=2, callback = function(ent) ent.LastStation.Reloaded = false end, } ENT.ButtonMap["LastStation"] = { pos = Vector(474,-15.6,46.7), ang = Angle(0,90,90), width = 800, height = 205, scale = 0.0625, buttons = { {ID = "LastStation-",x=000,y=0,w=400,h=205, tooltip=""}, {ID = "LastStation+",x=400,y=0,w=400,h=205, tooltip=""}, } } ENT.ButtonMap["Route"] = { pos = Vector(474,37,46.7), ang = Angle(0,90,90), width = 200, height = 205, scale = 0.0625, buttons = { {ID = "RouteNumber1+",x=0 ,y=0,w=100,h=100,tooltip=""}, {ID = "RouteNumber2+",x=100,y=0,w=100,h=100,tooltip=""}, {ID = "RouteNumber1-",x=0 ,y=100,w=100,h=100,tooltip=""}, {ID = "RouteNumber2-",x=100,y=100,w=100,h=100,tooltip=""}, } } ENT.ClientProps["route1"] = { model = "models/metrostroi_train/81-720/route/route1.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/81-720/route/route2.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide=2, callback = function(ent) ent.RouteNumber.Reloaded = false end, } ENT.ClientProps["lamp_f"] = { model = "models/metrostroi_train/81-720/lamp_revers_up.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat=0.8, } ENT.ClientProps["lamp_b"] = { model = "models/metrostroi_train/81-720/lamp_revers_down.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat=0.8, } ENT.ClientProps["underwagon"] = { model = "models/metrostroi_train/81-720/721_underwagon.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat=0.8, } ENT.ClientProps["fireextinguisher"] = { model = "models/metrostroi_train/81-502/fireextinguisher.mdl", pos = Vector(-3,88,-7), ang = Angle(0,0,0), hideseat = 0.8, } ---Segments ENT.ClientProps["acceleration_minus1"] = { model = "models/metrostroi_train/81-720/segments/acceleration_minus.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), skin = 0, color = Color(255,50,50), hideseat = 0.8, } ENT.ClientProps["acceleration_minus2"] = { model = "models/metrostroi_train/81-720/segments/acceleration_minus.mdl", pos = Vector(0,1.28,0), ang = Angle(0,0,0), skin = 0, color = Color(255,50,50), hideseat = 0.8, } ENT.ClientProps["acceleration_plus1"] = { model = "models/metrostroi_train/81-720/segments/acceleration_plus.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), skin = 0, color = Color(255,50,50), hideseat = 0.8, } ENT.ClientProps["acceleration_plus2"] = { model = "models/metrostroi_train/81-720/segments/acceleration_plus.mdl", pos = Vector(0,-1.28,0), ang = Angle(0,0,0), skin = 0, color = Color(255,50,50), hideseat = 0.8, } ENT.ClientProps["speedl"] = { model = "models/metrostroi_train/81-720/720_speed_light.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), color = Color(150,200,150), hideseat = 0.8, } ENT.ClientProps["speed1"] = { model = "models/metrostroi_train/81-720/digits/digit.mdl", pos = Vector(477.45,15.28+0.05,-22.17), ang = Angle(130,0,0), color = Color(20,255,50), hideseat = 0.2, } ENT.ClientProps["speed2"] = { model = "models/metrostroi_train/81-720/digits/digit.mdl", pos = Vector(477.45,14.86-0.05,-22.17), ang = Angle(130,0,0), color = Color(20,255,50), hideseat = 0.2, } for i=1,5 do ENT.ClientProps["speeddop"..i] = { model = "models/metrostroi_train/81-720/segments/speed_red.mdl", pos = Vector(0,1.305*(i-1),0), ang = Angle(0,0,0), skin = 0, color = Color(255,55,55), hideseat = 0.8, } end for i=1,5 do ENT.ClientProps["speedfact"..i] = { model = "models/metrostroi_train/81-720/segments/speed_green.mdl", pos = Vector(0,-1.305*(i-1),0), ang = Angle(0,0,0), skin = 0, color = Color(90,255,80), hideseat = 0.8, } end for i=1,5 do ENT.ClientProps["speedrek"..i] = { model = "models/metrostroi_train/81-720/segments/speed_yellow.mdl", pos = Vector(0,1.305*(i-1),0), ang = Angle(0,0,0), skin = 0, color = Color(255,255,60), hideseat = 0.8, } end ENT.ClientProps["brake_cylinder"] = { model = "models/metrostroi_train/equipment/arrow_nm.mdl", pos = Vector(473.396637,58.499859,21.514017), ang = Angle(-43.000000,-31.000000,-269.000000), hideseat = 0.2, } ENT.ClientProps["train_line"] = { model = "models/metrostroi_train/equipment/arrow_nm.mdl", pos = Vector(476.289825,57.939251,3.990869), ang = Angle(-43.000000,-28.833702,-272.772339), hideseat = 0.2, } ENT.ClientProps["brake_line"] = { model = "models/metrostroi_train/equipment/arrow_tm.mdl", pos = Vector(476.279297,57.921833,3.991589), ang = Angle(-43.000000,-28.833702,-272.772339), hideseat = 0.2, } ENT.ClientProps["volt_lv"] = { model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", pos = Vector(477.452179,59.365273,-1.443494), ang = Angle(41.227245,-37.233719,92.130653), hideseat = 0.2, }--1,0.712 ENT.ClientProps["volt_hv"] = { model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", pos = Vector(477.370789,59.209976,-7.437835), ang = Angle(46.156513,-41.354576,94.116631), hideseat = 0.2, }--1,0.733 ENT.ClientProps["amp_i13"] = { model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", pos = Vector(477.418518,59.158699,-11.648458), ang = Angle(42.932121,-41.354576,94.116631), hideseat = 0.2, }--1,0.722 ENT.ClientProps["amp_i24"] = { model = "models/metrostroi_train/81-710/ezh3_voltages.mdl", pos = Vector(477.513031,59.213814,-15.593397), ang = Angle(45.002529,-41.354576,94.116631), hideseat = 0.2, }--1,0.726 ---Подсветка ENT.ClientProps["ticker"] = { model = "models/metrostroi_train/81-720/720_tablo.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 1.5, } ENT.ClientProps["lamps_emer"] = { model = "models/metrostroi_train/81-720/720_lamps_emer.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), color = Color(245,238,223), hide = 1.5, } ENT.ClientProps["lamps_full"] = { model = "models/metrostroi_train/81-720/720_lamps_full.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), color = Color(245,238,223), hide = 1.5, } ENT.ClientProps["cab_emer"] = { model = "models/metrostroi_train/81-720/720_lamps_cab1.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat = 1.1, color = Color(206,162,153), } ENT.ClientProps["cab_full"] = { model = "models/metrostroi_train/81-720/720_lamps_cab2.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hideseat = 1.1, color = Color(206,162,153), } ENT.ClientProps["cabine"] = { model = "models/metrostroi_train/81-720/720_cab.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 2, } ENT.ClientProps["PassSchemes"] = { model = "models/metrostroi_train/81-720/720_sarmat_l.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 1.5, callback = function(ent) ent.PassSchemesDone = false end, } ENT.ClientProps["PassSchemesR"] = { model = "models/metrostroi_train/81-720/720_sarmat_r.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), hide = 1.5, callback = function(ent) ent.PassSchemesDone = false end, } for i=1,5 do ENT.ClientProps["led_l_f"..i] = { model = "models/metrostroi_train/81-720/720_led_l_r.mdl", pos = Vector((i-1)*10.5+0.2,0,0), ang = Angle(0,0,0), skin=6, hideseat = 1.5, } ENT.ClientProps["led_l_b"..i] = { model = "models/metrostroi_train/81-720/720_led_l.mdl", pos = Vector(-(i-1)*10.5-0.2,0,0), ang = Angle(0,0,0), skin=6, hideseat = 1.5, } ENT.ClientProps["led_r_f"..i] = { model = "models/metrostroi_train/81-720/720_led_r.mdl", pos = Vector((i-1)*10.5+0.2,0,0), ang = Angle(0,0,0), skin=6, hideseat = 1.5, } ENT.ClientProps["led_r_b"..i] = { model = "models/metrostroi_train/81-720/720_led_r_r.mdl", pos = Vector(-(i-1)*10.5-0.2,0,0), ang = Angle(0,0,0), skin=6, hideseat = 1.5, } end ENT.ButtonMap["GV"] = { pos = Vector(128,63,-52-15), ang = Angle(0,180,90), width = 170, height = 150, scale = 0.1, buttons = { {ID = "GVToggle",x=0, y=0, w= 170,h = 150, tooltip="Разъединитель БРУ (ГВ)", model = { 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"} }}, } } ENT.ClientProps["gv_wrench"] = { model = "models/metrostroi_train/reversor/reversor_classic.mdl", pos = Vector(126.4,50,-60-23.5), ang = Angle(-90,0,0), hide = 0.5, } local yventpos = { -414.5+0*117, -414.5+1*117+6.2, -414.5+2*117+5, -414.5+3*117+2, -414.5+4*117+0.5, -414.5+5*117-2.3, -414.5+6*117-2.3, } for i=1,7 do ENT.ClientProps["vent"..i] = { model = "models/metrostroi_train/81-720/vent.mdl", pos = Vector(yventpos[i],0,57.2), ang = Angle(0,0,0), hideseat=0.8, } end -------------------------------------------------------------------------------- -- Add doors -------------------------------------------------------------------------------- --[[ 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 for i=0,3 do for k=0,1 do ENT.ClientProps["door"..i.."x"..k.."a"] = { model = "models/metrostroi_train/81-720/81-720_door_l.mdl", pos = GetDoorPosition(i,k,0), ang = Angle(0,90 +180*k,0), hide = 2, } ENT.ClientProps["door"..i.."x"..k.."b"] = { model = "models/metrostroi_train/81-720/81-720_door_r.mdl", pos = GetDoorPosition(i,k,1), ang = Angle(0,90 +180*k,0), hide = 2, } end end--]] ENT.ClientProps["door0x1"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos1.mdl", pos = Vector( 341.539,63.171,-11.1), ang = Angle(0,-90,0), hide = 2.0, } ENT.ClientProps["door1x1"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos2.mdl", pos = Vector( 111.38,63.171,-11.1), ang = Angle(0,-90,0), hide = 2.0, } ENT.ClientProps["door2x1"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos3.mdl", pos = Vector(-117.756,63.171,-11.1), ang = Angle(0,-90,0), hide = 2.0, } ENT.ClientProps["door3x1"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos4.mdl", pos = Vector(-348.72,63.171,-11.1), ang = Angle(0,-90,0), hide = 2.0, } ENT.ClientProps["door0x0"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos4.mdl", pos = Vector( 341.539,-63.171,-11.1), ang = Angle(0,90,0), hide = 2.0, } ENT.ClientProps["door1x0"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos3.mdl", pos = Vector( 111.38,-63.171,-11.1), ang = Angle(0,90,0), hide = 2.0, } ENT.ClientProps["door2x0"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos2.mdl", pos = Vector(-117.756,-63.171,-11.1), ang = Angle(0,90,0), hide = 2.0, } ENT.ClientProps["door3x0"] = { model = "models/metrostroi_train/81-720/81-720_doors_pos1.mdl", pos = Vector(-348.72,-63.171,-11.1), ang = Angle(0,90,0), hide = 2.0, } ENT.ClientProps["door_cab_m"] = { model = "models/metrostroi_train/81-720/720_door_cab.mdl", pos = Vector(374.9,-45.5+25.5,-12.3), ang = Angle(0,-90-1,0), hide = 2, } ENT.ClientProps["door_cab_o"] = { model = "models/metrostroi_train/81-720/720_cab_otsek.mdl", pos = Vector(374.9,26,-15), ang = Angle(0,-90+0.45,-0.15), hide = 2, } ENT.ClientProps["door_cab_l"] = { model = "models/metrostroi_train/81-720/720_door_cab_l.mdl", pos = Vector(419.4, 62.3,-10), ang = Angle(0,-90,0), hide = 2, } ENT.ClientProps["door_cab_r"] = { model = "models/metrostroi_train/81-720/720_door_cab_r.mdl", pos = Vector(419.4,-62.3,-10), ang = Angle(0,-90,0), hide = 2, } ENT.ClientProps["door_cab_t"] = { model = "models/metrostroi_train/81-720/720_door_tor.mdl", pos = Vector(-467.5,17,-10), ang = Angle(0,-91,-0), hide = 2, } ENT.ClientProps["KRO"] = { model = "models/metrostroi_train/reversor/reversor_classic.mdl", pos = Vector(463.445343,53.273838,-21.1), ang = Angle(180,90+13,180+28), 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["KRR"] = { model = "models/metrostroi_train/reversor/reversor_classic.mdl", pos = Vector(470.430176,53.971645,-17.4), ang = Angle(180,90+13,180+28), 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["controller"] = { model = "models/metrostroi_train/81-720/720_kv.mdl", pos = Vector(458.484589,25.265604,-29.164625), ang = Angle(0.000000,-90.000000,23.699429), hideseat = 0.2, } ENT.ClientProps["km013"] = { model = "models/metrostroi_train/81-720/720_km013.mdl", pos = Vector(443,-14.8,-47.9), ang = Angle(180,90,-110), hideseat = 0.2, } if not ENT.ClientSounds["br_013"] then ENT.ClientSounds["br_013"] = {} end table.insert(ENT.ClientSounds["br_013"],{"km013",function(ent,_,var) return "br_013" end,0.7,1,35,1e3,Angle(-90,0,0)}) ENT.ClientProps["PB"] = { model = "models/metrostroi_train/81-720/720_pb.mdl", pos = Vector(467.138672,39.572510,-47.119862), ang = Angle(0.000000,-90.000000,0.000000), hideseat = 0.2, } if not ENT.ClientSounds["PB"] then ENT.ClientSounds["PB"] = {} end table.insert(ENT.ClientSounds["PB"],{"PB",function(ent,var) return var > 0 and "pb_on" or "pb_off" end,1,1,30,1e3,Angle(-90,0,0)}) ENT.Lights = { -- Headlight glow [1] = { "headlight",Vector(495,0,-40),Angle(0,0,0),Color(216,161,92),farz=5144,brightness = 4, hfov=105,vfov=105, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true}, [31] = { "light",Vector(500,-35,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, [32] = { "light",Vector(500, 35,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02.vmt" }, -- Reverse [2] = { "headlight", Vector(495,0,-40), Angle(0,0,0), Color(255,0,0), fov=170 ,brightness = 0.1, farz=450,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true}, [33] = { "light",Vector(500,-50, -29), Angle(0,0,0), Color(255,50,50), brightness = 0.1, scale = 1.5, texture = "sprites/light_glow02.vmt" }, [34] = { "light",Vector(500, 50, -29), Angle(0,0,0), Color(255,50,50), brightness = 0.1, scale = 1.5, texture = "sprites/light_glow02.vmt" }, [35] = { "light",Vector(500,-50, -75), Angle(0,0,0), Color(255,50,50), brightness = 0.1, scale = 1.5, texture = "sprites/light_glow02.vmt" }, [36] = { "light",Vector(500, 50, -75), Angle(0,0,0), Color(255,50,50), brightness = 0.1, scale = 1.5, texture = "sprites/light_glow02.vmt" }, -- Apparats [3] = { "headlight", Vector(380,40,43.9), Angle(50,40,-0), Color(206,135,80), hfov=100, vfov=100,farz=200,brightness = 6,shadows=1}, -- Cabin [10] = { "dynamiclight", Vector( 440, 0, 13), Angle(0,0,0), Color(206,135,80), brightness = 0.7, distance = 550 }, -- Interior [15] = { "dynamiclight", Vector(-350, 0, 10), Angle(0,0,0), Color(238,238,197), brightness = 0.75, distance = 500, fov=180,farz = 128 }, [16] = { "dynamiclight", Vector(-60, 0, 10), Angle(0,0,0), Color(238,238,197), brightness = 0.75, distance = 500, fov=180,farz = 128 }, [17] = { "dynamiclight", Vector( 230, 0, 10), Angle(0,0,0), Color(238,238,197), brightness = 0.75, distance = 500, fov=180,farz = 128 }, } ENT.ButtonMap["Vityaz"] = { pos = Vector(479.5,-10.7,-22.25), ang = Angle(0,-90,38.2), width = 800, height = 795, scale = 0.00725, hideseat = 0.2, } function ENT:Initialize() self.BaseClass.Initialize(self) self.Vityaz = self:CreateRT("721Vityaz",1024,1024) self.ASNP = self:CreateRT("721ASNP",512,128) self.IGLA = self:CreateRT("720IGLA",512,128) self.Tickers = self:CreateRT("721Ticker",1024,64) render.PushRenderTarget(self.Tickers,0,0,1024, 64) render.Clear(0, 0, 0, 0) render.PopRenderTarget() self.ReleasedPdT = 0 self.CraneRamp = 0 self.CraneRRamp = 0 self.EmergencyValveRamp = 0 self.FrontLeak = 0 self.RearLeak = 0 self.ParkingBrake = 0 self.PreviousRingState = false self.PreviousCompressorState = false self.TISUVol = 0 self.EmergencyValveRamp = 0 self.VentRand = {} self.VentState = {} self.VentVol = {} for i=1,7 do self.VentRand[i] = math.Rand(0.5,2) self.VentState[i] = 0 self.VentVol[i] = 0 end end function ENT:UpdateWagonNumber() for i=0,3 do --self:ShowHide("TrainNumberL"..i,i0,passlight) self:SetLightPower(16,passlight>0,passlight) self:SetLightPower(17,passlight>0,passlight) --ANIMS self:Animate("brake_line", self:GetPackedRatio("BL"), 0, 0.753, 256,2) self:Animate("train_line", self:GetPackedRatio("TL"), 0, 0.753, 4096,2) self:Animate("brake_cylinder", self:GetPackedRatio("BC"), 0, 0.746, 64,12) self:Animate("volt_lv",self:GetPackedRatio("LV"),1,0.712,92,2) self:Animate("volt_hv",self:GetPackedRatio("HV"),1,0.726,92,2) self:Animate("amp_i13",self:GetPackedRatio("I13"),1,0.722,92,2) self:Animate("amp_i24",self:GetPackedRatio("I24"),1,0.726,92,2) self:Animate("controller", (self:GetPackedRatio("Controller")+3)/7, 0, 0.39, 3,false) 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) 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,1,128,1,false) self:ShowHideSmooth("gv_wrench", CurTime() < self.ResetTime and 1 or 0.1) --self:Animate("controller", (self:GetPackedRatio("Controller")+3)/6, 0.75, 0.15, 2,false) --self:SetPackedRatio("BL", self.Pneumatic.BrakeLinePressure/16.0) --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("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) self:Animate("km013", Cpos[self:GetPackedRatio("Cran")] or 0, 0, 0.7, 2,false) self:Animate("PB", self:GetPackedBool("PB") and 1 or 0,0,0.2, 8,false) self:ShowHideSmooth("lamps_emer",self:Animate("LampsEmer",passlight == 0.4 and 1 or 0,0,1,5,false)) self:ShowHideSmooth("lamps_full",self:Animate("LampsFull",passlight == 1 and 1 or 0,0,1,5,false)) local cab_lamp = self:Animate("cab_lamp",self:GetPackedBool("CabinEnabledFull") and 1 or self:GetPackedBool("CabinEnabledEmer") and 0.5 or 0,0,1,5,false) self:SetLightPower(10,cab_lamp>0,cab_lamp) self:ShowHideSmooth("cab_emer",cab_lamp) self:ShowHideSmooth("cab_full",cab_lamp) self:ShowHideSmooth("lamp_f",self:Animate("lamp_forw",self:GetPackedBool("BIForward") and 1 or 0,0,1,5,false)) self:ShowHideSmooth("lamp_b",self:Animate("lamp_back",self:GetPackedBool("BIBack") and 1 or 0,0,1,5,false)) local accel = self:GetPackedRatio("BIAccel",0) --if -0.05 < accel and accel < 0.05 then accel = 0 end local speed = self:GetNW2Int("BISpeed",0)--CurTime()%5*20 local limit = self:GetNW2Int("BISpeedLimit",0) if IsValid(self.ClientEnts["acceleration_minus1"]) and IsValid(self.ClientEnts["acceleration_minus2"]) then self.ClientEnts["acceleration_minus1"]:SetSkin(math.Clamp(-accel*14,0,10)) self.ClientEnts["acceleration_minus2"]:SetSkin(math.Clamp(-accel*14-12,0,9)) end if IsValid(self.ClientEnts["acceleration_plus1"]) and IsValid(self.ClientEnts["acceleration_plus2"]) then self.ClientEnts["acceleration_plus1"]:SetSkin(math.Clamp(accel*14,0,10)) self.ClientEnts["acceleration_plus2"]:SetSkin(math.Clamp(accel*14-12,0,9)) end self:ShowHide("speedl",speed ~= -1) self:ShowHide("speed1",speed ~= -1) self:ShowHide("speed2",speed ~= -1) if speed ~= -1 then local blink = self:GetNW2Bool("BISpeedLimitBlink") if blink and CurTime()%1 <=0.5 then limit = 98 end local nxt = self:GetNW2Int("BISpeedLimitNext",0) for i=1,5 do if IsValid(self.ClientEnts["speeddop"..i]) then self.ClientEnts["speeddop"..i]:SetSkin(math.Clamp(50-limit/2-(i-1)*10,0,10)) end if IsValid(self.ClientEnts["speedfact"..i]) then self.ClientEnts["speedfact"..i]:SetSkin(math.Clamp(speed/2-(i-1)*10,0,10)) end if IsValid(self.ClientEnts["speedrek"..i]) then self.ClientEnts["speedrek"..i]:SetSkin(math.Clamp(50-nxt/2-(i-1)*10,0,10)) end end if IsValid(self.ClientEnts["speed1"]) then self.ClientEnts["speed1"]:SetSkin(speed/10) end if IsValid(self.ClientEnts["speed2"]) then self.ClientEnts["speed2"]:SetSkin(speed%10) end else for i=1,5 do if IsValid(self.ClientEnts["speeddop"..i]) then self.ClientEnts["speeddop"..i]:SetSkin(0) end if IsValid(self.ClientEnts["speedfact"..i]) then self.ClientEnts["speedfact"..i]:SetSkin(0) end if IsValid(self.ClientEnts["speedrek"..i]) then self.ClientEnts["speedrek"..i]:SetSkin(0) end end end local HL1 = self:Animate("headlights",self:GetPackedBool("HeadlightsEnabled1") and 1 or 0,0,1,4,false) local HL2 = self:Animate("headlights_full",self:GetPackedBool("HeadlightsEnabled2") and 1 or 0,0,1,4,false) local RL = self:Animate("backlights",self:GetPackedBool("BacklightsEnabled") and 1 or 0,0,1,4,false) self:ShowHideSmooth("HeadLights",HL1) self:ShowHideSmooth("HeadLights_full",HL2) self:ShowHideSmooth("RedLights",RL) local headlights = HL1*0.4+HL2*0.6 self:SetLightPower(1,headlights>0,headlights) self:SetLightPower(31,headlights>0,headlights) self:SetLightPower(32,headlights>0,headlights) self:SetLightPower(2,RL>0,RL) self:SetLightPower(33,RL>0,RL) self:SetLightPower(34,RL>0,RL) self:SetLightPower(35,RL>0,RL) self:SetLightPower(36,RL>0,RL) if IsValid(self.GlowingLights[1]) then if self:GetPackedRatio("Headlights") < 1 and self.GlowingLights[1]:GetFarZ() ~= 4096 then self.GlowingLights[1]:SetFarZ(4096) end if self:GetPackedRatio("Headlights") == 1 and self.GlowingLights[1]:GetFarZ() ~= 5144 then self.GlowingLights[1]:SetFarZ(5144) end end local scurr = self:GetNW2Int("PassSchemesLED") local snext = self:GetNW2Int("PassSchemesLEDN") local led_back = self:GetPackedBool("PassSchemesLEDO",false) if self:GetPackedBool("PassSchemesInvert",false) then led_back = not led_back end local ledwork = scurr~=0 or snext~=0 for i=1,5 do self:ShowHide("led_l_f"..i,not led_back and ledwork) self:ShowHide("led_l_b"..i,led_back and ledwork) self:ShowHide("led_r_f"..i,not led_back and ledwork) self:ShowHide("led_r_b"..i,led_back and ledwork) end local led = scurr if snext ~= 0 and CurTime()%.5 > .25 then led = led + snext end if scurr < 0 then led = math.floor(CurTime()%5*6.2) end if led_back then if ledwork then for i=1,5 do if IsValid(self.ClientEnts["led_l_b"..i]) then self.ClientEnts["led_l_b"..i]:SetSkin(math.Clamp(led-((i-1)*6),0,6)) end if IsValid(self.ClientEnts["led_r_b"..i]) then self.ClientEnts["led_r_b"..i]:SetSkin(math.Clamp(led-((i-1)*6),0,6)) end end end else if ledwork then for i=1,5 do if IsValid(self.ClientEnts["led_l_f"..i]) then self.ClientEnts["led_l_f"..i]:SetSkin(math.Clamp(led-((i-1)*6),0,6)) end if IsValid(self.ClientEnts["led_r_f"..i]) then self.ClientEnts["led_r_f"..i]:SetSkin(math.Clamp(led-((i-1)*6),0,6)) end end end end -- --print(self:GetPackedRatio("async2vol"), self:GetPackedRatio("async2")) 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.9,1.1)) else self:PlayOnce(sid.."c","",1,math.Rand(0.9,1.1)) 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.9+self.DoorLoopStates[id]*0.1) 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/15 end end --[[ if self.Anims[n_r] then dro = math.abs(state-self.Anims[n_r].oldival) if dro <= 0 and self.Anims[n_r].oldspeed then dro = self.Anims[n_r].oldspeed/15 end end--]] self:Animate(n_l,state,0.02,1, dlo*15,false)--0.8 + (-0.2+0.4*math.random()),0) --self:Animate(n_r,state,0,1, dro*15,false)--0.8 + (-0.2+0.4*math.random()),0) end end local door_m = self:GetPackedBool("PassengerDoor") local door_l = self:GetPackedBool("CabinDoorLeft") local door_r = self:GetPackedBool("CabinDoorRight") local door_o = self:GetPackedBool("OtsekDoor") or self.CurrentCamera == 7 local door_t = self:GetPackedBool("RearDoor") local door_cab_m = self:Animate("door_cab_m",door_m and 1 or -0.05,0,0.235, 8, 0.05) local door_cab_l = self:Animate("door_cab_l",door_l and 1 or -0.1,1,0.75, 2, 0.5) local door_cab_r = self:Animate("door_cab_r",door_r and 1 or -0.1,0,0.25, 2, 0.5) local door_cab_o = self:Animate("door_cab_o",door_o and 1 or -0.05,0,0.3, 8, 0.05) local door_cab_t = self:Animate("door_cab_t",door_t and 1 or -0.05,0,0.25, 8, 0.05) local door1s = (door_cab_m > 0 or door_m) if self.Door1 ~= door1s then self.Door1 = door1s self:PlayOnce("PassengerDoor","bass",door1s and 1 or 0) end --local door_cab_l = self.Anims["door_cab_l"].val or 0 local door2s = door_cab_l > 0.75 and door_cab_l < 1 and 2 or (door_cab_l == 0.75 and 3 or door_l and 1 or 0) if self.Door2 ~= door2s or self.DoorCL ~= door_l then self.DoorCL = door_l self.Door2 = door2s self:PlayOnce("CabinDoorLeft","bass",door2s) end local door3s = door_cab_r > 0 and door_cab_r < 0.25 and 2 or (door_cab_r == 0.25 and 3 or door_r and 1 or 0) if self.Door3 ~= door3s or self.DoorCR ~= door_r then self.DoorCR = door_r self.Door3 = door3s self:PlayOnce("CabinDoorRight","bass",door3s) end local door4s = (door_cab_t > 0 or door_t) if self.Door4 ~= door4s then self.Door4 = door4s self:PlayOnce("RearDoor","bass",door4s and 1 or 0) end local door5s = (door_cab_o > 0 or door_o) if self.Door5 ~= door5s then self.Door5 = door5s self:PlayOnce("OtsekDoor","bass",door5s and 1 or 0) end self:HidePanel("PVZ",not self.Door5) 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) 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) local ramp = self:GetPackedRatio("Crane_dPdT",0) if ramp > 0 then self.CraneRamp = self.CraneRamp + ((0.2*ramp)-self.CraneRamp)*dT else self.CraneRamp = self.CraneRamp + ((0.9*ramp)-self.CraneRamp)*dT end self.CraneRRamp = math.Clamp(self.CraneRRamp + 1.0*((1*ramp)-self.CraneRRamp)*dT,0,1) self:SetSoundState("crane013_release",self.CraneRRamp^1.5,1.0) self:SetSoundState("crane013_brake",math.Clamp(-self.CraneRamp*1.5,0,1)^1.3,1.0) self:SetSoundState("crane013_brake2",math.Clamp(-self.CraneRamp*1.5-0.95,0,1.5)^2,1.0) local emergencyValve = self:GetPackedRatio("EmergencyValve_dPdT", 0)^0.4*1.2 self.EmergencyValveRamp = math.Clamp(self.EmergencyValveRamp + (emergencyValve-self.EmergencyValveRamp)*dT*16,0,1) self:SetSoundState("emer_brake",self.EmergencyValveRamp,1.0) local state = self:GetPackedBool("RingEnabled") self:SetSoundState("ring",state and 0.40 or 0,1) local state = self:GetPackedBool("CompressorWork") self:SetSoundState("compressor",state and 1 or 0,1) local state = self:GetPackedBool("WorkBeep") self:SetSoundState("work_beep",state and 1 or 0,1) local speed = self:GetPackedRatio("Speed", 0) local ventSpeedAdd = math.Clamp(speed/30,0,1) local v1state = self:GetPackedBool("Vent1Work") local v2state = self:GetPackedBool("Vent2Work") for i=1,7 do local rand = self.VentRand[i] local vol = self.VentVol[i] local even = i%2 == 0 local work = (even and v1state or not even and v2state) local target = math.min(1,(work and 1 or 0)+ventSpeedAdd*rand*0.4)*2 if self.VentVol[i] < target then self.VentVol[i] = math.min(target,vol + dT/1.5*rand) elseif self.VentVol[i] > target then self.VentVol[i] = math.max(0,vol - dT/8*rand*(vol*0.3)) end self.VentState[i] = (self.VentState[i] + 10*((self.VentVol[i]/2)^3)*dT)%1 local vol1 = math.max(0,self.VentVol[i]-1) local vol2 = math.max(0,(self.VentVol[i-1] or self.VentVol[i+1])-1) self:SetSoundState("vent"..i,vol1*(0.7+vol2*0.3),0.5+0.5*vol1+math.Rand(-0.01,0.01)) if IsValid(self.ClientEnts["vent"..i]) then self.ClientEnts["vent"..i]:SetPoseParameter("position",self.VentState[i]) end end --Vector(409,25.6,-26.3) local speed = self:GetPackedRatio("Speed", 0) --local rol10 = math.Clamp(speed/5,0,1)*(1-math.Clamp((speed-50)/8,0,1)) --local rol70 = math.Clamp((speed-50)/8,0,1) local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.5,0,1)) local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff) local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-20)/12,0,1)) local rol10p = Lerp((speed-12)/12,0.9,1.1) local rol30 = math.Clamp((speed-20)/12,0,1)*(1-math.Clamp((speed-40)/12,0,1)) local rol30p = Lerp((speed-15)/30,0.8,1.2) local rol55 = math.Clamp((speed-40)/12,0,1)*(1-math.Clamp((speed-65)/15,0,1)) local rol55p = Lerp(0.8+(speed-43)/24,0.8,1.2) local rol75 = math.Clamp((speed-65)/15,0,1) local rol75p = Lerp(0.8+(speed-67)/16,0.8,1.2) self:SetSoundState("rolling_10",rollingi*rol10,rol10p) self:SetSoundState("rolling_30",rollingi*rol30,rol30p) self:SetSoundState("rolling_55",rollingi*rol55,rol55p) self:SetSoundState("rolling_75",rollingi*rol75,rol75p) 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 --rolling_10 --rolling_45 --rolling_60 --rolling_70 local state = self:GetPackedRatio("RNState") self.TISUVol = math.Clamp(self.TISUVol+(state-self.TISUVol)*dT*8,0,1) self:SetSoundState("tisu", self.TISUVol, 1) self:SetSoundState("tisu2", self.TISUVol, 1) --self:SetSoundState("tisu3", 0 or self.TISUVol, 1) self:SetSoundState("bbe", self:GetPackedBool("BBEWork") and 1 or 0, 1) local work = self:GetPackedBool("AnnPlay") 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 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.Vityaz) self:DrawOnPanel("Vityaz",function(...) surface.SetMaterial(self.RTMaterial) surface.SetDrawColor(255,255,255) surface.DrawTexturedRectRotated(512-10,512-80,1024-20,1024-160,0) 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,512,128,0) end) self.RTMaterial:SetTexture("$basetexture", self.Tickers) self:DrawOnPanel("Tickers",function(...) surface.SetMaterial(self.RTMaterial) surface.SetDrawColor(255,255,255) surface.DrawTexturedRectRotated(512,32+8,1024+16,64+16,0) end) end function ENT:OnButtonPressed(button) 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 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 == "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 Metrostroi.GenerateClientProps()