Inventar mit Maps 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 mit Maps problem

    Also ich habe da ein Problem beim auslesen meines Inventars.
    Es wird mit hilfe zweier maps erstellt.


    Im Create event des inventars:

    GML-Quellcode

    1. max_inv_platz=24 // maximal Platze
    2. map_inv_inhalt=ds_map_create()
    3. map_inv_menge=ds_map_create()
    4. //inventar leeren
    5. i=0
    6. while i<=max_inv_platz
    7. {
    8. ds_map_add(map_inv_inhalt,i,0)
    9. ds_map_add(map_inv_menge,i,0)
    10. i+=1
    11. }
    Alles anzeigen


    Nun habe ich ein inventar, wobei bei

    GML-Quellcode

    1. ds_map_add(map_inv_inhalt,i,0)
    die 0 für" leer" steht, brauch ich später für den image_index

    im Kollisions_event zum Sammelbaren Objekt ist

    GML-Quellcode

    1. j = obj_inventar.max_inv_platz
    2. // Trank im inventar suchen
    3. i=0
    4. while i<j
    5. {
    6. if ds_map_find_value(obj_inventar.map_inv_inhalt,i)=1 //steht für Trank
    7. {ds_map_replace(obj_inventar.map_inv_menge,i,+1);
    8. instance_destroy();
    9. exit}
    10. i+=1
    11. }
    12. i=0 //Wenn nicht, dann neu anlegen
    13. while i<j
    14. {
    15. if ds_map_find_value(obj_inventar.map_inv_inhalt,i)=0// leer
    16. {ds_map_add(obj_inventar.map_inv_inhalt,i,1);
    17. ds_map_add(obj_inventar.map_inv_menge,i,1);
    18. instance_destroy();
    19. exit;
    20. }
    21. i+=1
    22. }
    23. //Beenden wenn"voll"
    24. show_message("kein Platz")
    Alles anzeigen


    Nun sollte , wenn ich alles richtig verstanden und die Hilfe richtig interpretiert sein
    in der einen map an stelle "x" der inhalt sein
    und in der anderen map an der gleichen stelle die Menge.

    Nun zu Auslesen

    GML-Quellcode

    1. image_index = ds_map_find_value(obj_inventar.map_inv_inhalt,0)


    Aber irgendwie geht das nicht

    Edit:

    Geht doch, wobei

    GML-Quellcode

    1. if ds_map_find_value(obj_inventar.map_inv_inhalt,i)=0// leer
    2. {ds_map_add(obj_inventar.map_inv_inhalt,i,1);
    3. ds_map_add(obj_inventar.map_inv_menge,i,1);
    4. instance_destroy();
    5. exit;


    in das geändert werden sollte

    GML-Quellcode

    1. if ds_map_find_value(obj_inventar.map_inv_inhalt,i)=0// leer
    2. {ds_map_replace(obj_inventar.map_inv_inhalt,i,1);
    3. ds_map_replace(obj_inventar.map_inv_menge,i,1);
    4. instance_destroy();
    5. exit;

    zählen war auch falsch

    richtige Code zum addieren ist

    GML-Quellcode

    1. i=0 //Schon trank1 im inventar?
    2. while i<j
    3. {
    4. if ds_map_find_value(obj_inventar.map_inv_inhalt,i)=1
    5. {ds_map_replace(obj_inventar.map_inv_menge,i,ds_map_find_value(obj_inventar.map_inv_menge,i)+1);
    6. instance_destroy();
    7. exit}
    8. i+=1
    9. }


    kann also geschlossen werden

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