Jump n Run Engine funktioniert nicht

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

n00bLik3

Betreff: Jump n Run Engine funktioniert nicht

BeitragSo, Mai 31, 2009 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Tag, allerseits.

Wenn ich meine Jump n Run Engine starten will, bekomme ich folgenden Fehler:

Zitat:
Runtime Error:

Image frame out of range


Ich habe die Dateien sicher 5 mal durchgeackert, aber ich find den Bug einfach nicht. Ich habe das zusammen mit einem Jump n Run Tutorial geschrieben und mit TileStudio - wie der Tutorialschreiber auch - meine eigene Map erstellt.

Irgendwie glaube ich aber, dass dieser Runtime Error nicht der einzige Fehler ist. Beim Starten wird die Map völlig falsch angezeigt.

Wo habe ich da gefailed?

Ihr könnt die Daten hier runterladen:

http://uploaded.to/file/yaeh3y

Oder den Code hier anschauen:

engine.bb
Code: [AUSKLAPPEN]
Graphics 640, 480, 16, 2

SetBuffer BackBuffer()
frametimer = CreateTimer (30)
ClsColor 0, 0, 255
Global  x, y

; Grafiken laden
Global dude = LoadImage ("dude.bmp")
MaskImage dude, 255, 0, 255
Global Back = LoadImage ("himmel.jpg")

; Konstanten und Variablen definieren
Const Player_pos_x = 304, Player_pos_y = 320
Global Player_temp_y# = 0
Global jump = False
Global jumptimer#
Global scroll_x = 0, scroll_y = 0
Global scroll_x2 = 0, scroll_y2 = 0
Global scroll_x3 = 0, scroll_y3 = 0
Const rauf = 200, runter = 208, rechts = 205, links = 203, space = 57
Global TileUPlayer1, TileUPlayer2, TileUPlayer3, TileUPlayer4, TileUPlayer5, TileUPlayer6, TileUPlayer7
Global TileUPlayer8, TileUPlayer9, TileUPlayer10, TileUPlayer11, TileUPlayer12
; Boundvars
Global BoundsUPlayer1, BoundsUPlayer2, BoundsUPlayer3, BoundsUPlayer4, BoundsUPlayer5, BoundsUPlayer6
Global BoundsUPlayer7, BoundsUPlayer8, BoundsUPlayer9, BoundsUPlayer10, BoundsUPlayer11, BoundsUPlayer12

Dim map (10,21)
Include "test_include.bb"
Global M_Width, M_Height, T_Width, T_Height
Global M_Width2, M_Height2, T_Width2, T_Height2
Global Bounds
M_Width  = MapWidth (LAYER_Tiles1_Map1)
M_Height = MapHeight (LAYER_Tiles1_Map1)
T_Width  = TileWidth (LAYER_Tiles1_Map1)
T_Height = TileHeight (LAYER_Tiles1_Map1)

M_Width2  = MapWidth (LAYER_Tiles1_Map1)
M_Height2 = MapHeight (LAYER_Tiles1_Map1)
T_Width2  = TileWidth (LAYER_Tiles1_Map1)
T_Height2 = TileHeight (LAYER_Tiles1_Map1)

; Hauptschleife
Repeat

   WaitTimer (frametimer)

   DrawMap()
   CheckTileUnderPlayer()
   CheckBoundsUnderPlayer()
   MoveDude()
   DoJump()
   DrawPlayer()

   debugging()

   Flip

Until KeyHit (1)
End

Include "functions.bb"


test_include.bb (von TileStudio auto-generated)
Code: [AUSKLAPPEN]
; ---------- Generated by Tile Studio ----------

Const LAYER_Tiles1_Map1 = (0 Shl 8) + 0

; get map width (tiles)
Function MapWidth (map)
  Select map
    Case LAYER_Tiles1_Map1
      Return 21
  End Select
End Function

; get map height (tiles)
Function MapHeight (map)
  Select map
    Case LAYER_Tiles1_Map1
      Return 10
  End Select
End Function

; get tile width (pixels)
Function TileWidth (map)
  Select map
    Case LAYER_Tiles1_Map1
      Return 32
  End Select
End Function

; get tile height (pixels)
Function TileHeight (map)
  Select map
    Case LAYER_Tiles1_Map1
      Return 32
  End Select
End Function


Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 4)
MaskImage Tiles1Bitmap, 255, 0, 255

Dim Tiles1Map1Map (10, 21)
Restore Tiles1Map1MapData
For y = 0 To 10 - 1
  For x = 0 To 21 - 1
    Read Tiles1Map1Map (y, x)
  Next
Next

.Tiles1Map1MapData
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0,  0
Data   1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2
Data   2,  2,  3
Data   4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
Data   4,  4,  4
Data   4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
Data   4,  4,  4
Data   4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
Data   4,  4,  4
Data   4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
Data   4,  4,  4

Dim Tiles1Map1BoundMap (10, 21)
Restore Tiles1Map1BoundMapData
For y = 0 To 10 - 1
  For x = 0 To 21 - 1
    Read Tiles1Map1BoundMap (y, x)
  Next
Next

; tile size: w = 32, h = 32
.Tiles1Map1BoundMapData
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0




Dim Tiles1Sequences$ (0 + 1)

; Tiles1Map1Layer
; movement (x, y) = (x = x, y = y)



; get tile number at position (x,y)
Function GetTile (map, x, y)
  Select map
    Case LAYER_Tiles1_Map1
      Return Tiles1Map1Map (y, x) - 1
  End Select
End Function

; get bounds/map code at position (x,y)
Function GetBounds (map, x, y)
  Select map
    Case LAYER_Tiles1_Map1
      Return Tiles1Map1BoundMap (y, x)
  End Select
End Function

Function DrawTile (map, x, y, tile)
  Select map
    Case LAYER_Tiles1_Map1
      DrawImage Tiles1Bitmap, x, y, tile
  End Select
End Function

; ---------- end of generated file ----------


functions.bb
Code: [AUSKLAPPEN]
;Funktionen
Function DrawMap()
   TileBlock back, (-100 - scroll_x3), (-50 - scroll_y3)

   For y = 0 To M_Height2
      For x = 0 To M_Width2
         DrawTile(LAYER_Tiles1_Map1, (x * T_Width2) - scroll_x2, (y * T_Height2) - scroll_y2, Tiles1Map1Map (y,x))
      Next
   Next

   For y = 0 To M_Height
      For x = 0 To M_Width
          DrawTile(LAYER_Tiles1_Map1, (x * T_Width) - scroll_x, (y * T_Height) - scroll_y, Tiles1Map1Map (y,x))
       Next
   Next
   
End Function 


Function MoveDude()
   If KeyDown(links) Then
      ; Default: Boundwert 8
      If BoundsUPlayer7 <> 8 And BoundsUPlayer7 <> 9 And BoundsUPlayer7 <> 12 And BoundsUPlayer7 <> 13 And BoundsUPlayer7 <> 10 And BoundsUPlayer7 <> 11 And BoundsUPlayer7 <> 14 And BoundsUPlayer7 <> 15 Then 
         If scroll_x =< -312 Then
            scroll_x = -312
         Else
            scroll_x = scroll_x  -4
            scroll_x2 = scroll_x2  -2
            scroll_x3 = scroll_x3  -1
         EndIf
      EndIf
      
      
      ; Spieler ausrichten, falls unter ihm nichts sein sollte.
      If BoundsUPlayer5 <> 0 Then 
         temp = (Player_pos_y + scroll_y) /32
         scroll_y = (temp *32) - Player_pos_y
      EndIf
   ElseIf KeyDown(rechts) Then
      ; Default: Boundwert 2
      If BoundsUPlayer10 <> 2 And BoundsUPlayer10 <> 3 And BoundsUPlayer10 <> 6 And BoundsUPlayer10 <> 7 And BoundsUPlayer10 <> 10 And BoundsUPlayer10 <> 11 And BoundsUPlayer10 <> 14 And BoundsUPlayer10 <> 15 Then 
         If scroll_x => 672 Then
            scroll_x = 672
         Else
            scroll_x = scroll_x +4
            scroll_x2 = scroll_x2 +2
            scroll_x3 = scroll_x3 +1
         EndIf
      EndIf
      
      
      ; Spieler ausrichten, falls unter ihm nichts sein sollte.
      If BoundsUPlayer5 <> 0 Then
         temp = (Player_pos_y + scroll_y) /32
         scroll_y = (temp *32) - Player_pos_y
      EndIf
      
   ; Keine Bounds abfragbar bei "up" und "down"
    ElseIf  KeyDown(rauf) Then
      If TileUPlayer4 = 9 Or TileUPlayer4 = 8 Or TileUPlayer5 = 8 Then
         scroll_y = scroll_y -4
         scroll_y2 = scroll_y2 -2
         scroll_y3 = scroll_y3 -1
      EndIf
   ElseIf KeyDown(runter) Then
      If TileUPlayer6 = 9 Or TileUPlayer6 = 8 Then
         scroll_y = scroll_y +4
         scroll_y2 = scroll_y2 +2
         scroll_y3 = scroll_y3 +1
      EndIf
   EndIf
   
End Function


Function DoJump()
   ; Überprüft, ob Space gedrückt wurde
   If KeyDown (space) Then
      If jump = False
         jump = True
         Player_temp_y = 7
      EndIf
   EndIf
   ; Falls Player nach oben gegen Mauer springt, fällt er zurück
   If BoundsUPlayer1 > 0 And TileUPlayer1 <> 9 And TileUPlayer1 <> 8 And jump = True Then
      jump = False
      scroll_y = scroll_y + Player_temp_y   
      scroll_y2 = scroll_y2 + (Player_temp_y / 2)   
      scroll_y3 = scroll_y3 + (Player_temp_y / 3)
   EndIf
   ; Sprungroutine
   If jump = True Then
      Player_temp_y = Player_temp_y -0.33
      scroll_y = scroll_y - Player_temp_y
      scroll_y2 = scroll_y2 - (Player_temp_y / 2)
      scroll_y3 = scroll_y3 - (Player_temp_y / 3)
      If Player_temp_y =< 0 Then
         ; Bound auf Leiter?
         If BoundsUPlayer6 > 0 Or TileUPlayer6 =8 Then
            jump = 0
            temp = (Player_pos_y + scroll_y) /32
            scroll_y = (temp *32) - Player_pos_y
         EndIf
      EndIf
    EndIf
   
   ; Gravity
   If jump = False  Then
      If BoundsUPlayer6 = 0  And TileUPlayer6 <> 9 And TileUPlayer6 <> 8 Then
      ; Wenn kein Bound und keine Leiter unter der Figur > jump = True
         Player_temp_y = 0
      EndIf
   EndIf
   
   ; Geschwindigkeitsstop
   If scroll_y < -320 Then
      scroll_y = -320
      jump = True
      Player_Temp_y = 0
   EndIf

   If scroll_y > 160 Then
      scroll_y = 160
      jump = False
   EndIf
      
End Function



Function DrawPlayer()
   DrawImage dude, Player_pos_x, Player_pos_y
End Function

Function CheckTileUnderPlayer()
   ; Oben - unten
   TileUPlayer1 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, (Player_pos_y + scroll_y) /32)
   TileUPlayer2 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +8) + scroll_y) /32)
   TileUPlayer3 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   TileUPlayer4 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +24) + scroll_y) /32)
   TileUPlayer5 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +28) + scroll_y) /32)
   TileUPlayer6 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +32) + scroll_y) /32)
   ; Links - Rechts
   TileUPlayer7 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   TileUPlayer8 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +8) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   TileUPlayer9 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +24) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   TileUPlayer10= GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +32) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   ; Unten, Links, Rechts
   TileUPlayer11 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x) +scroll_x) /32, ((Player_pos_y +31) + scroll_y) /32)
   TileUPlayer12 = GetTile (LAYER_Tiles1_Map1, ((Player_pos_x +32) +scroll_x) /32, ((Player_pos_y +31) + scroll_y) /32)
End Function


Function CheckBoundsUnderPlayer()
   ; Oben - Unten
   BoundsUPlayer1 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, (Player_pos_y + scroll_y) /32)
   BoundsUPlayer2 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +8) + scroll_y) /32)
   BoundsUPlayer3 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   BoundsUPlayer4 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +24) + scroll_y) /32)
   BoundsUPlayer5 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +28) + scroll_y) /32)
   BoundsUPlayer6 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +16) +scroll_x) /32, ((Player_pos_y +32) + scroll_y) /32)
   ; Links - Rechts
   BoundsUPlayer7 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   BoundsUPlayer8 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +8) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   BoundsUPlayer9 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +24) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   BoundsUPlayer10= GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +32) +scroll_x) /32, ((Player_pos_y +16) + scroll_y) /32)
   ; Unten, Links, Rechts
   BoundsUPlayer11 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x) +scroll_x) /32, ((Player_pos_y +31) + scroll_y) /32)
   BoundsUPlayer12 = GetBounds (LAYER_Tiles1_Map1, ((Player_pos_x +32) +scroll_x) /32, ((Player_pos_y +31) + scroll_y) /32)
End Function


Function debugging()
   Color 0,0,0
    Rect 0, 0, 130, 100, 1
   Color 255, 255, 255

   Text 30, 0, BoundsUPlayer1
   Text 30, 10, BoundsUPlayer2
   Text 30, 20, BoundsUPlayer3
   Text 30, 30, BoundsUPlayer4
   Text 30, 40, BoundsUPlayer5
   Text 30, 50, BoundsUPlayer6

   Text 0, 20, BoundsUPlayer7
   Text 15, 20, BoundsUPlayer8
   Text 45, 20, BoundsUPlayer9
   Text 60, 20, BoundsUPlayer10

   Text 0, 45, BoundsUPlayer11
   Text 60, 45, BoundsUPlayer12

   Tempx  = ((Player_pos_x +16) +scroll_x)
   tempx2 = (((Player_pos_x +16) +scroll_x) /32) *32
   x = tempx -Tempx2

   Tempy  = ((Player_pos_y +32) +scroll_y)
   tempy2 = (((Player_pos_y +32) +scroll_y) /32) *32
   y = tempy -Tempy2

   Text 90, 10, x
   Text 90, 20, y
   Text 90, 40, Scroll_x
   Text 90, 50, Scroll_y
End Function


Für eure Hilfe bedanke ich mich im Voraus!

Eingeproggt

BeitragSo, Mai 31, 2009 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen im BB Portal!

Also was dein Problem angeht: Du lädtst aus dem Bild 4 Frames:

Code: [AUSKLAPPEN]
Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 4)


Und in deiner Map hast du Tiles von 0 bis 4 (Data unter .Tiles1Map1MapData)
Das sind aber insgesamt 5 Frames! Du kannst in deiner Map nur Tile 0-3 angeben.


Und dann noch ein kleiner Tipp zum Code:
In deiner Hauptschleife hast du vorbildlich einen Timer gesetzt... Aber Timer + Flip ist kontraproduktiv. Wenn du einen Timer benutzt, benutze Flip 0

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

konstantin

BeitragSo, Mai 31, 2009 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
In deinem Data-Field gibt es Daten von 0 bis 4. Das sind 5 (!) verschiedene Tiles.

BlitzBasic: [AUSKLAPPEN]
Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 4) 


Hier laedst du aber ein Bitmap mit lediglich 4 (!) Frames. Ersetze die 4 durch eine 5, und vielleicht klappt es dann.

edit: mist zu spaet

Eingeproggt

BeitragSo, Mai 31, 2009 10:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Fürchte, es wird nicht klappen, wenn man 5 Frames lädt, in dem Bild sind ja nur 4 drin.
Also entweder anderes Bild nehmen mit 5 Frames oder Map-Daten ändern.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

n00bLik3

BeitragSo, Mai 31, 2009 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh mein Gott, wie dumm von mir. Ich WUSSTE, dass es irgend so eine Kleinigkeit sein wird. Naja, dass das 0 auch mitgezählt wird, WUSSTE ich eigentlich. Aber habs da total nicht beachtet.


Ich danke euch vielmals =D
 

n00bLik3

BeitragSo, Mai 31, 2009 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann will ich mich jetz erst einmal für den Doppelpost entschuldigen.

Aber ich hab den Post vorhin abgeschickt, BEVOR ichs wieder getestet hab, mein Fehler!

Ich habs jetz nochmal probiert und die Zeile
Code: [AUSKLAPPEN]

Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 4)


mit
Code: [AUSKLAPPEN]

Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 3)


ersetzt.

Also habe ich nun die richtige Anzahl von Tiles: 0, 1, 2, 3. 4 Stück, also.

Bei .Tiles1Map1MapData habe ich die 4-en auch noch mit 3en ersetzt.

Schlussendlich erhielt ich den gleichen Fehler.
Was mich auch etwas verwirrt ist: Diese File is von TileStudio auto-generated und die Tiles sind auch mit diesem Programm erstellt worden. Warum failed denn GERADE diese auto-generated File?

Nochmal grossen Dank für eure Hilfe =3
 

da_poller

BeitragSo, Mai 31, 2009 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst die 4 nicht in 3 sondern in 5 ändern(wenn dasbild auch 5 frames hat..

ps: es gibt einen editbutton rechts oben in deinem post!

Xaymar

ehemals "Cgamer"

BeitragSo, Mai 31, 2009 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ich habs jetz nochmal probiert und die Zeile
Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 4)
Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 3)

(argh!)
beim laden wird das nicht so gerechnet Surprised
LoadAnimImage(Datei$, AnimBreite, AnimHoehe, StartFrame, TotalFrame)

TotalFrame hättest du auf 4 lassen können
Warbseite
 

n00bLik3

BeitragSo, Mai 31, 2009 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
da_poller hat Folgendes geschrieben:

ps: es gibt einen editbutton rechts oben in deinem post!


weiss ich, allerdings hatte ich Schiss, dass dieses Topic dann nicht mehr beachtet wird.

Cgamer hat Folgendes geschrieben:

LoadAnimImage(Datei$, AnimBreite, AnimHoehe, StartFrame, TotalFrame)

TotalFrame hättest du auf 4 lassen können


Ja, aber was ist dann der Fehler? >_<[/quote]
 

da_poller

BeitragSo, Mai 31, 2009 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
du darfst halt nirgends dann auf die framenummer 4 zurgreifen sondern 3 ist dein höchster frame.

böses foul.. den editbutton kennen und nicht nutzen ist hier nicht gerne gesehen.. dein post wird gesehen und gelesen dieses aufmerksam machen(steht aauch in den regeln) ist schlichtweg verboten Exclamation
 

n00bLik3

BeitragSo, Mai 31, 2009 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
da_poller hat Folgendes geschrieben:

böses foul.. den editbutton kennen und nicht nutzen ist hier nicht gerne gesehen.. dein post wird gesehen und gelesen dieses aufmerksam machen(steht aauch in den regeln) ist schlichtweg verboten Exclamation


Ok, kann ich verstehen. Kommt nicht mehr vor.

da_poller hat Folgendes geschrieben:
du darfst halt nirgends dann auf die framenummer 4 zurgreifen sondern 3 ist dein höchster frame.


Sorry, jetzt bin ich völlig durcheinander... Cgamer sagt, ich soll die Zahl auf 4 lassen. Und du sagst ich soll 3 nehmen?

Was stimmt denn nu? ._.
 

da_poller

BeitragSo, Mai 31, 2009 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
du lädst 4 frames(die 4 lassen) aber wenn du auf framenummer 4 zugreifst geht das nicht da beim index von 0 begonnen wird.. also 0-3 bei 4 frames.
 

n00bLik3

BeitragSo, Mai 31, 2009 11:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, dass ich euch hier mit dem Problem nerv.

Aber. Jetzt kommt eine andere Fehlermeldung.

Ich habe die 4en bei .Tiles1Map1MapData auf 3en geändert.

Jetzt erhalte ich vom Debugger die Fehlermeldung "Array index out of bounds" und er gibt mir folgende Zeile an:

Code: [AUSKLAPPEN]
Return Tiles1Map1Map (y, x) - 1


und hier ist betroffenes Array:

Code: [AUSKLAPPEN]
Dim Tiles1Map1Map (10, 21)


Ich hab gar nicht erst nach nem Fehler gesucht, ich poste gleich hier. Ich bin sowas von demotiviert mit dem Zeug grad.

stell ich mich grad' so blöd, oder BIN ich so blöd? o.O
 

da_poller

BeitragSo, Mai 31, 2009 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Return Tiles1Map1Map (y, x) - 1



das kann nicht gehen


Code: [AUSKLAPPEN]
Return Tiles1Map1Map(y-1,x-1)
 

n00bLik3

BeitragSo, Mai 31, 2009 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
So, danke, da_poller, hast mir schon EINIGES weitergeholfen.

Das Programm funzt jetzt so EINIGERMASSEN, nachdem ich jetz noch 2 Fehler beseitigen musste.

Aber so, wies aussieht, failed auch die Jumproutine ... man landet tiefer, als man vorhin war und dann kommt wieder ne fehlermeldung vom Debugger (Array index out of bounds) und wenn man zu weit läuft, kommt die gleiche fehlermeldung, was aber verständlich ist. Kann man das zu weit aus der Map gehen aber irgendwie verhindern? Klar, durch irgendne Wand, die dann auch dargestellt ist. Kann man aber auch irgendwie eine unsichtbare Begrenzung machen?

Und ich muss schon sagen. Ich bin recht schockiert, dass ein AUTOMATISCH GENERIERTES File falsche Codes erhält...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group