Online Spiel
Übersicht

MerierBetreff: Online Spiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hoffe das ihr mir helfen könnt.
Ich habe einen Server und einen Client geschrieben. Doch irgendwie überträgt er die Coordinaten nicht. Vllt könnr ihr mir ja sagen wo der Fehler liegt. Hoffe auf schnelle Antworten! Server:Code: [AUSKLAPPEN] Graphics3D 640,480,0,2 SetBuffer BackBuffer() Global myID,count,x#,y#,z#,t#,Pos#,Pos2# Const NewPlayer = 1 Const NewPlayer2 = 2 Const Move = 3 Type Player Field ID Field Obj Field IP End Type Global P.Player Stream = CreateUDPStream(8000) Cam = CreateCamera() Cube = CreateCube() PositionEntity Cube,-10,0,20 Repeat Pos# = EntityX#(Cube) + EntityY#(Cube) + EntityZ#(Cube) + EntityYaw#(Cube) If KeyDown(200)=True Then MoveEntity Cube,0,0,0.2 If KeyDown(208)=True Then MoveEntity Cube,0,0,-0.2 If KeyDown(205)=True Then TurnEntity Cube,0,-3,0 If KeyDown(203)=True Then TurnEntity Cube,0,3,0 Pos2# = EntityX#(Cube) + EntityY#(Cube) + EntityZ#(Cube) + EntityYaw#(Cube) ant = RecvUDPMsg(Stream) If ant<>0 Leng = ReadAvail(Stream) If Leng>0 IN = ReadByte(Stream) ip = UDPMsgIP(Stream) Select IN Case NewPlayer P = New Player P\ID = ReadInt(Stream) P\IP = ip P\Obj = CreateCube() Case NewPlayer2 count = count +1 P = New Player P\ID = getID(ip) P\IP = ip P\Obj = CreateCube() For P.Player = Each Player WriteByte Stream,NewPlayer WriteByte Stream,count SendUDPMsg Stream, P\IP , 8000 WriteByte Stream,NewPlayer WriteByte Stream,P\ID SendUDPMsg Stream, ip , 8000 Next Case Move x# = ReadFloat(Stream) y# = ReadFloat(Stream) z# = ReadFloat(Stream) t# = ReadFloat(Stream) For P.Player = Each Player If P\ip <> ip WriteByte Stream,Move WriteFloat Stream,x# WriteFloat Stream,y# WriteFloat Stream,z# WriteFloat Stream,t# SendUDPMsg Stream,P\IP,8000 EndIf If ip = P\IP PositionEntity P\Obj,x#,y#,z# RotateEntity P\Obj, 0, t#, 0, 1 End If Next End Select EndIf EndIf If Pos# <> Pos2# For P.Player = Each Player WriteByte Stream, Move WriteFloat Stream, EntityX#(Cube) WriteFloat Stream, EntityY#(Cube) WriteFloat Stream, EntityZ#(Cube) WriteInt Stream, EntityYaw(Cube) SendUDPMsg Stream, P\IP , 8000 Next End If UpdateWorld() RenderWorld() Flip Until KeyHit(1) End Function getID(ipnumber) For P.Player = Each Player If P\IP = ipnumber Return P\IP Else Return count EndIf Next End Function Client: Code: [AUSKLAPPEN] Graphics3D 640,480,0,2 SetBuffer BackBuffer() Global myID,count,x#,y#,z#,t#,Pos#,Pos2# Const NewPlayer = 1 Const NewPlayer2 = 2 Const Move = 3 Type Player Field ID Field Obj Field IP End Type Global P.Player Global Stream = CreateUDPStream(8001) Cam = CreateCamera() Cube = CreateCube() PositionEntity Cube,-10,0,20 Repeat Pos# = EntityX#(Cube) + EntityY#(Cube) + EntityZ#(Cube) + EntityYaw#(Cube) If KeyDown(200)=True Then MoveEntity Cube,0,0,0.2 If KeyDown(208)=True Then MoveEntity Cube,0,0,-0.2 If KeyDown(205)=True Then TurnEntity Cube,0,-3,0 If KeyDown(203)=True Then TurnEntity Cube,0,3,0 Pos2# = EntityX#(Cube) + EntityY#(Cube) + EntityZ#(Cube) + EntityYaw#(Cube) ant = RecvUDPMsg(Stream) If ant<>0 Leng = ReadAvail(Stream) If Leng>0 IN = ReadByte(Stream) ip = UDPMsgIP(Stream) Select IN Case NewPlayer P = New Player P\ID = ReadInt(Stream) P\IP = ip P\Obj = CreateCube() Case Move x# = ReadFloat(Stream) y# = ReadFloat(Stream) z# = ReadFloat(Stream) t# = ReadFloat(Stream) For P.Player = Each Player If InIP <> P\IP Then PositionEntity P\Obj,X#,Y#,Z# RotateEntity P\Obj, 0, Turn, 0, 1 End If Next End Select EndIf EndIf If Pos# <> Pos2# For P.Player = Each Player WriteByte Stream, Move WriteFloat Stream, EntityX#(Cube) WriteFloat Stream, EntityY#(Cube) WriteFloat Stream, EntityZ#(Cube) WriteInt Stream, EntityYaw(Cube) SendUDPMsg Stream, P\IP , 8001 Next End If UpdateWorld() RenderWorld() Flip Until KeyHit(1) End P.S der Code baut etwas auf das Beispiel von BadDeath auf. |
||
![]() |
blitzuser34 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich hab mir zwar deinen Code nicht angesehen, aber vielleicht kannste ja damit was anfangen: https://www.blitzforum.de/foru...hp?t=30585 Mfg Blitzuser34 |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
hat der Client denn schon ein Typ Player ?
Ansonsten schickt er ja nichts. |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Merier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja der client und der server haben beide den type Player.
Am anfang werden die erstellt. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich sehe kein p.player = new player oder so.
Ich komm mir gerade voll verpielt vor ^^ |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Durchaus, da steht nur P = New Player.
Es muss heissen p.Player = New Player MfG |
||
Merier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke aber leider sehen sich die Spieler immernoch nicht ![]() |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube die Ports stimmen nicht. Server auf Port 8000 und Clients senden an Port 8001, sodass der Server nicht davon mitbekommt. | ||
www.botbomb.robotzgames.de
www.robotzgames.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group