Inventar problem

  • GM 8

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

  • Inventar problem

    Hi leute

    ich hab mal versucht so eine art simples inventar zu machen jedoch scheitere ich irgentwann immer entweder weils zu viele variablen werden oder weil ich mit ds_list nich soo klar komm und nicht ganz verstehe wie das mir helfen soll.

    Ich versuche das inventar so zu basteln dass man gegnstände von auserhalb hereinziehen kann und rausziehen.

    ich habs mal angehängt es würde aber schon total reichen wenn mich jemand auf die richtige spur bringen würde.

    thx im vorraus



    PS.: hab die SuFu benutzt aber nich wirklich was gefunden was auf mich zutrifft :D
    Dateien
    • inventar.rar

      (9,62 kB, 156 mal heruntergeladen, zuletzt: )
    Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





    I am a in the GM Quiz! :heul: :vogel:

    :gmlove:

    xD
  • Du hast gleich mehrere Probleme bei deinem Inventar.

    1. Beim den beiden Mouseevents hast du mehrere ifs hintereinander. Gerade beim Mouse-Release ist das ein Problem, da ja beide ifs zutreffen. Der Gegenstand belegt also beide Slots. Deshalb musst du vor die weiteren ifs nach dem ersten immer noch ein else schreiben und eine Klammer um den ganzen Ausdruck setzen:

    GML-Quellcode

    1. mouse=false
    2. if (place_meeting(x,y,object0)==true and global.slot1==true)
    3. {
    4. slot=1;
    5. x=object0.x;
    6. y=object0.y;
    7. im_inv=true;
    8. global.slot1=false
    9. }
    10. else if (place_meeting(x,y,object0)==true and global.slot2==true)
    11. {
    12. slot=2;
    13. x=object0.x;
    14. y=object0.y;
    15. im_inv=true;
    16. global.slot2=false
    17. }
    Alles anzeigen


    2. Problem: Es ist ziehmlich unsinnig Variablen slot1, slot2 etc. anzulegen, dazu ist es wirklich praktischer mit Listen oder Arrays zu arbeiten, die du dann zB. in einer for-Schleife durcharbeiten kannst.

    In dem Fall sowas wie (nicht getestet):

    GML-Quellcode

    1. mouse=false;
    2. for (i=1;i<=2;i+=1) // 2 natürlich anpassen auf die Anzahl der freien Felder, zB. 16
    3. {
    4. if place_meeting(x,y,object0)==true and global.slot[i]==true)
    5. {
    6. slot=i;
    7. x=object0.x + floor(i/4) * 32;
    8. y=object0.y + (i mod 4) * 32;
    9. im_inv=true;
    10. global.slot[i]=false;
    11. exit;
    12. }
    13. }
    Alles anzeigen


    EDIT: doch mal ausprobiert, siehe Anhang
    Dateien
    • inventar.zip

      (9,86 kB, 155 mal heruntergeladen, zuletzt: )
    Einige meiner Spiele:
  • cool danke

    aber noch ne Frage und zwar was muss ich ändern dass ein längeres object zwei slots belegt ??

    und wie speichere ich das was im inventar liegt bei einem raumwechsel. Gibt es dafür eine andere Möglichkeit als mit ner ini? :)

    Thx wenn mir jemand helfen könnte

    Weiß wirklich keiner was ;( :thumbdown: :whistling:
    Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





    I am a in the GM Quiz! :heul: :vogel:

    :gmlove:

    xD

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von miau ()

  • Also zu der zweiten Frage: Du gehst auf den Room-Editor und dann auf settings und da Persisten ein Häckchen rein :)
    Viel Spaß!

    MfG Rodrog

    Edit: Also die Antwort von henrik1235 ist besser weil mit den Persisten ist schon kake zu arbeiten :)
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • @henrik1235
    Ich hab mal ein Tutorial geschrieben:
    Ein Inventar
    Wenn du Variablen in das Spezial Object "global" tust bleiben sie im ganzen Spiel da.
    Sry aber les dir bitte erst den ersten post durch bevor du postest das ist ja total sinnlos. Oben steht dass ich die gegenstände hineinziehen will und nicht irgentwelche kästchen ersetzen wie in deinem Tutorial.

    und 2. ja ich weiß das globale variablen bleiben, aber im 2. raum bringt es mir nichts wenn ich weiß das slot1 belegt ist ich muss wissen WAS darin ist.

    @Rodrog
    Also zu der zweiten Frage: Du gehst auf den Room-Editor und dann auf settings und da Persisten ein Häckchen rein
    Und wenn sich in einem anderen raum was im inventar ändert dann ändert sich das im persistenten raum meines wissens nach nicht mit. Also bringt das nichts or? :(
    Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





    I am a in the GM Quiz! :heul: :vogel:

    :gmlove:

    xD
  • Jo aber du weiß schon... wenn im Raum mit dem Editor
    z.b. in Slot 1 ein Trank ist

    DANN ist auch in dem anderen Raum der Slot 1 mit einen Trank besetzt, und wenn du es jetzt hier änderst wirds überall geändert.

    global.slot1 = trank,
    DANN ist auch im anderen raum
    global.slot1 =trank


    global.slot1 = nix,
    DANN ist auch im anderen raum
    global.slot1 = nix

    P.S.: Sinnlos ist nie was^^
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • hmm...

    Du hasst ja sowieso deine ganzen "Gegenstände" bestimmt in eine Variable abgespeichert in den einen Raum oder???
    Die Variable setzt doch einfach auf "global." also einfach nur global. vor der Variable einfügen, einmal gespeichert wirst es wohl haben, hab mir die Datei nicht angesehen... aber ich kanns mir ohne speichern ja eh nicht vorstellen :)

    MfG Rodrog



    Edit: Meine nicht eine Varialbe sondern mehrer, oder halt arrays, wie du es gemacht hast halt!
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Rodrog ()

  • HÄÄ?? ?( 8| :?:

    Könntest du es bitte nochmal formulieren das meine wenigkeit es auch kapiert??

    wieso soll tich meine objecte in variablen speichern??
    Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





    I am a in the GM Quiz! :heul: :vogel:

    :gmlove:

    xD
  • Wie würdest du das in eine ini-datei speichern... indem du abrufst was in den slots drinnen ist...
    Jetzt mach das selber aber speicher das in eine Variable und nicht extra in eine ini datei,
    Und las es in dem anderen Raum wieder ausgeben...
    Ich weiß ja nicht wie dein Inventar funktioniert oder wozu es genau da ist :) aber ich lade mir die Datei runter und dann sehen wir weiter...
    ...
    ...

    So habs mir runtergeladen und auch angeguckt... Du ziehst Objecte in das Inventar, du speicherst ab das der Inventar Platz nun belegt ist ABER ja nicht was da drinnen ist, soweit ich halt gesehen habe...
    Das heißt du musst jetzt jedes Object das da drinnen ist irgendwie speichern, da musst dir halt code überlegen, ich weiß jetzt nicht genau aber der Code sollte so aussehen, das du alle Slotes kontrollierst ob was drinnen ist, wenn Ja dann überprüfst du WAS drinnen ist und speicherst das wieder in eine extra Varialbe, oder halt in eine ini wie du willst :)

    Kompliziert erklärt aber ungefähr so sollte es klappen...
    Wenn ich was falsch habe einfach nur korrigieren.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Ich weiß nicht ob das jetzt so dazupasst, aber ich hab Inventare mit wenigen Slots immer so gemacht:

    GML-Quellcode

    1. inv1_name
    2. inv1_worth
    3. inv1_dmg
    4. inv1_spr
    5. inv1_img
    6. inv2_name
    7. inv2_worth
    8. inv2_dmg
    9. inv2_spr
    10. inv2_img
    11. inv3_name
    12. inv3_worth
    13. inv3_dmg
    14. inv3_spr
    15. inv3_img
    Alles anzeigen

    ...und so weiter...
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • So also ich hab jetzt die Datei von interceptor genommen und sie so bearbeitet das auch gespeichert wird was drinnen ist du musst halt wenn du 3 verschiedene Sachen hast immer denn namen ändern... habs dir in eine Variable und in eine ini gepspeichert

    also gegenstand[] heißt die Variable, kannst ja auch item benennen ist deine entscheidung :D

    MfG Rodrog

    Edit: Gerade gemerkt das die Datei fehlerhaft ist, vergessen zu speichern^^ hab sie noch mal neu hochgeladen...
    Edit²: Öhm die Datei klappt aber du musst halt beim rausnehmen des Objectes die Variable gegestand = ""; machen, sorry mein Fehler
    Dateien
    • inventar.zip

      (9,98 kB, 144 mal heruntergeladen, zuletzt: )
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Rodrog ()

  • Benutzer online 1

    1 Besucher