Deine Plattform für Eisenbahn Simulationen!

herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo zusammen,

ich habe EEP13 Patch2 Plugin 1.

Ich baue gerade ein BW für Dampfloks und habe folgende frage. Zuerst mal ein Teil von mein Script... 

hResult,ZugGeschwindigkeit = EEPGetTrainSpeed("#DB_052_177_3_v7_RG2;001")
if ZugGeschwindigkeit >= 0 then ZugRichtung = ("Vorwärts")
end
if ZugGeschwindigkeit <= 0 then ZugRichtung = ("Rückwärts")
end

Beim einfahren des BW fährt die Lok über ein Kontakt. Hier wird über das EEPGETTrainSpeed Kommando die Fahrtrichtung bestimmt. Also nächstes möchte ich den LokTyp ermitteln über diesen Kontakt. Wie kann ich das mit meiner Version und LUA hinbekommen?

Ich weiß in Basic gibt es so ein Kommando wie LEN (String,1,5). Gibt es auch in LUA so ein ähnliches Kommando?

Grüsse, Herbert
gonz
Benutzeravatar
Team
Beiträge: 970
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 15

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo Herbert,

Guck zum Beispiel mal hier, ziemlich am Ende der Seite. 

Grüße aus dem Harz
Gerhard/Gonz
Ausstattung: Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 15
Interessen: Norddeutschland "zwischen Harz, Weser und Heide" mit Dampf und Diesel unterwegs in der "guten alten Zeit"
Aktuelle Projekte: Altenau/Harz und Börssum nach Gleisplänen von 1920 bis 1961 und Ausgestaltung gem. Epoche III/IV
herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo Gerhard,

danke für deine Hilfe, hat mich schon etwas weiter gebracht vor allem dieses Teil interessiert mich:

> = string.sub("Hello Lua user", 7, 9)  -- from character 7 until and including 9
Lua

In Basic könnte man es zb so schreiben was ich als output in ein neuen String haben möchte:

LokName$ = "DB_052_177_3_v7_RG2;001" -- Beim überfahren eines Kontaktes wird der gesammte Lokmane ermittelt und in den String LokName$ gespeichert--
LokNameTyp$=LEN(LokName$,1,6)              -- In LokNameTyp$ werden dann die ersten 6 charakter von LokName$ von links gespeichert; in diesen Fall "DB_052"--

Kann man diese 2 Zeilen auch in LUA realisieren? So, ja, wie sehen diese Zeilen dann aus?

VG., Herbert




  
gonz
Benutzeravatar
Team
Beiträge: 970
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 15

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hier ist ein Beispiel, die Funktion gibt die ersten sechs Zeichen aus:
Code: Alles auswählen
function lokname6(zugname)
zugname = string.sub(zugname,1,6)
print ("Erste sechs Zeichen sind: "..zugname)
end

Man kann sie so an einen Kontaktpunkt hängen und das mal ausprobieren...
Ausstattung: Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 15
Interessen: Norddeutschland "zwischen Harz, Weser und Heide" mit Dampf und Diesel unterwegs in der "guten alten Zeit"
Aktuelle Projekte: Altenau/Harz und Börssum nach Gleisplänen von 1920 bis 1961 und Ausgestaltung gem. Epoche III/IV
herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Vielen Dank Gerhard,

funktioniert wunderbar....

Script:

Code: Alles auswählen
function ZugNameGleis2(ZugName)
ZugTypGleis2 = string.sub(ZugName,2,7)
print ("Zugtyp Gleis2: "..ZugTypGleis2)en
[code][/code]



Ergebnis Fenster:
Tugtyp Gleis2: BD_052

Nochmals vielen Dank   

VG., Herbert
gonz
Benutzeravatar
Team
Beiträge: 970
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 15

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Immer gerne, Herbert!
Ausstattung: Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 15
Interessen: Norddeutschland "zwischen Harz, Weser und Heide" mit Dampf und Diesel unterwegs in der "guten alten Zeit"
Aktuelle Projekte: Altenau/Harz und Börssum nach Gleisplänen von 1920 bis 1961 und Ausgestaltung gem. Epoche III/IV
herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo,

nächstes Problem...

Meine Tenderlok fährt über ein Kontakt in den Bereich rein wo Wasser getankt wird. Die Lok hält vor ein unsichtbares Signal. Wenn die Lok still steht, steht sie genau neben den Wasserkran.
Der nächste schritt ist das der Wasserdeckel von Tender geöffnet werden soll. Hierzu brauche ich den Tendername um die Achse für den Deckel an zu steuern. Hierunten im script habe ich versucht um den Tendername von der Lok zusammen zu stellen und in 1 string zu packen sodass ich dann die richtige Achse von Tender ansteuern kann. Es Problem ist das ich die Teilabschnitte nicht zu 1nen string zusammen fügen kann.
Habt ihr vielleicht eine Lösung wie ich das hinbekomme?


Script:
ZugNameLenge = string.len(ZugName)
TenderName1 = string.sub(ZugName,1,ZugNameLenge-4)
print (TenderName1)
TenderName2 = "_Tender"
print (TenderName2)
TenderName3 = string.sub(ZugName,ZugNameLenge-3,ZugNameLenge)
print (TenderName3)
TenderName = TenderName1,TenderName2,TenderName3
print (TenderName1,TenderName2,TenderName3)
print ()
print (TenderName)
print (ZugNameLenge)

Mein Zugname ist #DB_052_177_3_v7_RG2;001
- mit ZugNameLenge = string.len(ZugName) ermittle ich die Anzahl der Buchstaben und Ziffern im Zugnamen. Letzte Zeile im Ausgabe Fenster.
- mit TenderName1 = string.sub(ZugName,1,ZugNameLenge-4)  ermittle ich den 1sten Teil von Tendername. 1ste Zeile im Ausgabe Fenster.
- mit TenderName2 = "_Tender" füge ich den 2en Teil von Tendername ein. 2e Zeile im Ausgabe Fenster.
- mit TenderName3 = string.sub(ZugName,ZugNameLenge-3,ZugNameLenge) bestimme ich den letzten Teil des Tendername. 3e Zeile im Ausgabe Fenster.
- mit print (TenderName1,TenderName2,TenderName3) Zeigt er mir alle 3 Teil hintereinander im Ausgabe Fenster (4e Zeile).
- mit TenderName = TenderName1,TenderName2,TenderName3 soll er mir alle 3 Teile in 1 String zusammen fügen.

Wie man in der vorletzte Zeile in Ausgabe Fenster sehen kann macht er das leider nicht. Er spuckt mir nur TenderName1 aus. Wo liegt mein Fehler?

Grüsse Herbert
Ergebnis.png
Ergebnis.png (7.26 KiB) 432-mal betrachtet
Goetz
Benutzeravatar
Beiträge: 79
Registriert: 13.06.2015, 10:26
EEP-Version: EEP 13.3

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Dein Fehler ist dieser Versuch, aus drei Strings einen neuen zu bilden:
Code: Alles auswählen
TenderName = TenderName1,TenderName2,TenderName3

Das Komma ist das falsche Zeichen, um zwei Strings zu verbinden. 

Du musst zwei Punkte (und keine Leerzeichen!) dazwischen setzen:

Code: Alles auswählen
TenderName = TenderName1..TenderName2..TenderName3




Außerdem musst du das # am Namensanfang rausschmeißen. Der Zugname beginnt mit einem #, aber nicht der Fahrzeugname.


Überlege mal, ob du nicht auf EEP 15 umsteigen willst. Da gibt es fertige Funktionen, mit denen du zielsicher z.B. den richtigen Tendernamen bekommst. Auch dann, wenn dein Zug einfach nur "#Kohlezug 1" heißt.
herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo Götz,

Danke für deine Hilfe. Funktioniert jetzt Wunderbar. In Basic wäre es kein Problem gewesen. Bei LUA ist halt eben die Schreibweise etwas anders :(

Das mit der Fahrzeugnummer war mir heute morgen auch schon aufgefallen. Hatte das schon in mein Script geändert. ----[font="Trebuchet MS", Helvetica, Arial, sans-serif]TenderName1 = string.sub(ZugName,2,ZugNameLenge-4)----[/font]

Hab mir auch schon überlegt um auf EEP15 um zu steigen. Müss mal drüber nachdenken da programmieren auch mehr oder weniger ein Hobby von mir ist.

'By the way', gibt es auch ein Handbuch für LUA in EEP15 oder kann ich irgendwo anders finden welche LUA-befehle dazu gekommen sind und wie sie funktionieren.


Auf jedenfall vielen Dank Götz

Grüsse Herbert

Ps.: Machst noch immer twitch sendungen?
Goetz
Benutzeravatar
Beiträge: 79
Registriert: 13.06.2015, 10:26
EEP-Version: EEP 13.3

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo Herbert,
mit den Kommas hätte es auch in Basic nicht funktioniert.
Ein Funktionsaufruf wie z.B. print() kann mehrere, durch Komma getrennte Argumente bekommen. Aber bei einer einfachen Zuweisung an eine neue Variable musst du einen zusammengesetzten String liefern. Und das Komma trennt Argumente. Es fügt nichts zusammen. Ich glaube, bei Basic wäre ein + Zeichen das gewesen, was bei Lua die zwei Punkte sind.

Das aktuelle Lua-Handbuch hänge ich an. Bitte nicht wundern, dass an einigen Stellen EEP 14 Plug-In 2 steht. Funktionen, die eigentlich für dieses Plug-In vorgesehen waren, sind nun in EEP 15 Expert enthalten.

Auf Twitch mache ich derzeit keine Sendungen zu EEP. Manchmal zeige ich dort, was ich sonst noch so spiele. Das ist aber für EEP nicht relevant.

Viele Grüße
Götz
attachment EEP-spezifisches_in_Lua.pdf
aktuelle Tabelle der Lua Funktionen
(645.66 KiB) 4-mal heruntergeladen
Zuletzt geändert von Goetz am 20.04.2019, 12:57, insgesamt 1-mal geändert.
herbertmontie
Kein Avatar
Beiträge: 31
Registriert: 14.01.2017, 18:34
Wohnort: Salzburg
EEP-Version: 13 V4 32bit

AW: Teil eines Zugnamen bei überfahren eines Kontaktpunkt?

Hallo Götz,

Hast recht in Basic hätte es mir den Komma auch nicht funktioniert. Da arbeitet man mit, und ja da hast du wieder recht, mit + Zeichen.
In Basic schreibt man die Zeile dann

 [font="Trebuchet MS", Helvetica, Arial, sans-serif]TenderName$ = TenderName1$+TenderName2$+TenderName3[/font]

[font="Trebuchet MS", Helvetica, Arial, sans-serif]Danke fürs LUA Handbuch.[/font]

[font="Trebuchet MS", Helvetica, Arial, sans-serif]Grüsse Herbert[/font]

[font="Trebuchet MS", Helvetica, Arial, sans-serif]'By the way' schöne Ostern [/font]

Ähnliche Themen

Hannover - Lehrte 2.0 ( Teil 1 Hannover - Misburg )
in Vorbildnahe Anlagen von Canadian mit 53 Antworten
Fehlermeldung beim Senden eines Beitrages
in Rund um's Portal von BR53 mit 14 Antworten
Free-Modelle bei vora.de
in Allgemeines von Lurchy mit 0 Antworten
Weihnachtsvorboten bei TU1
in TU1 - Tobias Uhle von TobiBahn mit 5 Antworten
Wir verwenden Cookies, um dir bestimmte Funktionen auf unserer Website bereitzustellen, durch die Nutzung unserer Seite erklärst du dich damit einverstanden das Cookies gesetzt werden. Mehr erfahren? Okay!