Silo save mod und Map Fruit Trigger

  • Hallo,


    ich verwende beide mods "MapFruitTrigger" und "SiloSaveMod". Nun möchte ich den MapFruitTrigger ein bischen modifizieren. D.h. wenn ich einen Hänger auflade soll sich die Siloplane senken. Dazu habe ich im SiloSaveMod nachgeschaut und in der *.lua Folgende zwei Funktionen gefunden:


    getTranslation(g_currentMission.tipTriggers.movingId);


    setTranslation(g_currentMission.tipTriggers[i].movingId, x , y , z);




    Die eine Funktion liest die Koordinaten der Siloplane des Triggers i aus und die andere setzt die Koordinaten neu, wenn ich sie richtig interpretiere. Aber als ich diese zwei Funktionen in den MapFruitTrigger.lua reingeschrieben habe hat es nicht funktioniert. In der Logdatei steht das die Variabeln bzw. die Funktion get- und setTranslation ein nil value haben, warum? Und wie kann ich dies verbessern? Kann mir da jemand helfen? Danke.[/i]

  • Wenn es nicht einfach geht wie kann ich dann dieses Problem umgehen bzw. lösen? Ich möchte ja auf die Koordinaten der Siloplane zugreifen. Diese ist ja eine i3D, die in die Map eingebunden ist. Was währe denn eine denkbare Lösung?

  • Das habe ich in die FruitTrigger.lua in die Funktion update(). bisher geschrieben. Das die SiloSave nichts mit dem FruitTrigger zu tun hat weis ich. Ich habe lediglich die zwei Funktionen gesehen die genau das machen was ich brauche.



    und das liefert mir die log.txt wenn ich das erste if auskommentiere:


    [string "C:/Users/Tobias Schwarz/Documents/My Games/..."]:81: attempt to call field 'getTranslation' (a nil value)
    Error running lua function: update


    Daher muss g_currentMission.tipTriggers = nil sein, da er mir nicht in dieses if reinläuft wenn ich es nicht auskommentiert habe.

  • Ich habe zwei MapFruitTrigger in der Map diese sind nach der for-Schleife zufolge 1 und 2. Dieses i habe ich auch in diesem Quellcodeausschnitt drinnen. Meine Zwei tipTrigger des Fahrsilos sind auch 1 und zwei. Dies habe ich aus der xml der MapSiloSave. Also gerade geschickt. Es kann nur sein das die zwei MapFruitTrigger im Fahrsilo auf der falschen Seite sind. Folglich sind die Trigger mit der richtigen Zahl i implementiert.

  • wie gesagt g_currentMission.tipTriggers.movingId geht nur so: g_currentMission.tipTriggers[i].movingId


    und heist noch lang nicht dass der 1. eintrag aus der silo.xml g_currentMission.tipTriggers[1].movingId sein muss sondern kann auch 14 oder was auch immer sein.

  • Oben im Quellcode habe ich einen Fehler beim kopieren ins Forum gemacht. In meiner *.lua steht es richtig drinnen so wie es jetzt gepostet ist aber der Fehler ist trotzdem der gleiche. Tatsache beim aufruf wird doch eine for - Schleife in der SiloSave abgearbeitet. Diese Schleife fängt bei i = 1 an und läuft bis zur Anzahl der tipTriggers. Ich habe 14 tipTrigger. Die for - Schleife in der MapFruitTrigger.lua fängt bei 1 an und hört bei der anzahl der MapFruitTrigger auf also 2 da ich zwei MapFruitTrigger habe. Laut der xml des SiloSaveMod ist mein Trigger mit dem Index i = 1 meine Linke Bucht des Fahrsilos und der Trigger mit dem Index i = 2 die Rechte. Also passt der Index i. Würde die eintragung in die Tabele willkürlich erfolgen würde dein SiloSaveMod gar nicht funktionieren da die reihenfolge wie du sie aus der xml liest gleich der reihenfolge in der table sein muss. Selbst wenn es ein anderes Silo währe das angesprochen wird, würde ja die x,y,z Koordinaten, die die getTranslation() - Methode liefert, nicht nil sein. Sie ist aber nil (Siehe ausschnitt aus log.txt). Ein Silo das es gar nicht gibt wird auch nicht angesprochen da ich mehr tipTrigger habe als MapFruitTrigger.(Siehe for - Schleifen zahlenbereich).

  • Habe eine Lösung für das Problem gefunden. Ich habe die SiloSave.lua so umgeschrieben das er mir alle tipTrigger mit namen ausließt.


    Daraus erkennt man das main SiloTrigger 1 und 2 fürs FahrSilo der 6. und 7. Trigger ist. Also habe ich nun folgendes in meinem Quellcode implementiert:



    Dies Funktioniert auch die Siloplane senkt sich während des Füllvorgangs. Aber ich möchte noch die -1.4 verschwinden lassen wie lese ich den richtig das UserAttribut das die min Füllmenge meines Triggers angibt aus. Ich brauche also die Id vom Trigger. Mit der Funktion:

    getUserAttribute(g_currentMission.tipTriggers[index], "moveMinY");


    Da steht in der log.txt bekommt wieder ein nil und ein nil kann er nicht mit einer Zahl vergleichen logischerweise. Wie komme ich dann auf die richtige Id des Triggers?

  • Ok ich habs:


    Die moveBackTime des Fahrsilos habe ich abgeschalten ansonsten Funktioniert das Ganze. Falls es noch Verbesserungvorschläge gibt, bin ich ganz Ohr. Ansonsten vielen Dank für die Hilfe.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!