MAV bei Spiel ?
Übersicht

![]() |
ToeBBetreff: MAV bei Spiel ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also : Ich hab ein Game gemacht, in dem man zu 15 Spielern Spielen kann. Der Erste Teil des Spieles handelt davon, dass man sich in die Server-Liste eintragen "einklinken" kann. Das klappt auch alles phne Fehler. Nur wenn ich das Spiel Starten möchte, krig ich direct nen MAV... Machnchmal ja, manchmal nein, über Internet immer. Warum klappt das nur im ersten Teil (Chat usw..) und wenn ich den Zweiten Teil starten möchte dann nicht ?
Und noch was : Warum wird der Schuss nur bei dem HOST erstellt und nicht bei den Clienten ? Wenn ein Client schießt, sieht das nur der HOST, wenn der HOST schießt sehen dass die Clienten... Warum ?? Aber hier erstmal der Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() Global Back = LoadImage("gfx\Back2.png") TileImage Back,0,0 Color 0,0,0:Rect 0,0,300,400 Color 255,255,255 Flip Const p_anz = 15 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 w#(p_anz),x(p_anz),y(p_anz),Lebn(p_anz),sch(p_anz) ;Positionen im Spiel Type s Field x#,y#,s#,c#,leb,del,ID End Type Type del Field han End Type 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 mx,my,mHIT,mDOWN,omx,omy Global s.s,del.del Print "Laden...." Write "Lade Bilder ..." smile_img = LoadImage("gfx\Smile.png"):MaskImage smile_img,255,0,255:MidHandle smile_img Kan_img = LoadImage("gfx\Kan.png"):MaskImage Kan_img,255,0,255:MidHandle Kan_img TFormFilter 0 Dim smile(90) Dim Kan(90) For xx = 0 To 90 smile(xx) = CopyImage(smile_img) Kan(xx) = CopyImage(Kan_img) RotateImage smile(xx),xx*4 RotateImage Kan(xx),xx*4 Next FreeImage Smile_img Global check = LoadAnimImage("gfx\CheckBox.png",17,17,0,2):MaskImage check,255,0,255 Write "Fertig !" Print "" Write "Lade Sounds ..." Global loop = LoadSound("amiga_deluxe.mp3"):LoopSound loop Global Channel = PlaySound(loop) Write "Fertig !" ;Delay 1500 Print "" 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) For i = 1 To 30 cl(i) = ReadString(stream) cc(i) = ReadString(stream) Next 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() Local bx,by ;Bereit2=1;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< RAUS DAMIT *************************************************** Global Chat_Y,Balken_y=350,schieb = 0 Repeat omx = mx omy = my mx = MouseX() my = MouseY() mDown = MouseDown(1) bx = bx - 1 by = by - 1 TileImage Back,bx,by 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(mx,my,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 If RectsOverlap(mx,my,1,1,500,Balken_y,20,20) And mDOWN Then schieb = 1 If schieb = 1 If Not mDOWN Then schieb = 0 Balken_y = Balken_y + (my-omy) EndIf If Balken_y < 350 Then Balken_y = 350 If Balken_y > 350+180 Then Balken_y = 350+180 Chat_y = (Balken_y-350)*1.2 Color 150,150,150:Rect 500,350,20,200 Color 100,100,100:Rect 100,350,400,200:Rect 100,560,400,20:Rect 500,Balken_y,20,20 Color 255,255,255:Rect 100,350,400,200,0:Rect 100,560,400,20,0:Rect 500,350,20,200,0 Color 255,255,255:Text 100,10,"NAME":Text 483.5,10,"STATUS",1 Viewport 101,351,398,198 For i = 1 To 30 If cl$(i) <> "" SetColor(cc$(i)) Text 102,339+i*13-Chat_Y,cl$(i) EndIf Next Viewport 0,0,800,600 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 If i > 1 Color 0,0,0:Rect 100,10+i*20,400,2 If acc(i) SetText(110,14+i*20,1,name(i)) DrawImage check,475,12+i*20,acc2(i) Else SetText(110,14+i*20,2) SetText(483.5,14+i*20,3,"",1) EndIf Next Color 0,0,0:Rect 465,30,2,p_anz*20 If Server = 1 Then ;SetHTMLButton(600,100,"Wie ist meine IP ?","gfx\HTML1.htm") 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)) For i = 1 To 30 WriteString(stream,cl(i)) WriteString(stream,cc(i)) Next SendUDPMsg(stream,IP(ID),Port) acc(ID) = 1 time$ = Left(CurrentTime(),5) SetChat("0,255,0","["+name(ID)+"/"+Time$+"] :") SetChat("255,255,0","Hat dein Spiel betreten...") 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(mx,my,1,1,465,30,33,18) Then Color 255,255,255:Rect 467,31,33,18,0 If MouseHit(1) Then acc2(1) = 1 - acc2(1) EndIf ElseIf Server = 2 If RectsOverlap(mx,my,1,1,465,10+ID*20,33,18) Then Color 255,255,255:Rect 467,11+ID*20,33,18,0 If MouseHit(1) Then acc2(ID) = 1 - acc2(ID) EndIf EndIf If KeyHit(1) Then End Color 255,255,0:Oval mx-10,my-10,20,20,0:Plot mx,my Flip Cls Until Bereit2 = 1 ms = MilliSecs() cd = 1000+(( -1 )*1000) Repeat Text 400,1,"Spielvorbereitung...",1 Text 400,300,((cd - (MilliSecs()-ms))/1000),1,1 Flip Cls Until ms <= MilliSecs() - cd FlushKeys() ;#################################################################################################################### ;################################################### GAME ########################################################### ;#################################################################################################################### send_ms = MilliSecs() For i = 1 To p_anz x(i) = 100 y(i) = 100 Lebn(i) = 100 sch(i) = 0 Next Global ScrollX,ScrollY Global shoot_ms = MilliSecs() If Server = 1 Then ID = 1 Repeat mx = MouseX():my = MouseY() mHIT = MouseHit(1):mDown = MouseDown(1) If Server = 1 Then w(1) = ((-ATan2(mx-400,my-300)+450) Mod 360) If w(1) < 0 Then w(1) = 360 If w(1) > 360 Then w(1) = 0 If KeyDown(17) Then ScrollY = ScrollY- 2 If KeyDown(31) Then ScrollY = ScrollY+ 2 If KeyDown(30) Then ScrollX = ScrollX- 2 If KeyDown(32) Then ScrollX = ScrollX+ 2 If mDOWN And shoot_ms <= MilliSecs() - 1000 Then s.s = New s s\x = XPos(400+ScrollX) s\y = XPos(300+ScrollY) s\s = Sin(w(1)) s\c = Cos(w(1)) s\Leb = 5 s\ID = 1 sch(1) = 1 shoot_ms = MilliSecs() EndIf If send_ms <= MilliSecs() - 25 Then x(1) = xPos(400+ScrollX) y(1) = yPos(300+ScrollY) 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) WriteInt(stream,x(j)) WriteInt(stream,y(j)) WriteInt(stream,w(j)) WriteInt(stream,Lebn(j)) WriteInt(stream,sch(j)) EndIf Next SendUDPMsg(stream,IP(i),Port) EndIf Next For i = 1 To p_anz If acc(i) Then sch(i) = 0 Next send_ms = MilliSecs() EndIf If RecvUDPMsg(stream) byte = ReadByte(stream) Select byte Case 1 IDID = ReadInt(stream) x(IDID) = ReadInt(stream) y(IDID) = ReadInt(stream) w(IDID) = ReadInt(stream) sch_ = ReadInt(stream) If sch_ = 1 Then s.s = New s s\x = x(IDID) s\y = y(IDID) s\s = Sin(w(IDID)) s\c = Cos(w(IDID)) s\ID = IDID sch_ = 0 EndIf End Select EndIf For s.s = Each s For i = 1 To p_anz If acc(i) Then If s\ID <> i And RectsOverlap(s\x,s\y,1,1,x(i)-7.5,y(i)-7.5,15,15)Lebn(i)=Lebn(i)-s\Leb:sDel=1 EndIf Next Next ElseIf Server = 2 w(ID) = ((-ATan2(mx-400,my-300)+450) Mod 360) If w(ID) < 0 Then w(ID) = 360 If w(ID) > 360 Then w(ID) = 0 If KeyDown(17) Then ScrollY = ScrollY- 2 If KeyDown(31) Then ScrollY = ScrollY+ 2 If KeyDown(30) Then ScrollX = ScrollX- 2 If KeyDown(32) Then ScrollX = ScrollX+ 2 If mDOWN And shoot_ms <= MilliSecs() - 1000 Then s.s = New s s\x = XPos(400+ScrollX) s\y = XPos(300+ScrollY) s\s = Sin(w(ID)) s\c = Cos(w(ID)) s\ID = ID sch(ID) = 1 shoot_ms = MilliSecs() EndIf If RecvUDPMsg(stream) Then Byte = ReadByte(stream) Select byte Case 1 For i = 1 To p_anz IDID = ReadInt(stream) x(IDID) = ReadInt(stream) y(IDID) = ReadInt(stream) w(IDID) = ReadInt(stream) Lebn(IDID) = ReadInt(stream) sch_ = ReadInt(stream) If sch_ = 1 Then s.s = New s s\x = x(IDID) s\y = y(IDID) s\s = Sin(w(IDID)) s\c = Cos(w(IDID)) s\ID = IDID sch_ = 0 EndIf Next WriteByte(stream,1) WriteInt(stream,ID) WriteInt(stream,xPos(400+ScrollX)) WriteInt(stream,yPos(300+ScrollY)) WriteInt(stream,w(ID)) WriteInt(stream,sch(ID)) SendUDPMsg(stream,IP(1),Port) sch(ID) = 0 End Select EndIf EndIf Color 255,0,0 TileImage Back,-ScrollX,-ScrollY Color 100,100,100 For q=0 To 800 Step 20 Rect 0,q-ScrollY Mod 20,800,1 Rect q-ScrollX Mod 20,0,1,600 Next Color 255,255,0 For s.s = Each s s\x = s\x + s\c * 5 s\y = s\y + s\s * 5 Oval s\x-3-ScrollX,s\y-3-ScrollY,6,6 Next For i = 1 To p_anz If acc(i) Then If i <> ID DrawImage smile(w(i)/4),x(i)-ScrollX,y(i)-ScrollY DrawImage Kan(w(i)/4),x(i)-ScrollX,y(i)-ScrollY Color 0,0,0 Rect x(i)-ScrollX-15,y(i)-ScrollY-27,30,13 Rect x(i)-ScrollX-StringWidth(name(i))/2,y(i)-ScrollY-40,StringWidth(name(i)),14 Color 255,255,255 Text x(i)-ScrollX,y(i)-ScrollY-20,Lebn(i),1 Text x(i)-ScrollX,y(i)-ScrollY-40,name(i),1 Else DrawImage smile(w(i)/4),400,300 DrawImage Kan(w(i)/4),400,300 Color 0,0,0 Rect 385,273,30,13 Rect 400-StringWidth(name(i))/2,260,StringWidth(name(i)),14 Color 255,255,255 Text 400,273,Lebn(i),1 Text 400,260,name(i),1 EndIf EndIf Next Color 255,0,0:Oval mx-10,my-10,20,20,0:Plot mx,my 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$ If i > 14 chat_y = chat_y + 13 Balken_y = (chat_y/1.2)+350 EndIf 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$ chat_y = 28*13 Balken_y = (chat_y/1.2)+350 EndIf EndIf End Function Function XPos(xx) Return (ScrollX+xx)-ScrollX End Function Function YPos(yy) Return (ScrollY+yy)-ScrollY End Function Function SetHTMLButton(x,y,Text$,Pfad$) If RectsOverlap(MouseX(),MouseY(),1,1,x,y,StringWidth(Text$),StringHeight(Text$)) Then Color 10,150,140 If MouseHit(1) Then ExecFile(Pfad$) EndIf Else Color 220,140,30 EndIf Text x,y,Text Rect x,y+StringHeight(Text$)+3,StringWidth(Text$),1 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" Ich hoffe ihr könnt mir zumindest mit der schuss-frage helfen.... 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! |
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich schätze mal, wenn der client einen schuss abgiebt meldet der das zwar zum server, der server meldet es aber nicht weiter
Ich hab mir den code jetz allerdings nicht angesehn, aber nach deiner schilderung ist das warscheinlich THE SHARK |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group