Das inoffizielle Forum zu Eisenbahn.exe Professional 7+

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

Scriptbeispiele aus der Adlerkopfanlage

Hallo zusammen,

ich möchte in diesem Thread einzelne Scripte veröffentlichen, die ich für die Anlage "Am Adlerskopf" schreibe.

Es sind Codeschnipsel, die man wenn man sie verwenden möchte in das was man hat ein- und anpassen müsste, also eher als Beispiele gedacht, was man machen kann. Ich programmiere beruflich, weiss also aus der Sicht halbwegs was ich da tue (auch wenn manchmal einiges der Betriebsblindheit geschuldet ist, auch ich leider keine auf Anhieb fehlerfreien Scripte schreibe, sondern mühselig Fehler suche, und ich aus Sicht jüngerer Kollegen irgendwie "old style" arbeite). Es soll auch kein Tutorial werden, da gibt es besseres, zB das was Jürgen hier darstellt ist aus meiner Sicht wirklich hilfreich und gut erklärt. Was ich eher anstrebe ist einfach eine Art Beispielsammlung. Aus Sicht der EEP Sachen würde ich mich eher als Geselle denn als Meister einordnen, ich bin ja gerade zwei Jahre dabei, und es gibt soooo viel zu lernen

Ich bin Verbesserungsvorschlägen und Kritik jeglicher Art gegenüber aufgeschlossen, und vielleicht können wir ja, da ich ja nicht der einzige bin der sich mit so etwas beschäftigt, eine Art Sammlung von Kochrezepten/Beispielscripts und/oder gar eine Art gemeinsamen Stil entwickeln.

Also fangen wir einfach an:

Codeschnipsel I - Der Mann mit der Fahne am Bü Ausbesserungswerk.


Er besteht aus Variablendefinitionen und zwei Funktionen, die einfach "irgendwo" im Script stehen können:

Code: Alles auswählen
-- ----------------------------------------------------------------------
-- BU Ausbesserungswerk - der Mann mit der Fahne
-- ----------------------------------------------------------------------

-- ueber die Soll/Istwerte wird das Laufen gesteuert.
-- die Werte laufen von 0 (Startpunkt) bis 100 (Endpunkt)

buAusbWerkFahne1Soll = 0
buAusbWerkFahne1Ist  = 0
buAusbWerkFahneStep  = 4  -- step soll ein Teiler von 100 sein!


-- die Funktion Set ist eine Hilfsfunktion
-- die die Figur einfach an die Position der aktuellen Ist-Werte bringt

function buAusbWerkFahne1Set()
EEPStructureSetPosition
            ( "#8101_BW_Arbeiter_05_NP1",
                   -632.11 + buAusbWerkFahne1Ist/100*10.08,
                   -9.44 + buAusbWerkFahne1Ist/100*4.7,
                   0.25 )
end

-- der Ticker wird in der Main Routine aufgerufen
-- er passt den Istwert schrittweise dem Sollwert an
-- wie schnell sich das Männchen bewegt wird dabei durch
-- die Step-Konstante vorgegeben.

function buAusbWerkFahneTicker()

if buAusbWerkFahne1Soll>buAusbWerkFahne1Ist then
    buAusbWerkFahne1Ist=buAusbWerkFahne1Ist+buAusbWerkFahneStep
    buAusbWerkFahne1Set()   
end

if buAusbWerkFahne1Soll<buAusbWerkFahne1Ist then
    buAusbWerkFahne1Ist=buAusbWerkFahne1Ist-buAusbWerkFahneStep
    buAusbWerkFahne1Set()
end

end

Die Ticker-Funktion wird bei jedem Umlauf der Hauptschleife aufgerufen (das macht Last klar - funktioniert aber ganz gut, mit der Frage der
Auslastung etc habe ich noch wenig Erfahrung, bisher habe ich nicht den Eindruck, dass die Scripte die Framerate ausbremsen.

Code: Alles auswählen

function EEPMain()
   -- hier stehen natuerlich auch viele andere dinge
     buAusbWerkFahneTicker()    
     return 1
end

Wenn man nun den Fahnenmann hervorholen will setzt man einfach den Sollwert auf 100, soll
er zurückgehe, wieder auf Null. Das macht bei mir die Routine, die den Bahnübergang steuert:


Achtung EDIT : Dieser dritte Teil jetzt neu passend zur Testanlage!


Code: Alles auswählen

function buAusbWerkEinfahrt(train)
print("Einfahrt:"..train)
buAusbWerkFahne1Soll=100
end

function buAusbWerkAusfahrt(train)
print("Ausfahrt:"..train)
buAusbWerkFahne1Soll=0
end



end

Und so sieht es dann aus:

Bild

Ein Clip von der Bewegung kommt noch, den muss ich erst noch aufnehmen.

Die Figur ist von NP aus dem Set "BW-Arbeiter"

In Summe: Es funktionert, aber es ist ein wenig zuppelig. "Auf die Strasse hüpfen" wäre der richtigere Ausdruck. Es macht aber Sinn, um Szenen für Bilder zu schaffen. Aktuell sieht es eher aus
wie eine Szene auf einer Spieluhr.

Was ich damit noch vorhabe: Der Mann könnte sich auch umdrehen wenn er zurückgeht.

Was besser wäre: Eine animierte Figur, die man auf einem unsichtbaren Gleis laufen lassen könnte. Und die auch die Fahne heben und senken kann. Also : LUA ist hier erstmal
nur ein Behelf. Ausserdem wollte ich ausprobieren, ob und wie es geht. Man kann auf diese Art alles was Immo oder LS ist bewegen. Die Bewegung kann auch von oben nach
unten erfolgen und es kann gedreht werden, was hier nicht erfolgt ist.

Wenn gewünscht schreibe ich gerne noch ein ausführlicheres "howto" dazu.

Grüsse und einen schönen Start in die Woche wünscht

gonz
Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 12 Update 1
Projekte: Klein Mahner (Nebenstrecke in Epoche III-IV in Norddeutschland mit Dampf und Diesel), Goslar und Börßum (Planstand 1944), beide bisher noch am Gleisbild frickelnd und Informationen sammelnd.
Zuletzt geändert von gonz am 20.10.2015, 10:56, insgesamt 1-mal geändert.
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: Scriptbeispiele aus der Adlerkopfanlage

Eine gute Idee, gonz.

Zu Deinem Skript eine Frage: buAusbWerk_Fahrt, buAusbWerk_Halt und buAusbWerkDebug sind nicht deklariert, woher beziehen sie die Werte?

Edit: Desweiteren kann ich keine Deklarationen für die Variablen gleis1, gleis3 und signalstand finden oder werden diese eventuell vom
KP aus übergeben?
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
gonz
Benutzeravatar
Team
Beiträge: 513
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 13

AW: Scriptbeispiele aus der Adlerkopfanlage

Hallo Jürgen,

stimmt, das ist verwirrend. In dem entsprechenden Codeanteil ging es mir nur um das Setzen der Werte für den Fahnenmann,
die Variablen werden ausserhalb des gezeigten Bereiches deklariert und befüllt. Aber das ist sozusagen "das nächste Codefragment".

Ich seh mal zu dass ich heut abend den Ausschnitt "bereinigt" bekomme.

Vielen Dank für den Hinweis!

gonz
Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 12 Update 1
Projekte: Klein Mahner (Nebenstrecke in Epoche III-IV in Norddeutschland mit Dampf und Diesel), Goslar und Börßum (Planstand 1944), beide bisher noch am Gleisbild frickelnd und Informationen sammelnd.
Diesel_Fan
Benutzeravatar
Team
Beiträge: 2004
Registriert: 08.06.2013, 22:11
EEP-Version: 6; 9.1; 11.3; 12 Exp

AW: Scriptbeispiele aus der Adlerkopfanlage

Danke, gonz, für den Thread. Inhaltlich kann ich leider (noch) nichts dazu beitragen.
Mit freundlichen Grüßen Matthias, der Ostberliner, der zum Lipper wurde.

Laptop: Acer Aspire 7250G,
500GB Festplatte, 6GB RAM,
Prozessor: AMD E-450 APU, 1,65 GHz

EEP6.1 Classic

EEP9.1 Expert Patch 1

EEP 11.3

EEP 12.1
gonz
Benutzeravatar
Team
Beiträge: 513
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 13

AW: Scriptbeispiele aus der Adlerkopfanlage

Wie besprochen habe ich das Ganze jetzt so umgemodelt, dass es unabhängig von dem Rest ist (entsprechend der dritte Block aus dem Eingangspost angepasst) und auf eine kleine Testanlage reduziert.
Testanlage

Es war folgendes anzupassen:

Bild

Die Koordinaten des Ausgangspunktes finden sich im Objektdialog, unten steht dort der Name des LS Elementes gleich in LUA-tauglicher Form.

Der Endpunkt findet sich genauso, einfach das Männchen verschieben:

Bild

Und ab damit ins LUA Script:

Bild

Die blau umrandeten Werte werden ins Script als Differenz zwischen Start- und Endwert eingetragen, je nachdem
welcher grösser ist ist das - oder + vorne hinter dem grünen Kasten passend zu setzen. Das könnte theoretisch auch
im Script gerechnet werden, am besten wir sammeln schonmal ideen für die verfeinerte Version 1.1 lacht


Und nun noch die passende Funktion für das Auslösen

Bild

Diese werden an die Kontaktpunkte gehängt:

Bild

Ich habe den einfahrtkontakt für Zuganfang scharfgeschaltet und den Ausfahrtkontakt für Zugende.

In der Testdatei gibt es ausserdem zwei weitere Kontakte, die den Zug beschleunigen bzw. wieder abbremsen, damit die Rundreise
nicht allzulange dauert. Ich nehme für die LUA Scripte Sound Kontakte, das ist eine recht beliebige Entscheidung.

Fertig ist die Laube, wie man so schön sagt


Grüsse und einen schönen Tag
wünscht
gonz
Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 12 Update 1
Projekte: Klein Mahner (Nebenstrecke in Epoche III-IV in Norddeutschland mit Dampf und Diesel), Goslar und Börßum (Planstand 1944), beide bisher noch am Gleisbild frickelnd und Informationen sammelnd.
gonz
Benutzeravatar
Team
Beiträge: 513
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 13

AW: Scriptbeispiele aus der Adlerkopfanlage

Es bleibt sich bei allen Ideengebern zu bedanken, denn das Ganze wurde ja hier im Depot-Chat ausgeknobelt.

Folgendes könnte ich schonmal anmerken bzw. könnte man verbessern:

  1. Die Position wird nicht gespeichert, dh bei Anlagenstart weichen ggf. der Wert im Script und die tatsächliche Position des LS voneinander ab. das korrigiert sich automatisch bei der ersten Zugvorbeifahrt. Zum Speichern gäbe es die entsprechenden "Slot" Befehle.
  2. Anstelle die Differenz der Koordinaten in das Script zu schreiben, könnte man so etwas wie posStartX posEndX etc in die das Script schreiben und es selber rechnen lassen. Das vermeidet Fehler beim Übernehmen aus den Positionen aus dem Objektdialog.
  3. Vergrössert man die Anlage, stimmten die Koordinaten ggf. nicht mehr. Dazu wäre die Idee, diese relativ zu einer fixen Koordiante, zB die des Postenhäuschens, anzugeben.
  4. Und eben : Lasse man das Männchen sich umdrehen, wenn es den Rückweg antritt : )
Das Script und die Testanlage mag benutzen, anpassen oder beliebig weitergeben wer mag. Wenn ihr meint, dass es auf der Downloadbase gut aufgehoben wäre, würde ich es dort mal uploaden.

Grüsse
und nun wirklich - die Arbeit ruft seufz

gonz
Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 12 Update 1
Projekte: Klein Mahner (Nebenstrecke in Epoche III-IV in Norddeutschland mit Dampf und Diesel), Goslar und Börßum (Planstand 1944), beide bisher noch am Gleisbild frickelnd und Informationen sammelnd.
Diesel_Fan
Benutzeravatar
Team
Beiträge: 2004
Registriert: 08.06.2013, 22:11
EEP-Version: 6; 9.1; 11.3; 12 Exp

AW: Scriptbeispiele aus der Adlerkopfanlage

Hallo gonz,

besten Dank für die "Umwandlung". Ein Tip: Ich würde die Testanlage und mögliche Scripte immer als Dateianhänge hochladen, so sind sie für die User besser ersichtlich.
Mit freundlichen Grüßen Matthias, der Ostberliner, der zum Lipper wurde.

Laptop: Acer Aspire 7250G,
500GB Festplatte, 6GB RAM,
Prozessor: AMD E-450 APU, 1,65 GHz

EEP6.1 Classic

EEP9.1 Expert Patch 1

EEP 11.3

EEP 12.1
gonz
Benutzeravatar
Team
Beiträge: 513
Registriert: 12.07.2015, 14:24
Wohnort: Wildemann / Harz
EEP-Version: 13

AW: Scriptbeispiele aus der Adlerkopfanlage

Folgendes geändert:

Das LS das sich bewegt ist "Eisenbahner1" aus dem Grundbestand
Die Anlage hat jetzt nen ordentlichen Namen ( codeschnipsel_fahnenmann )

Das Ganze als Dateianhang!

Ich hoffe es funktioniert, sonst bitte gerne Rückmeldung, Jürgen hat Probleme mit der anfangs von mir hochgeladenen Testanlage und wir wissen noch nicht warum.

Grüsse
gonz
Dateianhänge
attachment codeschnipsel_fahnenman.zip
(20.89 KiB) 131-mal heruntergeladen
Intel i5-4460 3.2GHz | 12 GB RAM | Windows 8.1 64 Bit | GForce GTX 760 | EEP 12 Update 1
Projekte: Klein Mahner (Nebenstrecke in Epoche III-IV in Norddeutschland mit Dampf und Diesel), Goslar und Börßum (Planstand 1944), beide bisher noch am Gleisbild frickelnd und Informationen sammelnd.
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: Scriptbeispiele aus der Adlerkopfanlage

Hat sich geklärt. Plugin 1 ist erforderlich.
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
RA1
Benutzeravatar
Team
Beiträge: 513
Registriert: 04.01.2014, 23:50
EEP-Version: 11/12

AW: Scriptbeispiele aus der Adlerkopfanlage

Hallo Gerhard,

getest und für super befunden.
Findet auch bald einsatz auf einer kleinen Anlage von mir auch wenn
der arme Kerl da mehr oder weniger am Feldweg umher stehen muss.

Mal sehen wie ich das ausgestallte aber bild oder kurzes Video folgt.

Versprochen!!!



Ansonsten bitte weiter so wie Jürgen auch den langsam bekomme ich auch was von LUA
in meinen kleinen Kopf rein und es scheint auch drin zu bleiben.  :)
Mit freundlichen EEP-Grüßen
aus dem wunderschönen Thüringen
René Adam (RA1)

Bild

[Intel(R) Core(TM) i7-2670QM CPU @2,60GHz; 16GB RAM Arbeitsspeicher; Windows 10 (64Bit); NVIDIA GeForce GT 560M 4GB Grafikspeicher]
[EEP 11, EEP 12; Tauschmangager]