Fehlermeldung - Finde das Problem nicht
Übersicht

![]() |
BaschdiBetreff: Fehlermeldung - Finde das Problem nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probiert das Spiel einfach mal aus
wenn ihr am Anfang startet latscht einfach direkt gegen die Felsen (einfach pfeil-hoch-taste gedrückt halten), der Player dreht sich von selbst, doch kurz bevor er fertig ist mit drehen kommt dieFehlermeldung und ich weiß nicht warum. Bitte schaut es euch an - Danke mfg baschdi ah ja der link natürlich... Code: [AUSKLAPPEN] http://www.file-upload.net/download-952169/GTA.exe.html |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich lade doch nicht eine wildfremde exe aus dem Netz, um sie mal eben so auszuführen, und mir anzugucken, was sie mit meinem PC anstellt. Code oder vergiss es. | ||
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok
das könnte zwar igrendein code sein....aber wenn es dir hilft.... naja is jedenfalls kein virus oder so.,... Code: [AUSKLAPPEN] ;Konstante Const width=800 Const height=width*0.75 Const tile=32 ;Auflösung Graphics width,height,0,2 SetBuffer BackBuffer() ;Allgemein Global gfx$="gfx\" Global sfx$="sfx\" Global xback,yback,proz=0 ;Map Global mapX=64,mapY=64 Dim map(mapX,mapY) Dim status(mapX,mapY) Global tileset=LoadAnimImage(gfx$+"tileset.bmp",tile,tile,0,71);:MidHandle tileset ;Player Global x#=width/2,y#=height/2,xTile,yTile,xDraw,yDraw Global DisX1#,DisY1#,DisX2#,DisY2# Global winkel,turn,Wmas=1,Wmax=359 Global Xeck1#,Yeck1#,Xeck2#,Yeck2# Global live=100 Global player=LoadImage(gfx$+"player.bmp"):MidHandle player Dim ImaPlayer(Wmax) For i=0 To Wmax: ImaPlayer(i)=CopyImage(player) : RotateImage ImaPlayer(i),i*Wmas : Next ;Bullet Global bullet=LoadAnimImage(gfx$+"bullet.bmp",15,15,0,4):MidHandle bullet Dim ImaBullet(Wmax) For i=0 To Wmax: ImaBullet(i)=CopyImage(bullet) : RotateImage ImaBullet(i),i*Wmas : Next Type bullet Field x,y,xx,yy,typ,winkel,speed,leb,team,att End Type ;Enemy Global enemy=LoadAnimImage(gfx$+"enemy.bmp",tile,tile,0,4);:MidHandle enemy Dim ImaEnemy(Wmax) ;For i=0 To Wmax: ImaEnemy(i)=CopyImage(enemy) : RotateImage ImaEnemy(i),i*Wmas : Next Type enemy Field x#,y#,xDraw,yDraw,xTile,yTile,typ,winkel,speed,live,buf,dauer,xWEG,yWEG Field FightStep,uPfad,gesch,xEnd,yEnd,xZ,yZ,entf#,reich,got,radius,sinus# End Type ;Pathfinding Global PfadBank=CreateBank(2),Bsize Global mapwidth=mapX,mapheight=mapY,fightstep,schalter Dim MapData$(50),Fighter(72) Dim sqrmap(50,50),nodemap(0,0),dirx(7),diry(7),dirz(7) For i=0 To 7:Read dirx(i):Read diry(i):Read dirz(i):Next Type node Field parent.node,cost,x,y End Type Type open Field node.node End Type Type path Field node.node End Type Data 0,-1,0, -1,0,0, 1,0,0, 0,1,0 Data -1,-1,1, 1,-1,1, -1,1,1, 1,1,1 ;Hauptschleife LoadMap("test") ;NewEnemy(32*10,32*10,0,0) NewEnemy(32*11,32*10,0,0) ;NewEnemy(32*11,32*11,0,2) Repeat Cls UpdateMap() UpdatePlayer() UpdateBullet() UpdateEnemy() Flip Until KeyHit(1) End ;Function LoadMap(nam$) Function LoadMap(nam$) file=OpenFile("Map\"+nam$+".mfg") For tx=0 To mapX For ty=0 To mapY map(tx,ty)=ReadInt(file) Next Next CloseFile file End Function ;Function UpdateMap() Function UpdateMap() For tx=0 To mapX For ty=0 To mapY If map(tx,ty)>1 Then status(tx,ty)=1 DrawImage tileset,tx*tile-xback,ty*tile-yback,map(tx,ty) Next Next End Function ;Function UpdatePlayer() Function UpdatePlayer() ;Anzeigen DrawImage ImaPlayer(winkel),xDraw,yDraw ;Koordinaten xTile=x/tile:yTile=y/tile xDraw=x-xback:yDraw=y-yback ;Ecken Xeck1=(x+DisX1):Yeck1=(y+DisY1) Xeck2=(x+DisX2):Yeck2=(y+DisY2) Xeck1=Floor(Xeck1/tile):Yeck1=Floor(Yeck1/tile) Xeck2=Floor(Xeck2/tile):Yeck2=Floor(Yeck2/tile) ;Bewegen If KeyDown(205) Then winkel=winkel+3 If KeyDown(203) Then winkel=winkel-3 If winkel>Wmax Then winkel=0 If winkel<0 Then winkel=Wmax ;Kasten Color 255,255,255 Rect 0,0,800,45,1 Color 0,0,0 Text 0,0,"X"+x+"Y"+y+"Tx"+xTile+"Ty"+yTile+"Dx"+xDraw+"Dy"+yDraw+"/"+Xeck1+"/"+Yeck1+"/"+xeck2+"/"+Yeck2+"/"+winkel*Wmas Text 0,15,""+DisX1+"/"+DisY1+"//"+DisX2+"/"+DisY2 Text 0,30,""+Floor(Xeck1/tile)+"/"+Floor(Yeck1/tile)+"//"+Floor(Xeck2/tile)+"/"+Floor(Yeck2/tile) ;Sliden If KeyDown(200) Then: ;oben rechts DisX1=(Cos((winkel*Wmas)-45)*20); (+2) DisY1=(Sin((winkel*Wmas)-45)*20) ;unten rechts DisX2=(Cos((winkel*Wmas)+45)*19) DisY2=(Sin((winkel*Wmas)+45)*19) If status(Xeck1,Yeck1)=0 And status(Xeck2,Yeck2)=0 Then: x = x + Cos(winkel*Wmas)*2 y = y + Sin(winkel*Wmas)*2 xback = xback + Cos(winkel*Wmas)*2 yback = yback + Sin(winkel*Wmas)*2 turn=0 ElseIf status(Xeck1,Yeck1)=1 And status(Xeck2,Yeck2)=1 Then: If turn=0 Then turn=Rnd(1,2) Select turn Case 2 winkel=winkel+2;links Case 1 winkel=winkel-2;rechts End Select ElseIf status(Xeck1,Yeck1)=1 Then: winkel=winkel+2 ElseIf status(Xeck2,Yeck2)=1 Then: winkel=winkel-2 EndIf If winkel>Wmax Then winkel=0 If winkel<0 Then winkel=Wmax ElseIf KeyDown(208) Then: ;oben links DisX1=(Cos((winkel*Wmas)-135)*21); (+2) DisY1=(Sin((winkel*Wmas)-135)*21) ;unten links DisX2=(Cos(135+(winkel*Wmas))*20) DisY2=(Sin(135+(winkel*Wmas))*20) If status(Xeck1,Yeck1)=0 And status(Xeck2,Yeck2)=0 Then: x = x - Cos(winkel*Wmas)*2 y = y - Sin(winkel*Wmas)*2 xback = xback - Cos(winkel*Wmas)*2 yback = yback - Sin(winkel*Wmas)*2 turn=0 ElseIf status(Xeck1,Yeck1)=1 And status(Xeck2,Yeck2)=1 Then: If turn=0 Then turn=Rnd(1,2) Select turn Case 2 winkel=winkel+2;links Case 1 winkel=winkel-2;rechts End Select ElseIf status(Xeck1,Yeck1)=1 Then: winkel=winkel-2 ElseIf status(Xeck2,Yeck2)=1 Then: winkel=winkel+2 EndIf If winkel>Wmax Then winkel=0 If winkel<0 Then winkel=Wmax EndIf ;Schuss If KeyHit(57) Then: b.bullet=New bullet b\xx=x b\yy=y b\speed=5 b\typ=0 b\winkel=winkel b\leb=(b\typ*5)+100 b\team=0 b\att=5 EndIf End Function ;Function UpdateBullet() Function UpdateBullet() For b.bullet=Each bullet ;Anzeigen DrawImage ImaBullet(b\winkel),b\x,b\y,b\typ ;Koordinaten b\x=b\xx-xback b\y=b\yy-yback ;Bewegen b\xx=b\xx+Cos(b\winkel*Wmas)*b\speed b\yy=b\yy+Sin(b\winkel*Wmas)*b\speed ;Kollision If status(b\xx/tile,b\yy/tile)=1 Then b\leb=-2 If b\team=0 Then: ; human For e.enemy=Each enemy If ImagesCollide(bullet,b\x,b\y,b\typ,enemy,e\xDraw,e\yDraw,e\typ)=1 Then b\leb=0:e\live=e\live-b\att Next ElseIf b\team=1 Then: ; com If ImagesCollide(bullet,b\x,b\y,b\typ,player,xDraw,yDraw,0)=1 Then b\leb=0:live=live-b\att EndIf ;Ende If b\xx/tile<1 Or b\yy/tile<1 Or b\yy/tile>63 Or b\xx/tile>63 Then b\leb=0 b\leb=b\leb-1 If b\leb<0 Then Delete b Next End Function ;Function NewEnemy() Function NewEnemy(xd,yd,w,t) e.enemy=New enemy e\x=xd e\y=yd e\winkel=w e\typ=t e\live=25 e\gesch=1 e\xZ=e\x e\yZ=e\y e\xEnd=e\x e\yEnd=e\y e\uPfad=CreateBank(2) e\reich=6 e\dauer=15 e\radius=2 End Function ;Function UpdateEnemy() Function UpdateEnemy() For e.enemy=Each enemy ;Anzeigen DrawImage Enemy,e\xDraw,e\yDraw,e\typ ;Koordinaten e\xTile=e\x/tile:e\yTile=e\y/tile e\xDraw=e\x-xback:e\yDraw=e\y-yback e\xWEG=e\x+16:e\yWEG=e\y+16 ;Zielsuche e\entf=Sqr((Abs(e\xWEG-x)^2) + (Abs(e\yWEG-y)^2) ) If e\entf<=e\reich*tile And e\got=0 Then: e\got=1 e\xEnd=xTile*tile e\yEnd=yTile*tile Pathfinding(e\x/tile,e\y/tile,e\xEnd/tile,e\yEnd/tile):e\FightStep=PfadSpliner() Bsize=BankSize(PfadBank) ResizeBank(e\uPfad,Bsize) CopyBank PfadBank, 0, e\uPfad, 0, Bsize EndIf ;Pathfinding Select e\typ Case 0 ; Angreifer If e\fightstep<0 Then e\fightstep=0 If e\fightstep<1 Then: e\xEnd=e\xZ:e\yEnd=e\yZ;e\xZ=e\xEnd:e\yZ=e\yEnd ElseIf e\fightstep>0 Then: e\xZ=(PeekShort(e\uPfad,e\FightStep)) e\yZ=(PeekShort(e\uPfad,e\FightStep+2)) EndIf If e\x=e\xZ And e\y=e\yZ And e\fightstep>0 Then e\fightstep=e\fightstep-44 Case 1 ; Attentäter If e\fightstep<0 Then e\fightstep=0 If e\fightstep<1 Then: e\xZ=e\xEnd:e\yZ=e\yEnd ElseIf e\fightstep>0 Then: e\xZ=(PeekShort(e\uPfad,e\FightStep)) e\yZ=(PeekShort(e\uPfad,e\FightStep+2)) EndIf If e\x=e\xZ And e\y=e\yZ And e\fightstep>0 Then e\fightstep=e\fightstep-44 Case 2 e\xZ=e\x e\yZ=e\y e\xEnd=e\x e\yEnd=e\y End Select If e\xEnd=e\x And e\yEnd=e\y And e\got=1 Then e\got=0 ;Oben -Rechts laufen If e\xZ > e\x And e\yZ < e\y Then: e\x=e\x+e\gesch : e\y=e\y-e\gesch ;: e\winkel=315 ;Unten-Rechts laufen ElseIf e\xZ > e\x And e\yZ > e\y Then: e\x=e\x+e\gesch : e\y=e\y+e\gesch ;: e\winkel=45 ;Unten-Links laufen ElseIf e\xZ < e\x And e\yZ > e\y Then: e\x=e\x-e\gesch : e\y=e\y+e\gesch ;: e\winkel=135 ;Oben -Links laufen ElseIf e\xZ < e\x And e\yZ < e\y Then: e\x=e\x-e\gesch : e\y=e\y-e\gesch ;: e\winkel=225 ;Oben laufe ElseIf e\yZ < e\y Then: e\y=e\y-e\gesch ;: e\winkel=270 ;Unten laufen ElseIf e\yZ > e\y Then: e\y=e\y+e\gesch ;: e\winkel=90 ;Rechts laufen ElseIf e\xZ > e\x Then: e\x=e\x+e\gesch ;: e\winkel=0 ;Links laufen ElseIf e\xZ < e\x Then: e\x=e\x-e\gesch ;: e\winkel=180 EndIf ;Angriff ;Text e\xDraw,e\yDraw,""+e\live Text e\xDraw,e\yDraw+15,""+e\entf If e\entf<e\radius*tile Then e\buf=e\buf+1 If e\buf>e\dauer And e\entf<e\radius*tile Then: e\buf=0 b.bullet=New bullet b\xx=e\xWEG b\yy=e\yWEG b\speed=5 b\typ=0 b\winkel=e\winkel b\leb=(b\typ*5)+100 b\team=1 b\att=5 EndIf If x<=e\xWEG And y<=e\yWEG Then: ;oben links e\sinus=((e\yWEG-y)/(e\entf)) e\winkel=ASin(e\sinus)+180 ElseIf x<=e\xWEG And y>e\yWEG Then: ;unten links e\sinus=((e\xWEG-x)/(e\entf)) e\winkel=ASin(e\sinus)+90 ElseIf x>e\xWEG And y<=e\yWEG Then: ;oben rechts e\sinus=((x-e\xWEG)/(e\entf)) e\winkel=ASin(e\sinus)+270 ElseIf x>e\xWEG And y>e\yWEG Then: ;unten rechts e\sinus=((y-e\yWEG)/(e\entf)) e\winkel=ASin(e\sinus) EndIf Next End Function ;Function Pathfinding(startx,starty,endx,endy) Function Pathfinding(startx,starty,endx,endy) Delete Each node Delete Each open Delete Each path Dim nodemap(mapwidth,mapheight) If startx=endx And starty=endy Then Return node.node=New node node\x=startx node\y=starty open.open=New open open\node=node nodemap(startx,starty)=1 .again2 node=Null cost=2147483647 For open=Each open delta=sqrmap(Abs(open\node\x-endx),Abs(open\node\y-endy)) If open\node\cost+delta<cost Then cost=open\node\cost+delta node=open\node tempopen.open=open EndIf Next If node=Null Then Return Delete tempopen For i=0 To 7 xx=node\x+dirx(i) yy=node\y+diry(i) If xx=>0 And yy=>0 And xx<=mapwidth And yy<=mapheight Then If map(xx,yy)=0 And nodemap(xx,yy)=0 Then If dirz(i)=1 Then If status(xx,node\y)=1 And map(node\x,yy)=1 Then Goto jump2 EndIf tempnode.node=New node tempnode\parent=node tempnode\cost=node\cost+1+dirz(i) tempnode\x=xx tempnode\y=yy open.open=New open open\node=tempnode nodemap(xx,yy)=1 If xx=endx And yy=endy Then finish=1:Exit .jump2 EndIf EndIf Next If finish=0 Then Goto again2 While tempnode\parent<>Null path.path=New path path\node=tempnode tempnode=tempnode\parent Wend path.path=New path path\node=tempnode End Function ;Function PfadSpliner() Function PfadSpliner() FreeBank(PfadBank):PfadBank=CreateBank(4) Color 200,0,0 For path.path=Each path If path=Last path Then Exit tmp.path=Before path If tmp=Null Then x0=path\node\x y0=path\node\y Else x0=tmp\node\x y0=tmp\node\y EndIf x1=path\node\x y1=path\node\y tmp.path=After path x2=tmp\node\x y2=tmp\node\y tmp.path=After tmp If tmp=Null Then x3=x2 y3=y2 Else x3=tmp\node\x y3=tmp\node\y EndIf Spline(X0,Y0,X1,Y1,X2,Y2,X3,Y3) Next Return BankSize(PfadBank)-4 End Function ;Function Spline(x1,y1,x2,y2,x3,y3,x4,y4) Function Spline(x1,y1,x2,y2,x3,y3,x4,y4) Ras=32 x1=x1*Ras:y1=y1*Ras x2=x2*Ras:y2=y2*Ras x3=x3*Ras:y3=y3*Ras x4=x4*Ras:y4=y4*Ras For u#=0 To 1.1 Step .1 u2#=u#*u# u3#=u#*u#*u# f1#=-0.5*u3#+1.0*u2#-0.5*u# f2#= 1.5*u3#-2.5*u2#+1.0 f3#=-1.5*u3#+2.0*u2#+0.5*u# f4#= 0.5*u3#-0.5*u2# xx=x1*f1#+x2*f2#+x3*f3#+x4*f4# yy=y1*f1#+y2*f2#+y3*f3#+y4*f4# If ax<>xx Or ay<>yy Then Pos=BankSize(PfadBank):ResizeBank(PfadBank,Pos+4) PokeShort(PfadBank,Pos,xx) PokeShort(PfadBank,Pos+2,yy) EndIf ax=xx:ay=yy Next End Function |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
nachdem ich avg drüberlaufen hab lassen (und in der statuszeile diverse bb files und bmps gesehen hab) bin ich mal das Risiko eingegangen sie zu öffnen. Es ist tatsächlich ein komplettes spiel. Mein Tipp lade es als .rar/.zip hoch. Das schafft weniger misstrauen, da diese Dateien dem PC keinen schaden zufügen können. | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir kommt da kein Fehler (welcher überhaupt?), kann rumlaufen und mich drehen und feuern ohne das da was passiert.
Benutz das Debug Fenster von BB und sach' die Zeile an, die bei dem Fehler markiert wird. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
einafch von anfang an pfeil hoch taste gedrückt halten...dann läuft er gegen den fels , dreht sich und der fehler "Array index out of bounds" kommt in der Zeile
Code: [AUSKLAPPEN] delta=sqrmap(Abs(open\node\x-endx),Abs(open\node\y-endy)) (pathfinding) @ silver_kneee ok, werds mir merken... |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal: Klasse idee Quadradwurzeln zwischenzuspeichern. Du solltest allerdings noch eine Abfrage dort einrichten ob Abs(open\node\x-endx)<=50 und Abs(open\node\y-endy)<=50 Denn dein Dim geht nur von 0-50
Der fehler erscheint erst wenn mein weit genug vom Spawnpunkt weg ist damit man den Array ausreitzt |
||
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh maaaan klar.....daran hab ich gar nicht gedacht...vielen vielen dank! ich glaube es geht jetzt...also ich habe das eingebaut und zusätzlich bei den Globals anstatt dim(50), dim(64) gemacht und jetzt kommt kein fehler mehr
DANKE aber jetzt stockt es bei den automatischen drehungen immer...woher kommt das jetzt plötzlich? mfg baschdi |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du verwendest die Winkel Variable einerseits um positionen/was-auch-immer zu berechnen, aber dabei wird der Winkel u.U. gleich wieder verändert. Ich würde die Änderungen die sich in einem Durchlauf aufsummieren erst am ende in "Winkel" zurückschreiben; und das ganze mit Mod![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
außerddem verschiebs du mit 50->64 das problem. Deine maximale entfernung wird dann eben 64 sein ohne dass der fehler auftritt. Ich dachte da an ein If ....<=50 then distance=array_dingens(x,y) else distance=Sqr(....) dann würdes du bei großen Entfernung manuell berechnen und bei kleineren auf die ferige liste zurückgreifen. | ||
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
?
kannst du mir das mit dem Code: [AUSKLAPPEN] If Abs(open\node\x-endx)<=50 And Abs(open\node\y-endy)<=50 Then distance=array_dingens(x,y) Else: distance=Sqr(....) genauer erklären, weil ich blick nicht wirklich was das nützen soll... (woher kommt das distance) Danke |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nirgendwoher, du rechnest es aus. | ||
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm...das verstehe ich nicht, aber ich will eigentlich wissen warum das Programm jetzt stockt...wie kann ich das wieder verhinder?
Es stockt nur wenn der player gegen einen Fels fährt und der andere Spieler in der Nähe ist...wie kann man das ändern? danke _____________________________________________________________________________________ ok das problem mit dem laggen war: immer wenn ich gegen die wand gefahren bin war für ne zeitlang meine koos auf einem Tile das belegt war (mr. fels)drum hat er ewig nach einem weg gesucht und das hat ihn überlastet...danke für all eure posts !!! mfg baschdi |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group