Skip to content

Commit f5e66db

Browse files
committed
Added OtklAVU 703, UKS Em509
1 parent f28a976 commit f5e66db

File tree

21 files changed

+189
-63
lines changed

21 files changed

+189
-63
lines changed

lua/entities/gmod_subway_81-703/cl_init.lua

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,29 @@ ENT.ButtonMap["AVMain"] = {
264264
}
265265
}
266266

267+
ENT.ButtonMap["AVU"] = {
268+
pos = Vector(456.9,-18,35.5),
269+
ang = Angle(0,-95.5,90),
270+
width = 95,
271+
height = 85,
272+
scale = 0.0625,
273+
hideseat = 0.2,
274+
275+
buttons = {
276+
{ ID = "OtklAVUToggle", x=48, y=51, radius=20, tooltip="", model = {
277+
model = "models/metrostroi_train/81-710/ezh3_tumbler_t1.mdl",ang = 180,z=-2,
278+
var="OtklAVU",speed=16,
279+
plomb = {model = "models/metrostroi_train/81/plomb.mdl",ang=270,x=-1,y=24,z=-2,var="OtklAVUPl", ID="OtklAVUPl",},
280+
sndvol = 1, snd = function(val) return val and "switchbl_on" or "switchbl_off" end,
281+
sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0),
282+
}},
283+
{ID = "!AVULight", x=69, y=51, radius=10, tooltip="", model = {
284+
model = "models/metrostroi_train/81-710/ezh3_slc77.mdl", skin = 3, z = -4,
285+
lamp = {model = "models/metrostroi_train/81-717/buttons/slc_77_lamp.mdl",ang=62,x=-0.3,y=-0.3,z=20.6,var="AVU",color=Color(210,170,255),},
286+
sprite = {bright=0.2,size=.5,scale=0.03,z=20,color=Color(210,170,255),},
287+
}},
288+
}
289+
}
267290

268291
---AV1 Panel
269292
ENT.ButtonMap["AV1"] = {
@@ -613,6 +636,23 @@ ENT.ButtonMap["UAVAPanel"] = {
613636
}
614637
}
615638

639+
ENT.ButtonMap["UKSPanel"] = {
640+
pos = Vector(397.9,-25,4),
641+
ang = Angle(90,0,0),
642+
width = 100,
643+
height = 100,
644+
scale = 0.0625,
645+
646+
buttons = {
647+
{ID = "UKSDisconnectToggle",x=0, y=0, w=100, h=100, tooltip="", model = {
648+
model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",z=15,ang=180,
649+
var="UKSDisconnect",speed=0.5,vmin=1,vmax=0.87,
650+
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),
651+
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=30,x=28,y=-18,var="UKSDisconnectPl",ID="UKSDisconnectPl",z=-15,},
652+
}},
653+
}
654+
}
655+
616656
for i=0,3 do
617657
ENT.ClientProps["TrainNumberL"..i] = {
618658
model = "models/metrostroi_train/common/bort_numbers.mdl",

lua/entities/gmod_subway_81-703/init.lua

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ ENT.SyncTable = {
1212
"DriverValveBLDisconnect","DriverValveTLDisconnect","EmergencyBrakeValve",
1313
"GV",
1414
"R_Program1","R_Program2","UAVA","UAVAC",
15+
"OtklAVU",
16+
"UKSDisconnect",
1517
}
1618
ENT.SyncFunctions = {
1719
""
@@ -22,8 +24,9 @@ function ENT:Initialize()
2224
self.Plombs = {
2325
--RST = true,
2426
Init = true,
25-
--OtklAVU = true,
27+
OtklAVU = true,
2628
UAVA = true,
29+
UKSDisconnect = true,
2730
}
2831
-- Set model and initialize
2932
self:SetModel("models/metrostroi_train/81-703/81-703.mdl")
@@ -272,6 +275,7 @@ function ENT:Think()
272275
self:SetPackedBool("VPR",Panel.VPR > 0)
273276
self:SetPackedBool("Compressor",Pneumatic.Compressor == 1.0)
274277
self:SetPackedBool("RK",(self.RheostatController.Velocity ~= 0.0))
278+
self:SetPackedBool("AVU",Panel.AVU > 0.5)
275279
self:SetPackedBool("Ring",Panel.Ring > 0.5)
276280

277281
self:SetPackedBool("RearDoor",self.RearDoor)

lua/entities/gmod_subway_81-703/shared.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ function ENT:InitializeSounds()
9090

9191
self.SoundNames["avu_off"] = "subway_trains/717/relays/lsd_2.mp3"
9292
self.SoundNames["avu_on"] = "subway_trains/717/relays/new/kd_on.mp3"
93-
self.SoundPositions["avu_on"] = {60,1e9, Vector(400,-40,-45),0.5}
94-
self.SoundPositions["avu_off"] = {60,1e9, Vector(400,-40,-45),0.5}
93+
self.SoundPositions["avu_on"] = {60,1e9, Vector(453,-40,-45),0.5}
94+
self.SoundPositions["avu_off"] = {60,1e9, Vector(453,-40,-45),0.5}
9595
--Подвагонка
9696
self.SoundNames["lk2_on"] = "subway_trains/717/pneumo/lk1_on.mp3"
9797
self.SoundNames["lk2_off"] = "subway_trains/717/pneumo/lk2_off.mp3"
@@ -560,6 +560,7 @@ function ENT:InitializeSystems()
560560
self:LoadSystem("LastStation","81_71_LastStation","710","door1")
561561

562562
self:LoadSystem("ALSCoil")
563+
self:LoadSystem("UKS","UKS_20M")
563564
end
564565
function ENT:PostInitializeSystems()
565566
self.Electric:TriggerInput("Type",self.Electric.E)

lua/entities/gmod_subway_em509/cl_init.lua

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -918,8 +918,22 @@ ENT.ButtonMap["UAVAPanel"] = {
918918
sndmin=30, sndmax = 1e3, sndang = Angle(-90,0,0),
919919
}},
920920
{ID = "UAVACToggle",x=60, y=0, w=120, h=150, tooltip="",var="UAVAC",states={"Train.Buttons.UAVAOff","Train.Buttons.UAVAOn"}},
921-
{ID = "UKSDisconnectToggle",x=60, y=150, w=120, h=50, tooltip="",var="UKSDisconnect",states={"Train.Buttons.Closed","Train.Buttons.Opened"}, model = {
922-
plomb = {var="UAVAPl", ID="UAVAPl",},
921+
}
922+
}
923+
924+
ENT.ButtonMap["UKSPanel"] = {
925+
pos = Vector(403.1,-25,0),
926+
ang = Angle(90,0,0),
927+
width = 100,
928+
height = 100,
929+
scale = 0.0625,
930+
931+
buttons = {
932+
{ID = "UKSDisconnectToggle",x=0, y=0, w=100, h=100, tooltip="", model = {
933+
model = "models/metrostroi_train/81-717/buttons/breaker_common001.mdl",z=15,ang=180,
934+
var="UKSDisconnect",speed=0.5,vmin=1,vmax=0.87,
935+
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),
936+
plomb = {model = "models/metrostroi_train/81/plomb_b.mdl",ang=30,x=28,y=-18,var="UKSDisconnectPl",ID="UKSDisconnectPl",z=-15,},
923937
}},
924938
}
925939
}

lua/entities/gmod_subway_em509/shared.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ function ENT:InitializeSystems()
587587
self:LoadSystem("IGLA_PCBK")
588588

589589
self:LoadSystem("ALSCoil")
590-
self:LoadSystem("UKS","81_509_UKS")
590+
self:LoadSystem("UKS","UKS_20M")
591591
end
592592
function ENT:PostInitializeSystems()
593593
self.Electric:TriggerInput("Type",self.Electric.Em)

lua/metrostroi/systems/sys_81_509_uks.lua

Lines changed: 0 additions & 41 deletions
This file was deleted.

lua/metrostroi/systems/sys_81_703_electric.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
103103
Train:WriteTrainWire(4,S["10AK"]*KV["U2-4"])
104104
Train:WriteTrainWire(5,S["10AK"]*KV["U2-5"]+KRU["5/3-ZM31"]*-10*(1-Train.KRR.Value)+BO*KRU["14/1-B3"]*Train.KRR.Value)
105105
--Panel.Sequence = T[2]
106-
Panel.UKS = BO*Train.UKS.UKSEngaged
107-
Panel.UKSb = BO*Train.UKS.UKSTriggered
106+
Panel.UKS = Train.UKS.UKSLamp
107+
Panel.UKSb = Train.UKS.UKSTriggered
108108
if self.RRI> 0 then
109109
local RRI_VV = Train.RRI_VV
110110
RRI_VV.Power = BO*Train["50V"].Value*Train.RRIEnable.Value
@@ -132,18 +132,18 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
132132
Panel.AnnouncerPlaying = T[13]
133133
Train:WriteTrainWire(24,S["U2"]*Train.KU8.Value)
134134
if isE then
135-
Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"])
135+
Train:WriteTrainWire(14,BO*KV["10-14B"]*KV["14-14B"]*(1-Train.UKS.UKSEmerTriggered))
136136
Train:WriteTrainWire(1,S["10AK"]*Train.R1_5.Value)
137137
Train:WriteTrainWire(2,S["U2"]*KV["U2-2"])
138138
Train:WriteTrainWire(3,S["U2"]*KV["U2-3"])
139139
Train:WriteTrainWire(25,S["U2"]*KV["U2-25"])
140140
Train:WriteTrainWire(20,S["U2"]*KV["U2-20"])
141141
Train:WriteTrainWire(6,S["U2"]*KV["U2-6"])
142-
Train.RV2:TriggerInput("Set",S["10AK"]*KV["10AK-7A"])
142+
Train.RV2:TriggerInput("Set",S["10AK"]*KV["10AK-7A"]*(Train.AVU.Value+Train.OtklAVU.Value)*(1-Train.UKS.UKSTriggered))
143143
Train.R1_5:TriggerInput("Set",S["10AK"]*Train.RV2.Value)
144144
Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value)
145145

146-
Train:WriteTrainWire(8,BO*KV["10-8"])
146+
Train:WriteTrainWire(8,BO*(KV["10-8"]+KV["10-14B"]*Train.UKS.UKSEmerTriggered))
147147
elseif isEzh then
148148
S["10a"] = BO*KV["10a-8"]
149149
ARS.ALS = S["10a"]*Train.ALS.Value*RC
@@ -199,7 +199,7 @@ function TRAIN_SYSTEM:SolveAllInternalCircuits(Train)
199199
Train.RV2:TriggerInput("Set",S["10AK"]*KV["33-10AK"]*(Train.AVU.Value+Train.OtklAVU.Value)*Train.UAVAC.Value*(1-Train.UKS.UKSTriggered))
200200
Train.R1_5:TriggerInput("Set",S["10AK"]*Train.RV2.Value)
201201
Train:WriteTrainWire(17,S["10AK"]*Train.KU9.Value)
202-
Train:WriteTrainWire(8,BO*KV["10-8"])
202+
Train:WriteTrainWire(8,BO*(KV["10-8"]+KV["10a-8"]*Train.UKS.UKSEmerTriggered))
203203
Train:WriteTrainWire(44,S["10AK"]*Train.UV1.Value)
204204
end
205205

lua/metrostroi/systems/sys_81_703_panel.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ function TRAIN_SYSTEM:Initialize()
3737

3838
self.Train:LoadSystem("RCU","Relay","Switch", {bass = true})
3939

40+
self.Train:LoadSystem("OtklAVU","Relay","Switch", {bass = true})
41+
4042
self.Train:LoadSystem("R_UNch","Relay","Switch", {bass = true})
4143
self.Train:LoadSystem("R_ZS","Relay","Switch", {bass = true})
4244
self.Train:LoadSystem("R_G","Relay","Switch", {bass = true})
@@ -67,6 +69,7 @@ function TRAIN_SYSTEM:Initialize()
6769
self.PanelLights = 0
6870

6971
self.Ring = 0
72+
self.AVU = 0
7073

7174
self.VPR = 0
7275

@@ -81,5 +84,5 @@ function TRAIN_SYSTEM:ClientInitialize()
8184
end
8285

8386
function TRAIN_SYSTEM:Outputs()
84-
return { "V1","GRP","RRP","TW18","SD","PP1","PP6","SDW","BrY","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","CBKIPower","PCBKPower"}
87+
return { "V1","GRP","RRP","TW18","SD","PP1","PP6","SDW","BrY","Headlights1","Headlights2","RedLights","EmergencyLights2","EmergencyLights1","MainLights1","MainLights2","PanelLights","AnnouncerPlaying","VPR","Ring","AVU","CBKIPower","PCBKPower"}
8588
end

lua/metrostroi/systems/sys_81_703_pneumatic.lua

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,6 @@ function TRAIN_SYSTEM:Think(dT)
383383
self.EmergencyValveDisable=false
384384
self.EmergencyValve=false
385385
end
386-
if Train.UKS and Train.UKS.UKSEmerTriggered > 0 and Train.UKSDisconnect.Value > 0 then
387-
self.EmergencyValve=true
388-
end
389386

390387
self.OldBrakeLinePressure = self.BrakeLinePressure
391388
if self.EmergencyValve then
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
--------------------------------------------------------------------------------
2+
-- UKS system
3+
--------------------------------------------------------------------------------
4+
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
5+
-- Contains proprietary code. See license.txt for additional information.
6+
--------------------------------------------------------------------------------
7+
Metrostroi.DefineSystem("UKS_20M")
8+
9+
function TRAIN_SYSTEM:Initialize(parameters)
10+
self.UKSLamp = 0
11+
self.UKSTriggered = 0
12+
self.UKSEmerTriggered = 0
13+
self.UKSEmerTriggeredX = false
14+
self.UKSEmerTriggeredT = false
15+
self.UKSEmerTriggeredV = false
16+
self.UKSEmerTriggeredReal = false
17+
self.Train:LoadSystem("UKSDisconnect","Relay","Switch", {bass = true,normally_closed = true})
18+
end
19+
20+
function TRAIN_SYSTEM:Outputs()
21+
return { "UKSLamp", "UKSTriggered", "UKSEmerTriggered" }
22+
end
23+
24+
function TRAIN_SYSTEM:Think(dT)
25+
local Train = self.Train
26+
local KV = Train.KV
27+
if Train.Panel.V1*(KV["10a-8"] or KV["10-14B"])*Train.UAVA.Value*Train.UKSDisconnect.Value > 0 then
28+
local speed = Train.ALSCoil.Speed*Train.ALSCoil.SpeedSign
29+
local KVX = KV["33-10AK"] or KV["10AK-7A"]
30+
local KVTr = KV["U2-6"]
31+
if speed <= -1 or KV["U2-4"] == 1 then
32+
self.UKSEmerTriggered = 1
33+
self.UKSTriggered = 1
34+
self.UKSLamp = 1
35+
elseif speed > 18 then
36+
self.UKSLamp = 1
37+
self.UKSTriggered = 1
38+
if speed > 20 and self.UKSEmerTriggered ~= 1 then
39+
self.UKSEmerTriggered = 1
40+
self.UKSEmerTriggeredReal = true
41+
self.UKSEmerTriggeredX = KVX > 0
42+
self.UKSEmerTriggeredT = KVTr > 0
43+
self.UKSEmerTriggeredV = false
44+
end
45+
elseif speed <= 1 then
46+
if self.UKSEmerTriggered > 0 and KVX > 0 then
47+
if not self.Starting then self.Starting = CurTime() end
48+
elseif KVX == 0 and self.UKSEmerTriggered == 0 then
49+
self.Starting = nil
50+
end
51+
if self.Starting then
52+
if CurTime()-self.Starting > 5 then self.UKSEmerTriggered = 1 self.UKSTriggered = 1 end
53+
end
54+
if self.UKSTriggered > 0 then
55+
self.UKSTriggered = KVX
56+
self.UKSEmerTriggered = KVX
57+
else
58+
self.UKSEmerTriggered = 1-KVX
59+
self.UKSEmerTriggeredReal = false
60+
end
61+
self.UKSLamp = self.UKSEmerTriggered
62+
elseif speed <= 18 and self.UKSEmerTriggered > 0 and self.UKSEmerTriggeredReal and not self.UKSEmerTriggeredX then
63+
self.UKSLamp = 0
64+
if KVTr+KVX == 0 then self.UKSEmerTriggeredV = true end
65+
if self.UKSEmerTriggeredV then
66+
if self.UKSEmerTriggeredT then
67+
self.UKSEmerTriggered = 1-KVTr
68+
else
69+
self.UKSEmerTriggered = 1-KVX
70+
end
71+
self.UKSEmerTriggeredReal = self.UKSEmerTriggered > 0
72+
self.UKSTriggered = self.UKSEmerTriggered
73+
end
74+
elseif speed <= 16 and self.UKSTriggered > 0 and self.UKSEmerTriggered == 0 then
75+
self.UKSTriggered = KVX
76+
self.UKSEmerTriggered = KVX
77+
self.UKSLamp = KVX
78+
else
79+
if self.Starting then
80+
if CurTime()-self.Starting > 5 then self.UKSEmerTriggered = 1 self.UKSTriggered = 1 self.Starting = nil elseif speed > 3 then self.Starting = nil end
81+
end
82+
end
83+
else
84+
self.UKSTriggered = 0
85+
self.UKSEmerTriggered = 0
86+
self.UKSLamp = 0
87+
end
88+
end

0 commit comments

Comments
 (0)