Ein Inventar

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

    • Ein Inventar

      Warum geht es in diesem Tutorial?
      Es geht darum wie man ein Inventar erstellt, so wie es bei den RPG Spielen Üblich ist.
      Ein Slot fasst nur 1 Item also nicht so wie bei Pokémon.
      Grundlagen
      • Variablen und Arrays
      • For-Schleife
      • GML
      Wie funktioniert diese System?
      Eine Item-ID oder Object-ID wird in einem Array gespeichert von dem ausgelesen werden kann.
      Codes
      Einen Array:

      GML-Quellcode

      1. global.inventar[0]=0; //Nun ist global.inventar[0] 0.
      2. //Da wir zu faul sind das zu kopieren bis 16 (oder so) Slots da sind machen wir es so:
      3. for (i=0;i<16;i+=1;)//For-Schleife
      4. {
      5. global.inventar[i]=0;
      6. }

      Zum Beispiel kannst du auch ein Script machen das du z.B. scr_inventar_init nennst. Das werde ich auch machen

      Nun können wir mit dem Array "rumspielen".
      Wir können ihn ändern oder Zeichnen.

      Ein Item hinzufügen

      GML-Quellcode

      1. //scr_inventar_add(Iteam-Id oder Object-Id)
      2. for (i=0;i<16;i+=1;)
      3. {
      4. if (global.inventar[i]==0) //Ist dieser Slot frei?
      5. {
      6. global.inventar[i]=argument0; //Belegen
      7. exit;
      8. }
      9. }
      10. //Wenn Inventar voll ist:
      11. show_message("Inventar voll");
      Alles anzeigen

      Erklärung:
      Mit einer For schleife gehen wir den Code der in den { } durch und zwar 16 mal dabei wird geguckt ob an der Inventar Position i (der Counter von der For Schleife) ob kein Item drin ist (Leer=0) wenn das zutrifft wird der Slot mit dem Item (der Item ID) belegt und beendet die Schleife und gleich dazu noch das ganze Script (exit) damit nicht das ganze Inventar damit voll belegt wird.

      Zeichnen:

      GML-Quellcode

      1. //scr_inventar_draw(x,y,slots pro zeile z.B. 3);
      2. var xx,yy,zeile;
      3. xx=argument0;
      4. yy=argument1;
      5. zeile=0;
      6. for (i=0;i<16;i+=1;)
      7. {
      8. draw_sprite(global.inventar[i],0,xx,yy) ; //Was auch immer
      9. xx+=32;
      10. zeile+=1;
      11. if (zeile>argument2)
      12. {
      13. zeile=0;
      14. xx=argument0;
      15. yy+=32;
      16. }
      17. }
      Alles anzeigen

      Sollte eigenlich verstanden werden, wenn nicht bitte sagen ich werde eine kleine Erklärung dazu schreiben.

      Ende
      Nun hast du ein Einfaches Inventar. Du kannst auch Items löschen, das solltest du nun aber hin bekommen. ;)

      Example
      Download GM 7.0 (Rechtsklick->Speicher Unter)

      MfG Henrik1235
      wupto.net/ Nicht meine Seite!
      We love Koalas.

      GM-D-Spam-o-Meter: 32%

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

    • wobei DeinItemname ein Sprite sein sollte.
      Nicht unbedingt: In meinen Tut zeig ich zwar was von draw_sprite aber das kann man ändern. Ich hab z.B. einen zweiten Array indem die Sprites drin sind.(die werden mit execute_string erfasst: execute_string("return spr_item_"+item) und das nur wenn sich was verändern ) diese werden dann gedrawt. Die Beschreibung und Namen hab ich auch in einen Array gemacht (Array Index=Item-ID).
      Ich mach das immer genauso, gut erklärt :)
      Thx.^^
      wupto.net/ Nicht meine Seite!
      We love Koalas.

      GM-D-Spam-o-Meter: 32%
    • ein super tut hendrik1235(ich merks mir nie ^^ ) Henrik1235,
      allerdings habe ich eine Frage: inwiefern kann ich "argument0" und so weiter ändern, (also in Argument10 etc)
      da ih bereits x viele Argummente in Scripts in meine Game habe, was in etwa 20 seiten Code entspricht und ich keine Lust habe, 1k objekte nach argumenten zu durchsuchen :D
      deshalb, würde ich gerne wissen, wie ich den Code verändern kann, damit ich es in meinem Game anwenden kann (also wie die Argumente umbenennen)

      lg, domis4 :thumbsup:
    • nicht wirklich, ich meine, dass es in meinem game bereits Argument0 gibt, genauso wie 1,2,3 und 4

      wenn ich jetzt den Script so anwende, meint er, dass das Inventar bereits voll ist, da ja Argument0 schon vergeben ist und einen anderen Wert darstellt


      wenn ich allerdings Argument0 z.b. in Argument10 umbennene und die ganzen anderen Argumente (1 zu 11, 2 zu 12 usw) umbennene kommt ein rießiges Chaos raus, da
      das Inventar an Allen Ecken und Enden des Raumes verstreut liegt
    • domis4 schrieb:

      nicht wirklich, ich meine, dass es in meinem game bereits Argument0 gibt, genauso wie 1,2,3 und 4

      wenn ich jetzt den Script so anwende, meint er, dass das Inventar bereits voll ist, da ja Argument0 schon vergeben ist und einen anderen Wert darstellt


      wenn ich allerdings Argument0 z.b. in Argument10 umbennene und die ganzen anderen Argumente (1 zu 11, 2 zu 12 usw) umbennene kommt ein rießiges Chaos raus, da
      das Inventar an Allen Ecken und Enden des Raumes verstreut liegt



      hey, nicht ignorieren ;(

      ich will das Inventar auch bei mir verwenden, aber selbst wenn ich alle anderen scripts deaktiviere, (argument0 usw auch lösche etc)
      erkennt das Inventar, wenn ich mit (z.b.) Fish kolidiere, das das Inventar bereits voll ist :motz:


      kann ich wie oben bereits erwähnt die Argumente umbennenen?
      also anstatt argument0 argument10?

      lg, domis4

      PS:
      sry wegen threadpushing :S
    • hey, nicht ignorieren ;(
      Sorry, das ich erst so spät antworte, ich hab kein WLAN Internet, und irgend jemand hat das wieder put gemacht. :(
      kann ich wie oben bereits erwähnt die Argumente umbennenen?
      also anstatt argument0 argument10?
      Wie meinst du das? Du kannst doch einfach add_inventar(blaaa); benutzen ? Wobei ist da das Problem?
      nicht wirklich, ich meine, dass es in meinem game bereits Argument0 gibt, genauso wie 1,2,3 und 4
      argument0!=Argument0, du kannst aber die argumente im Script ändern von 0 auf 12 oder so musst nur im gesammten Script ändern das würde kein Fehler ausgeben

      ich will das Inventar auch bei mir verwenden, aber selbst wenn ich alle anderen scripts deaktiviere, (argument0 usw auch lösche etc)
      erkennt das Inventar, wenn ich mit (z.b.) Fish kolidiere, das das Inventar bereits voll ist :motz:
      Siehe PN/PM.

      #edit: Danke das es jemand verwendet. :D
      wupto.net/ Nicht meine Seite!
      We love Koalas.

      GM-D-Spam-o-Meter: 32%
    • henrik1235 schrieb:

      hey, nicht ignorieren ;(
      Sorry, das ich erst so spät antworte, ich hab kein WLAN Internet, und irgend jemand hat das wieder put gemacht. :(
      kann ich wie oben bereits erwähnt die Argumente umbennenen?
      also anstatt argument0 argument10?
      Wie meinst du das? Du kannst doch einfach add_inventar(blaaa); benutzen ? Wobei ist da das Problem?
      nicht wirklich, ich meine, dass es in meinem game bereits Argument0 gibt, genauso wie 1,2,3 und 4
      argument0!=Argument0, du kannst aber die argumente im Script ändern von 0 auf 12 oder so musst nur im gesammten Script ändern das würde kein Fehler ausgeben

      ich will das Inventar auch bei mir verwenden, aber selbst wenn ich alle anderen scripts deaktiviere, (argument0 usw auch lösche etc)
      erkennt das Inventar, wenn ich mit (z.b.) Fish kolidiere, das das Inventar bereits voll ist :motz:
      Siehe PN/PM.

      #edit: Danke das es jemand verwendet. :D

      ich chek das alles nich :headtouch:
      kann nur drag und drop.... mein projegt ist fly in the sky
      nur doof das ich nicht skripten kann :headtouch:
      doch gamemaker ist trotzdem cool :gmlove:
    • Benutzer online 1

      1 Besucher