Item-ID Liste

  • GM 8
  • Item-ID Liste

    Servus Community,

    Ich habe eine Frage welches nun spezifisch die Scripts anspricht (glaube ich doch?)
    Und zwar weise ich jeden Item eine ID zu. Wenn man nun mit der Maus rüberfährt soll aus einer Scriptdatei der Itemname und der Seltenheitsgrad dieses Items rausgelesen werden.

    Werden dafür Arrays benötigt? (Denn theoretisch würde es auch ohne funktionieren?)
    Wie genau könnte ich sowas aufstellen?
    Ich finde es nämlich ein wenig ungünstig den Namen und alles immer in den Item selbst zu speichern :/

    Hoffe ihr wisst was ich meine, Danke im Vorraus!

    LG Marvin159

    EDIT:// Im Momment schauts so aus :


    GML-Quellcode

    1. var name, rare, wert, itemid;
    2. name = argument0;
    3. rare = argument1;
    4. wert = argument2;
    5. itemid = argument3;
    6. item = instance_create(x,y,obj_itemlist);
    7. item.name = name;
    8. item.rare = rare;
    9. item.wert = wert;
    10. item.itemid = itemid;
    11. return item;
    Alles anzeigen

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

  • Du kannst dafür Arrays verwenden, aber die sind generell ne ziemlich schlechte Wahl, weil du maximal 2 Dimensionen benutzen und die Speichergröße des Arrays nicht selbst handhaben kannst. Ich empfehle dir daher die Datenstruktur ds_grid, die dir diese Optionen bietet. Deine Items kannst du dann etwa wie folgt handhaben:

    GML-Quellcode

    1. var i;
    2. grid=ds_grid_create(4,/*anzahl all deiner items*/);
    3. for(i=0;i<ds_grid_height(grid);i+=1){
    4. /* hier musst du name, rare, wert und id in abhängigkeit des zählers i festlegen */
    5. ds_grid_set(grid,0,i,name);
    6. ds_grid_set(grid,1,i,rare);
    7. ds_grid_set(grid,2,i,wert);
    8. ds_grid_set(grid,3,i,itemid);
    9. }

    Damit hättest du ein Array erstellt, das 4 Spalten breit und beliebig viele Zeilen lang ist und eine Liste all deiner Items und ihrer Eigenschaften enthält. Mit der Funktion ds_grid_write kannst du aus dieser Liste dann einen String machen und den dann mit den file_text-Funktionen auf deiner Festplatte speichern. Wenn du ihn dann beim nächsten Spielstart von da ausliest, kannst du mit ds_grid_read wieder das Array draus machen und sparst es dir, die ganze Zuordnungsfunktion da oben nochmal auszuführen. Spart dann gut was an Ladezeit beim Spielstart.
  • Irrenhaus3 schrieb:

    Du kannst dafür Arrays verwenden, aber die sind generell ne ziemlich schlechte Wahl, weil du maximal 2 Dimensionen benutzen und die Speichergröße des Arrays nicht selbst handhaben kannst. Ich empfehle dir daher die Datenstruktur ds_grid, die dir diese Optionen bietet. Deine Items kannst du dann etwa wie folgt handhaben:

    GML-Quellcode

    1. var i;
    2. grid=ds_grid_create(4,/*anzahl all deiner items*/);
    3. for(i=0;i<ds_grid_height(grid);i+=1){
    4. /* hier musst du name, rare, wert und id in abhängigkeit des zählers i festlegen */
    5. ds_grid_set(grid,0,i,name);
    6. ds_grid_set(grid,1,i,rare);
    7. ds_grid_set(grid,2,i,wert);
    8. ds_grid_set(grid,3,i,itemid);
    9. }

    Damit hättest du ein Array erstellt, das 4 Spalten breit und beliebig viele Zeilen lang ist und eine Liste all deiner Items und ihrer Eigenschaften enthält. Mit der Funktion ds_grid_write kannst du aus dieser Liste dann einen String machen und den dann mit den file_text-Funktionen auf deiner Festplatte speichern. Wenn du ihn dann beim nächsten Spielstart von da ausliest, kannst du mit ds_grid_read wieder das Array draus machen und sparst es dir, die ganze Zuordnungsfunktion da oben nochmal auszuführen. Spart dann gut was an Ladezeit beim Spielstart.
    Ah alles klar, also dient die Variable i für die ID und die wird bei jedem ds_grid_set befehl um 1 erhöht ?
    Damit sollte es geklärt sein :)
    Vielen Dank!

    Bei auftretenden Probleme werde ich hier editieren.

    LG Marvin159
  • Marvin159 schrieb:

    Ah alles klar, also dient die Variable i für die ID und die wird bei jedem ds_grid_set befehl um 1 erhöht ?


    Richtig, du kannst die IDs über den Zähler zuweisen lassen (so wird das ja generell überall gemacht). Sie manuell zu vergeben, macht nur Sinn, wenn du Extra-Items einbauen willst, die im Spiel dann gar nicht vorkommen sollen sondern als Cheat dienen. Wobei ich mir da vielleicht überlegen würde, die in einer Extraliste zu speichern.
  • Irrenhaus3 schrieb:

    Marvin159 schrieb:

    Ah alles klar, also dient die Variable i für die ID und die wird bei jedem ds_grid_set befehl um 1 erhöht ?


    Richtig, du kannst die IDs über den Zähler zuweisen lassen (so wird das ja generell überall gemacht). Sie manuell zu vergeben, macht nur Sinn, wenn du Extra-Items einbauen willst, die im Spiel dann gar nicht vorkommen sollen sondern als Cheat dienen. Wobei ich mir da vielleicht überlegen würde, die in einer Extraliste zu speichern.
    Ah, alles klar :)
    Dann nochmals Danke!
    Die Extraliste werde ich mir dann wohl auch anfertigen ^^

    LG Marvin159
  • Benutzer online 5

    5 Besucher