Zufallscript schreiben New Lion City

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Gude,


    ich wolle ein Zufallsscript schreiben das bei dem NLC ein Druckregler abblasen ertönt zu unterschiedlichen Zeiten.

    So siehsts aktuell aus, scheint aber nicht zu funktionieren.


    Das hier wurde in der sound_18C_19C_main.cfg eingetragen (ganz unten):


    [sound]

    Druckregler abblasen b.wav

    1



    [3d]

    -0.65

    5.00

    1.6

    0.5


    [trigger]

    druckregler_abblasen


    und bei der script datei: man_18C_19C_main.osc hab ich folgendes eingetragen (ganz unten):


    (L.L.engine_on)

    {if}

    10 random 5 >

    {if}

    (T.L.druckregler_abblasen)

    {endif}


    funktioniert aber nicht LL engine on hab ich nur testweise ausprobiert.X/

  • Ich habe zwar nur ein generelles Programmierverständnis und kein Omsi-spezifisches, aber du hast da zwei "If" und nur ein "endif". Ich würde also auch behaupten, dass da noch ein "endif" fehlt. LG

  • {trigger:druckregler_abblasen}

    (L.L.engine_on)

    {if}

    10 random 5=

    {if}

    (T.L.druckregler_abblasen)

    {endif}

    {endif}

    {end}


    so??

    Einmal editiert, zuletzt von WSW22 () aus folgendem Grund: Ein Beitrag von WSW22 mit diesem Beitrag zusammengefügt.

  • Jetzt wird es aber nur ausgeführt, wenn du den Trigger ausführst... :/ Also sprich über ein Mouseevent bzw. Tastaturbefehl.

    Ansonsten muss das ein Makro sein {macro:xyz} und dieses kannst du dann innerhalb des Script mittels (M.L.xyz) aufrufen.

  • Mach mal bei "10 random 5=" zwischen der 5 und dem Gleichheitszeichen noch ein Leerzeichen.

  • ok danke bus spawnt wieder


    was füßr ein ML eintra soll ich den nehmen??

    Einmal editiert, zuletzt von WSW22 () aus folgendem Grund: Ein Beitrag von WSW22 mit diesem Beitrag zusammengefügt.

  • Schön. Aber vielleicht noch was zu deinem Scriptschnipsel; ich weiß nicht wie du den verwenden willst...? Wenn du den dauerhaft triggern lassen möchtest, dann wird deine Wahrscheinlichkeit unnütz werden. Denn die Abfrage findet mehrmals in der Sekunde statt. Und bei einer Chance von 50% ist es relativ hoch, dass die Bedingung wahr ist und somit der Sound auch mehrmals in einer Sekunde abgespielt wird.

  • kann man doch einstellen das er zb ne 5 in einem 1000 bereich suchen soll


    funktioniert aber immer noch net

    Einmal editiert, zuletzt von WSW22 () aus folgendem Grund: Ein Beitrag von WSW22 mit diesem Beitrag zusammengefügt.

  • {trigger:druckregler_abblasen}

    (M.L.bremse_druckluftsound)

    {if}

    10 random 9 =

    {if}

    (T.L.druckregler_abblasen)

    {endif}

    {endif}

    {end}

  • Das verstehe ich gerade nicht ganz... Hast du da vor, in deinem trigger das Makro zu definieren?

    Ein Makro wird immer so definiert:


    Code
    {macro:NAME}
    
    {end}

    Und mit M.L. lädst du das Makro, was woanders in der Datei definiert ist.


    Also müsste das meines Verständnis nach bei dir so aussehen:


    Code
    {macro:bremse_druckluftsound}
        10 random 9 =
        {if}
            (T.L.druckregler_abblasen)
        {endif}
    {end}

    Aber verstehe ich das richtig? Der Trigger lädt das Makro, welches den Trigger lädt? Entweder bin ich grad doof oder das ergibt irgendwie keinen Sinn...

  • Das, was WSW22 dort zusammengewürfelt hat würde an sich auch gehen. Aber dann hätte man dennoch zusätzlich ein {macro:…} gebraucht, das wäre aber viel zu umständlich gewesen.

  • Ich würde das mit eigenen Variablen Lösen, mit einem separaten Timer, der dann auch verhindert, dass der Sound in jedem Frame abgespielt wird.


    Ich würde diesen Block einfach irgendwo in den {macro:engine_frame} setzen.

    In {macro:engine_init} würde ich dann noch

    Code
    20 random 20 + (S.L.druckregler_random)

    hinzufügen, damit man beim Busspawn direkt einen randomisierten Triggerwert hat. 20 random 20 + bedeutet, dass mindestens 20 Sekunden ablaufen müssen und dann wird ein zufälliger Wert wischen 1 und 20 addiert. Die beiden Werte können natürlich beliebig verändert werden.