Objekt von Klasse erstellen (LUA) | Create object from class (LUA)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Objekt von Klasse erstellen (LUA) | Create object from class (LUA)

    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:


    XML-Quellcode

    1. <extraSourceFiles>
    2. <sourceFile filename="map/scripts/test.lua" />
    3. </extraSourceFiles>


    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.


    Python-Quellcode

    1. print("LUA: Test geladen");
    2. Test = {}
    3. function Test:onCreate(id)
    4. print("LUA: created Test, id: ", id);
    5. g_currentMission:addUpdateable(Test:new(id));
    6. end;
    7. function Test:new(name)
    8. print("LUA: created Test, name: ", name);
    9. local self = {};
    10. setmetatable(self, Rotator_mt);
    11. self.axisTable = {0, 0, 0};
    12. self.me = name;
    13. self.speed = Utils.getNoNil(getUserAttribute(name, "speed"), 0.0012);
    14. local axis = Utils.getNoNil(getUserAttribute(name, "axis"), 3);
    15. self.axisTable[axis] = 1;
    16. return self;
    17. end;
    18. function Test:delete()
    19. end;
    20. function Test:update(dt)
    21. rotate(self.me, self.axisTable[1] * self.speed * dt, self.axisTable[2] * self.speed * dt, self.axisTable[3] * self.speed * dt);
    22. end;
    Alles anzeigen
    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

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Skript ()