Показать сообщение отдельно
Старый 14.09.2008, 16:18   #13
klopmaks
ПроЭктировщик
 
Аватар для klopmaks
 
Регистрация: 22.12.2006
Сообщений: 182
Написано 2 полезных сообщений
(для 2 пользователей)
Re: MMO??? Что и как ? O_o

спасибо Тадеусу за статии =)
Там дальше приводиться пример "кубо-гонок"
Я там немного застрял...
Код я понял и переписал так что у одного клиента вид(камера) от одного куба
у второго от второго. И управление.
Потоки тоже вроде поменял , но мне выдает 1 клиент что стрим_1 даз нот екзист
Кода немного поетому я выложу. Вопрос в первую очередь к Tадуесу помогите плз.

1 Клиент
Const out_port=53424
Const in_port=53425
Global Stream_1=CreateUDPStream(53425)
Global Stream_2=CreateUDPStream(53424)
Global op_ip$=Input()
Global cub
Global cub2

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

plane=CreatePlane()
plane_tex=LoadTexture("terrain-1.jpg")
PositionEntity plane,0,-1,0
EntityTexture plane,plane_tex
ScaleTexture plane_tex,15,15

cub=CreateCube()
MoveEntity cub,-2,0,0
cub2=CreateCube()
MoveEntity cub2,2,0,0

cam=CreateCamera(cub)
PositionEntity cam,0,5,-10

While Not KeyHit(1)
If KeyDown(200) MoveEntity cub,0,0,.1
If KeyDown(208 ) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0
UpdateNetwork()
RenderWorld
Flip
Wend

End

Function UpdateNetwork()
WriteLine Stream_1,EntityX(cub)
WriteLine Stream_1,EntityZ(cub)
WriteLine Stream_1,EntityYaw(cub)
SendUDPMsg Stream_1,Int_IP(op_ip$),in_port
If RecvUDPMsg(Stream_2) Then
PositionEntity cub2,Float(ReadLine$(Stream_2)),0,Float(ReadLine$( Stream_2))
RotateEntity cub2,0,Float(ReadLine$(Stream_2)),0
EndIf
End Function

Function Int_IP(IP$)
d1%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d2%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d3%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d4%=IP$
Return (d1 Shl 24) + (d2 Shl 16) + (d3 Shl 8 ) +d4
End Function

2 Клиент

Const out_port=53425
Const in_port=53424
Global Stream_1=CreateUDPStream(53424)
Global Stream_2=CreateUDPStream(53425)
Global op_ip$=Input()
Global cub
Global cub2

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

plane=CreatePlane()
plane_tex=LoadTexture("terrain-1.jpg")
PositionEntity plane,0,-1,0
EntityTexture plane,plane_tex
ScaleTexture plane_tex,15,15

cub=CreateCube()
MoveEntity cub,-2,0,0
cub2=CreateCube()
MoveEntity cub2,2,0,0

cam=CreateCamera(cub2)
PositionEntity cam,0,5,-10

While Not KeyHit(1)
If KeyDown(200) MoveEntity cub2,0,0,.1
If KeyDown(208 ) MoveEntity cub2,0,0,-.1
If KeyDown(203) TurnEntity cub2,0,1,0
If KeyDown(205) TurnEntity cub2,0,-1,0
UpdateNetwork()
RenderWorld
Flip
Wend

End

Function UpdateNetwork()
WriteLine Stream_1,EntityX(cub2)
WriteLine Stream_1,EntityZ(cub2)
WriteLine Stream_1,EntityYaw(cub2)
SendUDPMsg Stream_1,Int_IP(op_ip$),in_port
If RecvUDPMsg(Stream_2) Then
PositionEntity cub,Float(ReadLine$(Stream_2)),0,Float(ReadLine$(S tream_2))
RotateEntity cub,0,Float(ReadLine$(Stream_2)),0
EndIf
End Function

Function Int_IP(IP$)
d1%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d2%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d3%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d4%=IP$
Return (d1 Shl 24) + (d2 Shl 16) + (d3 Shl 8 ) +d4
End Function
(Offline)
 
Ответить с цитированием