Bahnübergang Luascript

Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • Hallo liebe EEP Freunde,

    Habe ein script Problem: Habe schon mehrere Bahnübergänge mit LUA gesteuert, aber diesmal hakt es.

    In kleiner Testanlage funktioniert alles nach Wunsch. Der gleiche script an eine Lua von komplexer Anlage meldet gleich beim Überfahren des 1. Kontaktes "nil" in beiden Richtungen.

    Das script wieder kopiert in die Test Lua und alles Funktioniert. Ich brüte darüber und finde den Fehler nicht. Auffällig ist noch, dass die Speicherplätze bei der komplexen LUA am Ende nicht aufgelistet werden.

    Jedoch bei der Testanlage ist DS 73 und DS 74 vorhanden. Die Funktionen rufe ich mit Soundkontakten je Richtung auf. Wäre für Tipp dankbar, da es momentan bei mir klemmt. Gruß Bena

    function TSCHRSZ() --vor Tunnel Schranke Süd/Nord

    hResult = EEPSaveData(73,"TSCHRS zu")

    AuswahlTSCHR()

    end

    function TSCHRSA()

    hResult = EEPSaveData(73,"TSCHRS auf")

    AuswahlTSCHR()

    end

    function TSCHRNZ()

    hResult = EEPSaveData(74,"TSCHRN zu")

    AuswahlTSCHR()

    end

    function TSCHRNA()

    hResult = EEPSaveData(74,"TSCHRN auf")

    AuswahlTSCHR()

    end

    function AuswahlTSCHR()

    hResult, varTSCHRS=EEPLoadData(73)

    hResult, varTSCHRN=EEPLoadData(74)

    if varTSCHRS=="TSCHRS zu" or varTSCHRN=="TSCHRN zu" then EEPSetSignal(127,2)

    end

    if varTSCHRS=="TSCHRS auf" and varTSCHRN=="TSCHRN auf" then EEPSetSignal(127,1)

    end

    end

    :ma_1:

    EEP16, EEP15 , EEP 13, Win10/64 intel core i5-9400, 2,9 GHz, 16GB RAM, Nvida GTX 1050, mit SSD

    Einmal editiert, zuletzt von bena (28. Januar 2018 um 20:05)

  • Hi Bena

    Was hast du im Kontaktpunkt stehen?

    da darf nur TSCHRSA stehen, ohne () und ohne function davor.

    Und da darf auch kein Leerzeichen vor oder dahinter sein.

    Gruß Wilfried

    Board Asus Rog Strix B550-F Gaming CPU AMD Ryzen 7 5800X3D 32GB Ram NVIDIA GeForce GTX 3070TI 8GB Ram 2TB SSD 2TB Festplatte

    Board MSI B450M BAZOOKA CPU AMD Ryzen 7 2700x 8 Core 3,7-4,2 GH 32 Gb Ram NVIDIA GeForce GTX 3060 12 GB Ram Window 11 Prof 64 Bit

    Asus G713RW-LL108W 17,3 Zoll 16 GB Ram Ryzen 6800H GTX 3070TI 8GB Ram Window 11 Hom 64 Bit

    Sun-Guru-Barebone CPU I7-9750H 16 GB Ram NVIDIA GeForce GTX1660TI 6 GB Ram Window 11 Hom 64 Bit

    8. bis 31. EEP-Treffen in Bremen ich war da

  • Im gezeigten Skript finde ich keinen Fehler.

    (Hier mal in lesbarer Form)

    Deshalb vermute ich, dass du diesen Teil auf der großen Anlage an unpassender Stelle ins Skript eingefügt hast.
    Oder du hast in den Kontaktpunkten Mist geschrieben (das Schlüsselwort function mit rein geschrieben oder die Klammern?)

  • Hallo Diabolo, Hallo Götz,

    Danke für eure schnellen Antworten. Habe nochmals alle Soundkontakte kontrolliert. Wenn die falsche Einträge hätten bekäme ich ja beim neu Laden bereits eine Fehlermeldung.

    Das Script habe ich ans Ende von LUA gesetzt. Davor ist ein anderer Bahnübergang, der einwandfrei funktioniert.

    Sobald eine Lok den 1. Kontakt überfährt bekomme ich: Error running function `TSCHRNZ`:attempt to call a nil value. In Gegen-Richtung entsprechend TSCHRSZ.

    Was mich so verrückt dabei macht, ich hab eine einfache Testanlage, bei der läuft der Script. Hab dabei nur die Signal# von 127 auf 1 geändert, sonst exakt gleich mit gleicher

    Anordnung der Kontakte. Die Schranke 127 ist mit 128 verknüpft. Am besten Feierabend und andermal weiter brüten. Kann ja nur eine Kleinigkeit sein.

    Gruß Bernd

    ps. Götz, schreib doch bitte mal, womit du die Scripte editierst, ich finde die Zeilennummern so praktisch. Danke

    EEP16, EEP15 , EEP 13, Win10/64 intel core i5-9400, 2,9 GHz, 16GB RAM, Nvida GTX 1050, mit SSD

    Einmal editiert, zuletzt von bena (28. Januar 2018 um 21:33)

  • Wenn die falsche Einträge hätten bekäme ich ja beim neu Laden bereits eine Fehlermeldung.

    Nein. Bei falschen Einträgen bekommst du genau die Fehlermeldung, die du genannt hast.

    Wenn Lua eine Funktion aufruft, die nicht definiert ist (weil der Name falsch geschrieben wurde) dann meldet es, dass es nil (= "not in list" oder einfach "nichts") gefunden hat.

  • Error running function `TSCHRNZ`:attempt to call a nil value

    Ist das die exakte Fehlermeldung? Ich kenne sie nur als "Error running function XYZ. Attempt to call ABC (a nil value)", was bedeutet, dass ein in der Funktion verwendeter Wert ABC "nil" ist, also ohne Inhalt, der eigentlich einen Inhalt haben soll.

    nil (= "not in list" oder einfach "nichts")

    "Nil" heißt einfach "null" im Sinne von "es ist nichts da". "Not in list" ist bestenfalls seine Eselbrücke. Nicht dass noch jemand glaubt, das wäre eine offizielle Abkürzung.

  • Hi Bena,

    das Script ist OK, der Fehler scheint vorher im Luascript zu liegen - setze doch mal das Script für den Bahnübergang vor das Script dessen Bahübergang funktioniert. Die Fehlermeldung deutet daraufhin, das LUA die Funktionen gar nicht mehr abarbeitet.

    EEP 15.1 EEP 16
    MS Windows 10 Pro 64bit
    Prozessor: AMD FX-8370 Eight-Core Processor 4,0GHz // RAM: 32GB // SSD 256GB // Grafikkarte: GeForce GTX 950

  • "Nil" heißt einfach "null" im Sinne von "es ist nichts da". "Not in list" ist bestenfalls seine Eselbrücke.

    Hallo Oliver :)

    Nil steht für englisch not in list, also nicht in der Liste.

    Gruß Ingo

  • Hallo,

    auch wenn's off-topic wird: Meiner Meinung nach ist nil die Zusammenziehung des lateinischen Worts nihil (=nichts). Diese These wird auch von Wikipedia gestützt, nämlich hier:

    nil steht für:

    Interessanterweise weiß die englische Wikipedia-Seite zu null nichts von dem Akronym "not in list".

    Gruß

    Christopher

    PC: Intel i7-7700K; 64bit; 4,2 GHz; 32GB RAM; GeForce GTX 1080 (8 GB); Win 10, 22H2; EEP 6, 15 (Dev), 17.2 Plugins 1+2 (Dev); HomeNOS 17 (Dev)
    Laptop: Intel i7-12700H; 64bit; 2,7 GHz; 16GB RAM; GeForce RTX3070Ti (8 GB); Win 11, 23H2; EEP 6, 17 Plugins 1+2; HomeNOS 17 (User)

  • "nil, NULL and None are the names of the null pointer in various languages"

    Es ist meistens mit dem Geldgehalt meiner Brieftasche verbunden [Blockierte Grafik: http://www.pic4ever.com/images/4fvgdaq_th.gif]

    EepNolie

    Spoiler anzeigen

    Desktop : W10 Pro 64Bit - i7-7700K 4.5Ghz - 32Gb RAM - MSI Geforce Ti Gaming X 1080 (11Gb) - 3 monitors 24"

    Laptop : W10 Home 64Bit - i7-4750HQ 3.2Ghz - 16Gb RAM - NVidia GTX960M

    Ich bin dabei seit EEP 6 und benutze jetzt EEP 17.

    Zwischendurch stelle ich Modelle zusammen...

    Free EEP-tools : Model Multiplier / Texture Multiplier / Window restore Tool / Inventory Exporter / Settings editor / Project manager

    37310-banner2018-jpg

  • Das englische Wort "nil" ist die wörtliche Übersetzung von "Null". Englische Fußballspiele gehen "one-nil" aus. Ganz offensichtlich hat man in der Informatik das "not in list" irgendwann mal hineingeheimnist.

    Einmal editiert, zuletzt von klioli (29. Januar 2018 um 12:56)

  • - setze doch mal das Script für den Bahnübergang vor das Script dessen Bahübergang funktioniert.

    Hallo Allen, die einen Kommentar gegeben haben. Danke.

    Das was Kaffeschuerfer gesagt hat, hat´s gebracht. Obwohl ich kanns mir nicht erklären. Hab alles mehmals kontrolliert, kein "end" zu viel oder zu wenig. Die Aufrufe alles gut.

    Nach dem kopieren vor den funktionierenden Teil lief plötzlich alles. Danach hab ich einen weiteren Bahnübergang wieder durch kopieren ans Ende gestellt und das ging auf Anhieb.

    Schön wenn´s funktioniert, aber unbefriedigend wenn man nicht weiß warum:aw_1:Allen ein Dankeschön!!!

    EEP16, EEP15 , EEP 13, Win10/64 intel core i5-9400, 2,9 GHz, 16GB RAM, Nvida GTX 1050, mit SSD

  • Das was Kaffeschuerfer gesagt hat, hat´s gebracht.

    Ok. Dann ist das ja geklärt. Jetzt geht es nur noch um ...

    Nil.

    Und was sagt Wikipedia dazu? :as_1:

    Nil ist ein Strom in Afrika! :bn_1:

    So. Jetzt wisst ihr es.:an_1:

    :aq_1:Gruss Jürg

    Es ist müssig, dauernd den Weltuntergang heraufzubeschwören. Man muss auch aktiv etwas dafür tun. :bn_1:

  • Nil ist ein Strom in Afrika!

    So. Jetzt wisst ihr es.

    Mensch Jürg, wenn wir Dich nicht hätten... :as_1:

    Gut, dass wenigstens Du bei Wikipedia an die richtige Stelle schauen kannst.:ae_1:

    PC: Intel i7-7700K; 64bit; 4,2 GHz; 32GB RAM; GeForce GTX 1080 (8 GB); Win 10, 22H2; EEP 6, 15 (Dev), 17.2 Plugins 1+2 (Dev); HomeNOS 17 (Dev)
    Laptop: Intel i7-12700H; 64bit; 2,7 GHz; 16GB RAM; GeForce RTX3070Ti (8 GB); Win 11, 23H2; EEP 6, 17 Plugins 1+2; HomeNOS 17 (User)

  • unbefriedigend wenn man nicht weiß warum

    Deshalb würde es helfen, wenn du einmal das komplette Skript zeigen würdest. Am besten die Version, welche nicht funktioniert hatte.

  • Hallo Goetz, danke, dass Du der Sache auf den Grund gehen willst.

    hier also der Teil der nicht funktioniert hat, danach habe ich lediglich den Teil vor kopiert und alles lief.

    function EMBWAuswahl() --z1349

    hResult, varBWBesetzt=EEPLoadData(72)

    hResult, varAZBWBesetzt=EEPLoadData(68)

    hResult, varBBWBesetzt=EEPLoadData(71)

    hResult, varBBOBesetzt=EEPLoadData(70)

    if varBWBesetzt=="BW frei" and varAZBWBesetzt=="AZBW besetzt"

    and varBBWBesetzt=="BBW frei" and varBBOBesetzt=="BBO frei" then

    hResult = EEPSaveData(72,"BW besetzt")

    EEPSetSignal(88,2)

    end

    BWAuswahl()

    end

    function BSCHROZ() --BergSchranke

    hResult = EEPSaveData(60,"BSCHRO zu")

    AuswahlBSCHR()

    end

    function BSCHROA()

    hResult = EEPSaveData(60,"BSCHRO auf")

    AuswahlBSCHR()

    end

    function BSCHRWZ()

    hResult = EEPSaveData(69,"BSCHRW zu")

    AuswahlBSCHR()

    end

    function BSCHRWA()

    hResult = EEPSaveData(69,"BSCHRW auf")

    AuswahlBSCHR()

    end

    function AuswahlBSCHR()

    hResult, varBSCHRO=EEPLoadData(60)

    hResult, varBSCHRW=EEPLoadData(69)

    if varBSCHRO=="BSCHRO zu" or varBSCHRW=="BSCHRW zu" then EEPSetSignal(87,2)

    end

    if varBSCHRO=="BSCHRO auf" and varBSCHRW=="BSCHRW auf" then EEPSetSignal(87,1)

    end

    function TSCHRSZ() --TunnelSchrankeSüd -- ab hier hats gestreikt

    hResult = EEPSaveData(73,"TSCHRS zu")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRSA()

    hResult = EEPSaveData(73,"TSCHRS auf")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRNZ()

    hResult = EEPSaveData(74,"TSCHRN zu")

    hResult, varTSCHRN=EEPLoadData(74)

    print("TunnelSchrankeSüd ",varTSCHRS," ",varTSCHRN)

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRNA()

    hResult = EEPSaveData(74,"TSCHRN auf")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function AuswahlTSCHR()

    hResult, varTSCHRS=EEPLoadData(73)

    hResult, varTSCHRN=EEPLoadData(74)

    if varTSCHRS=="TSCHRS zu" or varTSCHRN=="TSCHRN zu" then EEPSetSignal(127,2)

    end

    if varTSCHRS=="TSCHRS auf" and varTSCHRN=="TSCHRN auf" then EEPSetSignal(127,1)

    end

    --Ausgabe()

    end

    end

    --jetzt die funktionierende Version:

    function EMBWAuswahl() --z1349

    hResult, varBWBesetzt=EEPLoadData(72)

    hResult, varAZBWBesetzt=EEPLoadData(68)

    hResult, varBBWBesetzt=EEPLoadData(71)

    hResult, varBBOBesetzt=EEPLoadData(70)

    if varBWBesetzt=="BW frei" and varAZBWBesetzt=="AZBW besetzt"

    and varBBWBesetzt=="BBW frei" and varBBOBesetzt=="BBO frei" then

    hResult = EEPSaveData(72,"BW besetzt")

    EEPSetSignal(88,2)

    end

    BWAuswahl()

    end

    function TSCHRSZ() --TunnelSchrankeSüd --kopiert ohne zu verändern

    hResult = EEPSaveData(73,"TSCHRS zu")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRSA()

    hResult = EEPSaveData(73,"TSCHRS auf")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRNZ()

    hResult = EEPSaveData(74,"TSCHRN zu")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function TSCHRNA()

    hResult = EEPSaveData(74,"TSCHRN auf")

    AuswahlTSCHR()

    --Ausgabe()

    end

    function AuswahlTSCHR()

    hResult, varTSCHRS=EEPLoadData(73)

    hResult, varTSCHRN=EEPLoadData(74)

    if varTSCHRS=="TSCHRS zu" or varTSCHRN=="TSCHRN zu" then EEPSetSignal(127,2)

    end

    if varTSCHRS=="TSCHRS auf" and varTSCHRN=="TSCHRN auf" then EEPSetSignal(127,1)

    end

    --Ausgabe()

    end

    function BSCHROZ() --BergSchranke

    hResult = EEPSaveData(60,"BSCHRO zu")

    AuswahlBSCHR()

    end

    function BSCHROA()

    hResult = EEPSaveData(60,"BSCHRO auf")

    AuswahlBSCHR()

    end

    function BSCHRWZ()

    hResult = EEPSaveData(69,"BSCHRW zu")

    AuswahlBSCHR()

    end

    function BSCHRWA()

    hResult = EEPSaveData(69,"BSCHRW auf")

    AuswahlBSCHR()

    end

    function AuswahlBSCHR()

    hResult, varBSCHRO=EEPLoadData(60)

    hResult, varBSCHRW=EEPLoadData(69)

    if varBSCHRO=="BSCHRO zu" or varBSCHRW=="BSCHRW zu" then EEPSetSignal(87,2)

    end

    if varBSCHRO=="BSCHRO auf" and varBSCHRW=="BSCHRW auf" then EEPSetSignal(87,1)

    end

    end

    function SCHRNSZ() --Schranke Nord Ost

    hResult = EEPSaveData(75,"SCHRNS zu")

    AuswahlNSCHR()

    --Ausgabe()

    end

    function SCHRNSA()

    hResult = EEPSaveData(75,"SCHRNS auf")

    AuswahlNSCHR()

    --Ausgabe()

    end

    function SCHRNNZ()

    hResult = EEPSaveData(76,"SCHRNN zu")

    AuswahlNSCHR()

    --Ausgabe()

    end

    function SCHRNNA()

    hResult = EEPSaveData(76,"SCHRNN auf")

    AuswahlNSCHR()

    --Ausgabe()

    end

    function AuswahlNSCHR()

    hResult, varSCHRNS=EEPLoadData(75)

    hResult, varSCHRNN=EEPLoadData(76)

    if varSCHRNS=="SCHRNS zu" or varSCHRNN=="SCHRNN zu" then EEPSetSignal(104,2)

    end

    if varSCHRNS=="SCHRNS auf" and varSCHRNN=="SCHRNN auf" then EEPSetSignal(104,1)

    end

    end

    EEP16, EEP15 , EEP 13, Win10/64 intel core i5-9400, 2,9 GHz, 16GB RAM, Nvida GTX 1050, mit SSD

  • bena

    Erstens empfinde ich es als unhöflich, dass du dir nicht die Mühe machst den Code formatiert einzustellen (und uns, die wir dir helfen möchten, somit diese Arbeit überlässt). Nachdem ich den Hinweis von eep-fan 13 gelesen habe, muss ich mich entschuldigen. Ich hatte die Frage übersehen.

    Und zweitens kann der Code nicht funktionieren, weil er keine EEPMain() Funktion enthält. Wenn EEP keine Rückmeldung beim ersten Aufruf der EEPMain() bekommt, dann ignoriert es das Lua Skript komplett.

    2 Mal editiert, zuletzt von Goetz (30. Januar 2018 um 20:10)

  • Hallo Götz

    Bena hat Dich in #4 gefragt wie das geht. Da Du ihm nicht geantwortet hast weis er es noch immer nicht.

    Gruß

    Detlef

    Gruß

    Detlef

    EEP6.1, EEP17.0 Patch2

    Nos5, HN16, Modellkatalog, Tauschmanager, Hugo, ModellExplorer, ZugExplorer, Bilderscanner

    , Modellkonverter

    Alles was lediglich wahrscheinlich ist, ist wahrscheinlich falsch.

    Rene Descartes

  • bena ,

    wir haben auf unserer FileBase verschiedene PDF eingestellt, die dir den Umgang mit dem Forum erleichtern sollen.

    Lese dir mal bitte dieses PDF durch, welches dir die verschiedenen Symbole in der Editorleiste näher erläutert.

    Dann klappt das auch mit dem Code einstellen hier im Forum. :ae_1:

    Viele Grüße

    marler1957

    EEP Team Trend

  • Hallo Götz, danke für Deine Mühe, ich wollte Dir nicht 1515 Zeilen so reinkopieren und wusste nicht wie das mit dem hochladen geht. Bei anderer Gelegenheit hattest Du mich ja gebeten

    den script per e-mail zu schicken. Natürlich läuft das kompl. script mit "main". Aber lass mal gut sein. Es läuft ja jetzt. Könnte mir vorstellen, das beim kopieren irgendwo ein unsichtbares Zeichen stand.

    Danke Detlef, für Deine Verteidigung.

    Danke maler1957, hab lange gebraucht um rauszufinden, was Du mit filebase meinst. Werde mir das von der Editorleiste mal reinziehen. Hab die pdf runtergeladen. Ist ja doch umfangreich.

    Danke und Gruß an alle

    Bernd

    EEP16, EEP15 , EEP 13, Win10/64 intel core i5-9400, 2,9 GHz, 16GB RAM, Nvida GTX 1050, mit SSD