おいちゃんが2車線の場合の踏切動作を紹介していたので、それに合わせてコチラも更に改造しました(^^)/
踏切テスト
LAYOUT
crossarea01 = 0
crossing79 = vrmapi.LAYOUT().GetCrossing(79)
crossing80 = vrmapi.LAYOUT().GetCrossing(80)
crossing81 = vrmapi.LAYOUT().GetCrossing(81)
crossing82 = vrmapi.LAYOUT().GetCrossing(82)
crossing83 = vrmapi.LAYOUT().GetCrossing(83)
crossing84 = vrmapi.LAYOUT().GetCrossing(84)
CROSSINGBAR_IN_LEFT
CROSSINGBAR_IN_RIGHT
CROSSINGBAR_OUT_LEFT
CROSSINGBAR_OUT_RIGHT
if ev == 'init':
obj.SetCrossingTime(3.0)
SENSOR_IN_IN
if ev == 'init':
obj.SetSNSMode(0)
elif ev == 'after':
if param['eventUID'] == 100:
crossing81.SetCrossingStatus(2)
crossing83.SetCrossingStatus(2)
if param['eventUID'] == 200:
crossing82.SetCrossingStatus(2)
crossing84.SetCrossingStatus(2)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 + 1
vrmapi.LOG(crossarea01)
crossing79.IncAutoSignStatus(0)
crossing80.IncAutoSignStatus(1)
crossing79.SetCrossingStatus(2)
crossing80.SetCrossingStatus(2)
obj.SetEventAfter(3,100)
obj.SetEventAfter(6,200)
SENSOR_IN_OUT
if ev == 'init':
obj.SetSNSMode(1)
elif ev == 'after':
if param['eventUID'] == 101:
crossing81.SetCrossingStatus(1)
crossing83.SetCrossingStatus(1)
crossing82.SetCrossingStatus(1)
crossing84.SetCrossingStatus(1)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 - 1
vrmapi.LOG(crossarea01)
crossing79.DecAutoSignStatus(0)
crossing80.DecAutoSignStatus(1)
if crossarea01 == 0:
crossing79.SetCrossingStatus(1)
crossing80.SetCrossingStatus(1)
obj.SetEventAfter(3,101)
SENSOR_OUT_IN
if ev == 'init':
obj.SetSNSMode(0)
elif ev == 'after':
if param['eventUID'] == 102:
crossing81.SetCrossingStatus(2)
crossing83.SetCrossingStatus(2)
if param['eventUID'] == 202:
crossing82.SetCrossingStatus(2)
crossing84.SetCrossingStatus(2)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 + 1
vrmapi.LOG(crossarea01)
crossing79.IncAutoSignStatus(1)
crossing80.IncAutoSignStatus(0)
crossing79.SetCrossingStatus(2)
crossing80.SetCrossingStatus(2)
obj.SetEventAfter(3,102)
obj.SetEventAfter(6,202)
SENSOR_OUT_OUT
if ev == 'init':
obj.SetSNSMode(1)
elif ev == 'after':
if param['eventUID'] == 103:
crossing81.SetCrossingStatus(1)
crossing83.SetCrossingStatus(1)
crossing82.SetCrossingStatus(1)
crossing84.SetCrossingStatus(1)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 - 1
vrmapi.LOG(crossarea01)
crossing79.DecAutoSignStatus(1)
crossing80.DecAutoSignStatus(0)
if crossarea01 == 0:
crossing79.SetCrossingStatus(1)
crossing80.SetCrossingStatus(1)
obj.SetEventAfter(3,103)