Lanmenü proplem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

JanK

Betreff: Lanmenü proplem

BeitragSa, März 04, 2006 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich wollte ein Lanmenü Programmieren.
Nur leider funktioniert es nich so ganz Sad .
Fehler:
Also wenn ich erst den Clientmodus auf einem beliebigen PC starte und dann die IP des Servers eintrage(!der Server is noch net Online!) und ich dann erst den Server starte, dann passt alles. Doch wenn ich in der RICHTIGEN Reihenfolge mache gehts net Crying or Very sad
---------------------------------
Ich hoff ihr kapiert den Fehler^^
Hier der Code
Code: [AUSKLAPPEN]

;Neues Menü
;----------------------------------[-Haupteinstellungen-]-------------------------------
Global Sc_high = 768                                                                                                   ;|->Bildschirm höhe
Global Sc_breit = 1024                                                                                                ;|->Bildschirmbreite
GRAPHICS  Sc_breit,Sc_high,32,1                                                                                    ;|
Setbuffer Backbuffer()                                                                ;|
;---------------------------------------------------------------------------------------

;---------------------------------[-Variabeln-]-----------------------------------------
CONST NAMETYPE = 1                                                                                                         ;|->Die Constanten für den Nachrichten Code
Type Client
   Field IP,Normip
   Field Name$
End Type
Global Client.Client = New Client
Global Modus                                                                                                      ;|->Modus 0 = Host; Modus 1 = Client
Type Server
Field Name$
Field Normip$,IP
End Type
Global Server.Server = New Server
Dim Port(1)                                                                                                         ;|->Nr 0 = Server port; 1 = Client
Port(0) = 9000 :Port(1) = 8000
Global Netstream                                                                                                ;|->Der Stream der auch im Spiel verwendet wird
Global Hintergrund = Loadimage("Hintergrund.png")
Global Testvar
;--------------------------------------------------------------------------------------

;--------------------------------[-Modus auswahl-]------------------------------;|
Print "1 drücken, um ein Spiel zu hosten"                                       ;|
Print "2 drücken, um einem Spiel beizutreten"                                   ;|
Repeat                                                                          ;|
   If Keyhit(2) then Modus = 0 : Exit                                                                  ;|->Modus auf 1 setzen und schleife verlassen
   If Keyhit(3) Then Modus = 1 :Exit                                                                     ;|->Modus auf 2 und Schleife verlassen
Forever                                                                         ;|
;-------------------------------------------------------------------------------;|
Flushkeys
Select Modus
Case 0
;--------------[-Hauptschleife für 0 Modus-]-------------
Netstream = CreateUDPStream(Port(Modus))                         ;|Stream erstellen
Server\Name$ = Input("Bitte einen Nickname eingeben: ")   ;|Nickname eintragen
Takt=CreateTimer(50)
Repeat
Cls
Menuemalen()
Nachrichtenempfangen()
Listplayers()
Sendstatus()
Text 400,400,Rnd(2,200)
Flip
Waittimer(Takt)
Until Keyhit(1)
End
;--------------------------------------------------------
Case 1
;--------------[-Hauptschleife für 1 Modus-]-------------
Netstream = CreateUDPStream(Port(Modus))                         ;|Stream erstellen
Client\Name$ = Input("Bitte einen Nickname eingeben: ")   ;|Nickname eintragen
Server\Normip$ = Input("Bitte geben sie jetzt die Serverip ein: ")
Server\IP = IntegerIP(Server\Normip$)
Takt=CreateTimer(50)
Repeat
Cls
Menuemalen()
Nachrichtenempfangen()
Listplayers()
Sendstatus()
Flip
Waittimer(Takt)
Until Keyhit(1)
End
End SElect
;--------------------------------------------------------
;-----------------------[-Functionen-]------------------------
Function Menuemalen()
   Drawimage Hintergrund,0,0                                                        ;|Hintergrund malen
   Text 100,200,"Modus: "+ Modus
   Text 100,220,"Port: " + Port(Modus)                                                                              
End Function
;********************************
Function Nachrichtenempfangen()
Select Modus
   Case 0   
      Nachricht = RecvUDPMsg(Netstream)
      If Nachricht <> 0 then
         If Len(Client\Name$) = 0 then                       ;|->Wenn die Client Ip is nich 0
            N_Type = Readbyte(Netstream)
               Select N_Type
                  Case 1                                                                         ;|->Spieler name
                     Client\Name$ = Readstring$(Netstream)
                  Case 2
                     End
               End Select                  
         else
            Client\IP =UDPMSGIP (Netstream)
         End if
      End if
   Case 1
      Nachricht = RecvUDPMsg(Netstream)
            Text 40,40, Nachricht
         If Nachricht <> 0 then                                                                  
            N_Type = Readbyte(Netstream)
               Select N_Type
                  Case NAMETYPE                                                                         ;|->Spieler name
                     Server\Name$ = Readstring$(Netstream)
               End Select                  
         End if
End SElect
End Function
;********************************
Function Listplayers()
Select Modus
   Case 0
      Text 10,270,Server\Name$ + "-"
      text 10,330,Client\Name$ + "-"
   Case 1
      text 10,270,Server\Name$ + "-"
      Text 10,330,Client\Name$ + "-"
End Select
End Function
;********************************
Function Sendstatus() ;Function in der später alles übertragen wird z.B. Spieler Typ usw.
   Select Modus
      Case 0
         Writebyte (Netstream,NAMETYPE)
         Writestring(Netstream,Server\Name$)
         SendUDPMsg Netstream,Client\IP,Port(1)
      Case 1
         Writebyte (Netstream,NAMETYPE)
         Writestring(Netstream,Client\Name$)
         SendUDPMsg Netstream,Server\IP,Port(0)   
   End Select
End Function
;*********************************
Function IntegerIP(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
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de
 

JanK

BeitragSa, März 04, 2006 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ok habs scho Wink
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group