Bangårdssignalerna är porgrammerade att tågväg ovanför länk 6 (som KMW beskrev användes för bangårdslänk) ignorerade om det fanns tåg på spårsträckan dessa länkar ledde till.
Well, nu kan man styra detta också genom att bocka i "Approach control". Är detta ibockat så visar signalen KÖR40 oavsett om det står ett tåg på nästkommande blocksträcka eller ej.
Observera att du kan inte bocka i både "Limited aspect" eller "Approach control" i TS, utan endast välja emellan dem. Då signalen visade Kör40 även i det gamla scriptet så var det detta jag tog efter mig i det nuvarande.
Följande förändringar gjorde jag i SE H5 Signal.lua för att få till effekten:
Vid BASE Initialise (ungefär rad 209) så bytte jag ut
Kod:
-- Initialise global variables
gLinkCount = Call( "GetLinkCount" ) -- number of links this signal has
gLinkState = {} -- state of line beyond this link
gYardEntry = {} -- is this link going inside a yard?
gDissabled = {} -- is this link dissabled?
gOccupationTable = {} -- how many trains are in this part of our block?
for link = 0, gLinkCount - 1 do
gLinkState[link] = STATE_GO
gYardEntry[link] = (link > 6) -- links without numbers (>6) are yard entry
gDissabled[link] = false
gOccupationTable[link] = 0
end
Call("BeginUpdate")
end
Mot:
Kod:
-- Initialise global variables
gLinkCount = Call( "GetLinkCount" ) -- number of links this signal has
gLinkState = {} -- state of line beyond this link
gYardEntry = {} -- is this link going inside a yard?
gDissabled = {} -- is this link dissabled?
gOccupationTable = {} -- how many trains are in this part of our block?
for link = 0, gLinkCount - 1 do
gLinkState[link] = STATE_GO
gYardEntry[link] = (link == -1) -- links not checked as "Approac control" are not yard entry
gDissabled[link] = false
gOccupationTable[link] = 0
end
Call("BeginUpdate")
end
Att jag satte -1 är för att visa att ingen länk används, på så vis inaktiveras funktionen gYardEntry helt o hållet. Detta förekommer i andra signalscripts.
Nere vid SET SIGNAL STATE (rad 404), ungefär här:
Kod:
--------------------------------------------------------------------------------------
-- SET SIGNAL STATE
-- Figures out what state to show and messages to send
function SetSignalState()
local newSignalState = STATE_GO
if gBlockSignal then
if gOccupationTable[0] > 0 and gGoingForward then
newSignalState = STATE_STOP
elseif gOccupationTable[0] > 0 or gLinkState[0] == STATE_BLOCKED then
newSignalState = STATE_BLOCKED
end
så lade jag till följande:
Kod:
elseif Call ( "GetLinkApproachControl", gConnectedLink ) ~= 0 then
-- yard entry, signal slow
for link = 0, gLinkCount - 1 do
gYardEntry[link] = (link == gConnectedLink)
end
newSignalState = STATE_SLOW
Om signalen går till en länk som har Approach control ibockat (GetLinkApproachControl är inte lika med 0) så ändras gYardEntry till att gälla den länk som nu är förinställd. Därmed så körs scriptet som ignorerar om det står ett tåg i bangården. Signalen ställs sedan in på Kör40 precis som tidigare. (ja, jag testade att lägga om till en annan tågväg med ett tåg ivägen, och då visar signalen rött.)
Att placera den där har nog att göra med ordningen om hur koden läses in, lägg inte det sist för då kommer de andra villkoren läsas in före och signalen slås om till rött istället.
(OM villkor 1 uppfylls, gör detta ANNARS OM villkor 2 uppfylls gör detta, ANNARS gör detta SLUT.)
Jag är inte klar, jag ska se om man kan göra signaler flexiblare genom att skriva in ett tecken i "Character"-fältet (ser ut som ett A). På så vis kan man konfigurera olika signalbilder för varje tågväg (t.ex. Kör40, kort tågväg t.ex.)
Och inte bara det. sen kommer dvärgsignalerna, hehe...