Speichern funktioniert nicht / Variable speichern

  • heyho,


    ich möchte gerne die Variable "XP" speichern. Diese ist im BP "Levelling", welcher eine Actor Component ist.


    habe daher folgenden Code:

    https://www.bilder-upload.eu/upload/c5bf18-1585753385.png

    (Hoffe man kann einigermaßen erkennen was da steht :I)


    Es werden unter Dokumente\Unreal Projects\Projektname\Saved\SaveGames .sav-Dateien generiert, allerdings gibt er mir FEHLER aus! Hat wer ne Ahnung warum? Danke :)

    Zu blöd für Unreal. Aber Unity wär noch schlimmer... *dead*

    ==== P.S.: ====
    Wer ist das?

    :gamemaker:

    == P.S. Ende ==

  • SaveGameRef (oder SaveGameRev?) wird nicht gesetzt. Du musst nach dem Erstellen / Laden die Return Values der Nodes verwenden, um die Variable zu setzten. Ansonsten versuchst du ja ein nicht existentes Objekt zu speichern.

    Wie meinst du das?

    Habe dann z.B. von Create Save Game Object die Return Value zu Save Game to Slot, ist zwar kompatibel aber Load Game kann dann ja nicht verbunden werden.

    Zu blöd für Unreal. Aber Unity wär noch schlimmer... *dead*

    ==== P.S.: ====
    Wer ist das?

    :gamemaker:

    == P.S. Ende ==

  • Die Idee mit einer Variable SaveGameRef ist richtig, aber nur die Variable erstellen reicht nicht. Die ist dann standardmäßig NULL (bzw. einfach gleich gar nichts). Die Return Values musst du verwenden, um der SaveGameRef überhaupt einen Wert zu geben.

    Aaahhhh ok... probiere ich. Danke :)

    Zu blöd für Unreal. Aber Unity wär noch schlimmer... *dead*

    ==== P.S.: ====
    Wer ist das?

    :gamemaker:

    == P.S. Ende ==

  • "Create Save Game Object" hat als Output eine Variable des Typs, den man mit "Save Game Class" einstellt. Also in deinem Fall eine "Speichern XP"-Variable. Deshalb solltest du den Variablentyp von "Save Game Rev" auch auf "Speichern XP" stellen. Bei "Load Game From Slot" mach noch ein "Cast To" (Speichern XP) davor.


    Also:

    Load Game From Slot -> Cast To Speichern XP -> Set Save Game Rev -> ...
    Create Save Game Object -> Set Save Game Rev -> ...

  • Also:

    Load Game From Slot -> Cast To Speichern XP -> Set Save Game Rev -> ...
    Create Save Game Object -> Set Save Game Rev -> ...

    [Blockierte Grafik: https://i.ibb.co/HX4XDrr/alswafawf.png]

    So? Da sagt er dass es immer scheitern wird. Und ich kriege immer false... ich glaube sowas ist nix für mich :I

    Zu blöd für Unreal. Aber Unity wär noch schlimmer... *dead*

    ==== P.S.: ====
    Wer ist das?

    :gamemaker:

    == P.S. Ende ==

  • Entschuldige bitte, ich hatte die Fehlermeldung aus deinem anderen Post falsch gelesen. Ich dachte die Save Game Class, die du verwendest "wäre SpeichernXP", es ist allerdings "Speicher". Das heißt der Variablentyp von "SaveGameRev" muss nicht "SpeichernXP", sondern "Speicher" sein. Da brauchst du dann auch kein CastTo nach dem "CreateSaveGameObject", da der Output vom Typ "Speicher" sein wird.



    Hier nochmal mit Bild:

  • Entschuldige bitte, ich hatte die Fehlermeldung aus deinem anderen Post falsch gelesen. Ich dachte die Save Game Class, die du verwendest "wäre SpeichernXP", es ist allerdings "Speicher". Das heißt der Variablentyp von "SaveGameRev" muss nicht "SpeichernXP", sondern "Speicher" sein. Da brauchst du dann auch kein CastTo nach dem "CreateSaveGameObject", da der Output vom Typ "Speicher" sein wird.

    Tut mir leid dir das sagen zu müssen, aber ich kriege immernoch "FEHLER" raus. Hier nochmal mein ganzer Code...

    Danke übrigens für deine Bemühungen :)


    Edit:

    Kann ich auch die Savegamedateien umbenennen? Heißen z.B. Speichern_XP_C_134.sav


    Edit 2:

    Sorry wegen dem Save Game / Save Game Rev gedöns... ich nutze jetzt Save Game weil ich mit Save Game Rev kein get/set machen kann

  • Möglicherweise ist der Wert ungültig und deshalb geht das nicht

    Habe ihn geändert und siehe da - erfolg!
    Habe dann noch Keys zum "Add XP" und "Load Game" gesetzt. Es speichert eigentlich current XP, zeigt aber nichts an auf der XP Bar... naja. Werde mal gucken. Vielen Dank :) Wenns nochmal ein Problem gibt... melde ich mich. ;)*dead*


    Edit:
    Habe jetzt schon ne Frage... wie setze ich jetzt Current XP? Natürlich gehts sonst nicht... Siehe Bild. Über Return Value? Current XP ist glaube ich Float

  • Habe gerade mal grob drüber geschaut. Sieht alles etwas verquer aus, was du da machst. Leider muss ich jetzt erstmal zum Arzt, ich werde es mir nachher mal genauer anschauen. Ich hoffe, ich kann dein Vorhaben nachvollziehen


    P.S. Und hör mal auf mit diesen blöden Extra Connections in den Verbindungen. Man kann ja kaum noch nachvollziehen was du da überhaupt verbinden hast.

  • So, ich habe mir das Ganze mal etwas genauer angeschaut. Fangen wir mal mit deinem Stil an. Letztendlich kannst du natürlich programmieren wie du willst, aber so ein Chaos führt natürlich auch schnell zu Fehlern.


    Punkt 1. Nicht so viele Zwischenpunkte einfügen. Erst Recht nicht, wenn sie dann zurück und wieder nach vorne usw. führen. Ganz schlecht zu lesen.


    2. Ein Variablen-GET musst du nicht auf Teufel komm raus nur einmal setzen und dann kreuz und quer mit dem ganzen restlichen Blueprint verbinden. Lieber einmal mehr die Variable abfragen und direkt, nah am Node verbinden. Der Compiler räumt das für dich schon auf. Das ist seine Aufgabe.


    3. Eine Aufgabe = Ein Abschnitt im Blueprint. Nicht mit Events oder Variablen oder was auch immer mehrere Aufgaben verbinden. Einmal dient das der Lesbarkeit und zweitens ist der Programmablauf gar nicht mehr logisch zu verfolgen.


    Nun aber mal zum Hauptproblem. Ich weiß ja nicht was bei dir Speicher ist, wahrscheinlich irgend ein Actor oder so, keine Ahnung. Auf jeden Fall gehe ich mal davon aus, dass die Objektverküpfung dann definitiv falsch ist.


    Variablen wie XP, HP, AMMO usw. liegen ja normalerweise im Playercharacter. Also solltest du diesen auch Casten und dann Objektverbindung an Get Player Charakter (0) setzen.


    Und was du beim Tastendruck Taste 4 vorhast erschließt sich mir nicht so ganz. Eigentlich gehört die Erhöhung des XP auch in den Playercharacter und dann eben halt XP=XP+[Wert], oder wenn sich XP immer um 1 erhöht halt XP++


    Und dann gleich wieder Savegame? Außerdem wird Add XP gleich aus drei Richtungen ausgeführt, zweimal automatisch und per Tastendruck, aber alles in einer Ausführungslinie?

  • Aber an der Stelle kann ich dir auch ein Plugin empfehlen, was in meinen Augen ziemlich entwicklerfreundlich ist.


    Tadaaa - Link.


    Müsste gratis sein, aber vielleicht funktionierts nicht mit 4.24.

    Nee, geht nicht mit der 4.24... kann ich einfach mit der 4.22 das Projekt öffnen?

    Zu blöd für Unreal. Aber Unity wär noch schlimmer... *dead*

    ==== P.S.: ====
    Wer ist das?

    :gamemaker:

    == P.S. Ende ==