Problem mit meinem Iventar

  • GM 8

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

  • Problem mit meinem Iventar

    Ich habe mir ein Inventar für mein Spiel gebastelt, nun drawt er aber immer nur die letzte Münze die ich eingesammel, also wenn ich eine eingesammelt habe siehts so aus:
    X=Inventarplatz(leer) O=Münze
    OXX

    Wenn ich zwei eingesammelt habe so:
    XOX

    Eigentlich sollte es ja so aussehen:
    OOX

    Hier mein Code:
    In der Goldmünze im Collisions-event: (Also das Item das noch nicht im Inventar ist)

    GML-Quellcode

    1. global.Items+=1
    2. global.Gold+=1
    3. instance_destroy()

    Im Inventarobjekt im Create-Objekt:

    GML-Quellcode

    1. global.Items=0
    2. global.Gold=0

    Im Draw-Event:

    GML-Quellcode

    1. repeat(global.Items)
    2. {
    3. if global.Gold>0
    4. {draw_sprite(spr_Gold_coin,0,x+global.Items*32-32,y)}}
    5. draw_sprite(spr_Inventar,0,x,y)


    Hoffe ihr versteht was ich meine, und könnt mir helfen.
    Mfg Rohkar (Wenn nicht geb ich auch noch ein Screen)

    Edit: Kuckt euch meinen letzten Post an um mein aktuelles Problem zu sehen.

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

  • Das Problem ist, du zeichnest alle Münzen am gleichen Ort, also alle im dritten Feld.
    Versuchs so im draw event:

    GML-Quellcode

    1. var i;
    2. draw_sprite(spr_Inventar,0,x,y)
    3. for(i=0;i<global.items;i+=1)
    4. draw_sprite(spr_Gold_coin,0,x+i*32-32,y)


    Der Rest ist soweit in Ordnung.

    Mfg Alron
  • Ich verstehe das mit for und dem i noch nicht so ganz aber es funktioniert, danke!
    Ich habe aber noch eine Frage was hat eigentlich i für einen Wert wenn ich z.b 1ne Münze eingesammelt habe?
    Ich verstehe nähmlich noch nicht ganz diese Zeile:

    GML-Quellcode

    1. for(i=0;i<global.Items;i+=1)
    :S
    Mfg Rohkar
  • for ist das Schlüsselwort für for-Schleifen.
    Diese for-Schleife: for (i=0;i<42;i+=1;)
    sieht mit repeat so aus:

    GML-Quellcode

    1. i=0;
    2. repeat(41)
    3. {
    4. i+=1;
    5. }

    Mit while:

    GML-Quellcode

    1. i=0;
    2. while(i<42)
    3. {
    4. i+=1;
    5. }

    Und noch der Hilfe Link: gm-d.de/help/hh_start.htm?401_12_for.html
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Also, die for-schleife funktioniert so:

    schritt 1: Zuerst wird i auf 0 gesetzt ( for(i=0;)

    schritt 2: Dann wird geschaut, ob i kleiner als global.items ist( for(i=0;i<global.items; )
    global.items=3 und i=0, also ist der ausdruck i<global.items=true(wahr)

    wäre global.items = 0 oder weniger, wäre der ausdruck false(falsch) und die schleife würde beendet

    schritt 3: weil der ausdruck von schritt 2 wahr ist, läuft jetzt alles innerhalb der klammern {} durch, und am ende wird i+=1 gemacht( for(i=0;i<global.items;i+=1) )

    jetzt werden schritt 2+3 solange wiederholt, bis der ausdruck von schritt 2 false ist( in diesem fall: wenn i grösser oder gleich gross wie globa.items ist)

    klingt kompliziert ist aber eigentlich ganz einfach

    hoffe du verstehst in etwa was ich meine

    mfg Alron
  • Hmm kann man auch machen das man stattessen ein Bogen im inventar hat? xD
    Edit: Es ist schwerer als ich gedacht habe ein Inventar zu machen. :S
    Edit2: bin kurz vor einer lösung meines Problems ich muss nurnoch hinbekommen das er weiß wieviel Gegenstände bereits im inventar sind.
    Mein code bis jezt:

    GML-Quellcode

    1. if show=true
    2. {
    3. var i;
    4. draw_sprite(spr_Inventar,0,x,y)
    5. for(i=0;i<global.Gold;i+=1)
    6. draw_sprite(spr_Gold_coin,0,x+i*32,y)
    7. var i;
    8. for(i=0;i<global.Bow_wooden;i+=1)
    9. draw_sprite(spr_Bow_wooden,0,x+i*32,y)
    10. }

    Das mit dem show ist nur dafür da damit man das Inventar verbergen kann.

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

  • Ist das schlimm?
    Edit: Hmm ich muss noch eine beschränkung einbauen sonst kann man ja unendlich Items tragen. :P
    Edit2: Ich werde mich wohl damit abfinden müssen das es nur ein objekt Zeichen gibt. xD
    Edit3: Habe es jezt doch geschafft das es mit mehreren Items funktioniert, nur habe ich jezt das Problem das nach dem Vierten Objekt es nicht mehr im Inventar Sprite befindet, da mein Sprite 4x4 groß ist also eigentlich 128x128
    Edit:4 Ich habe jezt einfach mein Inventar in die Länge gezogen und es hat jezt statt 16 Plätzen nur 10 vll reicht es ja...

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