DragNDrop Problem (Löschung aller inhalte in den Arrays)

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

  • DragNDrop Problem (Löschung aller inhalte in den Arrays)

    Guten Tag,

    Ich hänge gerade an einem Problem.
    Und zwar habe ich ein Inventar System. Das funktioniert auch soweit ganz gut.
    Nur wenn ich jetzt ein Item aus dem Inventar ziehe dann löscht er den Inhalt aus dem Array so wie er soll.
    Auch löscht er in zweiten Arrays die Anzahl der Items.
    Jedoch was nun auftritt ist: Wenn ich auch innerhalt des Inventars ein Item bewege, dann löscht er die Anzahl der Items.
    Er bewegt zwar den Array von Platz zu Platz, aber die Anzahl wird immer auf 0 gesetzt.

    Hier der Code für das Drag:

    if(mouse_check_button_released(mb_left))
    {
    if(mouseOver(coordX,coordY[i],cellHidth,cellWidth,mX,mY))
    {
    mouseRelease(i, 10000, spr_steel);
    mouseRelease(i, 10001, spr_crap);
    }
    if(mouseOver(coordX[i],coordY[i],cellHidth,cellWidth,mX,mY) == false)
    {
    dropItemFromInventory(i, 10000, spr_steel, 0);
    dropItemFromInventory(i, 10001, spr_crap, 1);
    }
    }




    Hier der Code von dropItemFromInventory():
    var tmpSpr = spr;
    var i = argument0;
    var itemID = argument1;
    var sprite = argument2;
    var item = argument3;
    var mX = window_mouse_get_x();
    var mY = window_mouse_get_y();


    if(tmpSpr == sprite)
    {
    if(global.slot[i] == itemID)
    {
    global.slot[slotTaken] = "noone";
    spr = nosprite;
    global.item[item] = 0;
    }
    }


    Ich hab irgendwo ein denk fehler drin. Aber ich komm beim besten willen nicht drauf. Danke schonmal
  • cellHidth ,schreibe mal cellHeight :)

    Aber das ist nur Englisch und nicht dein Fehler. ;)


    Du möchtest doch garantiert nur deine IF-Bedingung negieren (==false), oder?

    Aber ich denke du hast hier ein Koordinatenfehler/Indexfehler?

    Quellcode

    1. if(mouseOver(coordX,coordY[i],cellHidth,cellWidth,mX,mY))


    is no the same:

    Quellcode

    1. if(mouseOver(coordX[i],coordY[i],cellHidth,cellWidth,mX,mY) == false)


    Liege ich richtig ?

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

  • Also Ja,
    Also wenn ich nicht über meinem Coordinaten System befinden (Also CoordX and CoordY) Dann soll er das Item Löschen.
    if(mouseOver(coordX,coordY[i],cellHidth,cellWidth,mX,mY)) <- Wenn meine Maus im System ist ! Das [i] hat er irgendwie im Forum nicht übernommen :D im Script steht es drin.
    if(mouseOver(coordX[i],coordY[i],cellHidth,cellWidth,mX,mY) == false) <-Wenn meine Maus sich nicht im System befindet.

    @ Simon. Ist ein Komplettes Array Raster mit 50 Slots. (Also ich mach es mit GML) nicht per DragNDrop aber im Inventar soll es dragn Drop sein :D

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

  • myAspect schrieb:


    (Also ich mach es mit GML) nicht per DragNDrop aber im Inventar soll es dragn Drop sein :D

    Puh, da bin ich ja beruhigt das ich es falsch verstanden habe.

    Ich nehme an das dein Inventar als erstes entry x und als zweites y ist. der Wert ist dann der Item-ID. Und ein zweiter, welche die Anzahl der Items bestimmt
    also ungefähr so?

    GML-Quellcode

    1. inventory[@ x, y] = item;
    2. amount[@ x, y] = 34;
  • Problem gelöst :)
    Damit:
    if(!point_in_rectangle(mX,mY,global.InventoryStartX+49,global.InventoryStartY+100, global.InventoryStartX + global.InventoryBoxWidth+70, global.InventoryStartY + global.InventoryBoxHidth+60))
    {

    dropItemFromInventory(i, 10000, spr_steel, 0);
    dropItemFromInventory(i, 10001, spr_crap, 1);
    }

    Ich hab einfach die Box nochmal genommen die ich auch für das Raster genommen hab. Jetzt kann ich innerhalb verschieben ohne das er was macht und er dropt das item dann wenn ich aus dem bildschirm haue! :D