Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
Re: коллизии в дерект плей
Type Player
Field name$,id,ent,GRAVITY#
End Type
Global cam
Global myent
Global myid
Global myname$
Global GRAVITY#=-3
Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
SetBuffer BackBuffer()
Const Typeplayer = 1, TypeWall = 2
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall
jng=JoinNetGame("World Arena","127.0.0.1")
p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
myname=p\name
myid=p\id
myent=p\ent
EntityRadius myent, 20
EntityType myent, TypePlayer
cam=CreateCamera(myent)
PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000
Collisions Typeplayer, TypeWall, 2, 3
While Not KeyHit(1)
UpdatePlayer()
UpdateNetwork()
UpdateWorld
RenderWorld
Flip
Wend
Function UpdatePlayer()
If KeyDown(17) MoveEntity myent,0,0,10
If KeyDown(31) MoveEntity myent,0,0,-10
If KeyDown(30) TurnEntity myent,0,1,0
If KeyDown(32) TurnEntity myent,0,-1,0
TranslateEntity myent,0,gravity#,0
SendNetMsg 2,PackMsg$(myent),myid,0
End Function
Function UpdateNetwork()
While RecvNetMsg()
Select NetMsgType()
Case 100
p.Player=New Player
p\id=NetMsgFrom()
p\name=NetPlayerName(p\id)
p\ent=CreateCube()
Case 101
p.Player=FindPlayer(NetMsgFrom())
FreeEntity p\ent
Delete p
Case 2
p.Player=FindPlayer(NetMsgFrom())
UnpackMsg(p\ent,NetMsgData$())
End Select
Wend
End Function
Function FindPlayer.Player( id )
For p.Player=Each Player
TranslateEntity p\ent,0,gravity#,0
If p\id=id Then Return p
Next
End Function
Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)+"|"+EntityY(ent)
End Function
Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|")
x=Float(Left(dat$,xp))
dat$=Right(dat$,Len(dat$)-xp)
zp=Instr(dat$,"|")
z=Float(Left(dat$,zp))
dat$=Right(dat$,Len(dat$)-zp)
yawp=Instr(dat$,"|")
yaw=Float(Left(dat$,yawp))
dat$=Right(dat$,Len(dat$)-yawp)
y=Float(dat$)
PositionEntity ent,x,y,z
RotateEntity ent,0,yaw,0
ScaleEntity ent,5,5,5
End Function
Последний раз редактировалось HolyDel, 11.01.2008 в 18:52.
|