Wieder mal Probleme mit dem Netzwerkcode!
Übersicht

fliegeBetreff: Wieder mal Probleme mit dem Netzwerkcode! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wieso funktioniert folgender Code nicht? Ich habe ein großes Terrain in mehrere unsichtbare Sektoren aufgeteilt,
sodass nicht an jeden Spieler alle Daten gesendet werden müssen. Aber ich sehe z.b.: Meinen Bruder nicht, wenn ich in der "iplist.txt" seine Netzwerk - IP- Adresse angegeben habe.Bitte helft mir, den ich möchte nur meinen Bruder sehen können, wenn er sich bewegt... Ich weis, das es ein langer Code ist, aber vielleicht aknn man da noch einiges rauskürzen... Hoffe, ihr könnt mir helfen den Fehler zu finden und ihn zu beheben. Fliege Code: [AUSKLAPPEN] Const send_port = 9000
Const recv_port = 9001 Global send_stream = CreateUDPStream(send_port) Global recv_stream = CreateUDPStream(recv_port) Global online_players Global must_update Global myip$ Global myname$ mydatas = OpenFile("mydatas.ip") If mydatas <> 0 myip$ = ReadLine(mydatas) myname$ = ReadLine(mydatas) Else mydatas = WriteFile("mydatas.ip") myip$ = Input("IP - Adresse: ") myname$ = Input("Name : ") WriteLine mydatas, myip$ WriteLine mydatas, myname$ EndIf Global ownip = INT_IP(myip$) Global ownname$ = myname$ Type onlinespieler Field ip Field name$ Field mesh Field x#,y#,z# Field pitch#,yaw#,roll# Field sektor End Type Global onlineplayer.onlinespieler Function check_online_players() friends_list = OpenFile("iplist.txt") If friends_list <> 0 Repeat friendsip$ = ReadLine(friends_list) If friendsip$ = "" Then Exit friends_ip = INT_IP(friendsip$) WriteLine send_stream, 1450101 SendUDPMsg send_stream, friends_ip, recv_port WriteLine send_stream, ownip SendUDPMsg send_stream, friends_ip, recv_port If RecvUDPMsg(Recv_stream) answer = ReadLine(Recv_stream) EndIf If answer = 1 wm(14501011) send(friends_ip) EndIf name$ = Recv() wm(14501013) send(friends_ip) x# = Float(Recv()) y# = Float(Recv()) z# = Float(Recv()) wm(14501016) send(frineds_ip) Pitch# = Float(Recv()) Yaw# = Float(Recv()) Roll# = Float(Recv()) wm(14501019) send(friends_ip) sektor = Recv() onlineplayer = New onlinespieler onlineplayer\ip = friends_ip onlineplayer\name$ = name$ onlineplayer\mesh = CreateCube() onlineplayer\x# = x# onlineplayer\y# = y# onlineplayer\z# = z# onlineplayer\pitch# = Pitch# onlineplayer\yaw# = Yaw# onlineplayer\roll# = Roll# onlineplayer\sektor = sektor wm(1450102) send(friends_ip) wm(ownname$) send(friends_ip) wm(EntityX(figure)) send(friends_ip) wm(EntityY(figure)) send(friends_ip) wm(EntityZ(figure)) send(friends_ip) wm(EntityPitch(figure)) send(friends_ip) wm(EntityYaw(firgure)) send(friends_ip) wm(EntityRoll(figure)) send(friends_ip) wm(in_sektor) send(friends_ip) Forever EndIf End Function Function new_onliner() recv_ip = INT_IP(Recv()) wm(1) send(recv_ip) If Recv() = "14501011" wm(ownname$) send(recv_ip) EndIf If Recv() = "14501013" wm(EntityX(firgure)) send(recv_ip) wm(EntityY(figure)) send(recv_ip) wm(EntityZ(figure)) send(recv_ip) EndIf If Recv() = "14501016" wm(EntityPitch(figure)) send(recv_ip) wm(EntityYaw(figure)) send(recv_ip) wm(EntityRoll(figure)) send(recv_ip) EndIf If Recv() = "14501019" wm(in_sektor) send(recv_ip) EndIf If Recv() = "1450102" name$ = Recv() x# = Float(Recv()) y# = Float(Recv()) z# = Float(Recv()) Pitch# = Float(Recv()) Yaw# = Float(Recv()) Roll# = Float(Recv()) sektor = Recv() onlineplayer = New onlinespieler onlineplayer\ip = recv_ip onlineplayer\name$ = name$ onlineplayer\x# = x# onlineplayer\y# = y# onlineplayer\z# = z# onlineplayer\Pitch# = Pitch# onlineplayer\Yaw# = Yaw# onlineplayer\Roll# = Roll# onlineplayer\sektor = sektor online_players = online_players + 1 EndIf End Function Function send_my_pos() For onlineplayer = Each onlinespieler If onlineplayer\sektor = in_sektor wm(155010) send(onlineplayer\ip) wm(ownip) send(onlineplayer\ip) wm(EntityX(figur)) send(onlineplayer\ip) wm(EntityY(figur)) send(onlineplayer\ip) wm(EntityZ(figur)) send(onlineplayer\ip) wm(EntityPitch(figur)) send(onlineplayer\ip) wm(EntityYaw(figur)) send(onlineplayer\ip) wm(EntityRoll(figur)) send(onlineplayer\ip) EndIf Next End Function Function recv_other_pos() recv_ip = INT_IP(Recv()) select_player_per_ip(recv_ip) onlineplayer\x# = Float(Recv()) onlineplayer\y# = Float(Recv()) onlineplayer\z# = Float(Recv()) onlineplayer\pitch# = Float(Recv()) onlineplayer\yaw# = Float(Recv()) onlineplayer\roll# = Float(Recv()) PositionEntity onlineplayer\mesh, onlineplayer\x#, onlineplayer\y#, onlineplayer\z# TurnEntity onlineplayer\mesh, onlineplayer\pitch#, onlineplayer\yaw#, onlineplayer\roll# End Function Function new_sektor_enterd() For onlineplayer = Each onlinespieler wm(166610) send(onlineplayer\ip) wm(ownip) send(onlineplayer\ip) wm(in_sektor) send(onlineplayer\ip) Next End Function Function recv_new_sektor() recv_ip = INT_IP(Recv()) select_player_per_ip(recv_ip) onlineplayer\sektor = Recv() End Function Function select_player_per_ip(ipadress) Repeat onlineplayer = After onlineplayer If onlineplayer\ip = ipadress Then Exit Forever End Function Function update_network() code$ = Recv() If code$ = "1450101" new_onliner() EndIf If code$ = "155010" recv_other_pos() EndIf If code$ = "166610" recv_new_sektor() EndIf End Function Function INT_IP(IP$) a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a4=Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4 End Function Function wm(txt$) WriteLine send_stream, txt$ End Function Function send(ip) SendUDPMsg send_stream, ip, recv_port End Function Function Recv() If RecvUDPMsg(Recv_stream) txt$ = ReadLine(Recv_stream) EndIf Return txt$ End Function |
||
Wer weiß was kommt.. ? |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mir ist etwas aufgefallen!
Wenn ich meine Netzwerk - IP - Adresse mit INT_IP(IP$) umrechnen lasse, bekomme ich eine Negative Zahl womit ich natürlich nichts anfangen kann. Amsonsten habe ich nur die check_online_players() vergessen auszuführen ![]() ![]() Meine Netz IP : 192.168.111.13 Bruders Netz IP : 192.168.111.15 Bitte helft mir! |
||
Wer weiß was kommt.. ? |
Steffen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ist kein Problem, dass eine negative Zahl rauskommt. IPs brauchen 4 Byte , also 32 bit. Ein Integer hat auch 32 bit, also belegt eine IP den gesamten Integer-Bereich, auch das Vorzeichenbit. Also ist die Zahl negativ, wenn der erste Block der IP größer ist, als 127. Deine IPs fangen mit 192 an, also müssen sie als Integer negativ sein. | ||
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87 |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Heist ich soll den gesammten Wert nochmals mit Abs() ins positive Wandeln? Denn ich glaube, das es an UDP liegt, nur an positive IPs zu versenden, oder liege ich da falsch? Aber wieso kommt mir dann der Fehler "Parameter must be positive"?? | ||
Wer weiß was kommt.. ? |
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
du darfst es auf keinen fall mit abs verändern, dann kommt nämlich ne andere IP raus!
Bei welcher funktion kommt Parameter must be positive? |
||
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich starte zuerst das Spiel bei mir. Danach bei meinem Bruder und dann kommt bei mir "Parameter must be positive" und dann stürtzt es ab. | ||
Wer weiß was kommt.. ? |
![]() |
theBlade |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function ipint(inputIP$) ;wandelt die IP in eine DottedIP um
Local break1,break2,break3,add1,add2,add3,add4,ipreturn break1 = Instr(inputIP$,".") break2 = Instr(inputIP$,".",break1+1) break3 = Instr(inputIP$,".",break2+1) add1 = Mid(inputIP$,1,break1-1) add2 = Mid(inputIP$,break1+1,break2-1) add3 = Mid(inputIP$,break2+1,break3-1) add4 = Mid(inputIP$,break3+1) ipreturn=(add1 Shl 24) + (add2 Shl 16) + (add3 Shl 8) + add4 Return ipreturn End Function |
||
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)
UTFSB -> (use the fuckin "suchen"-button) User posted image <- link -.- |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group