Visa ett inlägg
Gammal 2020-12-27, 16:14   #26
ADDE
Medlem
 
Reg.datum: Feb 2012
Ort: Södermalm
Inlägg: 1 361
Skicka ett meddelande via MSN till ADDE Skicka ett meddelande via Skype™ till ADDE
Standard Jag gjorde det igen!

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...
__________________
Mvh SummerADDE

Alla mina projekt till Train Simulator Classic är nedlagda. Jag kommer härmed fokusera på att skapa rutter och innehåll till Train Sim World i fortsättningen.
ADDE besöker inte forumet just nu   Svara med citat