Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Hier vind je alle onderwerpen over scripting voor Train Simulator zoals LUA.
Plaats reactie
Gebruikersavatar
RemkoH
Beheerder
Berichten: 174
Lid geworden op: 04 apr 2020, 12:00
Gegeven waarderingen: 12 keren
Ontvangen waarderingen: 75 keren

Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door RemkoH »

Destinationsigns on ChrisTrains (AI) trains with LUA-scripting (part 3)

Afbeelding Afbeelding
In deel 1 heb je kunnen lezen hoe koersborden in te stellen waren op diverse ChrisTrains treinen, voor zowel de speler als AI.
Dit had echter lag tot gevolg tijdens het rijden. Veel lag wanneer het op veel treinen werd toegepast.
NielsB_, de bouwer van route Apeldoorn – Deventer / Winterswijk, stuitte in een DTG handleiding van een heel andere trein op de oplossing!
Deze tutorial zal de nieuwe manier van scripten uitleggen.
In part 1 you've read how to set destinationsigns on several ChrisTrains trains, for the player as well as AI.
But this caused lag when driving. A lot of lag when applied to manu trains.
NielsB_, builder of route Apeldoorn – Deventer / Winterswijk, stumbled on the solution in a manual by DTG of a completely different train!
This tutorial will explain the new way to script.


Voor meer informatie over hoe en wat met LUA scripting verwijs ik je graag naar elders.
Matt Paddlesden heeft een uitstekend filmpje op YouTube en daaruit gemaakte blogs voor degene die zich willen verdiepen in de beginselen van LUA scripting in scenario's.
For more information about the basics of LUA scripting I'd like to point you to somewhere else.
Matt Paddlesden has an excelent video on YouTube and created blogs from that for everyone who want to learn the basics of LUA scripting in scenarios.
Ik beperkt me hier alleen specifiek op de LUA scripting voor de koersborden. Here I'll confine myself only to LUA scripting for the destinationsigns.


Deze tutorial is toe te toepassing op de volgende ChrisTrains treinen: This tutorial can be applied to these ChrisTrains trains:
  • DD-AR (ook in combinatie met een 1700 loc!)
  • DDZ
  • DH1/2
  • DM90
  • GTW
  • ICM(m)
  • (V)IRM
  • MAT64
  • SGM(m)
  • SLT
Om in het scenario de bestemming op de koersborden te plaatsen moeten events worden aangemaakt. To set the destination on the destinationsigns in the scenario events need to be created.
Plaats in ieder LUA script voor het eerste event dit: Place this in front of your first event in every LUA script:

Code: Selecteer alles

function OnEvent(event)
  _G["OnEvent" .. event]();
end
Maak vervolgens een event aan: Then create an event:

Code: Selecteer alles

function OnEvent[EventName]()
  SysCall ( "[train ID]:SetControlValue", "DestinationBoards", 0, [destination ID] );
  SysCall ( "[train ID]:SetControlTargetValue", "DestinationBoards", 0, [destination ID] );
end
Wat de destination ID is kan uit de handleiding van de trein gehaald worden.
In alle handleidingen staan de mogelijke bestemmingen genoemd op volgorde.
De eerste bestemming is ID 1 en zo tel je door. Geen bestemming is ID 0.
The destination ID can be obtained from the train's manual.
All manuals list every possible destination in order.
The first destinatio is ID 1 and so on. No destination is ID 0.
Gebruik als train ID de ID van de eerste bak.
Met een DD-AR stam en 1700 loc, pak dan de ID van de DD-AR stuurstand.
Alle andere bakken met een koersbord zullen vanzelf van dezelfde bestemming worden voorzien.
Dit geldt ook wanneer er met meerdere gekoppelde treinen wordt gereden.
Use as train ID the ID of the first carriage of the train.
With a DD-AR and 1700 loco consist you use the ID of the DD-AR cab car.
All other carriages with destinationsigns in the consist will display the same destination automatically.
This goes for driving with multiple units too.


Roep het event op in de scenario editor om de koersborden van de opgegeven trein te wijzigen naar de opgegeven bestemming. Call the event in the scenario editor to change the destinationsigns of the given train to it's destination.


Afbeelding

Om de koersborden later in het scenario te wijzigen maak je een nieuw event aan die je in de scenario editor oproept op het moment dat je ze wil wijzigen. To change the destinationsigns later on in the scenario you need to create a new event which you call in the scenario editor at the time you want to change them.


Voorbeeldscript met een DDZ en Mat64: Examplescript with a DDZ and Mat64:

Code: Selecteer alles

-- Train ID's
TrainA_id = 12345 -- DDZ first carriage
TrainB_id = 09876 -- Mat64 first carriage

-- Destination ID's
BLANCO = 0  -- Blanco

DDZ_AH  = 9  -- Arnhem
DDZ_ZL  = 48 -- Zwolle

MAT64_N_I = 1  -- Niet Instappen
MAT64_DV  = 16 -- Deventer

-- Events
function OnEvent(event)
  _G["OnEvent" .. event]();
end

function OnEventTrainAdest1()
  SysCall ( TrainA_id .. ":SetControlValue", "DestinationBoards", 0, DDZ_AH );
  SysCall ( TrainA_id .. ":SetControlTargetValue", "DestinationBoards", 0, DDZ_AH );
end

function OnEventTrainAdest2()
  SysCall ( TrainA_id .. ":SetControlValue", "DestinationBoards", 0, DDZ_ZL );
  SysCall ( TrainA_id .. ":SetControlTargetValue", "DestinationBoards", 0, DDZ_ZL );
end

function OnEventTrainBdest1()
  SysCall ( TrainB_id .. ":SetControlValue", "DestinationBoards", 0, MAT64_DV );
  SysCall ( TrainB_id .. ":SetControlTargetValue", "DestinationBoards", 0, MAT64_DV );
end

function OnEventTrainBdest2()
  SysCall ( TrainB_id .. ":SetControlValue", "DestinationBoards", 0, MAT64_N_I );
  SysCall ( TrainB_id .. ":SetControlTargetValue", "DestinationBoards", 0, MAT64_N_I );
end
In het scenario worden de koersborden van de DDZ (TrainA) eerst ingesteld op "Arnhem" en staat op de Mat64 (TrainB) "Deventer". In the scenario the destinationsigns of the DDZ (TrainA) will first display "Arnhem" and on the Mat64 (TrainB) they'll display "Deventer".
Later in het scenario wordt voor iedere trein een 2e event aangeroepen. Later on in the scenario a 2nd event will be called for both trains.
Roep in de editor event "TrainAdest2" op om de koersborden van de DDZ in te stellen op "Zwolle".
Event "TrainBdest2" stelt de Mat64 in op "Niet instappen".
Call event "TrainAdest2" in the editor to change the destinationsigns of the DDZ to "Zwolle".
Event "TrainBdest2" will change it into "Niet instappen" on the Mat64.


Afbeelding


Klik hier voor deel 2 van deze tutorial over andere treinen van ChrisTrains. Click here for part 2 of this tutorial about other ChrisTrains trains.
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:




Gebruikersavatar
RemkoH
Beheerder
Berichten: 174
Lid geworden op: 04 apr 2020, 12:00
Gegeven waarderingen: 12 keren
Ontvangen waarderingen: 75 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door RemkoH »

Afbeelding Afbeelding
Om het nóg eenvoudiger te maken kan dit gebruikt worden: To make it even more simple you can use this:

Code: Selecteer alles

-- Train ID's
TrainA_id = 12345 -- DDZ first carriage
TrainB_id = 09876 -- Mat64 first carriage

-- Destination ID's
BLANCO = 0  -- Blanco

DDZ_AH  = 9  -- Arnhem
DDZ_ZL  = 48 -- Zwolle

MAT64_N_I = 1  -- Niet Instappen
MAT64_DV  = 16 -- Deventer

-- Events
function OnEvent(event)
  _G["OnEvent" .. event]();
end

function SetDestination(TrainID, Destination)
  SysCall ( TrainID .. ":SetControlValue", "DestinationBoards", 0, Destination );
  SysCall ( TrainID .. ":SetControlTargetValue", "DestinationBoards", 0, Destination );
end

function OnEventTrainAdest1()
  SetDestination ( TrainA_id, DDZ_AH );
end

function OnEventTrainAdest2()
  SetDestination ( TrainA_id, DDZ_ZL );
end

function OnEventTrainBdest1()
  SetDestination ( TrainB_id, MAT64_DV );
end

function OnEventTrainBdest2()
  SetDestination ( TrainB_id, MAT64_N_I );
end
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:




Gebruikersavatar
Sebastiaan0125
Berichten: 9
Lid geworden op: 09 okt 2020, 16:53
Gegeven waarderingen: 0
Ontvangen waarderingen: 5 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door Sebastiaan0125 »

Ik ben even aan de slag gegaan om te kijken of mij dit lukt. Nu heb ik volgens mij alles correct ingesteld, maar blijft het koersbord van de SLT gewoon op "Extra Trein" staan. Kan iemand er voor mij even naar kijken? Ik heb de specifieke code toegevoegd en een screenshot van de Timetable View van de betreffende AI- trein.

Code: Selecteer alles

-- Train ID's
	TrainA_id = 002418 -- SLT_Spoor20

-- Destination ID's
	SLT_RTD = 46 -- Rotterdam Centraal

			function OnEvent(event)
				_G["OnEvent" .. event]();
			end

			function SetDestination(TrainID, Destination)
				SysCall ( TrainID .. ":SetControlValue", "DestinationBoards", 0, Destination );
				SysCall ( TrainID .. ":SetControlTargetValue", "DestinationBoards", 0, Destination );
			end
			
			function OnEventSP14015Rtd()
				SetDestination ( TrainA_id, SLT_RTD );
			end
Afbeelding

Gebruikersavatar
RemkoH
Beheerder
Berichten: 174
Lid geworden op: 04 apr 2020, 12:00
Gegeven waarderingen: 12 keren
Ontvangen waarderingen: 75 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door RemkoH »

Ik vermoed dat het komt door de train id die met dubbel 0 begint.
Probeer het eens met de id van de andere kopbak. Die begint dan met 10.
Als dat niet werkt dan draai je de trein om en pak de id, beginnend met 10, van de nieuwe kopbak.
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:




Gebruikersavatar
Sebastiaan0125
Berichten: 9
Lid geworden op: 09 okt 2020, 16:53
Gegeven waarderingen: 0
Ontvangen waarderingen: 5 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door Sebastiaan0125 »

Alleen het id veranderd in het script, geen effect. Trein omgedraaid dat de bak met die met 10 begint vooraan staat, geen effect. Ook een geheel nieuwe trein neerzetten waar de voorste bak begint met 10 heeft geen effect gehad. Koersborden blijven op "Extra Trein" staan.

NielsB_
Berichten: 41
Lid geworden op: 04 apr 2020, 12:07
Gegeven waarderingen: 27 keren
Ontvangen waarderingen: 81 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door NielsB_ »

Wat gebeurt er als je zowel de eerste als de laatste bak van de trein op deze manier van een koersbord voorziet? Dus zowel de 00xxxx als de 10xxxx bak?

Gebruikersavatar
Sebastiaan0125
Berichten: 9
Lid geworden op: 09 okt 2020, 16:53
Gegeven waarderingen: 0
Ontvangen waarderingen: 5 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door Sebastiaan0125 »

Ik heb nu dit als code staan, oftewel de laatste bak toegevoegd als TrainB in het zelfde event (ID is inderdaad anders, omdat ik een nieuwe SLT gepakt heb):

Code: Selecteer alles

-- Train ID's
	TrainA_id = 102461 -- SLT_Spoor20
	TrainB_id = 002404

-- Destination ID's
	SLT_RTD = 46 -- Rotterdam Centraal

			function OnEvent(event)
				_G["OnEvent" .. event]();
			end

			function SetDestination(TrainID, Destination)
				SysCall ( TrainID .. ":SetControlValue", "DestinationBoards", 0, Destination );
				SysCall ( TrainID .. ":SetControlTargetValue", "DestinationBoards", 0, Destination );
			end
			
			function OnEventSP14015Rtd()
				SetDestination ( TrainA_id, SLT_RTD );
				SetDestination ( TrainB_id, SLT_RTD );
			end
Helaas doet dit ook helemaal niks.

NielsB_
Berichten: 41
Lid geworden op: 04 apr 2020, 12:07
Gegeven waarderingen: 27 keren
Ontvangen waarderingen: 81 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door NielsB_ »

Ik heb het net zelf even getest en ik kreeg het inderdaad ook niet aan de praat, tot ik elke kopbak in de trein op deze manier voorzag van een bestemming (dus 2 00xxxx en 2 10xxxx trein ids). Wel opvallend dat het bij SLT blijkbaar benodigd is om iedere kopbak de bestemming in te stellen terwijl dit niet bij andere treinsoorten die ik heb getest hoefde :thinking:
Afbeelding

Gebruikersavatar
RemkoH
Beheerder
Berichten: 174
Lid geworden op: 04 apr 2020, 12:00
Gegeven waarderingen: 12 keren
Ontvangen waarderingen: 75 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door RemkoH »

:thinking: interessant dat het dan wel werkt.
In een scenario waaraan ik werk doen een aantal SLT's het wel en een aantal niet.
Ook één VIRM doet het niet.
Ik zal het eens testen door beide kopbakken in te stellen.
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:




Gebruikersavatar
Sebastiaan0125
Berichten: 9
Lid geworden op: 09 okt 2020, 16:53
Gegeven waarderingen: 0
Ontvangen waarderingen: 5 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door Sebastiaan0125 »

Even weer een nieuwe trein gepakt, heb ik nu elke kopbak het ID gepakt en ingevoegd in het script. Geen verandering. Lijkt mij dat Niels test met een STL 4+4. Ik test met een SLT 6+4 waarvan de 4 bak voorop rijdt. Ook weer de 10xxx als eerste kopbak gemaakt, geen effect. Bij die 6 bak heb ik als kopbak id's 40xxx en 50xxx. Oftewel heb nu 4 treinid's met in hetzelfde event ook vier SetDestinations.

Edit: Ook even de SLT 4+4 geprobeerd, blijft op extra trein staan.

NielsB_
Berichten: 41
Lid geworden op: 04 apr 2020, 12:07
Gegeven waarderingen: 27 keren
Ontvangen waarderingen: 81 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door NielsB_ »

Ik heb het net nog even snel getest en een SLT 4+6 werkt gewoon prima voor mij.
Als je wil kan je het scenario even inpakken en opsturen naar mij middels een PM. Dan kan ik misschien beter bekijken wat het probleem mogelijk is voor je?

Gebruikersavatar
Sebastiaan0125
Berichten: 9
Lid geworden op: 09 okt 2020, 16:53
Gegeven waarderingen: 0
Ontvangen waarderingen: 5 keren

Re: Koersborden op ChrisTrains (AI) treinen met LUA-scripting (deel 3)

Bericht door Sebastiaan0125 »

Ik heb je een PB gestuurd.

Plaats reactie

Terug naar “Scripting”