Inet schmiert ab bei udp datenverkehr[gelöst]
Übersicht

HangmanBetreff: Inet schmiert ab bei udp datenverkehr[gelöst] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin blitzcom,
ich habe ein ziemlich blödes problem, ich schreibe zur zeit ein multiplayer game das über hamachi übers internet laufen soll. Connection klappt alles soweit, sowohl client kann zu server als auch server zu client senden. Connecten dann 2 Spieler zum Server schmiert die Internetverbindung auf Serverseite ab bis man das Serverprogramm ausschaltet. Im Moment besteht sämtlicher Datenverkehr ausgenommen einloggen usw. nur aus Koordinatenübertragung: Server Ausgang Code: [AUSKLAPPEN] ;Sendet Koordinaten aller Spieler zu allen anderen Spielern auf der gleichen Map_ID
Function Send_Player_Stats() If MilliSecs()>Send_Player_Stats_Counter+40 Then Send_Player_Stats_Counter=MilliSecs() For Player1.Player = Each Player For Player2.Player = Each Player If Player1\Map_ID=Player2\Map_ID And Player1\ID<>Player2\ID Then ;with (Short)Send_Data1=Player_ID, (Int)Send_Data2=X, (Int)Send_Data3=Y, (Short)Send_Data4=Angle, (Byte)Send_Data5=Anim_Frame, (Short)Send_Data6=Life_Full, (Short)Send_Data7=Life, (Short)Send_Data8=Power_Full, (Short)Send_Data9=Power, (Byte)Send_Data10=Mech_Model WriteByte Send_Stream, Update_Player_Pos WriteShort Send_Stream, Player2\ID WriteInt Send_Stream, Player2\X WriteInt Send_Stream, Player2\Y WriteShort Send_Stream, Player2\Angle WriteByte Send_Stream, Player2\Anim_Frame WriteShort Send_Stream, Player2\Life_Full WriteShort Send_Stream, Player2\Life WriteShort Send_Stream, Player2\Power_Full WriteShort Send_Stream, Player2\Power WriteByte Send_Stream, Player2\Mech_Model WriteByte Send_Stream, Player2\Mech_Foot SendUDPMsg Send_Stream, Player1\IP%, Server_Send_Port End If Next Next End If End Function Server Eingang Code: [AUSKLAPPEN] Case Update_Pos_Type
;with (Int)Send_Data1=X, (Int)Send_Data2=Y, (Short)Send_Data3=Angle, (Byte)Send_Data4=Anim_Frame, (Byte)Send_Data5=Mech_Foot Msg_Data1_Int%=ReadInt(Receive_Stream) Msg_Data2_Int%=ReadInt(Receive_Stream) Msg_Data3_Int%=ReadShort(Receive_Stream) Msg_Data4_Int%=ReadByte(Receive_Stream) Msg_Data5_Int%=ReadByte(Receive_Stream) For Player.Player = Each Player If Send_IP=Player\IP Then Player\X = Msg_Data1_Int Player\Y = Msg_Data2_Int Player\Angle = Msg_Data3_Int Player\Anim_Frame = Msg_Data4_Int Player\Mech_Foot = Msg_Data5_Int End If Next Client Ausgang Code: [AUSKLAPPEN] Function Send_my_Pos()
If MilliSecs() > Send_my_Pos_Timer%+40 Then Send_my_pos_Timer% = MilliSecs() ;with (Int)Send_Data1=X, (Int)Send_Data2=Y, (Short)Send_Data3=Angle, (Byte)Send_Data4=Anim_Frame, (Byte)Send_Data5=Foot WriteByte Send_Stream, Update_Pos_Type WriteInt Send_Stream, Int(Main_X#) WriteInt Send_Stream, Int(Main_Y#) WriteShort Send_Stream, Player_Angle% WriteByte Send_Stream, Mech_Counter WriteByte Send_Stream, Foot SendUDPMsg Send_Stream, Server_IP, Client_Send_Port End If End Function Client Eingang Code: [AUSKLAPPEN] Case Update_Player_Pos
;with (Short)Send_Data1=Player_ID, (Int)Send_Data2=X, (Int)Send_Data3=Y, (Short)Send_Data4=Angle, (Byte)Send_Data5=Anim_Frame, (Short)Send_Data6=Life_Full, (Short)Send_Data7=Life, (Short)Send_Data8=Power_Full, (Short)Send_Data9=Power, (Byte)Send_Data10=Mech_Model, (Byte)Send_Data11=Mech_Foot ;Update_Player_Stats(ID,X,Y,Angle,Anim_Frame,Life_Full,Life,Power_Full,Power,Mech_Model) Update_Player_Stats(ReadShort(Receive_Stream),ReadInt(Receive_Stream),ReadInt(Receive_Stream),ReadShort(Receive_Stream),ReadByte(Receive_Stream),ReadShort(Receive_Stream),ReadShort(Receive_Stream),ReadShort(Receive_Stream),ReadShort(Receive_Stream),ReadByte(Receive_Stream),ReadByte(Receive_Stream)) Code: [AUSKLAPPEN] ;Update_Player_Stats(ID,X,Y,Angle,Anim_Frame,Life_Full,Life,Power_Full,Power,Mech_Model)
Function Update_Player_Stats(F_ID%,F_X%,F_Y%,F_Angle%,F_Anim_Frame%,F_Life_Full%,F_Life%,F_Power_Full%,F_Power%,F_Mech_Model%,F_Mech_Foot%) Local Done_Cache=0 For Player.Player = Each Player;Update existing player If Player\ID=F_ID Then Done_Cache=1 Player\X = F_X Player\Y = F_Y Player\Angle = F_Angle Player\Anim_Frame = F_Anim_Frame Player\Life_Full = F_Life_Full Player\Life = F_Life Player\Power_Full = F_Power_Full Player\Power = F_Power Player\Mech_Model = F_Mech_Model Player\Mech_Foot = F_Mech_Foot End If Next If Done_Cache=0 Then;Create new player Player.Player = New Player Player\X = F_X Player\Y = F_Y Player\Angle = F_Angle Player\Anim_Frame = F_Anim_Frame Player\Life_Full = F_Life_Full Player\Life = F_Life Player\Power_Full = F_Power_Full Player\Power = F_Power Player\Mech_Model = F_Mech_Model Player\Mech_Foot = F_Mech_Foot End If End Function Da der Datenverkehr beispielsweise beim einloggen funktioniert kann ich es mir eigentlich nur durch ne endlosscheife beim senden erklären wenn alles so laufen würde wie ich es mir gedacht habe sollte es mit dem datenvolumen eigentlich keine probleme geben. Findet ihr einen Fehler? Danke schonmal im vorraus Edit: Am besten mal in bb kopieren das ist ja grausam mit den einrückungen hier zu lesen Edit: Wie es das Schicksal so will die größten Probleme sind die kleinsten: Send_Player_Stats_Counter war nicht global deklariert. |
||
Ich habe Berthold gebrochen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group