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: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 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:

Afbeelding

Gebruikersavatar
RemkoH
Beheerder
Berichten: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 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:

Afbeelding

Gebruikersavatar
Sebastiaan0125
Berichten: 12
Lid geworden op: 09 okt 2020, 16:53
1
Gegeven waarderingen: 1 keer
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: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 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:

Afbeelding

Gebruikersavatar
Sebastiaan0125
Berichten: 12
Lid geworden op: 09 okt 2020, 16:53
1
Gegeven waarderingen: 1 keer
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: 168
Lid geworden op: 04 apr 2020, 12:07
1
Gegeven waarderingen: 222 keren
Ontvangen waarderingen: 474 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: 12
Lid geworden op: 09 okt 2020, 16:53
1
Gegeven waarderingen: 1 keer
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: 168
Lid geworden op: 04 apr 2020, 12:07
1
Gegeven waarderingen: 222 keren
Ontvangen waarderingen: 474 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: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 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:

Afbeelding

Gebruikersavatar
Sebastiaan0125
Berichten: 12
Lid geworden op: 09 okt 2020, 16:53
1
Gegeven waarderingen: 1 keer
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: 168
Lid geworden op: 04 apr 2020, 12:07
1
Gegeven waarderingen: 222 keren
Ontvangen waarderingen: 474 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: 12
Lid geworden op: 09 okt 2020, 16:53
1
Gegeven waarderingen: 1 keer
Ontvangen waarderingen: 5 keren

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

Bericht door Sebastiaan0125 »

Ik heb je een PB gestuurd.

melsdrivein
Berichten: 87
Lid geworden op: 03 apr 2021, 19:48
Gegeven waarderingen: 44 keren
Ontvangen waarderingen: 62 keren

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

Bericht door melsdrivein »

Probeer de instructies toe te passen op de ChrisTrains ICM (met oude re-paint). Hieronder zijn alle stappen maar wat ik ook doe, de koersborden blijven onveranderd. Zal vast iets fout doen, en alle hulp is op prijs gestelt!

Stel de IDs in op 4053a voor de kop voor, en 4053b voor de kop achter.
Afbeelding
Afbeelding

Vervolgens voeg een trigger event toe aan de AI trein.
Afbeelding

En een simple LUA script.
Afbeelding

Load en compile het script.
Afbeelding

Maar de koersborden worden niet aangepast.
Groetjes,
Mathieu

Gebruikersavatar
RemkoH
Beheerder
Berichten: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 keren

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

Bericht door RemkoH »

Ik zie zo op het oog al 2 fouten.

Je stelt de bestemming in op beide kopbakken. Alleen de voorste kopbak is voldoende.
(Wanneer het een SLT zou betreffen waarbij de ID begint met "00..." dan pak je de andere zijde)

In de dienstregeling (of het script) staat een spelfout.
In het script heet het event "TrainAdest2", maar in de dienstregeling roep je "TrainADest2" op.
Deze gebruikers waarderen RemkoH voor dit bericht:
melsdrivein
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:

Afbeelding

melsdrivein
Berichten: 87
Lid geworden op: 03 apr 2021, 19:48
Gegeven waarderingen: 44 keren
Ontvangen waarderingen: 62 keren

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

Bericht door melsdrivein »

Bedankt Remko! Werkt prima nu, wist niet dat LUA verschil maakt tussen hoodletters in variabelen, goed te weten.
Groetjes,
Mathieu

pukulan10jurus
Berichten: 2
Lid geworden op: 12 mei 2020, 19:57
1
Gegeven waarderingen: 0
Ontvangen waarderingen: 0

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

Bericht door pukulan10jurus »

Kan het zijn dat sinds de laatste update van de VIRM(m), deze methode niet meer werkt voor die trein?

Ik heb deze methode pas na die update ontdekt, dus weet niet of het eerder wel werkte, maar krijg het bij de VIRM niet voor elkaar. Bij de andere treinen uit de lijst werkt het wel voor mij. Ook de methode uit deel 2 van deze tutorial, gericht op het nieuwe mat, werkt bij voor de niet-gereviseerde VIRM (dus zonder m), niet.

Doe ik iets verkeerd, of hebben anderen dit ook?

Gebruikersavatar
mkasthijs
Berichten: 238
Lid geworden op: 05 apr 2020, 12:23
1
Gegeven waarderingen: 520 keren
Ontvangen waarderingen: 314 keren

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

Bericht door mkasthijs »

Klopt, dit is inderdaad veranderd bij de VIRM
Vanaf nu kun je vooraf al de bestemming bepalen op de VIRM bij het rijden zonder LUA scripting. Staat ook in de handleiding van Chris :smile:
Routebouwer: NoordOost Nederland V5

Gebruikersavatar
RemkoH
Beheerder
Berichten: 386
Lid geworden op: 04 apr 2020, 12:00
1
Gegeven waarderingen: 94 keren
Ontvangen waarderingen: 206 keren

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

Bericht door RemkoH »

:thinking: Inderdaad

Waar mkasthijs op doelt is dat de VIRMm en VIRMm Flow zijn in te stellen middels de trein ID, zoals bij o.a. de Flirt en SNG.
Echter is er vermoedelijk daardoor ook iets gewijzigd bij de VIRM en IRM.
Ik zal er binnenkort eens dieper in duiken want bij wat snelle tests kwam ik wat onverwachte dingen tegen (los van de koersborden die niet wijzigen).

Nog een kleine tip:
Rijd je met een gekoppelde VIRM en VIRMm dan stel je de VIRMm in middels de ID en neemt de VIRM dat over.
Oprichter van DutchSims, admin, moderator, tester, scenario bouwer, lua scripter
De lijst houdt niet op :crazy_face:

Afbeelding

pukulan10jurus
Berichten: 2
Lid geworden op: 12 mei 2020, 19:57
1
Gegeven waarderingen: 0
Ontvangen waarderingen: 0

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

Bericht door pukulan10jurus »

Bedankt voor de reacties, dan weet ik dat het niet aan mij ligt.

Wat ik denk dat er aan de hand is, is dat het stukje lua dat de geometry van de juiste bestemming in-/uitschakelt aan de hand van de waarde van de desbetreffende control nu alleen uitgevoerd wordt mits de trein door de speler bestuurd word. Dat bleek ook ergens voor nodig toen ik de optie om de bestemming aan de hand van train ID in te stellen aan mijn metrostellen toevoegde.

Bedankt voor de tip met de gekoppelde VIRMm. Zal aan Chris vragen of er wat aan te doen is. Anders zou een mogelijke noodoplossing kunnen zijn om in het event niet de control te wijzigen, maar direct de geometry in- en uit te schakelen. Zou dan mogelijk wel voor elke bak gedaan moeten worden.

Plaats reactie

Terug naar “Scripting”