Beiträge von geopard

    Ich dachte den Fehler gefunden zu haben.
    Ich habe numShips oben angegeben statt
    numTrucks.
    Das muß ja dementsprechend auch bei GE geändert werden.


    Leider hat das auch nicht geholfen. Ich versuche mal die originalen Zeilen wieder.





    function Truck:onCreate(id)
    g_currentMission:addUpdateable(Truck:new(id));
    print("created Truck, id: ", id);
    end;
    Vielleicht klappt das.


    Melde mich gleich wieder.

    Hier ist der script


    -- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
    Truck = {}
    local Truck_mt = Class(Truck);


    function onCreate(self, id)
    g_currentMission:addUpdateable(Truck:new(id));
    print("created Truck, id: ", id);
    end;


    function Truck:new(id)
    local instance = {};
    setmetatable(instance, Truck_mt);
    instance.nurbsId = getChildAt(id, 0);
    instance.truckIds = {};
    table.insert(instance.truckIds, getChildAt(id, 1));
    instance.times = {};
    table.insert(instance.times, 0);
    local length = getSplineLength(instance.nurbsId);
    instance.timeScale = (Utils.getNoNil(getUserAttribute(id, "speed"), 10)/3.6);
    local numTrucks = Utils.getNoNil(getUserAttribute(id, "numTrucks"), 1);
    for i=2,numTrucks do
    local truckId = clone(instance.truckIds[1], false, true);
    link(id, truckId);
    table.insert(instance.truckIds, truckId);
    table.insert(instance.times, (1/numTrucks)*(i-1));
    end;
    if length ~= 0 then
    instance.timeScale = instance.timeScale/length;
    end;
    instance.initCount = 0;
    return instance;
    end;


    function Truck:delete()
    end;


    function Truck:update(dt)
    -- Avoid depth buffer of the water shader (initial one frame delay)
    if self.initCount > 0 then
    for i=1, table.getn(self.truckIds) do
    self.times[i] = self.times[i] - 0.001*dt*self.timeScale;
    local x,y,z = getSplinePosition(self.nurbsId, self.times[i]);
    local rx,ry,rz = getSplineOrientation(self.nurbsId, self.times[i], 0, -1, 0);
    setTranslation(self.truckIds[i], x, y, z);
    setRotation(self.truckIds[i], rx, ry, rz);
    end;
    else
    self.initCount = self.initCount + 1;
    end;
    end;

    Dann in der i3d NAME_DER_ZIP.onCreate. Alternativ das Script so lassen und mit NAME_DER_ZIP.Truck.onCreate versuchen aber keine Ahnung ob das geht :whistling:

    Wenn ich deine Version versuche dann gibt er mir den Fehler an:


    scripts/Truck.lua:5: attempt to index global 'Truck' (a nil value)


    script wird schon geladen aber es funktioniert nicht.

    Danke für die schnelle Antwort modelleicher,



    Ich habe in dem script alles mit ship auf truck geändert.
    Das ist alles.


    Ship = {}
    local Ship_mt = Class(Ship);


    Mußt du denn auch nicht oben die Wörter Ship auf Truck ändern?
    Oder bleiben die bei Ship?


    Auch bei dem Rest des scripts muß doch ship auf Truck geändert so viel ich weiß.


    Ich versuche mal deine Version. Vielleicht klappt es ja.


    mfg,


    Geo

    Hallo LS Gemeinde,



    Ich wollte mein eigenes ship.oncreate lua erstellen.
    Habe es mit modDesc.xml als script bzw. extrasource file gelinkt.
    Dann habe ich das Originale genommen
    http://www.ls-mods.de/scriptDo…=objects/Ship&language=de


    Habe dort das Wort zu z.B. truck geändert. Alle ersetz.
    Dann ein spline erstellt und statt Ship.onCreate mein erstelltes Truck.onCreate
    als script callback genommen und nichts passiert.
    Funktioniert nicht.
    Um mich zu vergewissern, daß der spline funktioniert habe ich Ship.onCreate genommen. Das funktioniert.
    Dann kann eigentlich irgendwas mit dem erstellten Truck.onCreate script falsch sein.


    Das verstehe ich nun gar nicht. Kann es sein, daß die scripte auf dieser Seite http://www.ls-mods.de/scriptDocumentation.php?language=de
    nicht funktionieren? Oder habe ich bei Änderung des Wortes von ship auf Truck etwas falsch gemacht?


    Würde mich auf eure Ratschläge freuen.


    mfg,


    Geo