Beiträge von Skript

    Hallo,


    ich hätte da mal eine Frage zu der LUA Funktion setDirection();


    Beschreibung und Definition laut GDN:
    Set the direction of an object, the positive z-axis points towards the given direction. The y-axis lies in the direction-up-plane.


    setDirection(integer transformId,float x,float y,float z,float upX,float upY,float upZ)


    Bei meinen bisherigen Tests konnte ich noch nicht herausfinden, wie diese genau funktioniert.
    Ich denke, dass das Objekt so gedreht wird, dass die z-Achse zu der angegeben Position zeigt.

    Wie würde dies aussehen, wenn ich ein Objekt, z.B. zu den Koordinaten 50, 100, 50 ausrichten will?

    Freundliche Grüße


    Skript

    Vielen Dank für eure Antworten!


    Wie bluebaby schon gesagt hat fehlte:


    g_onCreateUtil.addOnCreateFunction("TestOnCreate", Test.onCreate);


    desweiteren musste ich aus dem statischen Aufruf
    function Test:onCreate(id)


    einen dynamischen machen:
    function Test.onCreate(id)


    anschließend unter User Attributes bei onCreate:


    modOnCreate.TestOnCreate



    Vielen Dank für eure Mühe!


    Freundliche Grüße,
    Skript

    Hallo liebe LS Gemeinde,


    vor ein paar Tagen bin ich auf folgendes Problem gestoßen.


    Ich erstelle eine LUA Datei und binde diese in eine Map mittels modDesc.xml ein.
    Dafür verwende ich innerhalb der xml den extraSourceFiles Tag:


    [lua]<extraSourceFiles>
    <sourceFile filename="map/scripts/test.lua" />
    </extraSourceFiles>[/lua]



    Der Inhalt der LUA Datei ist lediglich ein Duplikat der bereits implementierten Klasse Rotator innerhalb der Rotator.lua, die bereits standartmäßig von GIANTS eingebunden wird.
    Innerhalb der Datei wurde nur der Klassenname von Rotator in Test geändert.


    [lua]
    print("LUA: Test geladen");


    Test = {}


    local Test_mt = Class(Test);


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


    function Test:new(name)
    print("created Test, name: ", name);
    local self = {};
    setmetatable(self, Test_mt);
    self.axisTable = {0, 0, 0};
    self.me = name;
    self.speed = Utils.getNoNil(getUserAttribute(name, "speed"), 0.0012);
    local axis = Utils.getNoNil(getUserAttribute(name, "axis"), 3);
    self.axisTable[axis] = 1;
    return self;
    end;


    function Test:delete()
    end;


    function Test:update(dt)
    rotate(self.me, self.axisTable[1] * self.speed * dt, self.axisTable[2] * self.speed * dt, self.axisTable[3] * self.speed * dt);
    end;
    [/lua]

    Die Datei wird auch geladen, da der Debug String von print(); ausgegeben wird.


    Nun möchte ich im Editor ein Objekt erstellen. Ich wähle ein beliebiges Objekt aus, z.B. einen Baum der sich drehen soll.
    Unter "User Attributes" füge ich einen Script callback unter "onCreate" mit dem Parameter "Test.onCreate" ein.


    Allerdings passiert überhaupt nichts. Es wird zwar der print im Konstruktor (onCreate) aufgerufen, jedoch wird keine id übergeben, woraus ein Fehler resultiert, da er aus einem nicht vorhandenem Dummy Objekt mit der id "nil" ein Objekt erzeugen will.


    Freundliche Grüße


    Skript