1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
Files
MetrostroiAddon/lua/entities/gmod_subway_81-718/cl_init.lua
g_brzhezinskiy 1d05caf866 init
2021-01-02 12:51:45 +03:00

2602 lines
127 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--------------------------------------------------------------------------------
-- 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.ClientPropsInitialized = false
ENT.ClientProps = {}
ENT.ButtonMap = {}
ENT.AutoAnims = {}
ENT.AutoAnimNames = {}
ENT.ClientSounds = {}
ENT.ClientProps["schemes"] = {
model = "models/metrostroi_train/81-717/labels/schemes.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hide=2,
callback = function(ent)
ent.PassSchemesDone = false
end,
}
ENT.ClientProps["BUP"] = {
model = "models/metrostroi_train/81-718/81-718_dinas11.mdl",
pos = Vector(0,0,0),
ang = Angle(0.000000,0.000000,0.000000),
hide=2,
}
ENT.ClientProps["Cabine"] = {
model = "models/metrostroi_train/81-718/81-718_cabine.mdl",
pos = Vector(0,0,0),
ang = Angle(0.000000,0.000000,0.000000),
hide=3.6,
}
ENT.ClientProps["RedLights"] = {
model = "models/metrostroi_train/81-718/red_light.mdl",
pos = Vector(0,0,0),
ang = Angle(0.000000,0.000000,0.000000),
hide=2,
}
ENT.ClientProps["destination"] = {
model = "models/metrostroi_train/81-718/labels/destination.mdl",
pos = Vector(0,0,-1),
ang = Angle(0,0,0),
hide=2,
callback = function(ent)
ent.LastStation.Reloaded = false
end,
}
ENT.ButtonMap["LastStation"] = {
pos = Vector(462.5,-27.4,-2.7),
ang = Angle(0,90,90),
width = 876,
height = 131,
scale = 0.0625,
buttons = {
{ID = "LastStation-",x=000,y=0,w=438,h=131, tooltip=""},
{ID = "LastStation+",x=438,y=0,w=438,h=131, tooltip=""},
}
}
ENT.ClientProps["salon"] = {
model = "models/metrostroi_train/81-718/interior.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hide=2,
}
ENT.ClientProps["route"] = {
model = "models/metrostroi_train/81-718/marshrut_number_body.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hide=2,
}
ENT.ClientProps["route1"] = {
model = "models/metrostroi_train/81-718/lamps/segment_spb.mdl",
pos = Vector(463.15,35.8,38.2),
ang = Angle(90,16,0),
color = Color(241,10,70),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hide=2,
}
ENT.ClientProps["route2"] = {
model = "models/metrostroi_train/81-718/lamps/segment_spb.mdl",
pos = Vector(461.85,40.3,38.2),
ang = Angle(90,16,0),
color = Color(241,10,70),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hide=2,
}
ENT.ButtonMap["Route"] = {
pos = Vector(457.1,41.6,47.2),
ang = Angle(0,270+16,90),
width = 153,
height = 180,
scale = 0.0625,
buttons = {
{ID = "RouteNumber1+",x=76.5*0,y=0,w=76.5,h=90,tooltip=""},
{ID = "RouteNumber2+",x=76.5*1,y=0,w=76.5,h=90,tooltip=""},
{ID = "RouteNumber1-",x=76.5*0,y=90,w=76.5,h=90,tooltip=""},
{ID = "RouteNumber2-",x=76.5*1,y=90,w=76.5,h=90,tooltip=""},
}
}
ENT.ClientProps["route1_s"] = {
model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",
pos = Vector(458.2,39.7,35.1),
ang = Angle(90,180+16,0),
color = Color(175,250,20),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hideseat=0.2,
}
ENT.ClientProps["route2_s"] = {
model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl",
pos = Vector(458.4,39,35.1),
ang = Angle(90,180+16,0),
color = Color(175,250,20),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hideseat=0.2,
}
ENT.ClientProps["route1_r"] = {
model = "models/metrostroi_train/81-718/lamps/segment_spb.mdl",
pos = Vector(463.15+1-0.2,35.8+2,38.2-3),
ang = Angle(90,180+16,0),
color = Color(120.50,5.00,35.00),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hideseat=0.8,
}
ENT.ClientProps["route2_r"] = {
model = "models/metrostroi_train/81-718/lamps/segment_spb.mdl",
pos = Vector(461.85+1-0.2,40.3+2,38.2-3),
ang = Angle(90,180+16,0),
color = Color(120.50,5.00,35.00),
callback = function(ent)
ent.RouteNumber.Reloaded = false
end,
hideseat=0.8,
}
ENT.ClientProps["seats"] = {
model = "models/metrostroi_train/81-717/couch_old.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hide=2,
}
ENT.ClientProps["Headlights_1"] = {
model = "models/metrostroi_train/81-718/headlights.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
nohide=true,
}
ENT.ClientProps["Headlights_2"] = {
model = "models/metrostroi_train/81-718/headlights2.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
nohide=true,
}
ENT.ClientProps["couch_cap"] = {
model = "models/metrostroi_train/81-717/couch_cap_l.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hideseat=0.8,
}
ENT.ClientProps["door_otsek1"] = {
model = "models/metrostroi_train/81-717/door_otsek1.mdl",
pos = Vector(375.35,-15.324,5.167),
ang = Angle(0,-90,0),
hideseat=1.7,
}
ENT.ClientProps["door_otsek2"] = {
model = "models/metrostroi_train/81-717/door_otsek2.mdl",
pos = Vector(375.35,-59.65,5.167),
ang = Angle(0,-90,0),
hideseat=1.7,
}
ENT.ClientProps["cap_l"] = {
model = "models/metrostroi_train/81-717/couch_cap_r.mdl",
pos = Vector(0,0,0),
ang = Angle(0,0,0),
hideseat=0.8,
}
ENT.ClientProps["train_line"] = {
model = "models/metrostroi_train/Equipment/arrow_nm.mdl",
pos = Vector(460.909851,-27.286127,2.136254),
ang = Angle(-90.000000,-18.529299,0.000000),
hideseat = 0.2,
}
ENT.ClientProps["brake_line"] = {
model = "models/metrostroi_train/Equipment/arrow_tm.mdl",
pos = Vector(460.897827,-27.245167,2.136254),
ang = Angle(-90.000000,-18.529299,0.000000),
hideseat = 0.2,
}
ENT.ClientProps["brake_cylinder"] = {
model = "models/metrostroi_train/Equipment/arrow_nm.mdl",
pos = Vector(459.103638,-33.373646,2.136254),
ang = Angle(-90.000000,-18.529299,0.000000),
hideseat = 0.2,
}
ENT.ClientProps["kru_wrench"] = {
model = "models/metrostroi_train/reversor/reversor_classic.mdl",
pos = Vector(451+3.1,24+2,-1-8.5),
ang = Angle(180,90+6,180+11),
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["kr_wrench"] = {
model = "models/metrostroi_train/reversor/reversor_classic.mdl",
pos = Vector(444+2.5,24+2,-2.7-8+0.1),
ang = Angle(180,90+6,180+11),
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-718/718_kv.mdl",
pos = Vector(443.8+1.5,18,-2-8),
ang = Angle(0,-90,11),
--bscale = Vector(0.4*4,0.6*4,1),
color = Color(150,150,150),
hideseat=0.2,
}
--var="ZS",vmin=0,vmax=1,min=0,max=1,speed=16,damping=false,
-- Main panel
ENT.ButtonMap["Main"] = {
pos = Vector(454,10.5,-9.9), --446 -- 14 -- -0,5
ang = Angle(0,-90,11.3),
width = 472,
height = 190,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "SA5Toggle", x=30, y=65, radius=24, tooltip="Закрытие дверей", model = {
model = "models/metrostroi_train/switches/vudwhite.mdl", z=-20,
var="SA5",speed=6,
sndvol = 1, snd = function(val) return val and "vu224_on" or "vu224_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SB3Set", x=81, y=32, radius=20, tooltip="КРЗД", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z=-9, vmin=1, vmax=0,
var="SB3",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ ID = "SA7Toggle",x=85, y=90, radius=20, tooltip="Выбор стороны", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA7",speed=6,ang=90-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
disableoff = "SB1Set",disableon = "SB2Set",
states={"Train.Buttons.Left","Train.Buttons.Right"}
}},
{ID = "SB1Set",x=31, y=148, radius=20, tooltip="Двери левые", model = {
model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-14,
var="SB1",speed=16,
lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL3",speed=6,z=2.2,
lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB2Set",x=82, y=148, radius=20, tooltip="Двери правые", model = {
model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-14,
var="SB2",speed=16,
lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL4",speed=6,z=2.2,
lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "!SB1K",x=31, y=148, radius=0, model = {
model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0.83,vmax=1,
var="SA7",speed=1,
sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "!SB2K",x=82, y=148, radius=0, model = {
model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0,vmax=0.17,
var="SA7",speed=1,
sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SA8Toggle",x=136, y=32, radius=20, tooltip="Выключатель аварийного хода", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA8",speed=16,ang=180-90,
plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=0,y=28,z=15,var="SA8Pl", ID="SA8Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SB4Set",x=136, y=91, radius=20, tooltip="Проверка", model = {
model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12,
var="SB4",speed=16,
lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL5",speed=6,z=2.2,
lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
tooltipFunc = function(ent) return ent:GetPackedBool("HL5") and Metrostroi.GetPhrase("Train.Buttons.HL5") end
}},
{ID = "SB5Set",x=136, y=148, radius=20, tooltip="Передача управления(звонок)", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",vmin=1,vmax=0,z=-9,
var="SB5",speed=16,
--lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="RZP",speed=9,z=2.2,
--lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
--sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SA9Toggle",x=186, y=32, radius=20, tooltip="Откл. АВУ", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA9",speed=16,ang=180-90,
plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=0,y=28,z=15,var="SA9Pl", ID="SA9Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA13Toggle",x=291, y=32, radius=20, tooltip="АРС", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA13",speed=16,ang=180-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA14Toggle",x=316, y=32, radius=20, tooltip="АРС-Р", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA14",speed=16,ang=180-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA15Toggle",x=341, y=32, radius=20, tooltip="АЛС", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA15",speed=16,ang=180-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA2Toggle",x=236, y=32, radius=20, tooltip="Выключатель аварийный дверей", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA2",speed=16,ang=180-90,
plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=0,y=28,z=15,var="SA2Pl", ID="SA2Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SB6KToggle",x=186, y=88, radius=20, tooltip="Крышка хода аварийного", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=3,y=23,z=15,var="SB6Pl", ID="SB6Pl",},
var="SB6K",speed=5,ang=90-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
disable = "SB6Set",
noTooltip = true,
}},
{ID = "!SB6K",x=233, y=95, radius=0, model = {
model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0.17,vmax=0,
var="SB6K",speed=1,
sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB6Set",x=233, y=95, radius=20, tooltip="Ход аварийный", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",vmin=1,vmax=0,z=-11,
var="SB6",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB7KToggle",x=186, y=146, radius=20, tooltip="Крышка хода маневрового", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SB7K",speed=5,ang=90-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
disable = "SB7Set",
noTooltip = true,
}},
{ID = "!SB7K",x=233, y=152, radius=nil, model = {
model = "models/metrostroi_train/81-703/cabin_doors_cover.mdl",ang = Angle(0,180,180),z=-2,y=-30,vmin=0.17,vmax=0,
var="SB7K",speed=1,
sndvol = 0.10, snd = function(val) return val and "kr_left" or "kr_right" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB7Set",x=233, y=152, radius=20, tooltip="Ход маневровый", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-11,
var="SB7",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB8Set",x=291, y=95, radius=20, tooltip="КБ1", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-9,
var="SB8",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB10Set",x=291, y=152, radius=20, tooltip="Программа 1", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-10,
var="SB10",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB9Set",x=341, y=95, radius=20, tooltip="КБ2", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-9,
var="SB9",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB11Set",x=341, y=152, radius=20, tooltip="Программа 2", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-10,
var="SB11",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SA16Toggle",x=397.5, y=30, radius=20, tooltip="Компрессор", model = {
model = "models/metrostroi_train/81-508/em508_switcher.mdl",z=-15,
var="SA16",speed=16,ang=180-90,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SB12Set",x=398, y=95, radius=20, tooltip="Включение БВА", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-9,
var="SB12",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB13Set",x=398, y=148, radius=20, tooltip="Отключение БВА", model = {
model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12,
lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL6",getfunc = function(ent) return ent:GetPackedRatio("HL6") end,speed=6,z=2.2,
lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
var="SB13",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
tooltipFunc = function(ent) return ent:GetPackedBool("HL6") and Metrostroi.GetPhrase("Train.Buttons.HL6") end
}},
{ID = "SB14Set",x=452, y=34, radius=20, tooltip="Резервный мотор-компрессор", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-9,
var="SB14",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB15Set",x=452, y=95, radius=20, tooltip="Включение ББЭ", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-9,
var="SB15",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SB16Set",x=452, y=148, radius=20, tooltip="Отключение ББЭ", model = {
model = "models/metrostroi_train/81-502/buttons/button_717_1.mdl",vmin=1,vmax=0,z=-12,
lamp = {model = "models/metrostroi_train/81-717/buttons/lamp_button_2.mdl",anim=true,var="HL7",speed=6,z=2.2,
lcolor=Color(255,130,40),lz = 16,lfov=160,lfar=16,lnear=8,lshadows=0},
sprite = {bright=0.2,size=.5,scale=0.1,z=6,color=Color(255,130,40)},
var="SB16",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
tooltipFunc = function(ent) return ent:GetPackedBool("HL7") and Metrostroi.GetPhrase("Train.Buttons.HL7") end
}},
}
}
ENT.ButtonMap["Left"] = {
pos = Vector(456.9,10,5-7.5), --446 -- 14 -- -0,5
ang = Angle(0,-90,90-14.971),
width = 85,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "!BatteryVoltage", x=0,y=0,w=85,h=110,tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryVoltage"),ent:GetPackedRatio("BatteryVoltage")*150) end},
}
}
ENT.ButtonMap["Right"] = {
pos = Vector(456.9,-13.1,5-7.5), --446 -- 14 -- -0,5
ang = Angle(0,-90,90-14.971),
width = 110,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "SA1/1Toggle",x=55-38, y=93, radius=10, tooltip="Фары 1 группа", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-3.5,
var="SA1/1",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA2/1Toggle",x=55-19, y=93, radius=10, tooltip="Фары 2 группа", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-3.5,
var="SA2/1",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SA5/1Toggle",x=55+19, y=93, radius=10, tooltip="Яркость табло", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-3.5,
var="SA5/1",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
states={"Train.Buttons.LHalf","Train.Buttons.LFull"}
}},
{ID = "SA4/1Toggle",x=55+38, y=93, radius=10, tooltip="Подсветка приборов", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-3.5,
var="SA4/1",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
}
}
ENT.ButtonMap["HelperPanel"] = {
pos = Vector(446.8,62.6,17.75),
ang = Angle(0,0,90),
width = 76,
height = 305,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "SA6Toggle",x=0,y=0,w=76,h=86,tooltip="",model = {
model = "models/metrostroi_train/switches/vudbrown.mdl",z=25,
var="SA6",speed=6,
sndvol = 1,snd = function(val) return val and "vu224_on" or "vu224_off" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID = "SA24Set",x=0,y=86,w=76,h=86,tooltip="",model = {
model = "models/metrostroi_train/switches/vudbrown.mdl",z=25,
var="SA24",speed=6,
sndvol = 1,snd = function(val) return val and "vu224_on" or "vu224_off" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID = "SB20Set",x=38,y=230,radius=20,tooltip="",model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3,
var="SB20",speed=16,vmin=1,vmax=0,
sndvol = 0.07,snd = function(val) return val and "button3_on" or "button2_off" end,
sndmin = 60,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID = "SB21Set",x=38,y=285,radius=20,tooltip="",model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl",z = -3,
var="SB21",speed=16,vmin=1,vmax=0,
sndvol = 0.07,snd = function(val) return val and "button1_on" or "button3_off" end,
sndmin = 60,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
}
}
ENT.ButtonMap["CabVent"] = {
pos = Vector(456.8,45.8,-13),
ang = Angle(0,-90,0),
width = 70,
height = 62,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID="PVK-",x=0, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,},
{ID = "!PVK",x=35,y=31,model = {
model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",ang = 180,z=15,
getfunc = function(ent) return ent:GetPackedRatio("PVK") end, var="PVK",speed=4,min=1,max=0.75,
sndvol = 1,snd = function(val,val2) return "pvk"..val2 end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID="PVK+",x=35, y=0, w=35,h=62, tooltip="",states={"Train.Buttons.Off","Train.Buttons.VentHalf","Train.Buttons.VentFull"},varTooltip = function(ent) return ent:GetPackedRatio("PVK") end,},
}
}
local function placeLamps(name)
if not ENT.ButtonMap[name] or not ENT.ButtonMap[name].buttons then return end
local nAdd = name:sub(name:find("_")+1,-1)
for i,button in pairs(ENT.ButtonMap[name].buttons) do
button.ID = nAdd..button.ID
button.model = {
--model = "models/metrostroi_train/81/lamp.mdl", z = -25,
lamp = {
speed=16,
model = "models/metrostroi_train/81-502/lamps/svetodiod_small_502.mdl",
bscale = Vector(0.7,0.7,0.7),
z=-5,
var=button.var,
color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255),
},
sprite = {bright=0.5,size=0.25,scale=0.01,color=button.col=="y" and Color(255,168,0) or button.col=="r" and Color(255,56,30) or button.col=="g" and Color(175,250,20) or Color(255,255,255),z=-3,}
}
button.var=nil
end
end
ENT.ButtonMap["BUP_MVSU"] = {
pos = Vector(456.6,-27,-9.7),
ang = Angle(0,-90,10.3),
width = 25,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "KDV", x=8.5+6.15*0,y=0+4.44*4, radius=3,col="g",var="BIKDV", tooltip="ДВ",},
{ID = "BDV", x=8.5+6.15*0,y=0+4.44*5, radius=3,col="r",var="BINKDV", tooltip="ДВ",},
{ID = "PB", x=8.5+6.15*0,y=0+4.44*7, radius=3,col="g",var="BIPB", tooltip="ПБ",},
{ID = "ARS", x=8.5+6.15*0,y=0+4.44*8, radius=3,col="r",var="BIARS", tooltip="АРС",},
{ID = "AVT", x=8.5+6.15*0,y=0+4.44*10, radius=3,col="r",var="BIAVT", tooltip="АВТ",},
{ID = "KVV", x=8.5+6.15*1,y=1+4.26*1, radius=3,col="g",var="BIV", tooltip="В",},
{ID = "KVN", x=8.5+6.15*1,y=1+4.26*2.1, radius=3,col="g",var="BIN", tooltip="Н",},
{ID = "KVX3", x=8.5+6.15*1,y=0+4.46*4, radius=3,col="g",var="BIX3", tooltip="Х3",},
{ID = "KVX2", x=8.5+6.15*1,y=0+4.46*5, radius=3,col="g",var="BIX2", tooltip="Х2",},
{ID = "KVX1", x=8.5+6.15*1,y=0+4.46*6, radius=3,col="g",var="BIX1", tooltip="Х1",},
{ID = "KV0", x=8.5+6.15*1,y=0+4.46*7, radius=3,col="g",var="BI0", tooltip="0",},
{ID = "KVT1", x=8.5+6.15*1,y=0+4.46*8, radius=3,col="g",var="BIT1", tooltip="Т1",},
{ID = "KVT2", x=8.5+6.15*1,y=0+4.46*9, radius=3,col="g",var="BIT2", tooltip="Т2",},
{ID = "KVT3", x=8.5+6.15*1,y=0+4.46*10, radius=3,col="g",var="BIT3", tooltip="Т3",},
{ID = "PVU", x=8.5+6.15*1,y=1+4.26*12, radius=3,col="r",var="BIPVU", tooltip="ПВУ",},
{ID = "RPB", x=8.5+6.15*1,y=1+4.26*13.1,radius=3,col="r",var="BIRPB", tooltip="РПБ",},
{ID = "ARSX", x=8.5+6.15*2,y=1+4.26*1, radius=3,col="g",var="BIX", tooltip="X",},
{ID = "ARST", x=8.5+6.15*2,y=1+4.26*2.1, radius=3,col="r",var="BIT", tooltip="T",},
{ID = "ARSX3",x=8.5+6.15*2,y=0+4.46*4, radius=3,col="g",var="BIBX3", tooltip="Х3",},
{ID = "ARSX2",x=8.5+6.15*2,y=0+4.46*5, radius=3,col="g",var="BIBX2", tooltip="Х2",},
{ID = "ARSX1",x=8.5+6.15*2,y=0+4.46*6, radius=3,col="g",var="BIBX1", tooltip="Х1",},
{ID = "ARS0", x=8.5+6.15*2,y=0+4.46*7, radius=3,col="g",var="BIB0", tooltip="0",},
{ID = "ARST1",x=8.5+6.15*2,y=0+4.46*8, radius=3,col="g",var="BIBT1", tooltip="Т1",},
{ID = "ARST2",x=8.5+6.15*2,y=0+4.46*9, radius=3,col="g",var="BIBT2", tooltip="Т2",},
{ID = "ARST3",x=8.5+6.15*2,y=0+4.46*10, radius=3,col="g",var="BIBT3", tooltip="Т3",},
{ID = "ROT", x=8.5+6.15*2,y=1+4.26*12, radius=3,col="r",var="BIROT", tooltip="РОТ",},
{ID = "SOT", x=8.5+6.15*2,y=1+4.26*13.1,radius=3,col="r",var="BISOT", tooltip="СОТ",},
}
}
ENT.ButtonMap["BUP_MLUP"] = {
pos = Vector(456.6,-27-1.8,-9.7),
ang = Angle(0,-90,10.3),
width = 10,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "VP", x=5+8*0,y=-1+4.8*3, radius=3,col="g",var="BV", tooltip="ВП",},
{ID = "NZ", x=5+8*0,y=-1+4.8*4, radius=3,col="g",var="BN", tooltip="НЗ",},
{ID = "BUP", x=5+8*0,y=-1+4.8*5, radius=3,col="r",var="BBBUP", tooltip="БЛ БУП",},
{ID = "V0", x=5+8*0,y=-2.5+4.8*7-1, radius=3,col="r",var="BV0", tooltip="V=0",},
{ID = "KU", x=5+8*0,y=-2.5+4.8*8-1, radius=3,col="r",var="BEKV", tooltip="КУ",},
{ID = "BAV", x=5+8*0,y=-2.5+4.8*9-1, radius=3,col="r",var="BEBAV", tooltip="БАВ",},
{ID = "KR", x=5+8*0,y=-2.5+4.8*10-1,radius=3,col="r",var="BEKR", tooltip="КР",},
{ID = "ARS", x=5+8*0,y=-2.5+4.8*11-1,radius=3,col="r",var="BEARS", tooltip="АРС",},
}
}
ENT.ButtonMap["BUP_MUVS1"] = {
pos = Vector(456.6,-27-2.75,-9.7),
ang = Angle(0,-90,10.3),
width = 10,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "VP", x=5+8*0,y=-0.7+4.7*3, radius=3,col="g",var="BOV", tooltip="ВП",},
{ID = "NZ", x=5+8*0,y=-0.7+4.7*4, radius=3,col="g",var="BON", tooltip="НЗ",},
{ID = "X", x=5+8*0,y= 0.9+4.7*5,radius=3,col="g",var="BOX", tooltip="Х",},
{ID = "T", x=5+8*0,y= 0.9+4.7*6,radius=3,col="r",var="BOT", tooltip="Т",},
{ID = "U1", x=5+8*0,y= 0.9+4.7*7,radius=3,col="g",var="BOU1", tooltip="Уставка 1",},
{ID = "U2", x=5+8*0,y= 0.9+4.7*8,radius=3,col="g",var="BOU2", tooltip="Уставка 2",},
{ID = "BAV", x=5+8*0,y= 2.2+4.7*9, radius=3,col="g",var="BOBBAV",tooltip="БЛ БАВ",},
{ID = "BUP", x=5+8*0,y= 2.2+4.7*10,radius=3,col="g",var="BOBBUP",tooltip="БЛ БУВ",},
}
}
ENT.ButtonMap["BUP_MUVS2"] = {
pos = Vector(456.6,-27-4.25,-9.7),
ang = Angle(0,-90,10.3),
width = 10,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "0", x=5+8*0,y=0.8+4.35*5.6,radius=3,col="g",var="BO0", tooltip="Выбег",},
{ID = "ZPT", x=5+8*0,y=0.8+4.35*7.8,radius=3,col="r",var="BOZPT", tooltip="ЗПТ",},
}
}
ENT.ButtonMap["BUP_MS"] = {
pos = Vector(456.6,-27-5.15,-9.7),
ang = Angle(0,-90,10.3),
width = 10,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "MS", x=5+8*0,y=1.3+4.35*6,radius=3,col="g",var="BMS", tooltip="Норма",},
}
}
ENT.ButtonMap["BUP_MP"] = {
pos = Vector(456.6,-27-6.68,-9.7),
ang = Angle(0,-90,10.3),
width = 10,
height = 70,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "MP", x=5+8*0,y=2.7+4.35*9,radius=3,col="g",var="BMP", tooltip="Норма",},
}
}
---[[
ENT.ButtonMap["BUV_MPS"] = {
pos = Vector(378.5,-32,-28+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "PROV", x=5+8*0,y=15+5*2, radius=3,col="g",var="VIPROV", tooltip="Проверка",},
{ID = "AVR", x=5+8*0,y=15+5*3, radius=3,col="r",var="VIAVR", tooltip="Отключение режимов",},
{ID = "TARS", x=5+8*0,y=15+5*9, radius=3,col="g",var="VITARS", tooltip="Тормоз БКБД",},
{ID = "X" , x=5+8*0,y=15+5*10, radius=3,col="g",var="VIX", tooltip="Код режима \"Ход\"",},
{ID = "NZ", x=5+8*1,y=15+5*0, radius=3,col="g",var="VINZ", tooltip="Назад",},
{ID = "NZR", x=5+8*1,y=15+5*1, radius=3,col="g",var="VINR", tooltip="Резервный назад",},
{ID = "PROV0",x=5+8*1,y=15+5*2, radius=3,col="g",var="VIPROV0",tooltip="Проверка работы",},
{ID = "SK", x=5+8*1,y=15+5*3, radius=3,col="g",var="", tooltip="Скорость",},
{ID = "T", x=5+8*1,y=15+5*9, radius=3,col="g",var="VIT", tooltip="Код режима \"Тормоз\"",},
{ID = "XR", x=5+8*1,y=15+5*10, radius=3,col="g",var="VIXP", tooltip="Резервный ход 1",},
{ID = "U1", x=5+8*1,y=15+5*11, radius=3,col="g",var="VIU1", tooltip="Уставка 1",},
{ID = "U2", x=5+8*1,y=15+5*12, radius=3,col="g",var="VIU2", tooltip="Уставка 2",},
{ID = "VP", x=5+8*2,y=15+5*0, radius=3,col="g",var="VIVP", tooltip="Вперёд",},
{ID = "VPR", x=5+8*2,y=15+5*1, radius=3,col="g",var="VIVR", tooltip="Резервный вперед",},
{ID = "VZ", x=5+8*2,y=15+5*2.5,radius=3,col="g",var="VIVZ", tooltip="Возврат защиты",},
{ID = "XM", x=5+8*2,y=15+5*10, radius=3,col="g",var="VIM", tooltip="Маневровый ход",},
{ID = "U1R", x=5+8*2,y=15+5*11, radius=3,col="g",var="VIU1R", tooltip="Резервный ход 2",},
}
}
ENT.ButtonMap["BUV_MVD"] = {
pos = Vector(378.5,-32-1.8,-28+43.5),
ang = Angle(0,-90,90),
width = 20,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "OTK", x=2+8*1,y=15+5*4.5,radius=3,col="r",var="VOTK", tooltip="Отказ режимов",},
{ID = "RP", x=2+8*1,y=15+5*6.9,radius=3,col="r",var="VRP", tooltip="Сработка РП",},
}
}
ENT.ButtonMap["BUV_MALP1"] = {
pos = Vector(378.5,-32-3,-28+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "MZK", x=11+8*0,y=15+5*2, radius=3,col="r",var="VMZK", tooltip="Мгновенный запрет ключа",},
{ID = "FM", x=11+8*0,y=15+5*3, radius=3,col="r",var="VFM", tooltip="Напряжение на фильтре выше 1000 вольт",},
{ID = "400", x=11+8*0,y=15+5*4, radius=3,col="g",var="VU400", tooltip="Наличие400 вольт",},
{ID = "50" , x=11+8*0,y=15+5*5, radius=3,col="g",var="VE1350", tooltip="Наличие тока якоря Гр А",},
{ID = "DIF", x=11+8*0,y=15+5*6, radius=3,col="g",var="VDIF", tooltip="Разность токов гр А,В",},
{ID = "650", x=11+8*0,y=15+5*7, radius=3,col="r",var="VE13650",tooltip="Ток якоря Гр А выше 650 ампер",},
{ID = "0", x=11+8*0,y=15+5*8, radius=3,col="r",var="VE130", tooltip="Якорный ток Гр А отсутствует",},
{ID = "ARS", x=11+8*0,y=15+5*9, radius=3,col="r",var="", tooltip="Срыв частотного запуска",},
{ID = "ITA", x=11+8*0,y=15+5*10, radius=3,col="r",var="", tooltip="Пробой тормозного тиристора Гр А > 100a",},
{ID = "TR", x=11+8*1,y=15+5*5.5,radius=3,col="g",var="", tooltip="Наличие реостатного тока более 100 а Гр А",},
{ID = "SN", x=11+8*1,y=15+5*7.3,radius=3,col="r",var="VSN", tooltip="Силовая схема не собрана",},
{ID = "VN", x=11+8*1,y=15+5*9, radius=3,col="r",var="", tooltip="Неисправность вентиляторов",},
}
}
ENT.ButtonMap["BUV_MALP2"] = {
pos = Vector(378.5,-32-4.8,-28+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "MSU", x=11+8*0,y=15+5*2, radius=3,col="r",var="VMSU", tooltip="Мгновенный сброс уставки",},
{ID = "800", x=11+8*0,y=15+5*3, radius=3,col="g",var="VU800", tooltip="Напряжение сети 800 вольт",},
{ID = "975", x=11+8*0,y=15+5*4, radius=3,col="g",var="VU975", tooltip="Максимальное напряжение сети ",},
{ID = "50" , x=11+8*0,y=15+5*5, radius=3,col="g",var="VE2450", tooltip="Наличие тока якоря Гр B",},
{ID = "650", x=11+8*0,y=15+5*7, radius=3,col="r",var="VE24650",tooltip="Ток якоря Гр B выше 650 ампер",},
{ID = "0", x=11+8*0,y=15+5*8, radius=3,col="r",var="VE240", tooltip="Якорный ток Гр B отсутствует",},
{ID = "BV", x=11+8*0,y=15+5*9, radius=3,col="r",var="VBV", tooltip="Сработала БВ",},
{ID = "ITB", x=11+8*0,y=15+5*10, radius=3,col="r",var="", tooltip="Пробой тормозного тиристора Гр B > 100a",},
}
}
ENT.ButtonMap["BUV_MIV"] = {
pos = Vector(378.5,-32-6.6,-28+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "33", x=11+8*0,y=15+5*3.7,radius=3,col="g",var="VZZ", tooltip="Частотный запуск завершен",},
{ID = "V1", x=11+8*0,y=15+5*5, radius=3,col="g",var="VV1", tooltip="Вентиль1",},
{ID = "SMA", x=11+8*0,y=15+5*6.3,radius=3,col="g",var="VSMA", tooltip="Сигнал максимальный Гр А",},
{ID = "SMB", x=11+8*0,y=15+5*7.6,radius=3,col="g",var="VSMB", tooltip="Сигнал максимальный Гр В",},
}
}
ENT.ButtonMap["BUV_MGR"] = {
pos = Vector(378.5,-32,-35+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "TP1", x=5+8*0,y=15+5*2, radius=3,col="y",var="VITP1", tooltip="Прижатие токоприемника 1",},
{ID = "TP3", x=5+8*0,y=15+5*3.5, radius=3,col="y",var="VITP3", tooltip="Прижатие токоприемника 3",},
{ID = "KHA", x=5+8*0,y=15+5*9, radius=3,col="y",var="VIKX", tooltip="Включение контакторов хода группы А",},
{ID = "KTA", x=5+8*0,y=15+5*10.5,radius=3,col="y",var="VIKT", tooltip="Включение контакторов тормоза группы А",},
{ID = "TP2", x=5+8*1,y=15+5*2, radius=3,col="y",var="VITP2", tooltip="Прижатие токоприемника 2",},
{ID = "TP4", x=5+8*1,y=15+5*3.5, radius=3,col="y",var="VITP4", tooltip="Прижатие токоприемника 4",},
{ID = "KHB", x=5+8*1,y=15+5*9, radius=3,col="y",var="VIKX", tooltip="Включение контакторов хода группы B",},
{ID = "KTB", x=5+8*1,y=15+5*10.5,radius=3,col="y",var="VIKT", tooltip="Включение контакторов тормоза группы B",},
{ID = "KRV", x=5+8*1,y=15+5*12, radius=3,col="y",var="VIRV", tooltip="Включение контакторов реверса вперёд",},
{ID = "NV", x=5+8*2,y=15+5*1, radius=3,col="r",var="", tooltip="Неисправность вентилятора ПТТИ",},
{ID = "BV", x=5+8*2,y=15+5*3, radius=3,col="g",var="VIBV", tooltip="БВ взведён",},
{ID = "LK", x=5+8*2,y=15+5*10, radius=3,col="y",var="VILT", tooltip="Включение линейного контактора",},
{ID = "KRN", x=5+8*2,y=15+5*12, radius=3,col="y",var="VIRN", tooltip="Включение контакторов реверса назад",},
}
}
ENT.ButtonMap["BUV_MLUA"] = {
pos = Vector(378.5,-32-1.8,-35+43.5),
ang = Angle(0,-90,90),
width = 20,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "KT", x=10+8*0,y=17+5*3, radius=3,col="g",var="VOKT", tooltip="Команда тормоза",},
{ID = "XH", x=10+8*0,y=17+5*4, radius=3,col="g",var="VOKX", tooltip="Команда хода",},
{ID = "VP", x=10+8*0,y=17+5*5, radius=3,col="g",var="VOVP", tooltip="Команда включения реверса вперёд",},
{ID = "NZ", x=10+8*0,y=17+5*6, radius=3,col="g",var="VONZ", tooltip="Команда включения реверса назад",},
{ID = "SS", x=10+8*0,y=17+5*7, radius=3,col="g",var="VSS", tooltip="Сигнал собранной схемы",},
{ID = "PV", x=10+8*0,y=17+5*9, radius=3,col="g",var="", tooltip="Команда включения подвозбудителя",},
{ID = "LK", x=10+8*0,y=17+5*11, radius=3,col="g",var="VOLK", tooltip="Команда включения линейного конатктора",},
}
}
ENT.ButtonMap["BUV_MUVK1"] = {
pos = Vector(378.5,-32-3,-35+43.5),
ang = Angle(0,-90,90),
width = 40,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "V1", x=11+8*0,y=19+5*2, radius=3,col="g",var="VOV1", tooltip="Управление катушкой ВЗ№1",},
{ID = "KT", x=11+8*0,y=19+5*3, radius=3,col="g",var="VOKT", tooltip="Управление контакторами тормоза",},
{ID = "KH", x=11+8*0,y=19+5*4, radius=3,col="g",var="VOKX", tooltip="Управление контакторами хода",},
{ID = "LK", x=11+8*0,y=19+5*5, radius=3,col="g",var="VOLK", tooltip="Управление линейным контактором",},
{ID = "PV", x=11+8*0,y=19+5*6, radius=3,col="g",var="", tooltip="Управление подвозбудителем",},
{ID = "NZ", x=11+8*0,y=19+5*7, radius=3,col="g",var="VONZ", tooltip="Управление реверсом Назад",},
{ID = "SN", x=11+8*1,y=19+5*2, radius=3,col="r",var="VOSN", tooltip="Силовая схема вагона не собрана",},
}
}
ENT.ButtonMap["BUV_MUVK2"] = {
pos = Vector(378.5,-32-5.5,-35+43.5),
ang = Angle(0,-90,90),
width = 30,
height = 110,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "RTM", x=11+8*0,y=19+5*2, radius=3,col="g",var="VORKT", tooltip="Управление реле минимального тока",},
{ID = "RKT", x=11+8*0,y=19+5*3, radius=3,col="g",var="VORMT", tooltip="Управление реле контроля торможения",},
{ID = "RP", x=11+8*0,y=19+5*4, radius=3,col="r",var="VORP", tooltip="Сработка защиты",},
{ID = "OTK", x=11+8*0,y=19+5*5, radius=3,col="r",var="VOOIZ", tooltip="Отказ вагона",},
{ID = "75", x=11+8*0,y=19+5*6, radius=3,col="g",var="VO75V", tooltip="Резервное питание БУВ",},
{ID = "VP", x=11+8*0,y=19+5*7, radius=3,col="g",var="VOVP", tooltip="Управление реверсом Вперед",},
}
}
---[[
placeLamps("BUV_MPS")
placeLamps("BUV_MVD")
placeLamps("BUV_MALP1")
placeLamps("BUV_MALP2")
placeLamps("BUV_MIV")
placeLamps("BUV_MGR")
placeLamps("BUV_MLUA")
placeLamps("BUV_MUVK1")
placeLamps("BUV_MUVK2")
--]]
placeLamps("BUP_MVSU")
placeLamps("BUP_MLUP")
placeLamps("BUP_MUVS1")
placeLamps("BUP_MUVS2")
placeLamps("BUP_MS")
placeLamps("BUP_MP")
ENT.ButtonMap["DriverValveDisconnect"] = {
pos = Vector(452.13,-27.45,-4.2-9),
ang = Angle(0,-90,0),
width = 259,
height = 80,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "DriverValveDisconnectToggle", x=0, y=10, w=70, h=70, tooltip="Клапан разобщения", model = {
var="DriverValveDisconnect",--sndid="brake_disconnect",
sndvol = 1, snd = function(val) return "disconnect_valve" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13,
speed=4, min=1,max=0.75,
states={"Train.Buttons.Closed","Train.Buttons.Opened"},
}},
{ID = "ParkingBrakeToggle", x=82.5, y=10, w=70, h=70, tooltip="Стояночный тормоз", model = {
var="ParkingBrake",--sndid="brake_disconnect2",
sndvol = 1, snd = function(val) return "disconnect_valve" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13,
speed=4, min=1,max=0.75,
states={"Train.Buttons.Closed","Train.Buttons.Opened"},
}},
{ID = "EPKToggle", x=188, y=0, w=70, h=70, tooltip="ЭПВ: Электропневматический вентиль АРС", model = {
var="EPK",--sndid="brake_disconnect2",
sndvol = 1, snd = function(val) return "disconnect_valve" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
model = "models/metrostroi_train/81-718/disconnect_valve.mdl", ang=90,z=13,
speed=4, min=1,max=0.75,
states={"Train.Buttons.Closed","Train.Buttons.Opened"},
}},
}
}
ENT.ButtonMap["KR"] = {
pos = Vector(460.3,28.5,-2.3-6.2), --446 -- 14 -- -0,5
ang = Angle(0,-90,11),
width = 180,
height = 40,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "SBR14Set",x=20, y=20, radius=20, tooltip="Резервный ход 1", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-3,
var="SBR14",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SBR16Set",x=90, y=20, radius=20, tooltip="КАХ", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-3,
var="SBR16",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SBR15Set",x=160, y=20, radius=20, tooltip="Резервный ход 2", model = {
model = "models/metrostroi_train/81-710/ezh3_button_red.mdl", vmin=1, vmax=0, z=-3,
var="SBR15",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
}
}
ENT.ButtonMap["BackPPZ"] = {
pos = Vector(408,-55.3,49.75), --446 -- 14 -- -0,5
ang = Angle(0,90,90),
width = 450,
height = 320,
scale = 0.0625,
hide=0.8,
buttons = {
{ID = "SF51Toggle",x=0*35.5, y=73, w=20,h=40, tooltip = "SF51: Основное питание АРС",},
{ID = "SF52Toggle",x=1*35.5, y=73, w=20,h=40, tooltip = "SF52: Резервное питание АРС",},
{ID = "SF53Toggle",x=2*35.5, y=73, w=20,h=40, tooltip = "SF53: Тормозные цепи АРС",},
{ID = "SF60Toggle",x=3*35.5, y=73, w=20,h=40, tooltip = "SF60: 12V АРС",},
{ID = "SF61Toggle",x=4*35.5, y=73, w=20,h=40, tooltip = "SF61: 50V АРСММ1)",},
{ID = "SF77Toggle",x=5*35.5, y=73, w=20,h=40, tooltip = "SF77: Аварийный ход основное управление",},
{ID = "SF78Toggle",x=6*35.5, y=73, w=20,h=40, tooltip = "SF78: Аварийный ход резервное управление",},
{ID = "SF40Toggle",x=7*35.5, y=73, w=20,h=40, tooltip = "SF40: Вентиль №2",},
{ID = "SF41Toggle",x=8*35.5, y=73, w=20,h=40, tooltip = "SF41: Фары",},
{ID = "SF8Toggle" ,x=9*35.5, y=73, w=20,h=40, tooltip = "SF8: Двери",},
{ID = "SF10Toggle",x=10*35.5, y=73, w=20,h=40, tooltip = "SF10:Вентиляторы 1 группа"},
{ID = "SF11Toggle",x=11*35.5, y=73, w=20,h=40, tooltip = "SF11:Вентиляторы 2 группа"},
{ID = "SF7Toggle" ,x=12*35.5, y=73, w=20,h=40, tooltip = "SF7: ББЭ, Мотор-компрессор"},
{ID = "SF50Toggle",x=0*35.5, y=275, w=20,h=40, tooltip = "SF50: Скоростимер",},
{ID = "SF76Toggle",x=1*35.5, y=275, w=20,h=40, tooltip = "SF76: Пожарная сигнализация",},
{ID = "SF73Toggle",x=2*35.5, y=275, w=20,h=40, tooltip = "SF73: Гребнесмазыватель",},
{ID = "SF3Toggle" ,x=3*35.5, y=275, w=20,h=40, tooltip = "SF3: Вагонное питание, ЦУВ",},
{ID = "SF71Toggle",x=4*35.5, y=275, w=20,h=40, tooltip = "SF71: Экстренная связь",},
{ID = "SF63Toggle",x=5*35.5, y=275, w=20,h=40, tooltip = "SF63: Радиостанция",},
{ID = "SF54Toggle",x=6*35.5, y=275, w=20,h=40, tooltip = "SF54: Радиооповещение 50А",},
{ID = "SF65Toggle",x=7*35.5, y=275, w=20,h=40, tooltip = "SF65: Вентиляция кабины",},
{ID = "SF55Toggle",x=8*35.5, y=275, w=20,h=40, tooltip = "SF55: СОТ-3",},
{ID = "SF9Toggle" ,x=9*35.5, y=275, w=20,h=40, tooltip = "SF9: Управление поездом резервное",},
{ID = "SF6Toggle",x=10*35.5, y=275, w=20,h=40, tooltip = "SF6: Управление поездом основное"},
{ID = "SF5Toggle",x=11*35.5, y=275, w=20,h=40, tooltip = "SF5: Управление БКЦУ"},
{ID = "SF2Toggle" ,x=12*35.5, y=275, w=20,h=40, tooltip = "SF2: Поездное питание"},
}
}
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(392,-25,-20),
ang = Angle(0,270,90),
width = 350,
height = 105,
scale = 0.0625,
hide=0.8,
buttons = {
{ID = "SF4Toggle",x=25*1,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF27Toggle",x=25*2,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF46Toggle",x=25*3,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF12Toggle",x=25*4,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF13Toggle",x=25*5,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF45Toggle",x=25*6,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF16Toggle",x=25*7,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF44Toggle",x=25*8,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF43Toggle",x=25*9,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF14Toggle",x=25*10,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF15Toggle",x=25*11,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF25Toggle",x=25*12,y=60*0,w=25,h=45,tooltip=""},
{ID = "SF72Toggle",x=25*13,y=60*0,w=25,h=45,tooltip=""},
------------------------------------------------------------------------
--{ID = "SF56Toggle",x=25*0,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF29Toggle",x=25*1,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF26Toggle",x=25*2,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF42Toggle",x=25*3,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF18Toggle",x=25*4,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF20Toggle",x=25*5,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF17Toggle",x=25*6,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF19Toggle",x=25*7,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF21Toggle",x=25*8,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF22Toggle",x=25*9,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF34Toggle",x=25*10,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF35Toggle",x=25*11,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF23Toggle",x=25*12,y=60*1,w=25,h=45,tooltip=""},
{ID = "SF24Toggle",x=25*13,y=60*1,w=25,h=45,tooltip=""},
}
}
for i,button in pairs(ENT.ButtonMap.PVZ.buttons) do
button.model = {
model = "models/metrostroi_train/81-720/button_av1.mdl",z=-25,
var=button.ID:Replace("Toggle",""),speed=8,
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["VPU"] = {
pos = Vector(407.4,-55.3,27),
ang = Angle(0,90,93),
width = 450,
height = 100,
scale = 0.0625,
hide=0.8,
buttons = {
{ID = "SAP8Toggle",x=60, y=31, radius=10, tooltip="Освещение салона", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP8",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP13Toggle",x=91, y=31, radius=10, tooltip="Освещение кабины", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP13",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP36Toggle",x=245, y=31, radius=10, tooltip="Включение контроля экстренной связи", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP36",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP12Toggle",x=330, y=31, radius=10, tooltip="Освещение отсека", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP12",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP11Toggle",x=365, y=31, radius=10, tooltip="Включение отопления кабины", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP11",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP23Toggle",x=400, y=31, radius=10, tooltip="Режим \"Вспомогательный поезд\"", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP23",speed=16,ang=180,
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=270-30,x=-13,y=25,z=0,var="SAP23Pl", ID="SAP23Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP9Toggle",x=60, y=85, radius=10, tooltip="Вентиляция 1 группа", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP9",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP10Toggle",x=91, y=85, radius=10, tooltip="Вентиляция 2 группа", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP10",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP3Toggle",x=116, y=85, radius=10, tooltip="УНЧ", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP3",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP39Toggle",x=165, y=85, radius=10, tooltip="КГ", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP39",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SBP22Set",x=209, y=80, radius=20, tooltip="Проверка работоспособности", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-3,
var="SBP22",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SBP6Set",x=246, y=80, radius=20, tooltip="Резерв двери правые", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-3,
var="SBP6",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SBP4Set",x=283, y=80, radius=20, tooltip="Резерв двери левые", model = {
model = "models/metrostroi_train/81-710/ezh3_button_black.mdl", vmin=1, vmax=0, z=-3,
var="SBP4",speed=16,
sndvol = 0.07, snd = function(val) return val and "button3_on" or "button3_off" end,sndmin = 60, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "SAP14Toggle",x=330, y=85, radius=10, tooltip="Переключение режима дешифратора АЛС (вверх 2/6, вниз 1/5)", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP14",speed=16,ang=180,
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
states={"Train.Buttons.Freq1/5","Train.Buttons.Freq2/6"}
}},
{ID = "SAP26Toggle",x=365, y=85, radius=10, tooltip="УОС: Устройство ограничения скорости(езда без ЭПК\\ЭПВ)", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP26",speed=16,ang=180,
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=328,x=19,y=15,z=0,var="SAP26Pl", ID="SAP26Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "SAP24Toggle",x=400, y=85, radius=10, tooltip="ВОВТ: Выключатель отключения вентильных тормозов", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",z=-2,
var="SAP24",speed=16,ang=180,vmin=1,vmax=0,
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=90-30,x=-1+13,y=-25,z=0,var="SAP24Pl", ID="SAP24Pl",},
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
}
}
ENT.ButtonMap["Battery"] = {
pos = Vector(404.0,-55.3,7.2),
ang = Angle(0,90,0),
width = 450,
height = 100,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "RCToggle", x=150, y=40, radius=30, tooltip="РЦ-1: Разъединитель цепей АРС\nRC-1: ARS circuits disconnect", model = {
model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",ang=180,z=12,
var="RC",speed=1,vmin=1,vmax=0.87,
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=230,x=-34,y=34,var="RCPl",ID="RCPl",z=-14,},
sndvol = 0.8, snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "VBToggle", x=225, y=40, radius=30, tooltip="ВБ: Выключатель батареи\nVB: Battery on/off", model = {
model = "models/metrostroi_train/81-717/buttons/breaker_common005.mdl",ang=180,z=12,
var="VB",speed=1,vmin=1,vmax=0.87,
sndvol = 0.8, snd = function(val) return val and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID = "VTPR", x=300, y=40, radius=0, model = {
model = "models/metrostroi_train/81-717/buttons/breaker_common006.mdl",ang=180,z=12,
var="VTPR",speed=2,min=1,max=0.61,getfunc = function(ent) return ent:GetPackedRatio("VTPR") end,
sndvol = 0.8, snd = function(_,val) return val%2>0 and "pak_on" or "pak_off" end,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0),
}},
{ID="VTPR-",x=300-30, y=40-30, w=30,h=60, tooltip="ВТПР(влево)",states = {"Train.Buttons.0","Train.Buttons.VTRAll","Train.Buttons.VTRF","Train.Buttons.VTRB"},varTooltip = function(ent) return ent:GetPackedRatio("VTPR") end,},
{ID="VTPR+",x=300 , y=40-30, w=30,h=60, tooltip="ВТПР(вправо)",states = {"Train.Buttons.0","Train.Buttons.VTRAll","Train.Buttons.VTRF","Train.Buttons.VTRB"},varTooltip = function(ent) return ent:GetPackedRatio("VTPR") end,},
}
}
local strength = {
[0] = 0.86,
[1] = 0.29,
[2] = 0.71,
[3] = 0.71,
[4] = 0.57,
[5] = 0.71,
[6] = 0.86,
[7] = 0.43,
[8] = 1.00,
[9] = 0.86,
}
-- ARS/Speedometer panel
ENT.ButtonMap["ARS"] = {
pos = Vector(459.95,7-4,4.9-9),
ang = Angle(0,-90,90-14.971),
width = 235,
height = 85,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "!Speedometer1", x=107,y=6,w=13,h=22,tooltip="Индикатор скорости", model = {
name="SPU_Speed2",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl", color=Color(175,250,20),skin=0,z=1,ang=Angle(0,0,-90),
tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end,
sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent)
if not ent:GetPackedBool("Speedometer") then return 0 end
return strength[math.floor(ent:GetPackedRatio("Speed")*10)%10]
end},
}},
{ID = "!Speedometer2", x=118,y=6,w=13,h=22,tooltip="Индикатор скорости", model = {
name="SPU_Speed1",model = "models/metrostroi_train/81-717/segments/segment_mvm.mdl", color=Color(175,250,20),skin=0,z=1,ang=Angle(0,0,-90),
tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.Speed"),ent:GetPackedRatio("Speed")*100) end,
sprite = {bright=0.1,size=.5,scale=0.02,vscale=0.025,z=1,color=Color(225,250,20),aa=true,getfunc= function(ent)
if not ent:GetPackedBool("Speedometer") then return 0 end
return strength[math.floor(ent:GetPackedRatio("Speed")*100)%10]
end},
}},
{ID = "!SD", x=9,y=7,w=33,h=13,tooltip="СД: Лампа сигнализации дверей поезда (двери закрыты)",model = {
name="SPU_SD",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_SD", getfunc=function(ent) return ent:GetPackedBool("SPU_SD") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!KT", x=48,y=7,w=33,h=13,tooltip="КТ: Лампа контроля торможения",model = {
name="SPU_KT",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_KT", getfunc=function(ent) return ent:GetPackedBool("SPU_KT") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!RS", x=158.5,y=7,w=33,h=13,tooltip="РС: Лампа равенства скоростей",model = {
name="SPU_RS",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_RS", getfunc=function(ent) return ent:GetPackedBool("SPU_RS") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!SK", x=196.5,y=7,w=33,h=13,tooltip="СН: Лампа соответствия направления движения",model = {
name="SPU_SK",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_SN", getfunc=function(ent) return ent:GetPackedBool("SPU_SN") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!04", x=9,y=33.5,w=33,h=13,tooltip="ОЧ: Лампа отсутствия частоты",model = {
name="SPU_04",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_r.mdl",z=1, var="SPU_04", getfunc=function(ent) return ent:GetPackedBool("SPU_04") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!0", x=48,y=33.5,w=33,h=13,tooltip="0: Лампа разрешённой скорости 0 км\\ч",model = {
name="SPU_0",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_r.mdl",z=1, var="SPU_00", getfunc=function(ent) return ent:GetPackedBool("SPU_00") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!40", x=84,y=33.5,w=33,h=13,tooltip="40: Лампа разрешённой скорости 40 км\\ч",model = {
name="SPU_40",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_y.mdl",z=1, var="SPU_40", getfunc=function(ent) return ent:GetPackedBool("SPU_40") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(150,100,30),z=-1,aa=true}
}},
{ID = "!60", x=121,y=33.5,w=33,h=13,tooltip="60: Лампа разрешённой скорости 60 км\\ч",model = {
name="SPU_60",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_60", getfunc=function(ent) return ent:GetPackedBool("SPU_60") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!70", x=158.5,y=33.5,w=33,h=13,tooltip="70: Лампа разрешённой скорости 70 км\\ч",model = {
name="SPU_70",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_70", getfunc=function(ent) return ent:GetPackedBool("SPU_70") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!80", x=196.5,y=33.5,w=33,h=13,tooltip="80: Лампа разрешённой скорости 80 км\\ч",model = {
name="SPU_80",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/big_g.mdl",z=1, var="SPU_80", getfunc=function(ent) return ent:GetPackedBool("SPU_80") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.05,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!KES", x=15,y=60.5,w=18,h=13,tooltip="КЭС: Контроль экстренной связи",model = {
name="SPU_KES",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_KES", getfunc=function(ent) return ent:GetPackedBool("SPU_KES") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!ST", x=34,y=60.5,w=18,h=13,tooltip="СТ: Применение пневматического торможения или сработка стояночного тормоза",model = {
name="SPU_ST",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_ST", getfunc=function(ent) return ent:GetPackedBool("SPU_ST") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!CUV", x=53,y=60.5,w=18,h=13,tooltip="ЦУВ: Невключение ЦУВ на вагоне",model = {
name="SPU_CUV",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_CUV"},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!AVU", x=72,y=60.5,w=18,h=13,tooltip="АВУ: Сработка АВУ",model = {
name="SPU_AVU",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_AVU", getfunc=function(ent) return ent:GetPackedBool("SPU_AVU") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!AIP", x=91,y=60.5,w=18,h=13,tooltip="АИП",model = {
name="SPU_AIP",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/litlle_r.mdl",z=1, var="SPU_AIP"},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(255,20,40),z=-1,aa=true}
}},
{ID = "!RIP", x=148,y=60.5,w=18,h=13,tooltip="РИП",model = {
name="SPU_RIP",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_RIP"},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!KVD", x=167,y=60.5,w=18,h=13,tooltip="КВД: Лампа выключения ходового режима системой АРС",model = {
name="SPU_KVD",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_KVD", getfunc=function(ent) return ent:GetPackedBool("SPU_KVD") and (ent:GetPackedBool("VD1") and 1 or 0.8) or 0 end},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!VS1", x=186,y=60.5,w=18,h=13,tooltip="ВС1: Выключенное состояние вентиляции 1 группы",model = {
name="SPU_VS1",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_VS1"},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
{ID = "!VS2", x=205,y=60.5,w=18,h=13,tooltip="ВС2: Выключенное состояние вентиляции 2 группы",model = {
name="SPU_VS2",lamp = {speed=10,model = "models/metrostroi_train/81-718/lamps/little_g.mdl",z=1, var="SPU_VS2"},
sprite = {bright=0.5,size=0.25,scale=0.03,vscale=0.02,color=Color(125,200,15),z=-1,aa=true}
}},
}
}
ENT.ButtonMap["BZOS"] = {
pos = Vector(435.5,-62.6,-5.5),
ang = Angle(0,180,90),
width = 16,
height = 60,
scale = 0.0625,
hideseat=0.2,
buttons = {
{ID = "!VH2",x=8, y=19, radius=4, tooltip="Лампа тревоги охранной сигнализации", model = {
lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH2",color=Color(255,56,30)},
sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(255,56,30),z=0,}
}},
{ID = "!VH1",x=8, y=30, radius=4, tooltip="Лампа включения охранной сигнализации", model = {
lamp = {speed=16,model = "models/metrostroi_train/common/lamps/svetodiod2.mdl",z=-1,var="VH1",color=Color(175,250,20)},
sprite = {bright=0.5,size=0.25,scale=0.01,color=Color(175,250,20),z=0,}
}},
{ID = "SAB1Toggle",x=8, y=45, radius=8, tooltip="Выключатель охранной сигнализации", model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t2.mdl",ang = 180,z=-4,
var="SAB1",speed=16,
sndvol = 0.5,snd = function(val) return val and "pnm_on" or "pnm_off" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
}
}
ENT.ButtonMap["UAVAPanel"] = {
pos = Vector(450,-48,-6),
ang = Angle(0,270,90),
width = 180,
height = 200,
scale = 0.0625,
buttons = {
{ID = "UAVAToggle",x=0, y=0, w=60, h=200, tooltip="УАВА: Включение автоматического выключателя автостопа", model = {
plomb = {var="UAVAPl", ID="UAVAPl",},
var="UAVA",
sndid="UAVALever",sndvol = 1, snd = function(val) return val and "uava_on" or "uava_off" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
}},
{ID = "UAVACToggle",x=60, y=0, w=120, h=200, tooltip="Восстановление контактов УАВА",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}},
}
}
ENT.ButtonMap["Stopkran"] = {
pos = Vector(402,62,16.90),
ang = Angle(0,0,90),
width = 200,
height = 1300,
scale = 0.1/2,
buttons = {
{ID = "EmergencyBrakeValveToggle",x=0,y=0,w=200,h=1300,tooltip="", tooltip="",tooltip="",states={"Train.Buttons.Closed","Train.Buttons.Opened"},var="EmergencyBrakeValve"},
}
}
ENT.ClientProps["stopkran"] = {
model = "models/metrostroi_train/81-717/stop_mvm.mdl",
pos = Vector(409.45,62.15,11.40),
ang = Angle(0,0,0),
hideseat=0.2,
}
ENT.ClientSounds["EmergencyBrakeValve"] = {{"stopkran",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}}
ENT.ButtonMap["FrontPneumatic"] = {
pos = Vector(470-9,-45.0,-58.0+5),
ang = Angle(0,90,90),
width = 900,
height = 100,
scale = 0.1,
buttons = {
{ID = "FrontBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="FbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}},
{ID = "FrontTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="FtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}},
}
}
ENT.ClientProps["FrontBrake"] = {--
model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl",
pos = Vector(449+11, -31, -62),
ang = Angle(-15,-90,0),
hide = 2,
}
ENT.ClientProps["FrontTrain"] = {--
model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl",
pos = Vector(449+11, 31, -62),
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-1,45.0,-58.0+5),
ang = Angle(0,270,90),
width = 900,
height = 100,
scale = 0.1,
buttons = {
{ID = "RearTrainLineIsolationToggle",x=500, y=0, w=400, h=100, tooltip="",var="RtI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}},
{ID = "RearBrakeLineIsolationToggle",x=000, y=0, w=400, h=100, tooltip="",var="RbI",states={"Train.Buttons.Opened","Train.Buttons.Closed"}},
}
}
ENT.ClientProps["RearTrain"] = {--
model = "models/metrostroi_train/bogey/disconnect_valve_blue.mdl",
pos = Vector(-450-22, -34, -62),
ang = Angle(-15,90,0),
hide = 2,
}
ENT.ClientProps["RearBrake"] = {--
model = "models/metrostroi_train/bogey/disconnect_valve_red.mdl",
pos = Vector(-450-22, 34, -62),
ang = Angle( 15,90,0),
hide = 2,
}
ENT.ClientSounds["RearBrakeLineIsolation"] = {{"RearBrake",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}}
ENT.ClientSounds["RearTrainLineIsolation"] = {{"RearTrain",function() return "disconnect_valve" end,1,1,50,1e3,Angle(-90,0,0)}}
ENT.ButtonMap["GV"] = {
pos = Vector(170-3-9.5+22,50+20,-60+2+5),
ang = Angle(0,225-15,90),
width = 260,
height = 260,
scale = 0.1,
buttons = {
{ID = "GVToggle",x=0, y=0, w= 260,h = 260, tooltip="", model = {
var="GV",sndid = "gv",
sndvol = 0.8,sndmin = 80, sndmax = 1e3/3, sndang = Angle(-90,0,0),
snd = function(val) return val and "gv_f" or "gv_b" end,
states={"Train.Buttons.Disconnected","Train.Buttons.On"}
}},
}
}
ENT.ClientProps["gv"] = {
model = "models/metrostroi/81-717/gv.mdl",
pos = Vector(153.5-3-9.5+22,36+20,-78+2+5),
ang = Angle(-90,90,-90),
hide = 0.5,
}
ENT.ClientProps["gv_wrench"] = {
model = "models/metrostroi_train/reversor/reversor_classic.mdl",
pos = ENT.ClientProps["gv"].pos,
ang = Angle(-90,0,0),
hide = 0.5,
}
ENT.ButtonMap["AirDistributor"] = {
pos = Vector(-185,-68,-50),
ang = Angle(0,0,90),
width = 170,
height = 80,
scale = 0.1,
hideseat=0.1,
hide=true,
screenHide = true,
buttons = {
{ID = "AirDistributorDisconnectToggle",x=0,y=0,w= 170,h = 80,tooltip="",var="AD",states={"Train.Buttons.On","Train.Buttons.Off"}},
}
}
ENT.ButtonMap["CabinDoor"] = {
pos = Vector(414.5,64,56.7),
ang = Angle(0,0,90),
width = 642,
height = 2000,
scale = 0.1/2,
buttons = {
{ID = "CabinDoor",x=0,y=0,w=642,h=2000, tooltip="Дверь в кабину машиниста", model = {
var="door2",sndid="door2",
sndvol = 1, snd = function(val) return val and "cab_door_open" or "cab_door_close" end,
sndmin = 90, sndmax = 1e3, sndang = Angle(-90,0,0),
noTooltip = true,
}},
}
}
ENT.ButtonMap["OtsekDoor1"] = {
pos = Vector(394.5,26,11.6),
ang = Angle(0,180,90),
width = 310,
height = 130,
scale = 0.1/2,
buttons = {
{ID = "OtsekDoor1",x=0,y=0,w=310,h=130,tooltip="",model = {
var="OtsekDoor1",sndid="door_otsek1",
sndvol = 1,snd = function(val) return "otsek_door_close" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
states = {"Train.Buttons.Closed","Train.Buttons.Opened"}
}},
}
}
ENT.ButtonMap["OtsekDoor2"] = {
pos = Vector(394.5,26,-14),
ang = Angle(0,180,90),
width = 310,
height = 130,
scale = 0.1/2,
buttons = {
{ID = "OtsekDoor2",x=0,y=0,w=310,h=130,tooltip="",model = {
var="OtsekDoor2",sndid="door_otsek2",
sndvol = 1,snd = function(val) return "otsek_door_close" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
states = {"Train.Buttons.Closed","Train.Buttons.Opened"}
}},
}
}
ENT.ButtonMap["PassengerDoor"] = {
pos = Vector(390-12.2,29,50.6),--28
ang = Angle(0,90,90),
width = 642,
height = 2000,
scale = 0.1/2,
buttons = {
{ID = "PassengerDoor",x=0,y=0,w=642,h=2000,tooltip="",model = {
var="door3",sndid="door3",
sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
noTooltip = true,
}},
}
}
ENT.ButtonMap["PassengerDoor1"] = {
pos = Vector(390-12.2,29+32,50.6),--28
ang = Angle(0,-90,90),
width = 642,
height = 2000,
scale = 0.1/2,
buttons = {
{ID = "PassengerDoor",x=0,y=0,w=642,h=2000,tooltip=""},
}
}
ENT.ButtonMap["CabinDoor"] = {
pos = Vector(411,64,50),
ang = Angle(0,0,90),
width = 665,
height = 2000,
scale = 0.1/2,
buttons = {
{ID = "CabinDoor",x=0,y=0,w=665,h=2000,tooltip="",model = {
var="door2",sndid="door2",
sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
noTooltip = true,
}},
}
}
ENT.ButtonMap["RearDoor"] = {
pos = Vector(-470-3,-16,48.4-2),
ang = Angle(0,90,90),
width = 642,
height = 1900,
scale = 0.1/2,
buttons = {
{ID = "RearDoor",x=0,y=0,w=642,h=1900,tooltip="",model = {
var="door1",sndid="door1",
sndvol = 1,snd = function(val) return val and "cab_door_open" or "cab_door_close" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
noTooltip = true,
}},
}
}
ENT.ButtonMap["PneumaticPanels"] = {
pos = Vector(461,-23,6),
ang = Angle(0,-108,90),
width = 230,
height = 120,
scale = 0.0625,
buttons = {
{ID = "!BLTLPressure", x=65, y=62, radius=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BLTLPressure"),ent:GetPackedRatio("TLPressure")*16,ent:GetPackedRatio("BLPressure")*16) end},
{ID = "!BCPressure", x=166, y=62, radius=45, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BCPressure"),ent:GetPackedRatio("BCPressure")*6) end},
}
}
ENT.ButtonMap["HVMeters"] = {
pos = Vector(430.3,-63,-5.5),
ang = Angle(0,-180,90),
width = 205,
height = 30,
scale = 0.0625,
buttons = {
{ID = "!I13", x=0, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent13")*1000-500) end},
{ID = "!I24", x=52, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesCurrent"),ent:GetPackedRatio("EnginesCurrent24")*1000-500) end},
{ID = "!HVVoltage", x=104, y=0, w=46, h=30, tooltip="",tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.EnginesVoltage"),ent:GetPackedRatio("EnginesVoltage")*1000) end},
{ID = "!BatteryCurrent", x=159, y=0, w=46, h=30, tooltip="", tooltipFunc = function(ent) return Format(Metrostroi.GetPhrase("Train.Buttons.BatteryCurrent"),ent:GetPackedRatio("BatteryCurrent")*150) end},
}
}
--------------------------------------------------------------------------------
ENT.ClientProps["brake013"] = {
model = "models/metrostroi_train/81-717/cran13.mdl",
pos = Vector(439,-24.3,-12.0),
ang = Angle(0,-180,0),
hideseat = 0.2,
}
if not ENT.ClientSounds["br_013"] then ENT.ClientSounds["br_013"] = {} end
table.insert(ENT.ClientSounds["br_013"],{"brake013",function(ent,_,var) return "br_013" end,0.7,1,50,1e3,Angle(-90,0,0)})
--------------------------------------------------------------------------------
ENT.ClientProps["ampermeter1"] = {
model = "models/metrostroi_train/81-710/ezh3_voltages.mdl",
pos = Vector(428.886963,-63.118961,-7.808218),
ang = Angle(180.000000,0.000000,-90.000000),
bscale = Vector(1,1,0.95),
hideseat = 0.2,
}
ENT.ClientProps["ampermeter2"] = {
model = "models/metrostroi_train/81-710/ezh3_voltages.mdl",
pos = Vector(428.886963-3.16,-63.118961,-7.808218),
ang = Angle(180.000000,0.000000,-90.000000),
bscale = Vector(1,1,0.95),
hideseat = 0.2,
}
ENT.ClientProps["voltmeter"] = {
model = "models/metrostroi_train/81-710/ezh3_voltages.mdl",
pos = Vector(428.886963-3.16*2.06,-63.118961,-7.91),
ang = Angle(180.000000,0.000000,-90.000000),
bscale = Vector(1,1,0.95),
hideseat = 0.2,
}
ENT.ClientProps["ampermeter3"] = {
model = "models/metrostroi_train/81-710/ezh3_voltages.mdl",
pos = Vector(428.886963-3.16*3.145,-63.118961,-7.91),
ang = Angle(180.000000,0.000000,-90.000000),
bscale = Vector(1,1,0.95),
hideseat = 0.2,
}
ENT.ClientProps["volt1"] = {
model = "models/metrostroi_train/81-710/ezh3_voltages.mdl",
pos = Vector(458.416321,7.570844,-8.262030),
ang = Angle(0.000000,-90.000000,87.000000),
bscale = Vector(1,1,1.47),
hideseat = 0.2,
}
ENT.ClientProps["bortlamps1"] = {
model = "models/metrostroi_train/81-718/bort_lamps_body.mdl",
pos = Vector(-52,67,45.5),
ang = Angle(0,0,0),
hide = 2,
}
ENT.ClientProps["bortlamp1_w"] = {
model = "models/metrostroi_train/equipment/bort_lamps_b.mdl",
pos = ENT.ClientProps.bortlamps1.pos+Vector(0,0.9,3.25),
ang = Angle(0,0,0),
nohide = true,
}
ENT.ClientProps["bortlamp1_g"] = {
model = "models/metrostroi_train/equipment/bort_lamps_g.mdl",
pos = ENT.ClientProps.bortlamps1.pos+Vector(0,0.9,-0.1),
ang = Angle(0,0,0),
nohide = true,
}
ENT.ClientProps["bortlamp1_y"] = {
model = "models/metrostroi_train/equipment/bort_lamps_y.mdl",
pos = ENT.ClientProps.bortlamps1.pos+Vector(0,0.9,-3.3),
ang = Angle(0,0,0),
nohide = true,
}
ENT.ClientProps["bortlamps2"] = {
model = "models/metrostroi_train/81-718/bort_lamps_body.mdl",
pos = Vector(39,-67,45.5),
ang = Angle(0,180,0),
hide = 2,
}
ENT.ClientProps["bortlamp2_w"] = {
model = "models/metrostroi_train/equipment/bort_lamps_b.mdl",
pos = ENT.ClientProps.bortlamps2.pos+Vector(0,-0.85,3.2),
ang = Angle(0,180,0),
nohide = true,
}
ENT.ClientProps["bortlamp2_g"] = {
model = "models/metrostroi_train/equipment/bort_lamps_g.mdl",
pos = ENT.ClientProps.bortlamps2.pos+Vector(0,-0.85,-0.1),
ang = Angle(0,180,0),
nohide = true,
}
ENT.ClientProps["bortlamp2_y"] = {
model = "models/metrostroi_train/equipment/bort_lamps_y.mdl",
pos = ENT.ClientProps.bortlamps2.pos+Vector(0,-0.85,-3.35),
ang = Angle(0,180,0),
nohide = true,
}
--------------------------------------------------------------------------------
ENT.ClientProps["PB"] = {
model = "models/metrostroi_train/81-707/pedal.mdl",
pos = Vector(451.472687,19.217855,-38.302654),
ang = Angle(0.000000,-90.000000,40.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,35,1e3,Angle(-90,0,0)})
--------------------------------------------------------------------------------
-- Add doors
--[[ local function GetDoorPosition(i,k,j)
if j == 0
then return Vector(338.2-230.1*i+(1-k)*0.8,-65.449*(1-2*k),0.761)
else return Vector(338.2-230.1*i+(1-k)*0.8,-65.449*(1-2*k),0.761)
end
end
for i=0,3 do
for k=0,1 do
ENT.ClientProps["door"..i.."x"..k.."a"] = {
model = "models/metrostroi_train/81-718/door_right.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-718/door_left.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-718/81-718_doors_pos1.mdl",
pos = Vector(338.445,65.164,0.807),
ang = Angle(0,-90,0),
hide = 2.0,
}
ENT.ClientProps["door1x1"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos2.mdl",
pos = Vector(108.324,65.164,0.807),
ang = Angle(0,-90,0),
hide = 2.0,
}
ENT.ClientProps["door2x1"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos3.mdl",
pos = Vector(-122.182+0.4,65.164,0.807),
ang = Angle(0,-90,0),
hide = 2.0,
}
ENT.ClientProps["door3x1"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos4.mdl",
pos = Vector(-351.531,65.164,0.807),
ang = Angle(0,-90,0),
hide = 2.0,
}
ENT.ClientProps["door0x0"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos4.mdl",
pos = Vector(338.445,-65.164,0.807),
ang = Angle(0,90,0),
hide = 2.0,
}
ENT.ClientProps["door1x0"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos3.mdl",
pos = Vector(108.324,-65.164,0.807),
ang = Angle(0,90,0),
hide = 2.0,
}
ENT.ClientProps["door2x0"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos2.mdl",
pos = Vector(-122.182+0.6,-65.164,0.807),
ang = Angle(0,90,0),
hide = 2.0,
}
ENT.ClientProps["door3x0"] = {
model = "models/metrostroi_train/81-718/81-718_doors_pos1.mdl",
pos = Vector(-351.531,-65.164,0.807),
ang = Angle(0,90,0),
hide = 2.0,
}
ENT.ClientProps["Lamp_RTM"] = {
model = "models/metrostroi_train/81-717/rtmlamp.mdl",
pos = Vector(408.6,-51.3,10.7),
ang = Angle(0.000000,180.000000,0.000000),
hideseat = 0.2,
}
ENT.ClientProps["door1"] = {
model = "models/metrostroi_train/81-718/door_torec.mdl",
pos = Vector(-473.749,15.924,-1.926),
ang = Angle(0,-90,0),
hide = 2,
}
ENT.ClientProps["door2"] = {
model = "models/metrostroi_train/81-717/cab_door.mdl",
pos = Vector(377.322,28.267,-1.599),
ang = Angle(0,-90,0),
hide = 2,
}
ENT.ClientProps["door3"] = {
model = "models/metrostroi_train/81-718/door_cabine.mdl",
pos = Vector(443.493,65.111,0.277),
ang = Angle(0,-90,0),
hide = 2,
}
ENT.ClientProps["UAVALever"] = {
model = "models/metrostroi_train/81-703/cabin_uava.mdl",
pos = Vector(451.8,-55.9,-15.6),
ang = Angle(3,-180,0),
hideseat=0.2,
}
ENT.ClientProps["E_informator"] = {
model = "models/metrostroi_train/equipment/rri_informator_portable.mdl",
pos = Vector(390,-29.5,-34),
ang = Angle(0,180,0),
hideseat=0.2,
}
ENT.ButtonMap["RRIScreen"] = {
pos = ENT.ClientProps["E_informator"].pos-Vector(2,-2.9,-5),
ang = Angle(0,-90,90),
width = 121,
height = 103,
scale = 0.07,
hide=true,
hideseat=0.2,
buttons = {
{ID = "RRIUp",x=30,y=60,radius=10,tooltip=""},
{ID = "RRIDown",x=30,y=80,radius=10,tooltip=""},
{ID = "RRILeft",x=20,y=70,radius=10,tooltip=""},
{ID = "RRIRight",x=40,y=70,radius=10,tooltip=""},
}
}
ENT.ButtonMap["RRI"] = {
pos = ENT.ClientProps["E_informator"].pos-Vector(-0.65,-0.5,-5),
ang = Angle(0,-90,0),
width = 60,
height = 25,
scale = 0.0625,
hideseat=0.2,
buttons = {
--[[ {ID = "RRIEnableToggle",x=10,y=12.5,radius=10,tooltip="",model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-4,
var="RRIEnable",speed=16,
sndvol = 1,snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID = "!RRIRewind",x=30,y=12.5,radius=0,model = {
model = "models/metrostroi_train/81-502/buttons/tumbler_b_a.mdl",ang = 180,z=-3,
getfunc = function(ent) return ent:GetPackedRatio("RRIRewind") end,
var="RRIRewind",speed=8,
sndvol = 0.5,snd = function(_,val) return val==2 and "triple_0-up" or val==0 and "triple_0-down" or "triple_up-0" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},
{ID = "RRIRewindSet2",x=30-5,y=12.5-10,w=10,h=10,tooltip=""},
{ID = "RRIRewindSet0",x=30-5,y=12.5,w=10,h=10,tooltip=""},
{ID = "RRIAmplifierToggle",x=50,y=12.5,radius=10,tooltip="",model = {
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-4,
var="RRIAmplifier",speed=16,
sndvol = 1,snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
sndmin = 90,sndmax = 1e3,sndang = Angle(-90,0,0),
}},--]]
{ID = "!RRIOn",x=70,y=12.5,radius=10,tooltip="",model = {
model = "models/metrostroi_train/81-710/ezh3_slc77.mdl",z = -13,
lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6, var="RRIOn", color=Color(210,170,255)},
}},
}
}
local xpos = {
-417.6,
-354.2,
-285.5,
-236.0,
-186.6,
-123,
-55.62,
-11.79+5.7,
46.24-2.8,
104.27+2.65,
162.30+12.25,
220.33+3.8,
278.36-4.9,
336.3,
}
for i = 0,27 do
ENT.ClientProps["lamp1_"..i+1] = {
model = "models/metrostroi_train/81-717/lamps/lamp_typ2.mdl",
pos = Vector(xpos[math.floor(i/2)+1], 29.7-(i%2)*59.4, 63.3),
ang = Angle(0,0,-8+(i%2)*16),
hideseat = 1.1,
}
end
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,62),
ang = Angle(0,0,0),
hide = 1.1,
}
end
ENT.ClientProps["lampcab1"] = {
model = "models/metrostroi_train/81-717/lamps/lamp_typ2.mdl",
pos = Vector(441.6,0,55.5),
ang = Angle(0,-90,0),
color=Color(214*1,181*1.1,124*1.1),
hideseat=0.2,
}
ENT.ClientProps["lampcab2"] = {
model = "models/metrostroi_train/81-717/lamps/lamp_typ2.mdl",
pos = Vector(426.7,0,55.5),
ang = Angle(0,-90,0),
color=Color(214,181,124),
hideseat=0.2,
}
ENT.Lights = {
[40] = { "headlight",Vector(456.94,7.668623,-1.99856),Angle(124.000000,180.000000,0.000000),Color(54,135,0),farz = 9,nearz = 1,shadows = 0,brightness = 4,fov = 80, hidden = "volt1" },
[41] = { "headlight",Vector(459.34,-28.504929,4.271693),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110, hidden = "brake_line" },
[42] = { "headlight",Vector(457.08,-34.343376,4.464308),Angle(122.713928,210.196899,45.703571),Color(255,130,25),farz = 9,nearz = 1,shadows = 1,brightness = 2,fov = 110, hidden = "brake_line" },
[43] = { "headlight",Vector(428.88,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter1" },
[44] = { "headlight",Vector(425.71,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(0,187,20),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter2" },
[45] = { "headlight",Vector(422.32,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "ampermeter3" },
[46] = { "headlight",Vector(418.89,-62.986473,-4.12),Angle(96.323837,89.479485,-2.365463),Color(110,162,222),farz = 9,nearz = 1,shadows = 0,brightness = 2,fov = 80, hidden = "voltmeter" },
-- Headlight glow
[1] = { "headlight", Vector(460,0,-40), Angle(0,0,0), Color(216,161,92), fov=90,farz=5144,brightness = 4, texture = "models/metrostroi_train/equipment/headlight",shadows = 1,headlight=true},
[2] = { "headlight", Vector(460,0,50), Angle(-20,0,0), Color(255,0,0), fov=160 ,brightness = 0.3, farz=450,texture = "models/metrostroi_train/equipment/headlight2",shadows = 0,backlight=true},
[3] = { "headlight", Vector(365,-9,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1},
[4] = { "headlight", Vector(365,-51,50), Angle(50,40,-0), Color(206,135,80), hfov=80, vfov=80,farz=100,brightness = 6,shadows=1},
-- Reverse
[8] = { "light",Vector(465,-46.8, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 },
[9] = { "light",Vector(465, 47, 52.8) , Angle(0,0,0), Color(255,50,50), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2 },
[11] = { "dynamiclight", Vector( 200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true },
[12] = { "dynamiclight", Vector( 0, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400, fov=180,farz = 128, changable = true },
[13] = { "dynamiclight", Vector(-200, 0, -0), Angle(0,0,0), Color(255,175,50), brightness = 3, distance = 400 , fov=180,farz = 128, changable = true },
[10] = { "dynamiclight", Vector( 435, 0, 20), Angle(0,0,0), Color(216,161,92), distance = 550, brightness = 0.3,hidden = "Cabine"},
-- Side lights
[15] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[16] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[17] = { "light",Vector(-52,67,45.5)+Vector(0,0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[18] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,3.25), Angle(0,0,0), Color(254,254,254), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[19] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-0.02), Angle(0,0,0), Color(40,240,122), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[20] = { "light",Vector(39,-67,45.5)+Vector(0,-0.9,-3.3), Angle(0,0,0), Color(254,210,18), brightness = 0.1, scale = 0.2, texture = "sprites/light_glow02", size = 1.5 },
[30] = { "light", Vector(465,-16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2},
[31] = { "light", Vector(465, 16,-29), Angle(0,0,0), Color(255,220,180), brightness = 0.2, scale = 2.5, texture = "sprites/light_glow02", size = 2},
Lamp_RTM = {"light", Vector(408.6,-51.3,10.7), Angle(0,0,0),Color(255,180,60),brightness = 0.4,scale = 0.03, texture = "sprites/light_glow02", hidden="Lamp_RTM"},
}
--[[
ENT.ClientProps["helper_light"] = {
model = "models/props_junk/PopCan01a.mdl",
pos = Vector(456.691284,14.138382,6.584029),
ang = Angle(-136.613632,-95.636734,137.434570),
}]]
--ENT.AutoPos = {Vector(407.3,-10.5,47),Vector(419.3,-57.5,47.5)}
--local X = Material( "metrostroi_skins/81-717/6.png")
local tbl = {[0]=-0.25,0.00,0.04,0.09,0.13,0.17,0.20,0.27,0.33,0.42,0.56,0.73,1.00}
function ENT:Initialize()
self.BaseClass.Initialize(self)
self.RRIScreen = self:CreateRT("717RRI",128,128)
self.CraneRamp = 0
self.CraneRRamp = 0
self.ReleasedPdT = 0
self.EmergencyValveRamp = 0
self.EmergencyValveEPKRamp = 0
self.EmergencyBrakeValveRamp = 0
self.FrontLeak = 0
self.RearLeak = 0
self.TISUVol = 0
self.TISUFreq = 0
self.VentCab = 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
for i=0,3 do
ENT.ClientProps["TrainNumberL"..i] = {
model = "models/metrostroi_train/common/bort_numbers.mdl",
pos = Vector(41+16+i*6.6-5*6.6/2,67.4,-17.8),
ang = Angle(0,180,0),
skin=i,
hide = 1.5,
callback = function(ent)
ent.WagonNumber = false
end,
}
ENT.ClientProps["TrainNumberR"..i] = {
model = "models/metrostroi_train/common/bort_numbers.mdl",
pos = Vector(64+16-i*6.6-5*6.6/2,-67.4,-17.8),
ang = Angle(0,0,0),
skin=i,
hide = 1.5,
callback = function(ent)
ent.WagonNumber = false
end,
}
end
function ENT:UpdateWagonNumber()
local count = self.WagonNumber < 250 and 3 or 4
for i=0,3 do
self:ShowHide("TrainNumberL"..i,i<count)
self:ShowHide("TrainNumberR"..i,i<count)
if i< count and self.WagonNumber then
local leftNum,rightNum = self.ClientEnts["TrainNumberL"..i],self.ClientEnts["TrainNumberR"..i]
local num = math.floor(self.WagonNumber%(10^(i+1))/10^i)
if IsValid(leftNum) then
leftNum:SetPos(self:LocalToWorld(Vector(41+16+i*6.6-count*6.6/2,67.4,-17.8)))
leftNum:SetSkin(num)
end
if IsValid(rightNum) then
rightNum:SetPos(self:LocalToWorld(Vector(64+16-i*6.6-count*6.6/2,-67.4,-17.8)))
rightNum:SetSkin(num)
end
end
end
end
--------------------------------------------------------------------------------
local Cpos = {
0,0.22,0.429,0.513,0.597,0.825,1
}
function ENT:Think()
--if LocalPlayer():SteamID() == "STEAM_0:0:48355213" then return end
self.BaseClass.Think(self)
local dT = self.DeltaTime
if not self.RenderClientEnts or self.CreatingCSEnts then
self.TISUFreq = 13
return
end
if self.Scheme ~= self:GetNW2Int("Scheme",1) then
self.PassSchemesDone = false
self.Scheme = self:GetNW2Int("Scheme",1)
end
if not self.PassSchemesDone and IsValid(self.ClientEnts.schemes) then
local scheme = Metrostroi.Skins["717_new_schemes"] and Metrostroi.Skins["717_new_schemes"][self.Scheme]
self.ClientEnts.schemes:SetSubMaterial(1,scheme and scheme[1])
self.PassSchemesDone = true
end
self:SetLightPower(40,self:GetPackedBool("PanelLights"))
self:SetLightPower(41,self:GetPackedBool("PanelLights"))
self:SetLightPower(42,self:GetPackedBool("PanelLights"))
self:SetLightPower(43,self:GetPackedBool("PanelLights"))
self:SetLightPower(44,self:GetPackedBool("PanelLights"))
self:SetLightPower(45,self:GetPackedBool("PanelLights"))
self:SetLightPower(46,self:GetPackedBool("PanelLights"))
local EL1 = self:Animate("Cablights1",self:GetPackedBool("Cablights1") and 1 or 0,0,1,6,false)
local EL2 = self:Animate("Cablights2",self:GetPackedBool("Cablights2") and 1 or 0,0,1,6,false)
self:ShowHideSmooth("lampcab1",EL1)
self:ShowHideSmooth("lampcab2",EL2)
local cabStrength = EL1*0.5+EL2*0.5
self:SetLightPower(10,cabStrength > 0,cabStrength)
local HL1 = self:Animate("Headlights1",self:GetPackedBool("Headlights1") and 1 or 0,0,1,6,false)
local HL2 = self:Animate("Headlights2",self:GetPackedBool("Headlights2") and 1 or 0,0,1,6,false)
local RL = self:Animate("RedLights_a",self:GetPackedBool("RedLights") and 1 or 0,0,1,6,false)
self:ShowHideSmooth("Headlights_1",HL1)
self:ShowHideSmooth("Headlights_2",HL2)
local bright = HL1*0.5 + HL2*0.5
self:SetLightPower(30,bright > 0,bright)
self:SetLightPower(31,bright > 0,bright)
self:ShowHideSmooth("RedLights",RL)
self:SetLightPower(8,RL > 0,RL)
self:SetLightPower(9,RL > 0,RL)
local headlight = HL1*0.6+HL2*0.4
self:SetLightPower(1,headlight>0,headlight)
self:SetLightPower(2,self:GetPackedBool("RedLights"),RL)
if IsValid(self.GlowingLights[1]) then
if self:GetPackedRatio("Headlight") < 0.5 and self.GlowingLights[1]:GetFarZ() ~= 3144 then
self.GlowingLights[1]:SetFarZ(3144)
end
if self:GetPackedRatio("Headlight") > 0.5 and self.GlowingLights[1]:GetFarZ() ~= 5144 then
self.GlowingLights[1]:SetFarZ(5144)
end
end
local RN = self:GetPackedBool("RouteNumberWork",false)
self:ShowHide("route1",RN)
self:ShowHide("route2",RN)
self:ShowHide("route1_r",RN)
self:ShowHide("route2_r",RN)
self:ShowHide("route1_s",RN)
self:ShowHide("route2_s",RN)
local lamps_rtm = self:Animate("lamps_rtm",self:GetPackedBool("VPR") and 1 or 0,0,1,8,false)
self:SetSoundState("vpr",lamps_rtm>0 and 1 or 0,1)
self:ShowHideSmooth("Lamp_RTM",lamps_rtm or 0)
self:SetLightPower("Lamp_RTM",lamps_rtm > 0, lamps_rtm)
local Bortlamp_w = self:Animate("Bortlamp_w",self:GetPackedBool("DoorsW") and 1 or 0,0,1,16,false)
local Bortlamp_g = self:Animate("Bortlamp_g",self:GetPackedBool("GRP") and 1 or 0,0,1,16,false)
local Bortlamp_y = self:Animate("Bortlamp_y",self:GetPackedBool("BrW") and 1 or 0,0,1,16,false)
self:ShowHideSmooth("bortlamp1_w",Bortlamp_w)
self:ShowHideSmooth("bortlamp1_g",Bortlamp_g)
self:ShowHideSmooth("bortlamp1_y",Bortlamp_y)
self:ShowHideSmooth("bortlamp2_w",Bortlamp_w)
self:ShowHideSmooth("bortlamp2_g",Bortlamp_g)
self:ShowHideSmooth("bortlamp2_y",Bortlamp_y)
self:SetLightPower(15, Bortlamp_w > 0.5)
self:SetLightPower(18, Bortlamp_w > 0.5)
self:SetLightPower(16, Bortlamp_g > 0.5)
self:SetLightPower(19, Bortlamp_g > 0.5)
self:SetLightPower(17, Bortlamp_y > 0.5)
self:SetLightPower(20, Bortlamp_y > 0.5)
local activeLights = 0
for i = 1,28 do
local colV = self:GetNW2Vector("lamp"..i)
local col = Color(colV.x,colV.y,colV.z)
local state = self:Animate("Lamp1_"..i,self:GetPackedBool("lightsActive"..i) and 1 or 0,0,1,6,false)
self:ShowHideSmooth("lamp1_"..i,state,col)
activeLights = activeLights + state
end
for i=11,13 do
local col = self:GetNW2Vector("lampD"..i)
if self.LightsOverride[i].vec ~= col then
self.LightsOverride[i].vec = col
self.LightsOverride[i][4] = Color(col.x,col.y,col.z)
self:SetLightPower(i, false)
else
self:SetLightPower(i, activeLights > 0,activeLights/28)
end
end
self:Animate("brake_line", self:GetPackedRatio("BLPressure"), 0.14, 0.873, 64,12)--256,2)
self:Animate("train_line", self:GetPackedRatio("TLPressure"), 0.145, 0.876, 64,12)--4096,2)
self:Animate("brake_cylinder", self:GetPackedRatio("BCPressure"), 0.142, 0.874, 64,12)--64,12)
self:Animate("brake013", Cpos[self:GetPackedRatio("B013")] or 0, 0.03, 0.458, 256,24)
self:Animate("controller", (self:GetPackedRatio("Controller")+3)/6, 0.05, 0.33, 3,false)
self:Animate("kr_wrench", self:GetPackedRatio("KR",0),0.3+0.05,0.8-0.05, 3,false)
self:Animate("kru_wrench", self:GetPackedRatio("KRU",0),0.3+0.05,0.8-0.05, 3,false)
self:ShowHide("kr_wrench",self:GetNW2Int("Wrench",0) == 1)
self:ShowHide("kru_wrench",self:GetNW2Int("Wrench",0) == 2)
self:Animate("volt1", self:GetPackedRatio("BatteryVoltage"), 0.867,0.626,45,2)
self:Animate("voltmeter",self:GetPackedRatio("EnginesVoltage"),0.866, 0.621-0.008,nil,nil)
self:Animate("ampermeter1",self:GetPackedRatio("EnginesCurrent13"),0.859+0.003, 0.625-0.003,nil,nil)
self:Animate("ampermeter2",self:GetPackedRatio("EnginesCurrent24"),0.859+0.003, 0.625-0.003,nil,nil)
self:Animate("ampermeter3",self:GetPackedRatio("BatteryCurrent"),0.859+0.01, 0.625-0.01,nil,nil)
self:Animate("UAVALever", self:GetPackedBool("UAVA") and 1 or 0, 0,0.6, 128, 3,false)
self:Animate("PB",self:GetPackedBool("PB") and 1 or 0,0,0.2, 12,false)
self:Animate("stopkran", self:GetPackedBool("EmergencyBrakeValve") and 0 or 1, 0.25,0, 128, 3,false)
--self:Animate("Autodrive", self:GetPackedBool(132) and 1 or 0, 0,1, 16, false)
local otsek1 = self:Animate("door_otsek1",self:GetPackedBool("OtsekDoor1") and 1 or 0,0,0.25,4,0.5)
local otsek2 = self:Animate("door_otsek2",(self:GetPackedBool("OtsekDoor2") or self.CurrentCamera == 9) and 1 or 0,0,0.25,4,0.5)
self:HidePanel("PVZ",otsek2<=0)
self:HidePanel("BUV_MPS",otsek2<=0)
self:HidePanel("BUV_MVD",otsek2<=0)
self:HidePanel("BUV_MALP1",otsek2<=0)
self:HidePanel("BUV_MALP2",otsek2<=0)
self:HidePanel("BUV_MIV",otsek2<=0)
self:HidePanel("BUV_MGR",otsek2<=0)
self:HidePanel("BUV_MLUA",otsek2<=0)
self:HidePanel("BUV_MUVK1",otsek2<=0)
self:HidePanel("BUV_MUVK2",otsek2<=0)
self:HidePanel("RRI",otsek2<=0)
self:HidePanel("RRIScreen",otsek2<=0)
self:ShowHide("E_informator",otsek2>0)
local door1 = self:Animate("door1",self:GetPackedBool("RearDoor") and 1 or 0,0,0.25,4,0.5)
local door2 = self:Animate("door2",self:GetPackedBool("PassengerDoor") and 1 or 0,1,0.8,4,0.5)
local door3 = self:Animate("door3",self:GetPackedBool("CabinDoor") and 1 or 0,0,0.25,4,0.5)
if self.Door1 ~= (door1 > 0) then
self.Door1 = door1 > 0
self:PlayOnce("door1","bass",self.Door1 and 1 or 0)
end
if self.Door2 ~= (door2 < 1) then
self.Door2 = door2 < 1
self:PlayOnce("door2","bass",self.Door2 and 1 or 0)
end
if self.Door3 ~= (door3 > 0) then
self.Door3 = door3 > 0
self:PlayOnce("door3","bass",self.Door3 and 1 or 0)
end
if self.Otsek1 ~= (otsek1 > 0) then
self.Otsek1 = otsek1 > 0
if not self.Otsek1 then
self:PlayOnce("door_otsek1","bass",1)
end
end
if self.Otsek2 ~= (otsek2 > 0) then
self.Otsek2 = otsek2 > 0
if not self.Otsek2 then
self:PlayOnce("door_otsek2","bass",1)
end
end
self:SetLightPower(3,self.Otsek1 and self:GetPackedBool("AppLights"))
self:SetLightPower(4,self.Otsek2 and self:GetPackedBool("AppLights"))
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)
self:ShowHide("SPU_Speed1",self:GetPackedBool("Speedometer"))
self:ShowHide("SPU_Speed2",self:GetPackedBool("Speedometer"))
if self:GetPackedBool("Speedometer") then
local speed = self:GetPackedRatio("Speed")*100.0
if IsValid(self.ClientEnts["SPU_Speed1"])then self.ClientEnts["SPU_Speed1"]:SetSkin(math.floor(speed)%10) end
if IsValid(self.ClientEnts["SPU_Speed2"])then self.ClientEnts["SPU_Speed2"]:SetSkin(math.floor(speed/10)) end
end
--print(self.ClientProps["a0"])
-- Main switch
if self.LastGVValue ~= self:GetPackedBool("GV") then
self.ResetTime = CurTime()+1.5
self.LastGVValue = self:GetPackedBool("GV")
end
self:Animate("gv_wrench",self.LastGVValue and 1 or 0,0.5,0.9,128,1,false)
self:ShowHideSmooth("gv_wrench", CurTime() < self.ResetTime and 1 or 0.1)
--self:InitializeSounds()
if not self.DoorStates then self.DoorStates = {} end
if not self.DoorLoopStates then self.DoorLoopStates = {} end
for i=0,3 do
for k=0,1 do
local st = k==1 and "DoorL" or "DoorR"
local doorstate = self:GetPackedBool(st)
local id,sid = st..(i+1),"door"..i.."x"..k
local state = self:GetPackedRatio(id)
--print(state,self.DoorStates[state])
if (state ~= 1 and state ~= 0) ~= self.DoorStates[id] then
if doorstate and state < 1 or not doorstate and state > 0 then
else
if state > 0 then
self:PlayOnce(sid.."o","",1,math.Rand(0.8,1.2))
else
self:PlayOnce(sid.."c","",1,math.Rand(0.8,1.2))
end
end
self.DoorStates[id] = (state ~= 1 and state ~= 0)
end
if (state ~= 1 and state ~= 0) then
self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) + 2*self.DeltaTime,0,1)
else
self.DoorLoopStates[id] = math.Clamp((self.DoorLoopStates[id] or 0) - 6*self.DeltaTime,0,1)
end
self:SetSoundState(sid.."r",self.DoorLoopStates[id],0.8+self.DoorLoopStates[id]*0.2)
local n_l = "door"..i.."x"..k--.."a"
--local n_r = "door"..i.."x"..k.."b"
local dlo = 1
if self.Anims[n_l] then
dlo = math.abs(state-(self.Anims[n_l] and self.Anims[n_l].oldival or 0))
if dlo <= 0 and self.Anims[n_l].oldspeed then dlo = self.Anims[n_l].oldspeed/14 end
end
self:Animate(n_l,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0)
--self:Animate(n_r,state,0,1, dlo*14,false)--0.8 + (-0.2+0.4*math.random()),0)
end
end
local speed = self:GetPackedRatio("Speed", 0)*100
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
--[[local dT = self.DeltaTime
--self.TunnelCoeff = 0.8
--self.StreetCoeff = 0
local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1))
local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff)
--if self:EntIndex() == 3239 then LocalPlayer():ChatPrint(Format("T: %.2f, S: %.2f",rollingi,rollings)) end
-- Brake-related sounds
local dT = self.DeltaTime
local speed = self:GetPackedRatio("Speed")*100.0
local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1))
local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1))
local rol40p = Lerp((speed-25)/12,0.6,1)
local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1))
local rol40p = Lerp((speed-23)/50,0.6,1)
local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1))
local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2)
local rol80 = math.Clamp((speed-70)/5,0,1)
local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2)
self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1)
self:SetSoundState("rolling_10",rollingi*rol10,1)
self:SetSoundState("rolling_40",rollingi*rol40,rol40p)
self:SetSoundState("rolling_70",rollingi*rol70,rol70p)
self:SetSoundState("rolling_80",rollingi*rol80,rol80p)]]
local dT = self.DeltaTime
local rollingi = math.min(1,self.TunnelCoeff+math.Clamp((self.StreetCoeff-0.82)/0.3,0,1))
local rollings = math.max(self.TunnelCoeff*0.6,self.StreetCoeff)
local speed = self:GetPackedRatio("Speed")*100.0
local rol5 = math.Clamp(speed/1,0,1)*(1-math.Clamp((speed-3)/8,0,1))
local rol10 = math.Clamp(speed/12,0,1)*(1-math.Clamp((speed-25)/8,0,1))
local rol40p = Lerp((speed-25)/12,0.6,1)
--local rol40 = math.Clamp((speed-23)/8,0,1)*(1-math.Clamp((speed-55)/8,0,1))
--local rol40p = Lerp((speed-23)/50,0.6,1)
--local rol70 = math.Clamp((speed-50)/8,0,1)*(1-math.Clamp((speed-72)/5,0,1))
--local rol70p = Lerp(0.8+(speed-65)/25*0.2,0.8,1.2)
--local rol80 = math.Clamp((speed-70)/5,0,1)
--local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2)
self:SetSoundState("rolling_5",math.min(1,rollingi*(1-rollings)+rollings*0.8)*rol5,1)
self:SetSoundState("rolling_10",rollingi*rol10,1)
--self:SetSoundState("rolling_40",0*rollingi*rol40,rol40p)
--self:SetSoundState("rolling_70",0*rollingi*rol70,rol70p)
--self:SetSoundState("rolling_80",0*rollingi*rol80,rol80p)
local rol32 = math.Clamp((speed-25)/13,0,1)*(1-math.Clamp((speed-40)/10,0,1))
local rol32p = Lerp((speed-20)/50,0.8,1.2)
local rol68 = math.Clamp((speed-40)/10,0,1)*(1-math.Clamp((speed-50)/20,0,1))
local rol68p = Lerp(0.6+(speed-68)/26*0.2,0.6,1.4)
local rol75 = math.Clamp((speed-55)/20,0,1)
local rol75p = Lerp(0.8+(speed-75)/15*0.2,0.6,1.2)
self:SetSoundState("rolling_32",rollingi*rol32,rol32p)
self:SetSoundState("rolling_68",rollingi*rol68,rol68p)
self:SetSoundState("rolling_75",rollingi*rol75,rol75p)
--[[
local rol_motors = math.Clamp((speed-55)/10,0,1) ---ANY IDEAS?? MOTORS BACKGROUND SOUNDS AT HISPEED
local rol_motorsp = Lerp((speed-72)/25*0.2,0.85,1.1)
self:SetSoundState("rolling_motors",rol_motors,rol_motorsp) ---ANY IDEAS??--]]
local rol10 = math.Clamp(speed/15,0,1)*(1-math.Clamp((speed-18)/35,0,1))
local rol10p = Lerp((speed-15)/14,0.6,0.78)
local rol40 = math.Clamp((speed-18)/35,0,1)*(1-math.Clamp((speed-55)/40,0,1))
local rol40p = Lerp((speed-15)/66,0.6,1.3)
local rol70 = math.Clamp((speed-55)/20,0,1)--*(1-math.Clamp((speed-72)/5,0,1))
local rol70p = Lerp((speed-55)/27,0.78,1.15)
--local rol80 = math.Clamp((speed-70)/5,0,1)
--local rol80p = Lerp(0.8+(speed-72)/15*0.2,0.8,1.2)
self:SetSoundState("rolling_low" ,rol10*rollings,rol10p) --15
self:SetSoundState("rolling_medium2",rol40*rollings,rol40p) --57
--self:SetSoundState("rolling_medium1",0 or rol40*rollings,rol40p) --57
self:SetSoundState("rolling_high2" ,rol70*rollings,rol70p) --70
self.ReleasedPdT = math.Clamp(self.ReleasedPdT + 2*(-self:GetPackedRatio("BrakeCylinderPressure_dPdT",0)-self.ReleasedPdT)*dT,0,1)
local release1 = math.Clamp((self.ReleasedPdT-0.1)/0.8,0,1)^2
self:SetSoundState("release1",release1,1)
self:SetSoundState("release2",(math.Clamp(0.3-release1,0,0.3)/0.3)*(release1/0.3),1.0)
local parking_brake = self:GetPackedRatio("ParkingBrakePressure_dPdT",0)
local parking_brake_abs = math.Clamp(math.abs(parking_brake)-0.3,0,1)
if self.ParkingBrake1 ~= (parking_brake<1) then
self.ParkingBrake1 = (parking_brake<1)
if self.ParkingBrake1 then self:PlayOnce("parking_brake_en","bass",1,1) end
end
if self.ParkingBrake2 ~= (parking_brake>-0.8) then
self.ParkingBrake2 = (parking_brake>-0.8)
if self.ParkingBrake2 then self:PlayOnce("parking_brake_rel","bass",0.6,1) end
end
self:SetSoundState("parking_brake",parking_brake_abs,1)
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 emergencyValveEPK = self:GetPackedRatio("EmergencyValveEPK_dPdT",0)
self.EmergencyValveEPKRamp = math.Clamp(self.EmergencyValveEPKRamp + 1.0*((0.5*emergencyValveEPK)-self.EmergencyValveEPKRamp)*dT,0,1)
if self.EmergencyValveEPKRamp < 0.01 then self.EmergencyValveEPKRamp = 0 end
self:SetSoundState("epk_brake",self.EmergencyValveEPKRamp,1.0)
local emergencyBrakeValve = self:GetPackedRatio("EmergencyBrakeValve_dPdT", 0)
self.EmergencyBrakeValveRamp = math.Clamp(self.EmergencyBrakeValveRamp + (emergencyBrakeValve-self.EmergencyBrakeValveRamp)*dT*8,0,1)
self:SetSoundState("valve_brake",self.EmergencyBrakeValveRamp,0.8+math.min(0.4,self.EmergencyBrakeValveRamp*0.8))
local emergencyValve = self:GetPackedRatio("EmergencyValve_dPdT", 0)^0.4*1.2
self.EmergencyValveRamp = math.Clamp(self.EmergencyValveRamp + (emergencyValve-self.EmergencyValveRamp)*dT*16,0,1)
local emer_brake = math.Clamp((self.EmergencyValveRamp-0.9)/0.05,0,1)
local emer_brake2 = math.Clamp((self.EmergencyValveRamp-0.2)/0.4,0,1)*(1-math.Clamp((self.EmergencyValveRamp-0.9)/0.1,0,1))
self:SetSoundState("emer_brake",emer_brake,1)
self:SetSoundState("emer_brake2",emer_brake2,math.min(1,0.8+0.2*emer_brake2))
--self:SetSoundState("emer_brake",self.EmergencyValveRamp*0.8,1)
--self:SetSoundState("emer_brake",self.EmergencyValveRamp*0.8,1)
-- Compressor
self:SetSoundState("compressor",self:GetPackedBool("Compressor") and 0.6 or 0,1)
self:SetSoundState("compressor2",self:GetPackedBool("Compressor") and 0.8 or 0,1)
local vCstate = self:GetPackedRatio("M1")/2
if self.VentCab < vCstate then
self.VentCab = math.min(1,self.VentCab + dT/2.7)
elseif self.VentCab > vCstate then
self.VentCab = math.max(0,self.VentCab - dT/2.7)
end
self:SetSoundState("vent_cabl",math.Clamp(self.VentCab*2,0,1) ,1)
self:SetSoundState("vent_cabh",math.Clamp((self.VentCab-0.5)*2,0,1),1)
local state = self:GetPackedRatio("RNState")
local freq = math.max(1,self:GetNW2Int("RNFreq",0))
self.TISUVol = math.Clamp(self.TISUVol+(state-self.TISUVol)*dT*8,0,1)
if freq > 12 then
self.TISUFreq = 12
elseif freq > self.TISUFreq then
self.TISUFreq = math.min(self.TISUFreq+dT/2*12,12)
elseif freq < self.TISUFreq then
self.TISUFreq = freq--math.max(self.TISUFreq-dT/2*12,0)
end
local fq = 0.25+tbl[math.Round(self.TISUFreq)]*0.75
self:SetSoundState("tisu",self.TISUVol,fq)--]]
self:SetSoundState("ring",(self:GetPackedBool("Ring") or self:GetPackedBool("RingBZOS") and RealTime()%0.8<0.35) and 1 or 0,0.95)
self:SetSoundState("bpsn",self:GetPackedBool("BBE") and 1 or 0,1.0) --FIXME громкость по другому
local cabspeaker = self:GetPackedBool("AnnCab")
local work = self:GetPackedBool("AnnPlay")
local buzz = self:GetPackedBool("AnnBuzz") and self:GetNW2Int("AnnouncerBuzz",-1) > 0
for k in ipairs(self.AnnouncerPositions) do
self:SetSoundState("announcer_buzz"..k,(buzz and (k ~= 1 and work or k==1 and cabspeaker)) and 1 or 0,1)
end
for k,v in ipairs(self.AnnouncerPositions) do
if IsValid(self.Sounds["announcer"..k]) then
self.Sounds["announcer"..k]:SetVolume((k ~= 1 and work or k==1 and cabspeaker) and (v[3] or 1) or 0)
end
end
end
function ENT:OnAnnouncer(volume,id)
local cabspeaker = self:GetPackedBool("AnnCab")
local work = self:GetPackedBool("AnnPlay")
return (id ~= 1 and work or id == 1 and cabspeaker) and volume or 0
end
function ENT:Draw()
self.BaseClass.Draw(self)
end
function ENT:DrawPost()
self.RTMaterial:SetTexture("$basetexture", self.RRIScreen)
self:DrawOnPanel("RRIScreen",function(...)
surface.SetMaterial(self.RTMaterial)
surface.SetDrawColor(255,255,255)
surface.DrawTexturedRectRotated(64,64,128,128,0)
end)
end
function ENT:OnButtonPressed(button)
end
function ENT:OnPlay(soundid,location,range,pitch)
if location == "stop" then
if IsValid(self.Sounds[soundid]) then
self.Sounds[soundid]:Pause()
self.Sounds[soundid]:SetTime(0)
end
return
end
if location == "bass" then
if soundid == "K1" then
local id = range > 0 and "k1_on" or "k1_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["k1_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "K2" then
local id = range > 0 and "k2_on" or "k2_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["k2_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "K3" then
local id = range > 0 and "k3_on" or "k3_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["k3_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "KMR1" then
local id = range > 0 and "kmr1_on" or "kmr1_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["kmr1_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "KMR2" then
local id = range > 0 and "kmr2_on" or "kmr2_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["kmr2_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "brake" then
self:PlayOnce("brake_f",location,range,pitch)
self:PlayOnce("brake_b",location,range,pitch)
return
end
if soundid == "QF1" then
local id = range > 0 and "qf1_on" or "qf1_off"
local speed = self:GetPackedRatio("Speed")
self.SoundPositions["qf1_on"][1] = 440-Lerp(speed/0.1,0,330)
return id,location,1-Lerp(speed/10,0.2,0.8),pitch
end
if soundid == "UAVAC" then
return "uava_reset",location,range,pitch
end
end
return soundid,location,range,pitch
end
Metrostroi.GenerateClientProps()