Wiederholtes Senden von Nachrichten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ZaP

Betreff: Wiederholtes Senden von Nachrichten

BeitragSa, Jan 20, 2007 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho!

Ich habe ein kleines Testprogramm gemacht, was eine Netzwerkverbindung zwischen Host und Client herstellen soll.
Das ganze läuft über DirectPlay und dem WHO IS? prinzip (Wenn jemand sich den Spiel anschliesst, sendet er "WHOIS" und bekommt von allen auf dem Server "IMHERE" zurückgesendet, so bekomme ich leicht die IDs ^^.)

Funktioniert alles, nur dass die WHOIS Nachricht immerwieder versendet wird, und ich kann mir nicht erklären wieso...

Hier der Code, man kann das Programm testweise 2mal starten:

(Die variable MPGS heißt ausgeschrieben "MultiPlayerGameStarted")

Code: [AUSKLAPPEN]

Graphics 320,200,16
SetBuffer = BackBuffer()

MyID=Rnd(10000,99999)
CurYText = 0
MPGS = 0
MyFont = LoadFont("Arial", 12)
NPLAYERS = 0

While Not KeyDown(1)
   
   ;Flip
   
   If CurYText > 15*12
      CurYText = 0
      FreeFont(MyFont)
      MyFont = LoadFont("Arial", 12)
   EndIf
   
   If KeyDown(36)
      If JoinNetGame("test","localhost") = 1
         MPGS = 1
         CreateNetPlayer("client" + MyID)
         NPLAYERS = NPLAYER+1
         SendNetMsg(100,"_WHOIS",MyID,0,1)
         SetFont MyFont
         Text 0,CurYText,"NetAktivity: game joined, sending WHOIS..."
         CurYText = CurYText + 12
      EndIf
   EndIf
   
   If KeyDown(35)
      If HostNetGame("test") = 2
         MPGS = 1
         CreateNetPlayer("host")
         NPLAYERS = NPLAYER+1
         SetFont MyFont
         Text 0,CurYText,"NetAktivity: game hosted."
         CurYText = CurYText + 12
      EndIf
   EndIf
   
   If KeyDown(47)
      SetFont MyFont
      Text 0,CurYText,"Debug: MPlayerGameStarted = " + MPGS
      CurYText = CurYText + 12
   EndIf
   
If MPGS <> 0

   If RecvNetMsg() Then
      msgFrom = NetMsgFrom()
      msgFromName$ = NetPlayerName(msgFrom)
      If NetMsgType() = 100
         CreateNetPlayer(msgFromName$)
         NPLAYERS = NPLAYER+1
         SendNetMsg(Rnd(1,99),"_IMHERE",MyID,msgFrom,1)
         SetFont MyFont
         Text 0,CurYText,"NetAktivity: " + msgFromName$ + " joined."
         CurYText = CurYText + 12
      EndIf
      If NetMsgData$() = "_IMHERE"
         CreateNetPlayer(msgFromName$)
         NPLAYERS = NPLAYER+1
         SetFont MyFont
         Text 0,CurYText,"NetAktivity: A player has been detected."
         CurYText = CurYText + 12
      EndIf
   EndIf

EndIf
   
Wend
StopNetGame()
End
Starfare: Worklog, Website (download)

Smokie

BeitragSa, Jan 20, 2007 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
änder keydown(36) ma zu keyhit(36) um, dann sollte es gehen.

Grüße
SMokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

ZaP

BeitragSo, Jan 21, 2007 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das Problem besteht weiterhin..
Starfare: Worklog, Website (download)

ZaP

BeitragDi, Jan 23, 2007 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß denn niemand eine Antwort?
Starfare: Worklog, Website (download)
 

Dreamora

BeitragDi, Jan 23, 2007 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Doppelposting = trash, das hier ist eine ausnahme

DirectPlay hat seine Maken und ist für ein Spiel ohnehin nicht zu gebrauchen. Es ist von daher kaum jemand hier der dir mit diesem recht nutzlosen Teil von Blitz helfen kann fürchte ich.

Nutz GNet oder sonst etwas, was UDP nutzt. Kannst auch KNetLib nehmen (suche im newsboard)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ZaP

BeitragDi, Jan 23, 2007 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
mehr wollte ich nicht wissen =), danke.
Starfare: Worklog, Website (download)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group