ds_grid - out of bounds

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

  • ds_grid - out of bounds

    Ich habe ja schon öfters mit ds_grid gearbeitet und selten grössere Probleme damit gehabt. Aber jetzt bin ich mit meinem Latein echt am Ende...

    Create Event:

    GML-Quellcode

    1. brush_set = ds_grid_create(100,100);
    2. ds_grid_clear(brush_set,-1);


    Draw Event:

    GML-Quellcode

    1. var ii = 0;
    2. var ix = 0;
    3. var iy = 0;
    4. for (ii = 0; ii < 49; ii +=1) {
    5. var tx = real(ds_grid_get(brush_set,brush_layer+0,ii));
    6. var ty = real(ds_grid_get(brush_set,brush_layer+1,ii));
    7. if (tx >= 0) {
    8. draw_background_part_ext(brush_bg,tx,ty,16,16,view_xview[0]+532+(ix*16),view_yview[0]+186+(iy*16),1,1,c_white,1);
    9. }
    10. ix += 1;
    11. if (ix = 7) {ix = 0; iy += 1;}
    12. }
    Alles anzeigen

    Wenn ich die X-Koordinaten 0 und 1 abrufe, klappt alles wunderbar. Sobald ich versuche 2,3,4 und 5 abzurufen, meldet game maker: "Grid 0, index out of bounds writing [3,48] - size is [2,200]"
    Ich kapier einfach nicht, wieso size immer [2,200] ist, egal welche Dimensionen ich beim erstellen des Grids eingebe. :headtouch:
    Hat jemand eine Idee?

    Belial
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Hast du schon versucht das grid nach dem erstellen zu resizen?
    Könnte ja möglicherweise funktionieren, ansonsten ist das aber auch sehr komisch. Lass die Größe auch mal ausgeben.
    Nutzt du denn die Variable brush_set wann anders noch?
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Husi012 schrieb:

    Hast du schon versucht das grid nach dem erstellen zu resizen?
    Könnte ja möglicherweise funktionieren, ansonsten ist das aber auch sehr komisch. Lass die Größe auch mal ausgeben.
    Nutzt du denn die Variable brush_set wann anders noch?
    Habe vorhin versucht, das grid direkt nacht dem Erstellen im Create-Event zu resizen. Das hat nicht geklappt. Die grösse habe ich mir mal ausgeben lassen und das Ergebnis was 2,200.

    Habe danach einen Alarm auf 5 gesetzt und erst dann ds_grid_resize aufgerufen. Und siehe da, hat funktioniert!
    :?: :S

    Danke Husi
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Ich kann mir gut vorstellen, dass du die Variable brush_set irgendwo auf 0 setzt. Zumindest sehr Zufall, dass du hier das erste Grid erstellst (steht in der Fehlermeldung). Andererseits, wenn du die Grösse direkt nach den erstellen ausgibst, sollte das wohl nicht das Problem sein. Ist wohl mal wieder ein Bug von GM.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Nope, ich habe alles mehrfach überprüft. Es ist für meinen Level-Editor. Und ich habe neben brush_set nur zwei andere ds_grids und weitere ds_lists und ds_maps, die jeweils andere Namen haben. Ich denke auch, dass es ein Bug sein müsste. Aber irren ist Menschlich. Lustig ist auch, dass GM bei der "outside of bounds"-Meldung auch immer "write" anstatt "read" angibt. :P
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Könnte es sein, dass

    GML-Quellcode

    1. //brush_layer+1 von
    2. var ty = real(ds_grid_get(brush_set,brush_layer+1,ii));


    out of bounds ist?


    Wenn es er dir den Fehler beim writing gibt und nicht beim reading, dann ist der Fehler auch sicherlich dort. Der GM hat aber keine Probleme damit, ein ds_grid im selben step zu erstellen und daraus zu lesen. Gibts noch code wo du das brush set befüllst, abgesehen von ds_grid_clear() ?

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Aku_Ryou schrieb:

    Könnte es sein, dass

    GML-Quellcode

    1. //brush_layer+1 vonvar ty = real(ds_grid_get(brush_set,brush_layer+1,ii));


    out of bounds ist?


    Wenn es er dir den Fehler beim writing gibt und nicht beim reading, dann ist der Fehler auch sicherlich dort. Der GM hat aber keine Probleme damit, ein ds_grid im selben step zu erstellen und daraus zu lesen. Gibts noch code wo du das brush set befüllst, abgesehen von ds_grid_clear() ?
    Das denke ich nicht. Habe alles mehrfach überprüft.

    Und ich habe den code fürs Auslesen versuchsweise ausgeklammert. Da hat GM keine Fehler für "writing" ausgespuckt. Habe von diesem Phänomen auch schon online gelesen. Ich gehe von einem Tippfehler aus.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇