Szenario Script Vr EL

    • @marxkevin1996 mir ist wohl bewußt das vR hier zwar mitliest...aber antworten werden sie bei solchen Dingen hier wohl nicht ;).
      Abgesehen davon hat mich hier der persönliche Ehrgeiz gepackt.
      Deshalb wäre für mich die letzte Instanz eher der vR Support :)

      ich kann im übrigem einen Teilerfolg verbuchen...

      Der Kollege @Thor hat mich auf die Existenz des Syscalls "PlayerEngine:SetControlTargetValue" aufmerksam gemacht, der im Gegensatz zum Syscall "PlayerEngine:SetControlValue" hier greift! -- Danke nochmals dafür *dhoch*

      Das einzige Problem das ich noch habe, ist das die Werte der ControlValues "PZBOnOff" und "SifaOnOff" auf 1 stehen bleiben. Beide Zugsicherungssysteme scheinen dennoch zu funktionieren (Rückmeldung bzgl. SiFa und PZB Einschaltung des vR Messagesystems kommen wie gewünscht). Tiefgründige Tests ob das Einfluß auf die Funktion beider Systeme hat habe ich nicht getätigt. Alle versuche die Werte beider Stats (SiFa-/PZBOnOff) auf "0" zu setzen, blieben bislang erfolglos. Egal ob aneinander gefügt oder mit irgendwelchen "Zeitüberbrückern" zwischen den "1" und "0" Befehlen.
      Nur wenn ich "geschummelt*" habe konnte ich die Werte auf "0" zurücksetzen.

      (*Die Befehle zum Zurücksetzen in einen anderen (zeitlich versetzten) Event verlagert ;) )

      Ich seh mir das morgen Abend nochmal an...wär doch gelacht :)

      Update:

      -Ich bekomme das Problem, das die ControlStates nicht zurück auf 0 gehen nicht in den Griff :(



      -PZB und Sifa scheinen dennoch normal zu funktionieren.

      PZB Zugart O wird auch gewählt...

      Dennoch würde ich jedem raten das folgende Script mit allergrößter Vorsicht zu benutzen (betrifft natürlich nur den SiFa und PZB Bereich ;) )!
      Ich habe keine Ahnung, was das in einem komplexem, vorallem mit PZB-lastigen Manövern ausgestattetem, Szenario anstellt!


      Show Spoiler

      C Source Code

      1. function sleep(n) --Funktion soll das Script fuer "n"-Sekunden anhalten...klappt irgendwie nicht!
      2. TIME1 = GetScenarioTime();
      3. while GetScenarioTime() - TIME1 <= n do
      4. end
      5. end
      6. function OnEvent ( event )
      7. if ( event == "LOCK_CONTROLS" ) then
      8. SysCall ( "ScenarioManager:LockControls" );
      9. end
      10. if ( event == "UNLOCK_CONTROLS" ) then
      11. SysCall ( "ScenarioManager:UnlockControls" );
      12. end
      13. if ( event == "CabCamera") then
      14. SysCall ( "CameraManager:ActivateCamera", "CabCamera" , 0 );
      15. end
      16. if (event == "BRAKEMODE_1") then
      17. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 1 ); --Bremsstellung R (nur 101)
      18. end
      19. if (event == "BRAKEMODE_2") then
      20. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 2 ); --Bremsstellung P
      21. end
      22. if (event == "BRAKEMODE_3" ) then
      23. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 3 ); --Bremsstellung P2 (nur 151)
      24. end
      25. if (event == "BRAKEMODE_4" ) then
      26. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 4 ); --Bremsstellung G
      27. end
      28. if ( event == "SIFA" ) then
      29. SysCall ( "PlayerEngine:SetControlTargetValue", "SifaOnOff" , 0 , 1 ) ;
      30. sleep( "2" ); --sleep( 2 ); egal ob String oder Zahl...es geht nicht!
      31. SysCall ( "PlayerEngine:SetControlTargetValue", "SifaOnOff" , 0 , 0 ) ; --klappt nicht ohne zeitlichen Abstand (Wert bleibt auf 1)
      32. end
      33. if ( event == "PZB_O" ) then
      34. SysCall ( "PlayerEngine:SetControlTargetValue", "PZBOnOff" , 0 , 1 ) ;
      35. sleep( "2" ); --sleep( 2 ); egal ob String oder Zahl...es geht nicht!
      36. SysCall ( "PlayerEngine:SetControlTargetValue", "PZBOnOff" , 0 , 0 ) ; --klappt nicht ohne zeitlichen Abstand (Wert bleibt auf 1)
      37. end
      38. end
      Show All




      Wenn jemand eine Idee hat, warum meine sleep Funktion im Script nicht tut wie es soll (und diese dann auch mit mir teilen möchte :ugly: ) wäre das natürlich klasse.


      Der zum Script passende Fahrplan sieht für meinen Test so aus:


      Falls jemand mein 25 Sekunden Test Szenario für die Verkehrsrote 101 EL haben möchte, schreibt mich an. (Das kann sich aber auch jeder mit den hier vorhandenen Infos in 2 Minuten selber basteln ;) )

      Grüße

      -setter-
      resistance is futile!!!

      The post was edited 2 times, last by -setter- ().

    • So Leute...

      mit @Thors Unterstützung habe ich es nun doch geschafft. Auch hier nochmals danke für Deine Hilfe *dhoch*

      MIt dem Syscall "SysCall ( "ScenarioManager:TriggerDeferredEvent" , "<Evenname>" , n ); (n-Sekunden Verzögerung des aufzurufenden Events) ) hat das ganze funktioniert.

      Hier jetzt nur mal das Rohgerüst (genau wie in meinem Letzten Beitrag, nur funktioniered ;) ) des Scriptes.

      Ich bastel die Tage mal was hübscheres zusammen (Wechsel der PZB-Zugart sollte dann auch gehen), damit man nicht gefühlte 20 Anweisungen zum Aufrüsten braucht...aber als proof of concept reicht mir das erstmal so zum zeigen.

      C Source Code

      1. function OnEvent ( event )
      2. if ( event == "LOCK_CONTROLS" ) then
      3. SysCall ( "ScenarioManager:LockControls" );
      4. end
      5. if ( event == "UNLOCK_CONTROLS" ) then
      6. SysCall ( "ScenarioManager:UnlockControls" );
      7. end
      8. if ( event == "Sifa_null") then
      9. SysCall ( "PlayerEngine:SetControlTargetValue", "SifaOnOff" , 0 , 0 ) ;
      10. end
      11. if ( event == "PZB_null") then
      12. SysCall ( "PlayerEngine:SetControlTargetValue", "PZBOnOff" , 0 , 0 ) ;
      13. end
      14. if ( event == "CabCamera") then
      15. SysCall ( "CameraManager:ActivateCamera", "CabCamera" , 0 );
      16. end
      17. if (event == "BRAKEMODE_1") then
      18. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 1 ); --Bremsstellung R (nur 101)
      19. end
      20. if (event == "BRAKEMODE_2") then
      21. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 2 ); --Bremsstellung P
      22. end
      23. if (event == "BRAKEMODE_3" ) then
      24. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 3 ); --Bremsstellung P2 (nur 151)
      25. end
      26. if (event == "BRAKEMODE_4" ) then
      27. SysCall ( "PlayerEngine:SetControlValue" , "BrakeMode" , 0 , 4 ); --Bremsstellung G
      28. end
      29. if ( event == "SIFA" ) then
      30. SysCall ( "PlayerEngine:SetControlTargetValue", "SifaOnOff" , 0 , 1 ) ;
      31. SysCall ( "ScenarioManager:TriggerDeferredEvent" , "Sifa_null" , 1 );
      32. end
      33. if ( event == "PZB_O" ) then
      34. SysCall ( "PlayerEngine:SetControlTargetValue", "PZBOnOff" , 0 , 1 ) ;
      35. SysCall ( "ScenarioManager:TriggerDeferredEvent" , "PZB_null" , 1 );
      36. end
      37. end
      Show All
      Im gegensatz zum Script in meinem letzten Beitrag sollte dieses Script keinerlei Probleme bereiten.


      Ich werde das ganze (frühestens am Samstag oder Sonntag) wie gesagt noch etwas optimieren.




      In diesem Sinne...


      Grüße


      -setter-
      resistance is futile!!!
    • Vielen Dank für das SCript, funktionioert hervorragend. Ich habe leidiglich ein kleines Problem: Ist es möglich eine stärkere Bremsstellung als die standartmäßigen 4,7 beim Start per Script zu setzen? Da ich mit dem Zug an einer leicht abschüssigen Strecke starte und die 4,7 den Zug nicht ganz halten kann, schaltet sich die PZB nicht ein.
      LG. Schwarzwaldbahner

      UK/US-Szenarien und Mods

      The post was edited 2 times, last by Schwarzwaldbahner ().

    • irgend so etwas dachte ich mir schon ;)

      ...nur war Bremshebelverhalten hier (bislang) noch nie ein Thema.

      Bremsart ja...Durchaus.

      Wer Interesse an so etwas hat muss sich nur die ControlStates der benutzen Bremsen ansehen und entsprechend Scripten...Ist doch gar nicht so schwer...oder doch ;)

      Grüße

      -setter-
      resistance is futile!!!
    • @-setter- @fan Exakt das meinte ich, dass ich die Bremskraft anpasse. Gut, dann werde ich mir am Wochenende mal die ControlStates anschauen.

      Das Script konnte ich so replizieren, das funktioniert alles. Ich denke die Änderung des PZB-Modus aus M wird wohn auch über die ControlStates gehen, oder?
      LG. Schwarzwaldbahner

      UK/US-Szenarien und Mods
      Werbung