Ответ: Условия не работают правильно. В чём может быть причина?
Цитата:
Сообщение от softcrasoft
(Сообщение 297417)
если верно то, что я не перемещался блин. так понятно? я не нууууууууб. а вы просто сооброжалку включите
|
У меня в отличии от тебя соображалка включена :-D
Держи, надеюсь разберешься, целый шутер от первого лица :-D :-D :-D :cool:
PHP код:
HidePointer
Global weapon,weapon_1,xw#,yw#,zw#,rxw#,ryw#,zyw#
Global camera
Global player,mxs,mys,grav#,y_cam
Global run,runChannel ,running#
Const playertype=1,TypePol=2,TypeStena=3,TypeTons=4,TypeBalke=5,TypeLuk=5,TypeBox=6,TypeCar=7
Global fire_01,car
Global zs#,zo#
Global x_weapon#,y_weapon#,z_weapon#,rx_weapon#,ry_weapon#,rz_weapon#
Global Not_fire
Type Obj_Data
Field handler
Field Name$
Field key$[8]
Field value$[8]
Field rawdata$[16]
End Type
Type OutFlare
Field sprite
Field flare
Field time_out
Field TimeTolive
End Type
Global fl
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
Global gfxCross = LoadImage("models\gfx\cross.bmp")
CreatePlayer()
UpdateCollisions()
sky=LoadSkyBox("sky\")
level=LoadAnimMesh("models\scene.b3d")
RotateEntity level,180,0,0
ScaleEntity level,0.2,0.2,0.2
RecurseSeek(level)
Global flare_weapon=LoadSprite("shot.jpg")
bool=LoadAnimMesh("bool.b3d")
PositionEntity bool,0,0,-240
box_1=FindChild(bool,"box")
EntityType box_1,TypeBox,1
LoadWeapon_1()
InitSounds()
car=CreateCube()
PositionEntity car,0,40,-30
ScaleEntity car,18,3,7
EntityType car,TypeCar
Patron=20
CarTrue=0
Global PlayerID
PlayerID=1
Repeat
PositionEntity sky,EntityX(player),EntityY(player),EntityZ(player)
pick=CameraPick (camera,mx,my)
If Patron>0
If MouseDown(1)
If MilliSecs()> time+200
time=MilliSecs()
CreateFlareOut(weapon,flare_weapon,50)
Patron=Patron-1
PlaySound (fire_01)
If Not lModeShoot
Animate weapon, 1,1,2
EndIf
lModeShoot = True
Else
If lModeShoot
Animate weapon, 1,1,1
lModeShoot = False
EndIf
EndIf
EndIf
EndIf
If MouseDown(1)
If MilliSecs()> time+500
time=MilliSecs()
If Patron<1
Animate weapon,3,1
PlaySound Not_fire
EndIf
EndIf
EndIf
;-----------------------------------------------------------
UpdateFlareOut()
;___________________________________
If EntityDistance(player,car)<30
If KeyDown(33)
EntityParent player,car
CarTrue=1
PlayerID=0
EndIf
EndIf
If CarTrue=1
If KeyDown(17) MoveEntity car,1,0,0
If KeyDown(31) MoveEntity car,-1,0,0
EndIf
UpdatePlayer()
FlushMouse()
UpdateWorld()
RenderWorld()
DrawImage(gfxCross, GraphicsWidth()/2-16, GraphicsHeight()/2-16 )
If EntityDistance(player,bool)<30
Text 10,10,"??????? E ???? ????? ???????!"
If KeyHit(18)
Animate bool,3,1
Patron=+40
EndIf
EndIf
Text 10,GraphicsHeight()-50,"???????::"+Patron
Flip
Until KeyHit(1)
End
Include "loader\scm.BB"
Function CreatePlayer()
player=CreatePivot() ;??????? ???????? ??????. ??? ????? ?????
PositionEntity player,0,10,0 ;????????????? ???
EntityType player,PlayerType ;??????????? ??? ??? ?????????. ??? ????? ??? ????????.
EntityRadius player,10
camera=CreateCamera(player)
PositionEntity camera,0,30,0 ;??????????? ??.
CameraRange camera,1,10000
spac=0
End Function
Function UpdatePlayer()
running#= 0
RandCamera=0
;???????? ????
If PlayerID=1
If Abs(EntityPitch(camera)+mys)<55
TurnEntity camera, mys*.3,0,0
EndIf
TurnEntity player,0,-MouseXSpeed()*.3,0
EndIf
mxs=MouseXSpeed()
mys=MouseYSpeed()
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
;???????????
If PlayerID=1
If KeyDown(17) Then
MoveEntity player,px+0,py+0,pz+1
MoveEntity player,-Sin(MilliSecs()/2)*.08*3,Sin(MilliSecs())*.1,0
running = Rnd (0.35, 0.75)
Else If KeyDown(31)
MoveEntity player,px+0,py+0,pz-1
running = Rnd (0.55, 0.95)
EndIf
If KeyDown(30) Then
MoveEntity player,px-1,py+0,pz+0
running = Rnd (0.35, 0.75)
Else If KeyDown(32)
MoveEntity player,px+1,py+0,pz+0
running = Rnd (0.55, 0.95)
EndIf
EndIf
TranslateEntity player,0,grav#-1,0
TranslateEntity car,0,grav#-1,0
If running > 0
ChannelPitch runChannel, Rnd (80000, 14000)
EndIf
ChannelVolume runChannel, running
;??????
x#=EntityX(player)
y#=EntityY(player)
z#=EntityZ(player)
If KeyHit(57) Then
yv#=20
PositionEntity Player,x#,y#+yv#,z#
yv#=EntityY(player)-ey
ey=EntityY(player)
EndIf
;-------------------------------
If zs#<zo Then zs#=zs#+.025
If zs#>zo Then zs#=zs#-.025
If zs#<=0 Then zs#=1
If xw#<x_weapon# Then xw#=xw#+.2
If xw#>x_weapon# Then xw#=xw#-.2
If yw#<y_weapon# Then yw#=yw#+.2
If yw#>y_weapon# Then yw#=yw#-.2
If zw#<z_weapon# Then zw#=zw#+.2
If zw#>z_weapon# Then zw#=zw#-.2
If rxw#<rx_weapon# Then rxw#=rxw#+.2
If rxw#>rx_weapon# Then rxw#=rxw#-.2
If ryw#<ry_weapon# Then ryw#=ryw#+.2
If ryw#>ry_weapon# Then ryw#=ryw#-.2
If rzw#<rz_weapon# Then rzw#=rzw#+.2
If rzw#>rz_weapon# Then rzw#=rzw#-.2
If MouseDown(2) Then
x_weapon#=-5.1
y_weapon#=-7.25
z_weapon#=-3
rx_weapon#=0
ry_weapon#=82
rz_weapon#=0
zo#=2.5
Else
zo#=1
x_weapon#=3
y_weapon#=-12
z_weapon#=6
rx_weapon#=0
ry_weapon#=90
rz_weapon#=0
EndIf
CameraZoom camera,zs#
PositionEntity weapon,xw#,yw#,zw#
RotateEntity weapon,rxw#,ryw#,zyw#
;??????????
;???
If KeyDown(17) And KeyDown(42)
MoveEntity player,0,0,1.5
Else If KeyDown(31) And KeyDown(42)
MoveEntity player,0,0,-1.5
EndIf
If KeyDown(30) And KeyDown(42)
MoveEntity player,-1.1,0,0
Else If KeyDown(32) And KeyDown(42)
MoveEntity player,1.1,0,0
EndIf
;????? ??????
End Function
Function UpdateCollisions()
Collisions playertype,TypePol,2,3
Collisions playertype,TypeStena,2,3
Collisions playertype,TypeTons,2,3
Collisions playertype,TypeBalke,2,3
Collisions playertype,TypeLuk,2,3
Collisions TypeBox,TypePol,2,3
Collisions PlayerType,TypeBox,2,3
Collisions PlayerType,TypeCar,2,3
Collisions TypeCar,TypePol,2,3
End Function
Function RecurseSeek(ent)
tab=tab+4
For i=1 To CountChildren(ent)
child=GetChild(ent,i)
name$=Lower(EntityName(child))
If Instr(name$,"pol")
EntityType child, TypePol
EndIf
If Instr(name$,"stena")
EntityType child, TypeStena
EndIf
If Instr(name$,"tons")
EntityType child, TypeTons
EntityFX child,1
EndIf
If Instr(name$,"balka")
EntityType child, TypeBalke
EndIf
If Instr(name$,"luk")
EntityType child, TypeLuk
tex_child=LoadTexture("models\TEX23.bmp",3)
EntityTexture child,tex_child
ScaleTexture tex_child,0.5,0.5
EndIf
Next
tab=tab-4
End Function
Function LoadWeapon_1()
weapon = LoadAnimMesh("models\gun\MP5.b3d",camera)
ExtractAnimSeq(weapon,1,1 ) ; 1- idle
ExtractAnimSeq(weapon,2,8 ) ; 2- shoot
Animate weapon, 1,0, 1
;EntityPickMode weapon, 2
PositionEntity weapon,xw#,yw#,zw#
RotateEntity weapon,rxw#,ryw#,rzw#
xw#=3
yw#=-12
zw#=6
rxw#=0
ryw#=90
rzw#=0
EntityParent weapon, camera
EntityRadius weapon,1
EntityOrder weapon,-1
End Function
Function LoadWeapon_2()
weapon_1 = LoadMesh("models\gun\gun_1.b3d",camera)
EntityPickMode weapon_1, 2
PositionEntity weapon_1,xw#+3,yw#-12,zw#+6
RotateEntity weapon_1,rxw#+0,ryw#+90,rzw#+0
EntityParent weapon_1, camera
EntityRadius weapon_1,1
EntityOrder weapon_1,-1
End Function
Function InitSounds()
fire_01=LoadSound("sound\fire_01.ogg")
run=LoadSound("sound\dirt.wav")
Not_fire=LoadSound("sound\RifleReload.wav")
SoundVolume run, 0
LoopSound run
runChannel = PlaySound (run)
End Function
Function LoadB3D(FileName$)
;load map & count children
;TextureFilter "",2
TextureFilter "MSK",4
TextureFilter "TRN",2
map=LoadAnimMesh(FileName)
cc=CountChildren(map)
For ent=1 To cc;for each entity
;get Handle & 'name' of child
chi=GetChild (map,ent)
attr$=EntityName(chi)
;create record & store handle
If attr<>""
;new record
obj.obj_data = New obj_data
obj\handler = chi
;string parser to delete unwanted chars & separate lines
attr$=Replace$(attr$,Chr(34),"")
attr$=Replace$(attr$,Chr(10),"#")
currentstr=1
For b=1 To Len(attr)
If Mid(attr,b,1)="#" Then
currentstr=currentstr+1
Else
obj\rawdata[currentstr]=obj\rawdata[currentstr]+Mid(attr,b,1)
EndIf
Next
;string parser 2 divide into Data segs For fields
For dat=1 To 8
switch=0
attr=obj\rawdata[dat]
For b=1 To Len(attr)
If Mid(attr,b,1)="=" Then
switch=1
Else
If switch=0 Then obj\key[dat] = obj\key[dat] + Mid(attr,b,1)
If switch=1 Then obj\value[dat] = obj\value[dat] + Mid(attr,b,1)
EndIf
Next
;extract real name value using the CS4 key 'NAME'
If Upper(obj\key[dat])="NAME"
obj\name = Upper(obj\value[dat])
EndIf
Next
;reset raw Data
For dat=1 To 16
obj\rawdata[dat]=""
Next
;TESTCODE - remove this ################################
Print "-------------------------------------------------"
Print "NAME: "+obj\name+" Handle:"+Str(obj\handler)
For dat=1 To 8
Print "DATA: "+obj\key[dat]+"<=>"+obj\value[dat]
Next
Delay(100)
;########################################################
;alpha
For a=1 To 8
If Upper(obj\key[a])="ALPHA" Then EntityAlpha obj\handler,Float(obj\value[a])
Next
;create lights
If Upper(obj\key[1])="CLASSNAME" And Upper(obj\Value[1])="LIGHT"
lh=CreateLight(2)
;testcode - remove this ################
lb=CreateSphere(10):EntityFX lb,1
;#######################################
For a=1 To 8
PositionEntity lh,EntityX(obj\handler),EntityY(obj\handler),EntityZ(obj\handler)
;testcode - remove this ###############
PositionEntity lb,EntityX(obj\handler),EntityY(obj\handler),EntityZ(obj\handler)
;#######################################
obj\handler=lh
If Upper(obj\key[a])="RANGE"
LightRange lh, Float(obj\value[a])
EndIf
If Upper(obj\key[a])="COLOR"
;parse colors
cR$="":cG$="":cB$="":switch=1
For ch=1 To Len(obj\value[a])
If Mid (obj\value[a],ch,1)=" "
switch=switch+1
Else
If switch=1 Then cR=cR+Mid (obj\value[a],ch,1)
If switch=2 Then cg=cg+Mid (obj\value[a],ch,1)
If switch=3 Then cb=cb+Mid (obj\value[a],ch,1)
EndIf
Next
LightColor lh, Float(cr),Float(cg),Float(cb)
;testcode - remove this ################
EntityColor lb, Float(cr),Float(cg),Float(cb)
;#######################################
EndIf
Next
EndIf
EndIf
;Set Surfaces For receiving hardware lights
nv=CountSurfaces(chi)
EntityFX chi,0
Print nv:Delay(100)
If nv>0 Then
surf=GetSurface (chi,1)
brsh=GetSurfaceBrush(surf)
BrushFX brsh,0
tex=GetBrushTexture(brsh,1)
TextureBlend tex,2 ;USE 0 to toggle LM on-off 2 TO ADD, USE 3 TO MULTIPLY
BrushTexture brsh,tex,0,1
PaintMesh chi,brsh
FreeBrush brsh
FreeTexture tex
;PaintEntity chi,brsh
EndIf
UpdateNormals chi
Next;object
Return map
End Function
Function LoadSkyBox(file$)
m=CreateMesh()
;front face
b=LoadBrush( file$+"mercury512_bk.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,+1,+1,-1,0,0:AddVertex s,-1,+1,-1,1,0
AddVertex s,-1,-1,-1,1,1:AddVertex s,+1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;right face
b=LoadBrush( file$+"mercury512_lf.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,+1,+1,+1,0,0:AddVertex s,+1,+1,-1,1,0
AddVertex s,+1,-1,-1,1,1:AddVertex s,+1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;back face
b=LoadBrush( file$+"mercury512_ft.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,+1,0,0:AddVertex s,+1,+1,+1,1,0
AddVertex s,+1,-1,+1,1,1:AddVertex s,-1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;left face
b=LoadBrush( file$+"mercury512_rt.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,-1,0,0:AddVertex s,-1,+1,+1,1,0
AddVertex s,-1,-1,+1,1,1:AddVertex s,-1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;top face
b=LoadBrush( file$+"mercury512_up.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,-1,0,1:AddVertex s,+1,+1,-1,0,0
AddVertex s,+1,+1,+1,1,0:AddVertex s,-1,+1,+1,1,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;bottom face
b=LoadBrush( file$+"mercury512_dn.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,-1,+1,1,0:AddVertex s,+1,-1,+1,1,1
AddVertex s,+1,-1,-1,0,1:AddVertex s,-1,-1,-1,0,0
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
ScaleMesh m,5000,5000,5000
;FlipMesh m
EntityFX m,1+8
Return m
FreeEntity m
End Function
Function CreateFlareOut(ent,sprite,TimeTolive)
flare.OutFlare=New OutFlare
flare\time_out=TimeTolive
flare\sprite = CopyEntity(sprite)
PositionEntity flare\sprite,EntityX(ent,1),EntityY(ent,1),EntityZ(ent,1)
RotateSprite flare\sprite,Rand(-90,90) ; ???? ????? ?????? ??????? ??????? ?? ??? ???????? ???
End Function
Function UpdateFlareOut()
For flare.OutFlare= Each OutFlare
flare\TimeTolive = flare\TimeTolive - 1
If flare\time_out < 0
FreeEntity flare\sprite
Delete flare
EndIf
Next
End Function
Function BotUpdat()
End Function
|