Graphics3D 800,600,0,2
SetBuffer BackBuffer()
;variables
Global spacebar=57,escape=1,leftkey=208,rightkey=205
Global gravity=0.3
Global cam_y#=-3
Global cam_x#=0
Global magazine = 25
Global health=100
HidePointer
shoosh=LoadSound("swoosh.wmv")
;Types
Type snowball
Field mesh
Field id
Field damage
End Type
Type player
Field health
End Type
Type enemy
Field health
End Type
AmbientLight 255,255,255
;Light
sun=CreateLight()
;Player
player=CreateCamera()
CameraFogRange player,0.1,400
CameraFogMode player,True
CameraClsColor player,100,130,150
CameraFogColor player,100,130,150
;Terrain
ground=CreatePlane()
PositionEntity ground,0,-5,0
EntityColor ground,200,200,200
;Sky
sky=CreatePlane()
PositionEntity sky,0,100,0
RotateEntity sky,-180,0,0
;Sky texture
skytex=LoadTexture("sky.jpg")
EntityTexture sky,skytex
ScaleTexture skytex,5,5
ScaleTexture skytex,500,500
;Load the enemy
enemy=LoadMesh("enemy.3ds")
PositionEntity enemy,0,-4,30
ScaleEntity enemy,0.5,0.5,0.5
snowball=CreateSphere(36)
ScaleEntity snowball,0.2,0.2,0.2
HideEntity snowball
;Make the snow forts:
;Fort 1
fort1=LoadMesh("snowfort.3ds")
PositionEntity fort1,0,-3.5,4
EntityColor fort1,255,255,255
ScaleEntity fort1,1,1,2.5
RotateEntity fort1,0,-90,0
;Fort 2
fort2=CreateCube()
PositionEntity fort2,0,-4,30
EntityColor fort2,255,255,255
ScaleEntity fort2,2,1,1
;Making it snow!
Dim snowflake(1000)
For p=0 To 1000
snowflake(p)=CreateSphere()
ScaleEntity snowflake(p),0.05,0.05,0.05
PositionEntity snowflake(p),Rnd(-50,50),Rnd(1,100),Rnd(-50,50)
Next
;###############
;# Main Loop #
;###############
While Not KeyDown (escape)
;Shooting the player snowballs
If MouseHit(1) And magazine > 0
s.snowball = New snowball
s\mesh = CopyEntity(snowball)
s\id = 1
s\damage = 5
PositionEntity s\mesh,EntityX(player),EntityY(player),EntityZ(player)
RotateEntity s\mesh, EntityPitch(player),EntityYaw(player),EntityRoll(player)
magazine = magazine -1
End If
;New Code added 27/1/2012
If MouseHit(2)>0 And magazine < 25 Then
magazine = 25
;play reloading sound
;perhaps have a limited number of clips as well?
EndIf
For s.snowball = Each snowball
MoveEntity s\mesh, 0,0,1
If Abs(EntityZ(s\mesh)) > 400
FreeEntity s\mesh
Delete s
End If
Next
;Reloading
;Move the snow downwards
For l=0 To 1000
MoveEntity snowflake(l),0,Rnd(-0.002,-0.1),0
Next
;duck
If KeyDown(57) Then
cam_y=-3.7
Else
cam_y=-3
EndIf
PositionEntity player,cam_x,cam_y,3
;straffting
If KeyDown(30) Then cam_x=cam_x-0.1
If KeyDown(32) Then cam_x=cam_x+0.1
If cam_x > 0.5 Then cam_x=0.5
If cam_x < -0.5 Then cam_x=-0.5
;point the enemy at the player
PointEntity enemy,player
;FPS Camera Stuff
mxs#=mxs#+MouseXSpeed()
mys#=mys#+MouseYSpeed()
If mxs# > 100 Then mxs# = 100
If mxs# < -100 Then mxs# = -100
If mys# > 40 Then mys# = 40
If mys# < -80 Then mys# = -80
RotateEntity player,mys#,-mxs#,0
If magazine < 0
Text 100,100,"Hold E to reload"
EndIf
RenderWorld
UpdateWorld
Color 0,0,0
Rect 10,10,200,100,False
Text 20,20,"Snowballs left: "+ magazine
Text 20,40,"Health: "+health
Flip
Wend
End
See "new code added" section above.
(here it is again :
;New Code added 27/1/2012
If MouseHit(2)>0 And magazine < 25 Then
magazine = 25
;play reloading sound
;perhaps have a limited number of clips as well?
EndIf
Last edited 2012
|