forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Memory access violation (http://forum.boolean.name/showthread.php?t=11672)

im_zorg 07.01.2010 11:00

Memory access violation
 
Вложений: 1
вот код(прикрепление) делал прыжок при компиляции выдало Memory access violation помогите :''((

HolyDel 07.01.2010 11:24

Ответ: Memory access violation
 
для повышения информативности сообщений об ошибках советую включить Debugger. Поставить флжок против пункта Debug.

ты запости код сюда, весь листинг, может разберемся так.

im_zorg 07.01.2010 11:25

Ответ: Memory access violation
 
Код:

Global gameFPS        = 30
Global framePeriod    = 1000 / gameFPS
Global frameTime    = MilliSecs () - framePeriod
Global frameTween#  = 1.0


gx=1024:gy=768
px=gx/2:py=gy/2

Graphics3D gx,gy,32,0
SetBuffer BackBuffer()
HidePointer
;--------------------Устоновка шрифта
fnt = LoadFont ("Vernada",22)
SetFont fnt
;--------------------Создаем тип игрока
Type player
Field ent,ent1
End Type

;--------------------
Const PL = 1
Const ZEM = 2
Const MHOME = 3
;-------------------
Collisions PL,ZEM,2,3
Collisions PL,MHOME,2,3
;-------------------
Global cam
Global cu = CreateSphere (8)
    HideEntity cu
Global home
Global home_a
;--------------------
et=MilliSecs()
dt=et-st

game()
While Not KeyHit (1)
    Repeat
        frameElapsed = MilliSecs () - frameTime
            Until frameElapsed
        frameTicks = frameElapsed / framePeriod
        frameTween# = Float (frameElapsed Mod framePeriod) / Float (framePeriod)

        For frameLimit = 1 To frameTicks
            If frameLimit = frameTicks Then CaptureWorld
            frameTime = frameTime + framePeriod

    update_game()
    Lcam()
       
    Next
   
UpdateWorld
RenderWorld frameTween
    Oval px,py,5,5,0

    Text 10,10,"Tris: "+TrisRendered()
    Text 10,40,"FPS: "+fps2
For p.player = Each player
    Text 150,10,"X: "+EntityX(p\ent)
    Text 150,40,"Y: "+EntityY(p\ent)
    Text 150,70,"Z: "+EntityZ(p\ent)
Next       
    ;fps
    fps=fps+1
    If fps_t<MilliSecs()
    fps2=fps
    fps_t=1000+MilliSecs()
    fps=0
    EndIf

    Flip 0   
Wend
End

Function game()
p.player = New player
    p\ent = CopyEntity (cu)
        PositionEntity p\ent,-25,20,-12
        EntityAlpha p\ent,0
        EntityType p\ent,PL
    p\ent1 = CreatePivot (p\ent)
        PositionEntity p\ent1,0,3,0
;---------------------------------------
    cam = CreateCamera (p\ent1)
        CameraClsColor cam,80,110,120
        CameraFogMode cam,1
        CameraFogColor cam,80,110,120
        CameraFogRange cam,20,50
        CameraRange cam,1,252
        EntityType cam,MCAM
    lit = CreateLight ()
        AmbientLight 200,200,200

    ter = LoadTerrain ("DATA\Terrain\ter.bmp")
        ScaleEntity ter,15,50,15
        PositionEntity ter,-60,0,-50
        t_t = LoadTexture("DATA\Textures\MossyGround.bmp")
            ScaleTexture t_t,1,1
            EntityTexture ter,t_t
            EntityType ter,ZEM
;-----------------------------------------------------
    home = LoadAnimMesh ("DATA\Models\home.b3d")
        ScaleEntity home,.7,.7,.7
        PositionEntity home,-13,7,7
        EntityType home,MHOME

End Function

Function update_game()
If user_time=0 user_time=MilliSecs()
new_time=MilliSecs()
delta_t=new_time-user_time
user_time=new_time
For p.player = Each player

        If KeyDown (17) Then MoveEntity p\ent,0,0,.3
        If KeyDown (31) Then MoveEntity p\ent,0,0,-.3
        If KeyDown (30) Then MoveEntity p\ent,-.3,0,0
        If KeyDown (32) Then MoveEntity p\ent,.3,0,0
       
jumpvel#=.3
gravity#=.01

If jumping=0
If KeyDown(57) Then yvel#=jumpvel# jumping=1
EndIf
If jumping=1
yvel#=yvel#-gravity#
by#=by#+yvel#
EndIf
If by#<1 Then by#=1 yvel#=0 jumping=0
MoveEntity user,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\ent)#
If KeyDown(16) And AnimSeq=0 Animate home,3,0.03,0,0

TranslateEntity p\ent,0,-.5,0
Next

End Function

Function Lcam()
u#=70
For p.player = Each player
    TurnEntity cam,MouseYSpeed()*0.2,0,0
    TurnEntity p\ent,0,-MouseXSpeed()*0.2,0
    MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
    If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0
Next
End Function


HolyDel 07.01.2010 11:47

Ответ: Memory access violation
 
Цитата:

MoveEntity user,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\ent )#
ошибка тут. нет ентити user

im_zorg 07.01.2010 12:03

Ответ: Memory access violation
 
Код:

Global gameFPS = 30
Global framePeriod = 1000 / gameFPS
Global frameTime = MilliSecs () - framePeriod
Global frameTween# = 1.0


gx=1024:gy=768
px=gx/2:y=gy/2

Graphics3D gx,gy,32,0
SetBuffer BackBuffer()
HidePointer
;--------------------Устоновка шрифта
fnt = LoadFont ("Vernada",22)
SetFont fnt
;--------------------Создаем тип игрока
Type player
Field ent,ent1
End Type

;--------------------
Const PL = 1
Const ZEM = 2
Const MHOME = 3
;-------------------
Collisions PL,ZEM,2,3
Collisions PL,MHOME,2,3
;-------------------
Global cam
Global cu = CreateSphere ()
HideEntity cu
Global home
Global home_a
;--------------------
et=MilliSecs()
dt=et-st

game()
While Not KeyHit (1)
Repeat
frameElapsed = MilliSecs () - frameTime
Until frameElapsed
frameTicks = frameElapsed / framePeriod
frameTween# = Float (frameElapsed Mod framePeriod) / Float (framePeriod)

For frameLimit = 1 To frameTicks
If frameLimit = frameTicks Then CaptureWorld
frameTime = frameTime + framePeriod

update_game()
Lcam()

Next

UpdateWorld
RenderWorld frameTween
Oval px,py,5,5,0

Text 10,10,"Tris: "+TrisRendered()
Text 10,40,"FPS: "+fps2
For p.player = Each player
Text 150,10,"X: "+EntityX(p\ent)
Text 150,40,"Y: "+EntityY(p\ent)
Text 150,70,"Z: "+EntityZ(p\ent)
Next
;fps
fps=fps+1
If fps_t<MilliSecs()
fps2=fps
fps_t=1000+MilliSecs()
fps=0
EndIf

Flip 0
Wend
End

Function game()
p.player = New player
p\ent = CopyEntity (cu)
PositionEntity p\ent,-25,20,-12
EntityAlpha p\ent,0
EntityType p\ent,PL
p\ent1 = CreatePivot (p\ent)
PositionEntity p\ent1,0,3,0
;---------------------------------------
cam = CreateCamera (p\ent1)
CameraClsColor cam,80,110,120
CameraFogMode cam,1
CameraFogColor cam,80,110,120
CameraFogRange cam,20,50
CameraRange cam,1,252
EntityType cam,MCAM
lit = CreateLight ()
AmbientLight 200,200,200

ter = LoadTerrain ("DATA\Terrain\ter.bmp")
ScaleEntity ter,15,50,15
PositionEntity ter,-60,0,-50
t_t = LoadTexture("DATA\Textures\MossyGround.bmp")
ScaleTexture t_t,1,1
EntityTexture ter,t_t
EntityType ter,ZEM
;-----------------------------------------------------
home = LoadAnimMesh ("DATA\Models\home.b3d")
ScaleEntity home,.7,.7,.7
PositionEntity home,-13,7,7
EntityType home,MHOME
End Function

Function update_game()
If user_time=0 user_time=MilliSecs()
new_time=MilliSecs()
delta_t=new_time-user_time
user_time=new_time
For p.player = Each player

If KeyDown (17) Then MoveEntity p\ent,0,0,.3
If KeyDown (31) Then MoveEntity p\ent,0,0,-.3
If KeyDown (30) Then MoveEntity p\ent,-.3,0,0
If KeyDown (32) Then MoveEntity p\ent,.3,0,0

jumpvel#=.3
gravity#=.01

If jumping=0
If KeyDown(57) Then yvel#=jumpvel# jumping=1
EndIf
If jumping=1
yvel#=yvel#-gravity#
by#=by#+yvel#
EndIf
If by#<1 Then by#=1 yvel#=0 jumping=0
MoveEntity p\ent,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\ent )#
If KeyDown(16) And AnimSeq=0 Animate home,3,0.03,0,0

TranslateEntity p\ent,0,-.5,0
Next

End Function

Function Lcam()
u#=70
For p.player = Each player
TurnEntity cam,MouseYSpeed()*0.2,0,0
TurnEntity p\ent,0,-MouseXSpeed()*0.2,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0
Next
End Function

сейчас на next жалуется

NitE 07.01.2010 12:11

Ответ: Memory access violation
 
Цитата:

fnt = LoadFont ("Vernada",22)
вроде опечятка.
Цитата:

сейчас на next жалуется
надо указывать на какой.

Reizel 07.01.2010 13:45

Ответ: Memory access violation
 
Im zorg я вот только не понимаю твою систему ФПС, WaitTimer(Timer) не подходит? Сорри если что не понимаю... И еще...Чтобы вот таких ошибок не возникало (next or Endif лишний), просто код пиши с табуляцией:)

im_zorg 07.01.2010 16:58

Ответ: Memory access violation
 
Код:

Global gameFPS = 30
Global framePeriod = 1000 / gameFPS
Global frameTime = MilliSecs () - framePeriod
Global frameTween# = 1.0


gx=1024:gy=768
px=gx/2:py=gy/2

Graphics3D gx,gy,32,0
SetBuffer BackBuffer()
HidePointer
;--------------------Устоновка шрифта
fnt = LoadFont ("Vernada",22)
SetFont fnt
;--------------------Создаем тип игрока
Type player
Field ent,ent1
End Type

;--------------------
Const PL = 1
Const ZEM = 2
Const MHOME = 3
;-------------------
Collisions PL,ZEM,2,3
Collisions PL,MHOME,2,3
;-------------------
Global cam
Global cu = CreateSphere ()
HideEntity cu
Global home
Global home_a
;--------------------
et=MilliSecs()
dt=et-st

game()
While Not KeyHit (1)
Repeat
frameElapsed = MilliSecs () - frameTime
Until frameElapsed
frameTicks = frameElapsed / framePeriod
frameTween# = Float (frameElapsed Mod framePeriod) / Float (framePeriod)

For frameLimit = 1 To frameTicks
If frameLimit = frameTicks Then CaptureWorld
frameTime = frameTime + framePeriod

update_game()
Lcam()

Next

UpdateWorld
RenderWorld frameTween
Oval px,py,5,5,0

Text 10,10,"Tris: "+TrisRendered()
Text 10,40,"FPS: "+fps2
For p.player = Each player
Text 150,10,"X: "+EntityX(p\ent)
Text 150,40,"Y: "+EntityY(p\ent)
Text 150,70,"Z: "+EntityZ(p\ent)
;fps
fps=fps+1
If fps_t<MilliSecs()
fps2=fps
fps_t=1000+MilliSecs()
fps=0
EndIf
Flip 0
Wend
End

Function game()
p.player = New player
p\ent = CopyEntity (cu)
PositionEntity p\ent,-25,20,-12
EntityAlpha p\ent,0
EntityType p\ent,PL
p\ent1 = CreatePivot (p\ent)
PositionEntity p\ent1,0,3,0
;---------------------------------------
cam = CreateCamera (p\ent1)
CameraClsColor cam,80,110,120
CameraFogMode cam,1
CameraFogColor cam,80,110,120
CameraFogRange cam,20,50
CameraRange cam,1,252
EntityType cam,MCAM
lit = CreateLight ()
AmbientLight 200,200,200

ter = LoadTerrain ("DATA\Terrain\ter.bmp")
ScaleEntity ter,15,50,15
PositionEntity ter,-60,0,-50
t_t = LoadTexture("DATA\Textures\MossyGround.bmp")
ScaleTexture t_t,1,1
EntityTexture ter,t_t
EntityType ter,ZEM
;-----------------------------------------------------
home = LoadAnimMesh ("DATA\Models\home.b3d")
ScaleEntity home,.7,.7,.7
PositionEntity home,-13,7,7
EntityType home,MHOME
End Function

Function update_game()
If user_time=0 user_time=MilliSecs()
new_time=MilliSecs()
delta_t=new_time-user_time
user_time=new_time
For p.player = Each player

If KeyDown (17) Then MoveEntity p\ent,0,0,.3
If KeyDown (31) Then MoveEntity p\ent,0,0,-.3
If KeyDown (30) Then MoveEntity p\ent,-.3,0,0
If KeyDown (32) Then MoveEntity p\ent,.3,0,0

jumpvel#=.3
gravity#=.01

If jumping=0
If KeyDown(57) Then yvel#=jumpvel# jumping=1
EndIf
If jumping=1
yvel#=yvel#-gravity#
by#=by#+yvel#
EndIf
If by#<1 Then by#=1 yvel#=0 jumping=0
MoveEntity player,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\ent )#
If KeyDown(16) And AnimSeq=0 Animate home,3,0.03,0,0
TranslateEntity p\ent,0,-.5,0
End Function

Function Lcam()
u#=70
For p.player = Each player
TurnEntity cam,MouseYSpeed()*0.2,0,0
TurnEntity p\ent,0,-MouseXSpeed()*0.2,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0
End Function

жалуется на wend пишит типо тут wend, а ожидается while

im_zorg 07.01.2010 17:27

Ответ: Memory access violation
 
Код:

Global gameFPS                = 30
Global framePeriod        = 1000 / gameFPS
Global frameTime        = MilliSecs () - framePeriod
Global frameTween#  = 1.0


gx=1024:gy=768
px=gx/2:py=gy/2

Graphics3D gx,gy,32,0
SetBuffer BackBuffer()
HidePointer
;--------------------Устоновка шрифта
fnt = LoadFont ("Vernada",22)
SetFont fnt
;--------------------Создаем тип игрока
Type player
Field ent,ent1
End Type

;--------------------
Const PL = 1
Const ZEM = 2
Const MHOME = 3
;-------------------
Collisions PL,ZEM,2,3
Collisions PL,MHOME,2,3
;-------------------
Global cam
Global cu = CreateSphere (8)
        HideEntity cu
Global home
Global home_a
;--------------------
et=MilliSecs()
dt=et-st

game()
While Not KeyHit (1)
        Repeat
                frameElapsed = MilliSecs () - frameTime
                        Until frameElapsed
                frameTicks = frameElapsed / framePeriod
                frameTween# = Float (frameElapsed Mod framePeriod) / Float (framePeriod)

                For frameLimit = 1 To frameTicks
                        If frameLimit = frameTicks Then CaptureWorld
                        frameTime = frameTime + framePeriod

        update_game()
        Lcam()               
Next
UpdateWorld
RenderWorld frameTween
        Oval px,py,5,5,0

        Text 10,10,"Tris: "+TrisRendered()
        Text 10,40,"FPS: "+fps2
For p.player = Each player
        Text 150,10,"X: "+EntityX(p\ent)
        Text 150,40,"Y: "+EntityY(p\ent)
        Text 150,70,"Z: "+EntityZ(p\ent)
Next               
        ;fps
        fps=fps+1
        If fps_t<MilliSecs()
        fps2=fps
        fps_t=1000+MilliSecs()
        fps=0
        EndIf

        Flip 0       
Wend
End

Function game()
p.player = New player
        p\ent = CopyEntity (cu)
                PositionEntity p\ent,-25,20,-12
                EntityAlpha p\ent,0
                EntityType p\ent,PL
        p\ent1 = CreatePivot (p\ent)
                PositionEntity p\ent1,0,3,0
;---------------------------------------
        cam = CreateCamera (p\ent1)
                CameraClsColor cam,80,110,120
                CameraFogMode cam,1
                CameraFogColor cam,80,110,120
                CameraFogRange cam,20,50
                CameraRange cam,1,252
                EntityType cam,MCAM
        lit = CreateLight ()
                AmbientLight 200,200,200

        ter = LoadTerrain ("DATA\Terrain\ter.bmp")
                ScaleEntity ter,15,50,15
                PositionEntity ter,-60,0,-50
                t_t = LoadTexture("DATA\Textures\MossyGround.bmp")
                        ScaleTexture t_t,1,1
                        EntityTexture ter,t_t
                        EntityType ter,ZEM
;-----------------------------------------------------
        home = LoadAnimMesh ("DATA\Models\home.b3d")
                ScaleEntity home,.7,.7,.7
                PositionEntity home,-13,7,7
                EntityType home,MHOME
End Function

Function update_game()
If user_time=0 user_time=MilliSecs()
new_time=MilliSecs()
delta_t=new_time-user_time
user_time=new_time
For p.player = Each player

                If KeyDown (17) Then MoveEntity p\ent,0,0,.3
                If KeyDown (31) Then MoveEntity p\ent,0,0,-.3
                If KeyDown (30) Then MoveEntity p\ent,-.3,0,0
                If KeyDown (32) Then MoveEntity p\ent,.3,0,0
               
jumpvel#=.3
gravity#=.01

If jumping=0
If KeyDown(57) Then yvel#=jumpvel# jumping=1
EndIf
If jumping=1
yvel#=yvel#-gravity#
by#=by#+yvel#
EndIf
If by#<1 Then by#=1 yvel#=0 jumping=0
MoveEntity p\ent,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\ent)#
If KeyDown(16) And AnimSeq=0 Then Animate home,3,0.03,0,0
TranslateEntity p\ent,0,-.5,0
Next
End Function

Function Lcam()
u#=70
For p.player = Each player
        TurnEntity cam,MouseYSpeed()*0.2,0,0
        TurnEntity p\ent,0,-MouseXSpeed()*0.2,0
        MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
        If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0
End Function

терь жалуется на красную строчку пишит типо ожидается next

Android 07.01.2010 17:36

Ответ: Memory access violation
 
If вижу. А где EndIf?

ABTOMAT 07.01.2010 17:47

Ответ: Memory access violation
 
Цитата:

MoveEntity player,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\e nt )#
Блин, чел, ну полнейшее непонимание.
Кто же указывает тип после аргументов функции?
Более того при вызове функции его вообще указывать необязательно.
Если б ты запускал прогу каждый раз после того что написал что-то новое, ты бы сразу заметил, где проблема.

Далее. Много раз не закрыты циклы For...Each, поэтому ругалось на End function without function. Зыкрыл Next'ами перед закрытием функции.
Затем обнаружилось, что ентити player не существует.
После волшебного костыля Global player = CreateSphere(); прога-таки запустилась и показала домик с дверью (которая не открывается, лень выяснять почему)
Happy End!

Вообще удивляет: пишут (или, скорее, копипастят) километр кода нон-стопом, а потом в нём ищут причины ошибок... да ещё и без дебаггера. А потом оказывается, что блиц - отстой, а я - Д'Артаньян и т.д.

Специально код не постю, а то он невозбранно скопипастится и начнутся опять те же самые вопросы.
Ещё раз: Запускай каждый раз когда дописываешь что-то новое.

im_zorg 07.01.2010 17:48

Ответ: Memory access violation
 
где именно?

im_zorg 07.01.2010 18:05

Ответ: Memory access violation
 
MoveEntity player,EntityX(p\ent)#,EntityY(p\ent)#,EntityZ(p\e nt )#

кинь эту же строчку с твоими изменениями, а то я почти все ошибки исправил если эту строчку закомментировать то всё скомплится

im_zorg 07.01.2010 18:10

Ответ: Memory access violation
 
Цитата:

Сообщение от ABTOMAT (Сообщение 132522)
показала домик с дверью (которая не открывается, лень выяснять почему)

q надо нажать

ABTOMAT 07.01.2010 18:13

Ответ: Memory access violation
 
MoveEntity player,EntityX(p\ent),EntityY(p\ent),EntityZ(p\ent )


Часовой пояс GMT +4, время: 23:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot