Jump to content

BauerHeini

Mitglieder
  • Gesamte Inhalte

    135
  • Benutzer seit

  • Letzter Besuch

Beiträge erstellt von BauerHeini

  1. Ok, was ich meine ist:

    1. Meine Funktion habe ich als benutzerdefiniertes Ereignis mit Namen "Kreisbogen" angelegt:

    function Laenge(Alpha, Radius)
    local l = Alpha / 360 * 2 * math.pi * Radius
      return l
    end

    Die Testabfrage per Taster lautet:

    $("Beschriftung").text = Laenge(90, 10)

    Die Fehlermeldung lautet:

    [11:05:14] Ereignis-Protokollierung gestartet
    [11:05:18] Schalter wird betätigt -> Taster, 0
    [11:05:18]     Schalter wird betätigt
    [11:05:18]         Skriptfehler (9): attempt to call a nil value (global 'Laenge')

    2. Um die Länge eines Objekt auszulesen geht...

    $("Beschriftung").text = $("G01").variables["Lg/Rad"]

    auch nicht. "G01" ist ein Gleis.

  2. Liebe Programmierer und MBS-Freunde,

    ich habe mir ein/e Gleis/Spur gebastelt, die mir mit einem Skript ein Fahrzeug auf eine bestimmte Geschwindigkeit bringen soll:

    Fahrzeug betritt ein Gleis/Straße mit Schlagwort "Signalgleis"

    local l       --LgRad
    local sp = 0  --Speed

    if track.variables["Signal"].state == 2 then
      sp = track.variables["Signal"].variables["Tempo"]
    end

    if track.variables["Alpha"] ~= 0 then --[[Kurve--]]
      l = math.pi / 180 * track.variables["LgRad"] * track.variables["Alpha"] * $("Ereignisse").variables["Massstab"]
    else
      l = track.variables["LgRad"] * $("Ereignisse").variables["Massstab"]
    --  l = track.size.y
    end

    $("Bremsen"):invoke(0, vehicle, l, sp)

    -----------------------------------

    benutzerdefiniertes Ereignis

    --[[Parameter:
    Delta = ev. Bremswegverlängerung
    Fahrzeug = auslösendes Fahrzeug
    Laenge = auslösende Spurlänge
    Zieltempo
    --]]
    local v = Fahrzeug.currentSpeed / 3600 * 1000  --Umrechnung in m/s
    local s = Laenge - Delta
    local a = (v ^ 2) / (2 * s)

    Fahrzeug.deceleration = a
    Fahrzeug.targetSpeed = Zieltempo

    Nun habe ich zwei Fragen.

    1. Kann man die Variablen, die ich in den Gleisen/Strassen eingebunden habe, wie LgRad oder Alpha (Geometrie: Lg/Rad bzw Winkel) oder den Maßstab, per Programm auslesen?

    2. Wie kann man eine LUA-Funktion erstellen und benutzen? Ich habe das LUA-Tutorial von Goetz gelesen und mir eine Funktion in einem benutzerdefiniertem Ereignis erstellt. Aber wie könnte ich eine Variable bestücken mit dem Wert aus der Funktion? Ich habe ja nur den Namen des benutzerdefinierten Ereignisses und nicht der Funktion.

    In freudiger Erwartung auf Antworten

    BauerHeinz

  3. Vielen Dank alle zusammen. Der Tip mit der Liste war erfolgreich. Jetzt läuft alles super(y):D

    Jetzt möchte ich nur noch herauskriegen, was der Unterschied zwischen Tabelle und Liste ist.

    Viele Grüße

    BauerHeini

  4. Ich habe eine Testprozedur angewendet per Tastendruck...

    table.remove ($("Abzweigung").variables["Wartender_Obj"])

    oder auch

    table.remove ($("Abzweigung").variables["Wartender_Obj"], 1)

    ...aber das Element in der Tabelle wird nicht gelöscht, nur das Objekt.

  5. Eine Frage an die Programmierer. Ich möchte in einer Tabelle, die als Variable an ein Objekt (in diesem Fall Abzweigung) gebunden ist, einen Eintrag hinzufügen und auch wieder löschen. Das Eintragen klappt, das Löschen bei nicht bei Objekten.

    Hier das konkrete Beispiel: ich möchte ein Fahrzeug stoppen, wenn eine Weiche/Abzweigung besetzt ist, und nach Freiwerden der Weiche/Abzweigung wieder beschleunigen. Hier die Prozedur:

    local Obj = track.variables["Wartender_Obj"][1]
    local Richtung = track.variables["Wartender_Nr"][1]

    table.remove (track.variables["Wartender_Obj"], 1)
    table.remove (track.variables["Wartender_Nr"], 1)

    track.variables["besetzt"] = false

    if Obj ~= $("") then
      $("starten"):invoke(Obj, Richtung, track)
    end

    Der Eintrag "Wartender_Nr" ist eine Zahl in der Tabelle, der Eintrag "Wartender_Obj" ist ein Fahrzeug in der Tabelle. Und zwar habe ich eine Tabelle angelegt, weil ja mehrere Fahrzeuge kommen könnten. Der Eintrag "Wartender_Nr" wird auch gelöscht. Die Länge der Tabelle beträgt nach Löschen 0 (ist also leer). Bei dem Eintrag "Wartender_Obj" wird nur das Objekt gelöscht. Die Länge der Tabelle beträgt nach Löschen 1 und wird immer länger (je mehr Fahzeuge die Abzweigung passieren).

    Tabelle.thumb.jpg.3066b7966cb3e23f3ede62027077e61e.jpg

    Wer weiß die Lösung?

    Grüße

    BauerHeini

  6. Vielen Dank für die Hinweise. Ich hatte aber eher an etwas anderes gedacht.

    Bei den Textfeld wollte ich je nach Situation (Aktion oder Skript) die Schriftfarbe oder den Hintergrund ändern.

    Aber viel wichtiger sind Änderungen bei 3D-Objekten. Beispielsweise möchte ich das "Feuer" (von Neo) beim Löschen mit der Feuerwehr langsam reduzieren, also die Größe, Partikelanzahl usw. per Programm ändern. Momentan blende ich es einfach aus. Viel besser anzusehen wäre doch, es langsam zu reduzieren. Oder den Wasserstrahl, wobei ich das Brunnenwasser (von Roter Brummer) mißbrauche, langsam einzuschalten, also die Eigenschaften im 3D-Modelleditor per Skript zu ändern.

×
×
  • Neu erstellen...