Animationen in Lua erstellen

  • Ich würde gerne die Ledge Jump Animation in TEN einfügen.

    Dazu versuche ich, das bestehende TRNG Animations Script iwie nach Lua umzuschreiben.

    Die Logik an sich sollte für mich kein Problem darstellen, mir fehlt nur der Rote Faden, wo ich Funktionen die allgemein gelten sollen, hinschreiben kann.

    Die Abfragen kann man vermutlich hier mit prüfen:

    Kann man aktuell in Lua überhaupt prüfen, ob Lara eine Animation ausführt, bzw. der Spieler einen Button drückt, und kann man dann eine Animation ausführen lassen?

    Animation von Lara geht vermutlich mit Lara.GetAnim()

    Button Abfrage mit KeyIsHit - ich finde in der Referenz aber keine Angabe, woher ich entnehmen kann, welcher Mapping Index nun meine Sprungtaste ist...

    Die Referenz ist da noch sehr dünn..

    Ich brauche auch eine Stelle im Script, wo ich eine Funktion in Lua schreiben kann, die jeden Frame des Spiels prüft, denn ich muss generell prüfen, ob Lara eine bestimmte Animation (Hanging Animation) ausführt UND der Spieler einen Button drückt (Springen Button).

    In der level.lua könnte ich dies ja vermutlich in

    Code
    LevelFuncs.OnControlPhase 

    einbauen, aber denn würde dies ja nur für dieses Level gelten.

    In dem Fall wäre das für mich erstmal kein Problem, ich möchte es aber direkt ordentlich machen und diese Funktion einbauen wollen wo es grundsätzlich für jedes Level gilt.

    Wie kann ich denn in der gameflow.lua eine Funktion schreiben, die eben immer im Spiel Bedingungen prüft und dann ggf. etwas ausführt?

    Oder wo kann ich überhaupt solche grundsätzlichen Funktionen verfassen?

    --- Have fun while raiding ---

    Jungle Fever

    :) Gruß, L.M. :)

    Edited 5 times, last by l.m. (September 24, 2022 at 5:43 PM).

  • Button Abfrage mit KeyIsHit - ich finde in der Referenz aber keine Angabe, woher ich entnehmen kann, welcher Mapping Index nun meine Sprungtaste ist...

    Wie kann ich denn in der gameflow.lua eine Funktion schreiben, die eben immer im Spiel Bedingungen prüft und dann ggf. etwas ausführt?

    Oder wo kann ich überhaupt solche grundsätzlichen Funktionen verfassen?

    Es gibt momentan folgende Tasten, die man benutzen kann:

    Sprich "KeyClear(7)" verhindert, dass man die Sprung-Taste benutzt.

    Was das ständige Abfragen betrifft, da bist du mit "LevelFuncs.OnControlPhase" genau richtig.

    Du kannst auch im Volume Trigger, Funktionen die sich in der Level Lua Datei befinden, ständig abfragen lassen indem du "when inside" nimmst,

    ABER

    momentan beißen sich noch die KEY Commands mit dem Volume Trigger, sprich wenn du

    Code
    LevelFuncs.DisableJump = function ()
    KeyClear(7)
    end

    in deiner Lua Level Datei hast, und in einen Volume Trigger setzt, passiert nichts, da die Abfrage des Volume Triggers den Key Command wieder aufhebt. So hat es mir jedenfalls Lwmte erklärt. Sprich es ist ein BUG, der noch gefixt werden muss.

    Und in die Gameflow.lua kann man meines Wissens nach keine Funktionen setzen, dafür soll man ja die jeweilige Level Lua Datei nehmen. Du kannst dich aber gerne auf trf umhören, ob es da schon was gibt.

    Mehr kann ich dazu auch nicht sagen, da TEN wie gesagt ja noch BETA ist und vieles schon in der Dokumentation steht, aber noch nicht implementiert wurde.

    Deswegen halte ich mich mit einem Tutorial über die KEY Commands noch zurück, bis dieser beschriebene Fehler oben ausgebessert wurde.

    Allerdings habe ich gesehen dass es bestimmte VariablenTypen gibt, die für ein Level oder das ganze Spiel gelten, vielleicht kannst du da was reinsetzen. (Habe mich aber noch nie damit beschäftigt!)

    Table Logic

  • Danke erstmal..

    ja man muss vermutlich erstmal rumprobieren.

    Wo stehen denn solche Infos wie diese hier?

    Es gibt momentan 13 Tasten, die man benutzen kann

    Code local Keys = { Forward = 0, Back = 1, Left = 2, Right = 3, Crouch = 4, Sprint = 5, Walk = 6, Jump = 7, Action = 8, Draw = 9, Flare = 10, Look = 11, Roll = 12, Inventory = 13, Pause = 14, StepLeft = 15, StepRight = 16 }

    In der Referenz hab ich zumindest dies nicht gefunden ...

    --- Have fun while raiding ---

    Jungle Fever

    :) Gruß, L.M. :)

  • aha ok, ja sowas wäre schon allgemein nützlich wenn es sowas gibt.

    Ich finde aktuell nur diese Referenz, gibt es noch etwas anderes?

    Ich bin dabei das mal etwas auszuprobieren, allerdings kackt meine Engine bei diesem Script ab:

    Es gibt keine Fehlermeldung im Log.

    Die letzten Einträge sind:

    [2022-Sept-24 18:30:39] [info] Playing soundtrack 'Audio\219.ogg': success

    [2022-Sept-24 18:30:39] [info] Loading node scripts...

    [2022-Sept-24 18:30:39] [info] 10 node catalogs were found and loaded.


    Es liegt aber def. an diesem Befehl:

    Code
    Lara.GetAnim()

    Wenn ich diese entferne startet das Level.

    Was ist denn daran falsch?

    Ich habe es auch so probiert:

    Code
    local Lara = GetMoveableByName("Lara")
        local ActualAnim = Lara:GetAnim()
        if ActualAnim == 45 then
            local DeathMSG = "LARA PERFORM ANIM 45" 
            local LaraDeathMSG = DisplayString(DeathMSG, 100, 100, Color.new(250,250,250))
            ShowString(LaraDeathMSG, 10)
        end

    Aber dann bekomme ich diese Meldung im Log:

    [2022-Sept-24 18:41:08] [error] Moveable name not found: Lara

    [2022-Sept-24 18:41:08] [error] Scripts\Jungle_Feaver.lua:19: attempt to index a nil value (local 'Lara')

    Nun, gibt es iwo eine Referenz für die verfügbaren Funktionen des Objects "Lara" , und wie kann ich dieses überhaupt referenzieren?

    --- Have fun while raiding ---

    Jungle Fever

    :) Gruß, L.M. :)

    Edited once, last by l.m. (September 24, 2022 at 6:43 PM).

  • Das war's Jörg danke!

    Wir brauchen unbedingt eine vernünftige LUA IDE mit Autocomplete und Anzeigen von Fehlern im Code :D :P

    Kannst das ja mal Nickelony sagen, aber solange der Syntax sich auch immer wieder ändert und Sachen verworfen werden oder neu hinzukommen, will er das glaub noch nicht machen, da das sonst bei jeder neuen TombIDE Version wieder ein Riesenakt wäre, das zu ändern.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!