MAV bei ReadString()
Übersicht

![]() |
ToeBBetreff: MAV bei ReadString() |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bekomme bei meinem programm immer einen MAV (beim Joinen..)
Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() Global p_anz = 5 Global Port = 8000 Global max_p Dim name$(p_anz) ;Name der Spieler Dim IP(p_anz) ;IP der Spieler Dim acc(p_anz) ;Ob eingeklinkt Dim acc2(p_anz) ;ob Bereit Dim ch$(p_anz) ;Chat der Spieler Dim txt$(5) Dim txtCol$(5) Dim cl$(30) Dim cc$(30) For i = 1 To 5:Read txt(i):Next For i = 1 To 5:Read txtcol(i):Next Global stream = CreateUDPStream(Port) Global send_ms = MilliSecs() Global ID = 1,server Global G,Chat$ ;Global loop = LoadSound("amiga_deluxe.mp3"):LoopSound loop ;Global Channel = PlaySound(loop) Print "Name ?" name_$ = Input(">") If name_ = "" Then name_ = "[NoName]" Print "HOST (1) oder JOIN (2) ?" Repeat Server = Input(">") Until Server > 0 And Server < 3 If Server = 2 Then Print "IP des Hosts ?" IP(1) = INT_IP(Input(">")) WriteByte(stream,2) WriteString(stream,name_) SendUDPMsg(stream,IP(1),Port) msms = MilliSecs() Print "Verbinde..." Repeat If RecvUDPMsg(stream) byte = ReadByte(stream) If byte = 2 ID = ReadInt(stream) name(1) = ReadString(stream) name(ID) = name_ acc(ID) = 1 acc(1) = 1 Exit ElseIf byte = 3 Print "Kein Platz mehr vorhanden in der Server-Liste !" Print "Beende..." Delay 2000 End EndIf EndIf If msms <= MilliSecs() - 10000 Then Print "Konnte keine Verbindung zum angegebenen Server errichten !" Print "Programm wird beendet..." Delay 2000 End EndIf Forever ElseIf Server = 1 name(1) = name_ acc(1) = 1 EndIf FlushKeys() Repeat If Server = 1 And ID > 1 Bereit_ = 0 anzz = 0 For i = 1 To p_anz If acc(i) = 1 Then anzz = anzz + 1 Next For i = 1 To anzz If acc2(i) = 1 Then Bereit_ = Bereit_ + 1 Next If Bereit_ = anzz Then Bereit = 1 Else Bereit = 0 If Bereit = 1 Then Color 255,255,255:Rect 550,30,200,40,0:Text 650,42,"Spiel Starten",1 If RectsOverlap(MouseX(),MouseY(),1,1,550,30,200,40) Then Color 255,0,0:Rect 552,32,196,36,0:Text 650,42,"Spiel Starten",1 If MouseDown(1) Then For i = 2 To p_anz If acc(i) = 1 Then WriteByte(stream,4) SendUDPMsg(stream,IP(i),Port) EndIf Next Bereit2 = 1 EndIf EndIf EndIf EndIf Color 100,100,100:Rect 100,150,400,400:Rect 100,560,400,20 Color 255,255,255:Rect 100,150,400,400,0:Rect 100,560,400,20,0 Color 255,255,255:Text 100,10,"NAME":Text 380,10,"STATUS" For i = 1 To 30 If cl$(i) <> "" SetColor(cc$(i)) Text 102,139+i*13,cl$(i) EndIf Next G = GetKey() If g <> 0 And g <> 13 And g <> 8 Then Chat$ = Chat$ + Chr(g) If g = 8 Or StringWidth(Chat$) > 396 Then Chat$ = Mid(Chat$,1,Len(Chat$)-1) Color 255,255,255:Text 102,563,Chat$:Rect 103+StringWidth(Chat$),563,1,13 If g = 13 Then If Chat$ <> "" time$ = Left(CurrentTime(),5) If Server = 1 SetChat("255,0,0","["+name(1)+"/"+Time$+"]") SetChat("255,255,255",Chat$) tmpc$ = Chat$ Ch(1) = Chat$ Chat$ = "" Else SetChat("0,0,255","["+name(ID)+"/"+Time$+"] :") SetChat("255,255,255",Chat$) ch(ID) = Chat$ Chat$ = "" EndIf Else Chat$ = "" EndIf EndIf For i = 1 To p_anz Color 100,100,100:Rect 100,10+i*20,400,20 Color 0,0,0:Rect 100,10+i*20,400,2 If acc(i) SetText(110,14+i*20,1,name(i)) If acc2(i) Then SetText(435,14+i*20,4,"",1) Else SetText(435,14+i*20,5,"",1) EndIf Else SetText(110,14+i*20,2) SetText(435,14+i*20,3,"",1) EndIf Next Color 0,0,0:Rect 370,10,2,20+p_anz*20 If Server = 1 Then If send_ms <= MilliSecs() - 100 And ID > 1 Then For i = 2 To p_anz If acc(i) = 1 Then WriteByte(stream,1) For j = 1 To p_anz If acc(j) = 1 And i<>j Then WriteInt(stream,j) WriteString(stream,name(j)) WriteByte(stream,acc2(j)) WriteString(stream,ch(j)) EndIf Next SendUDPMsg(stream,IP(i),Port) EndIf Next send_ms = MilliSecs() EndIf If RecvUDPMsg(stream) Select ReadByte(stream) Case 1 ID = ReadInt(stream) name(ID) = ReadString(stream) acc2(ID) = ReadByte(stream) strr$ = ReadString(stream) If strr$ <> ch(ID) Then ch(ID) = strr time$ = Left(CurrentTime(),5) SetChat("0,0,255","["+name(ID)+"/"+Time$+"] :") SetChat("255,255,255",ch(ID)) EndIf Case 2 ID = ID + 1 If ID <= p_anz Then name(ID) = ReadString(stream) IP(ID) = UDPMsgIP(stream) WriteByte(stream,2) WriteInt(stream,ID) WriteString(stream,name(1)) SendUDPMsg(stream,IP(ID),Port) acc(ID) = 1 Else IPIP =UDPMsgIP(stream) WriteByte(stream,3) SendUDPMsg(stream,IPIP,Port) EndIf End Select EndIf ElseIf server = 2 If RecvUDPMsg(stream) Then Select ReadByte(stream) Case 1 For i = 1 To p_anz IDID = ReadInt(stream) name(IDID) = ReadString(stream) acc2(IDID) = ReadByte(stream) strr$ = ReadString(stream) If strr$ <> ch(IDID) Then ch(IDID) = strr$ time$ = Left(CurrentTime(),5) If IDID = 1 SetChat("255,0,0","["+name(1)+"/"+Time$+"] :") Else SetChat("0,0,255","["+name(IDID)+"/"+Time$+"] :") EndIf SetChat("255,255,255",ch(IDID)) EndIf acc(IDID) = 1 Next WriteByte(stream,1) WriteInt(stream,ID) WriteString(stream,name(ID)) WriteByte(stream,acc2(ID)) WriteString(stream,ch(ID)) SendUDPMsg(stream,IP(1),Port) Case 4 Bereit2 = 1 End Select EndIf EndIf If server = 1 Then If RectsOverlap(MouseX(),MouseY(),1,1,370,30,130,20) Then Color 255,255,255:Rect 371,31,130,20,0 If MouseHit(1) Then acc2(1) = 1 - acc2(1) EndIf ElseIf Server = 2 If RectsOverlap(MouseX(),MouseY(),1,1,370,10+ID*20,130,20) Then Color 255,255,255:Rect 371,11+ID*20,130,20,0 If MouseHit(1) Then acc2(ID) = 1 - acc2(ID) EndIf EndIf If KeyHit(1) Then End Color 255,255,0:Oval MouseX()-10,MouseY()-10,20,20,0:Plot MouseX(),MouseY() Flip Cls Until Bereit2 = 1 ms = MilliSecs() cd = 5000 Repeat Text 400,1,"Spielvorbereitung...",1 Text 400,300,((cd - (MilliSecs()-ms))/1000),1,1 Flip Cls Until ms <= MilliSecs() - cd FlushKeys() ;#################################################################################################################### ;################################################### GAME ########################################################### ;#################################################################################################################### Repeat Text 1,1,"Hier soll einmal das Spiel enstehen..." Flip Cls Until KeyHit(1) End Function SetChat(tc$,tt$) If tt$ <> "" c = 0 For i = 1 To 30 If cl(i) = "" Then c = 1 cl(i) = tt$ cc(i) = tc$ Exit EndIf Next If c = 0 For i = 1 To 29 cl(i) = cl(i+1) cc(i) = cc(i+1) Next cl(30) = tt$ cc(30) = tc$ EndIf EndIf End Function Function SetColor(ColorString$) Local r,g,b r = Int(Mid(ColorString$,1,Instr(ColorString$,",")-1)):ColorString$=Mid(ColorString,Instr(ColorString$,",")+1,12) g = Int(Mid(ColorString$,1,Instr(ColorString$,",")-1)):ColorString$=Mid(ColorString,Instr(ColorString$,",")+1,12) b = Int(Mid(ColorString$,1,Instr(ColorString$,",")-1)):ColorString$=Mid(ColorString,Instr(ColorString$,",")+1,12) Color r,g,b End Function Function SetText(x,y,num,Text$="",xmid=0,ymid=0) SetColor(txtCol(num)) If Text$ = "" Text x,y,txt(num),xmid,ymid Else Text x,y,Text$,xmid,ymid EndIf End Function Function INT_IP(IP$) If Instr(IP$,".") <> 0 a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) If Instr(IP$,".") <> 0 a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) If Instr(IP$,".") <> 0 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 Data "","[LEER]","[X]","[BEREIT]","[NICHT BEREIT]" Data "255,255,255","150,150,150","150,150,150","0,255,0","255,0,0" Hier kommt er : Debug hat Folgendes geschrieben: Code: [AUSKLAPPEN]
If RecvUDPMsg(stream)
byte = ReadByte(stream) If byte = 2 ID = ReadInt(stream) name(1) = ReadString(stream) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< name(ID) = name_ acc(ID) = 1 acc(1) = 1 Exit ElseIf byte = 3 Print "Kein Platz mehr vorhanden in der Server-Liste !" Print "Beende..." Delay 2000 End EndIf EndIf Also es liegt wirklich am ReadString(stream).... Warum funzt das nicht ? Ich blick da net mehr durch... thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach mal den debugger an damit ne gescheite fehlermeldung kommt.... und auf den ersten blick würd' ich sagen: Stream ist alle und du liest übers ende. | ||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm... Hab ich nicht geschrieben "Debug hat Folgendes geschrieben:" ?
Nein, falls du dir den code mal angeguckt hasst, schikt der Server immer erst einen Byte (2) dann die ID und dann den Namen... [EDIT] Sry, ich habe grad gemerkt, das die IP des anderen Rechners gar nicht mehr stimmte, seit ich die mal ausversehen vertauscht hatte. Also hatter jetzt der HOST stat 192.168.10.2 jetzt 192.168.10.3 und dadurch konnten dann auch keine Nachrichten mehr empfangen werden ![]() Deshalb war deine Vermutungschon sehr richtig, Silver_Knee, deshalb danke ![]() [/EDIT] thx und mfg Crack93 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group