OnCreate Probleme

  • Hallo zusammen,


    ich möchte ganz gerne einen Trigger auf der Map erstellen, der über eine onCreate Funktion reagiert und z.B. einen print() Befehl ausführt.


    Nach viel ausprobieren und suchen im Netz geht leider immer noch nichts.

    Zitat

    Was muss ich in dem ScriptCallback EingabeFeld eingeben?


    Test.modOnCreate oder Test.OnCreate

    Zitat

    Muss das ScriptFile per extraSourceFile Tag in die xml der Map eingebunden werden, oder kann man das ganze auch in eine extra Zip verpacken?

    Zitat

    Was muss mindestens in der LUA Datei stehen um etwas auszuführen?

    Ich hoffe ihr könnt mir helfen, Danke im Voraus.


    Gruß
    Wagenheber

  • Ich mach das so wenn das script in einem mod (zip) ist:


    Userattributes bei einem Mapobjekt: script callback, onCreate mit Inhalt: NamederZIP.DeinKlassennamen.onCreate


    Der Dateiname vom Mod (zip) ist dann: NamederZIP.zip


    Der Code vom Script sieht so aus:
    [lua]
    function DeinKlassennamen.onCreate(self, id)
    print("created script callback, nodeid: ", id);
    end;
    [/lua]

  • Vielen Dank, ich probier' es gleich aus und meld' mich dann wieder...


    Edit: Hat geklappt :thumbup:


    Edit²: Leider neues Problem:


    Das ganze klappt nur, wenn ich "DeineKlasse." rauslasse, allerdings kann ich dann keinen Trigger mehr adden. Jemand eine Ahnung, was ich falsch mache?


    Gruß Wagenheber

  • Moin..


    Hmm.. Ich nutze diese Methode:




    [lua]function rotationDoors.onCreate(id)
    g_currentMission:addUpdateable(rotationDoors:new(id));
    print("rotationDoors: rotationDoors onCreate aufgerufen. OnCreate Id: "..id.." .")
    end;
    g_onCreateUtil.addOnCreateFunction("rotationDoorsOnCreate", rotationDoors.onCreate);[/lua]


    Im Trigger beim onCreate ScriptCallback hab ich dann modOnCreate.rotationDoorsOnCreate stehen.
    Allerdings hab ich die LUA's direkt in die moddesc der Map eingebunden, daher kann ich nicht sagen obs auch über extra zip geht.. Auch keine Ahnung ob das ne gute Methode ist, aber bei mir funktionierts :D


    LG

  • Hat jemand vielleicht noch eine Idee, wieso es nur funktioniert, wenn ich die Klasse weglasse und in der Lua direkt "function onCreate..." steht?


    Wagenheber

  • War auch mein erster Gedanke, dass ich das vergessen habe, ist aber vorhanden:


    [lua]ControlTrigger = {};


    function ControlTrigger.onCreate(self, id)


    print("created script callback, nodeid: ", id);


    end;[/lua]

  • wenn du eine eine Zip hast (TestZipMod.zip)


    in der:


    [lua]TestMod = {};


    function TestMod:loadMap(name)
    end;


    function testFunction()
    end;


    function TestMod:deleteMap()
    end;


    function TestMod:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function TestMod:keyEvent(unicode, sym, modifier, isDown)
    end;


    function TestMod:update(dt)
    end;


    function TestMod:draw()
    end;
    addModEventListener(TestMod);[/lua]


    steht, wird das gesamte Script global unter der Variable TestZipMod. gespeichert.


    Die Class TestMod lässt sich global über: TestZipMod.TestMod aufrufen.


    Hiermit kann man auf alle Claas functions zugreifen: TestZipMod.TestMod:deleteMap()


    Will man jetzt global die function testFunction aufrufen, macht man das so: TestZipMod:testFunction()


    Ruft man nun aber alle function der Claas und der zipLocalen in der Zip auf fällt das TestZipMod. allerdings weg:


    TestZipMod.TestMod -> TestMod
    TestZipMod.TestMod:deleteMap() -> TestMod:deleteMap()
    TestZipMod:testFunction() -> testFunction()



    Vielleicht hilft das ein wenig weiter ;)

Jetzt mitmachen!

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