Chat Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Mathe

Betreff: Chat Problem

BeitragSo, Okt 05, 2008 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich hab mich gestern den Ganzen Tag am Datenaustausch im Netz gespielt. Jetzt hab ich leider ein Problem der Client empfängt keine Nachrichten...... ich stell man den kompletten Code hierein...

hab noch ein weiteres Probleme, wenn das Dim Feld Inhalt(15) komplett voll ist sollten alle Werte wieder auf 0 zurück gesetzt werden das Funktioniert leider nicht?

Ich hoffe dass ihr mir helfen könnt

mfg.

Code: [AUSKLAPPEN]

AppTitle "Server - Client [ProX]"
Graphics 400,300,32,2
SetBuffer BackBuffer()
Global timer = CreateTimer(30)

; Variablen
Global XMaus,YMaus, Aktion, NetGame_Started, Name$, IP$, Host_Modus%, Server$, Nachricht$,I%, Darf_S%,Chat_Player
Dim Inhalt$(15)

; Fonts


Login()

; MainSchleife
Repeat
   Cls
   WaitTimer(timer)
   ; Menue Zeichnen
   Menu_Z()
   Menu_Aktivieren()
   Aktion()
   Header_a()
   Flip
Until KeyHit(1)


Function Menu_Z()
   Host_NetChat$ = "Chat Hosten"
   Join_NetChat$ = "Chat Beitreten"
   End_Server_Client$ = "Chat Beenden"
   
   ; Text_Schreiben_Umranden
   Color 255,255,255
   Text 400/2 - StringWidth(Host_NetChat)/2, 100, Host_NetChat
   Color 63,218,145
   Rect 400/2 - StringWidth(Join_NetChat)/2-5, 100 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0
   
   Color 255,255,255
   Text 400/2 - StringWidth(Join_NetChat)/2, 150, Join_NetChat
   Color 63,218,145
   Rect 400/2 - StringWidth(Join_NetChat)/2-5, 150 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0

   Color 255,255,255
   Text 400/2 - StringWidth(End_Server_Client$)/2, 200, End_Server_Client
   Color 63,218,145
   Rect 400/2 - StringWidth(Join_NetChat)/2-5, 200 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0

End Function

Function Menu_Aktivieren()
   Join_NetChat$ = "Chat Beitreten"
   XMaus = MouseX()
   YMaus = MouseY()
   
   ; Umranden_Farbe_Ändern
   If XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 100 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 100 - StringHeight(Join_NetChat) Then
      Color 231,118,50
      Rect 400/2 - StringWidth(Join_NetChat)/2-5, 100 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0
   EndIf
   
   If XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 150 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 150 - StringHeight(Join_NetChat) Then
      Color 231,118,50
      Rect 400/2 - StringWidth(Join_NetChat)/2-5, 150 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0
   EndIf
   
   If XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 200 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 200 - StringHeight(Join_NetChat) Then
      Color 231,118,50
      Rect 400/2 - StringWidth(Join_NetChat)/2-5, 200 - StringHeight(Join_NetChat), StringWidth(Join_NetChat)+10, 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat),0
   EndIf
   
   ; Drauf_Klicken
   If MouseDown(1) And XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 100 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 100 - StringHeight(Join_NetChat) Then
      Aktion = 1
   EndIf
   
   If MouseDown(1) And XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 150 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 150 - StringHeight(Join_NetChat) Then
      Aktion = 2
   EndIf
   
   If MouseDown(1) And XMaus <= 400/2 - StringWidth(Join_NetChat)/2-5 + StringWidth(Join_NetChat)+10 And XMaus >= 400/2 - StringWidth(Join_NetChat)/2-5 And YMaus <= 200 - StringHeight(Join_NetChat) + 2*StringHeight(Join_NetChat) + StringHeight(Join_NetChat) And YMaus >= 200 - StringHeight(Join_NetChat) Then
      Aktion = 3
   EndIf
   
End Function

Function Aktion()

   If Aktion = 1 And NetGame_Started = 0 Then
      Chat_Nr = HostNetGame(Name$)
      Chat_Player = CreateNetPlayer(Name$)
      Host_Modus = 1
         Select Chat_Nr
            Case 1
               Text 0,0, "NetzwerkChat konnte nicht gestartet werden"
            Case 2
               Text 0,0, "NetzwerkChat wurde gestartet"
         End Select
      Flip
      Delay 500
      NetGame_Started = 1
      Chat()
   EndIf
   
   If Aktion = 2 Then
      IP_Server_Q()
      Join_Server()         
      Chat()
   EndIf
   
   If Aktion = 3 Then End
   
   Aktion = 0
   Return
      
End Function

Function Login()
   Name$ = Input("ChatName/ServerName: ")
End Function

Function IP_Server_Q()
   If Host_Modus = 0 Then
      Locate 0,0
      Server$ = Input("ServerName: ")
      IP$ = Input("IP-Adresse: ")
   EndIf
   
   If Host_Modus = 1 Then
      Server$ = Name$
      IP$ = "127.0.0.1"
   EndIf
   
End Function

Function Join_Server()
   If Hostmodus = 0 Then
      Join_Nr = JoinNetGame(Server,IP)
      Select Join_Nr
         Case 0
            Text 0,0, "NetzwerkChat konnte nicht beigetreten werden"
         Case 1
            Text 0,0, "NetzwerkChat beigetreten"
      End Select
      Flip
      Delay 500
      Cls
   EndIf   
End Function

Function Chat()
   Repeat
         Cls
         WaitTimer(timer)
         
         Nachricht()
         
         ; Der Chat / Nachricht Schicken
         If KeyHit(28) Then
            Inhalt(I) = Name$ + " --> " + Nachricht : I = I + 1
            SendNetMsg 1, Nachricht, Chat_Player, 0 : Nachricht = ""
         EndIf
         
            While RecvNetMsg() = 1
               Select NetMsgType()
                  Case 100
                     Inhalt(I) = "ChatTeilnehmer " + NetPlayerName$(NetMsgFrom()) + " beigetreten" : I = I + 1
                  Case 101
                     Inhalt(I) = "Ein ChatTeilnehmer hat den Chat verlassen" : I = I + 1
                  Case 102
                     Inhalt(I) = "Host ausgetreten" :   I = I + 1
                  Case 200
                     Inhalt(I) = "Verbindung abgebrochen" :   I = I + 1
                  Default
                     Inhalt(I) = NetPlayerName$(NetMsgFrom()) + " --> " + NetMsgData$() : I = I + 1
               End Select
            Wend
            
         Text_Schreiben()
         
      Flip
   Until KeyHit(1)
End Function

Function Nachricht()
   Tasten_D = GetKey()
      If Darf_S = 0 And Tasten_D <= 256 And Tasten_D >= 32 Then
         Nachricht = Nachricht + Chr(Tasten_D)
      EndIf
      
      If Len(Nachricht) >= 40 Then Darf_S = 1
      If Len(Nachricht) <= 40 Then Darf_S = 0
      
   Color 255,255,255
   Rect 0,270,400,30,0
   Color 248,33,87
   Text 0,280, Nachricht
   
   Return
   
End Function

Function Text_Schreiben()
   For Ix = 0 To 15
      If Inhalt(Ix) > 0 Or Inhalt(Ix) > "" Then Text 0, Ix*15, Inhalt(Ix)
   Next
   If I = 15 Then
      Inhalt(I) = "                                                                                   "
      I = 0
   EndIf
End Function

Function Header_a()
   AppTitle "Server_Client [ProX] --> " + Name
End Function
Windoof nein DANKE => ArchLinux Wink
 

Tritium

BeitragSo, Okt 05, 2008 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu dem Array-Problem:

Code: [AUSKLAPPEN]
If I = 15 Then
      Inhalt(I) = "                                                                                   "
      I = 0
   EndIf


Das kann so nicht funktionieren. Zum einen setzt Du mit Inhalt(I) = " " nur den 15. Eintrag auf leer, da I in dem Moment immer 15 ist. Lass I in einer Schleife durchlaufen, damit es sich ändert.

Übrigens wird Dein Array-Eintrag im Moment nicht leer, sondern voller Leerzeichen. Schreib "", und nicht " ", um den Eintrag vollständig zu leeren.
 

Mathe

BeitragSo, Okt 05, 2008 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmmmm..... okey danke das hab ich ganz übersehen... nur das die Nachrichten nicht ankommen das versteh ich nicht

aber trotzdem schon mal danke

mfg.
Windoof nein DANKE => ArchLinux Wink
 

Mathe

BeitragSa, Okt 11, 2008 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
hat keiner eine Idee an was es liegen kann Question

könnte es sein das Nachrichten die Verschickt werden nicht in eine Function weggeschickt werden können Question

Hoffe auf Hilfe

mfg.
Matthias
Windoof nein DANKE => ArchLinux Wink
 

Mathe

BeitragSo, Okt 12, 2008 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe jetzt meinen Fehler gefunden...

als ich eine NetzwerkChat beitreten wollte hab ich vergessen einen NetPlayer zu generiere ....

mfg.
Matthias
Windoof nein DANKE => ArchLinux Wink
 

Gast

BeitragSo, Okt 12, 2008 18:51
Antworten mit Zitat
Achja, es ist hier nicht wirklich gern gesehn, wenn man einen TripplePost macht...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group