Can you spot the problem?
Blitz3D Forums/Blitz3D Programming/Can you spot the problem?
| ||
Ok, this is weird. I have a type ClientMap.Mapdata that is getting nulled if I leave a while/wend loop, and I cant seem to figure out why. Heres a snippet..lobbystart While Not KeyDown(1) If inlobby=1 Then mp$=spawnlobby$(lobbycode) removelobby() clientmap.mapdata=clientloadmap(mp$) If clientmap.mapdata=Null Then lobbycode=1 Else inlobby=0 Mic=CreateListener (cam,.3,5,.5) home.tank=loadtank("media\tanks\tank1.b3d") droptank home.tank,-10,100,-50 removetank(home.tank) home.tank=loadtank("media\tanks\tank1.b3d") settankactive(home.tank,1) EntityParent mic,home\main,0 PointEntity cam,home\main droptank home.tank,-10,100,-50 ;connect to server EndIf framePeriod = 1000 / gameFPS frameTime = MilliSecs () - framePeriod Else checktween() LockBuffer BackBuffer() UnlockBuffer BackBuffer() RenderWorld(frametween) If dofmode Then CustomPostprocessDOF 300, 400, 1 , 3, 0.07, 0 RenderPostprocess FE_DOF EndIf Flip False EndIf If clientmap.mapdata=Null Then RuntimeError "clientmap IS valid.. this never errors out" Wend If clientmap.mapdata=Null Then RuntimeError "after esc is hit and loop broken.. now it always null. why?" |
| ||
Interesting. I have known similar instances in Blitz3D and wondered if it was just me. I usually recode what I am doing until the problem goes away. However, I too have been in a similar position. You are clearly checking the same thing both before termination of the While/Wend and straight afterwards. What you can do is shunt a whole load of Null checks all the way through that While/Wend loop - just to make sure. |
| ||
oh, and just fyi, i lock and unlock the backbuffer because it removes input lag in windowed and debug modes. |
| ||
You are leaving the loop though - which we cannot see - you don't goof it up do you outside of the loop? |
| ||
Doh. think i got it. Edit.. yes. I swear the longer I sit at this PC the dumber I get. To clarify, I was using the wrong type of loop, I need the loop to end at the bottom of the snippet, not the top. (while vs repeat) .lobbystart framePeriod = 1000 / gameFPS frameTime = MilliSecs () - framePeriod Repeat If inlobby=1 Then mp$=spawnlobby$(lobbycode) removelobby() clientmap.mapdata=clientloadmap(mp$) If clientmap.mapdata=Null Then lobbycode=1 Else inlobby=0 Mic=CreateListener (cam,.3,5,.5) home.tank=loadtank("media\tanks\tank1.b3d") droptank home.tank,-10,100,-50 removetank(home.tank) home.tank=loadtank("media\tanks\tank1.b3d") settankactive(home.tank,1) EntityParent mic,home\main,0 PointEntity cam,home\main droptank home.tank,-10,100,-50 ;connect to server EndIf framePeriod = 1000 / gameFPS frameTime = MilliSecs () - framePeriod Else checktween() ;LockBuffer FrontBuffer() LockBuffer BackBuffer() UnlockBuffer BackBuffer() RenderWorld(frametween) If dofmode Then ;-CustomPostprocessDOF 300, 400, 1 , 3, 0.07, 0 ;-RenderPostprocess FE_DOF EndIf Flip False EndIf Until KeyHit(1) Thanks for posting Puki. |
| ||
I bet you tried my idea of injecting the Null test to find it. |
| ||
nah, I was re reading this topic and it hit me while looking at the codebox, that I was using the wrong loop. |