hi,
ich bastle nun schon seit einigen Tagen an einem Drag and Drop Inventar für mein aktuelles Projekt.
Bisher bin ich auch gut vorangekommen, doch beim letzten Feature (welches eigentlich das einfachste sein sollte) komme ich nicht weiter.
Bei den Inventargegenständen, die auch ausgerüstet werden können, habe ich das Event "Right Mouse pressed" mit folgendem Code eingebaut:
Alles anzeigen
Der Fehler hat anscheinend irgendetwas mit dem object_indext zu tun aber ich kommen einfach nicht dahinter inwiefern.
Zum Testen habe ich zwei Objekte erstellt inv_legs01 (id=41) & inv_legs02 (id=52). Die Objekte sind (bis auf die Sprites) identisch.
Wenn inv_legs01 ausgerüstet ist und man auf inv_legs02 rechtsklickt werden die Positionen wie gewünscht getauscht und das Inventar aktualisiert.
Umgekehrt funktioniert es aber nicht, die variable global.equipment_legs wird bei Rechtsklick auf inv_pants01 nicht geändert.
Testweise habe ich inv_legs01 kopiert (neue id = 56), wobei inv_legs01 die Position von inv_legs02 einnehmen konnte, aber umgekehrt funktionierte es nun nicht mehr.
Der object_index in der variable global.equipment_legs kann also immer nur erhöht werden.
Ich hoffe einer von euch kann mir hier weiterhelfen.
mfg
G
ich bastle nun schon seit einigen Tagen an einem Drag and Drop Inventar für mein aktuelles Projekt.
Bisher bin ich auch gut vorangekommen, doch beim letzten Feature (welches eigentlich das einfachste sein sollte) komme ich nicht weiter.
Bei den Inventargegenständen, die auch ausgerüstet werden können, habe ich das Event "Right Mouse pressed" mit folgendem Code eingebaut:
GML-Quellcode
- //Wenn Inventargegenstand ausgerüstet ist, soll er bei Rechtsklick in Inventar abgelegt werden (funktioniert)
- if(x == view_xview+436 && y == view_yview+573){
- for(i=0;i<global.inventory_space;i+=1){
- if(global.inventory_item[i] == inv_empty){
- global.inventory_item[i] = global.equipment_legs;
- global.equipment_legs = inv_empty;
- global.player_armor -= var_armor;
- scr_inv_open();
- exit;}}}
- //Wenn kein Ausrüstungsgegenstan der gleichen Kategorie aktiv ist, bei Rechtsklick auswählen und an die
- //entsprechende Position schieben (funktioniert)
- if(global.equipment_legs == inv_empty){
- global.equipment_legs = object_index;
- global.player_armor += var_armor;
- instance_create(view_xview+436,view_yview+573,object_index);
- if(var_inventory_side == 1){
- global.inventory_item[var_inventory_position] = inv_empty;}
- if(var_inventory_side == 2){
- global.inventory_transfer.var_item[var_inventory_position] = inv_empty;}
- instance_create(x,y,inv_empty);
- instance_destroy();}
- //Wenn bereits Gegenstand vom gleichen Typ aktiv ist, Positionen tauschen und Inventar neu zeichnen (funktioniert nicht!)
- else{
- global.inventory_show = 0;
- if(var_inventory_side == 1){
- global.inventory_item[var_inventory_position] = global.equipment_legs;}
- if(var_inventory_side == 2){
- global.inventory_transfer.var_item[var_inventory_position] = global.equipment_legs;}
- global.equipment_legs = object_index;
- scr_inv_open();}
Der Fehler hat anscheinend irgendetwas mit dem object_indext zu tun aber ich kommen einfach nicht dahinter inwiefern.
Zum Testen habe ich zwei Objekte erstellt inv_legs01 (id=41) & inv_legs02 (id=52). Die Objekte sind (bis auf die Sprites) identisch.
Wenn inv_legs01 ausgerüstet ist und man auf inv_legs02 rechtsklickt werden die Positionen wie gewünscht getauscht und das Inventar aktualisiert.
Umgekehrt funktioniert es aber nicht, die variable global.equipment_legs wird bei Rechtsklick auf inv_pants01 nicht geändert.
Testweise habe ich inv_legs01 kopiert (neue id = 56), wobei inv_legs01 die Position von inv_legs02 einnehmen konnte, aber umgekehrt funktionierte es nun nicht mehr.
Der object_index in der variable global.equipment_legs kann also immer nur erhöht werden.
Ich hoffe einer von euch kann mir hier weiterhelfen.
mfg
G
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von GSlash ()