Einstieg Netzwerk

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Donald Agu

Betreff: Einstieg Netzwerk

BeitragSa, Feb 04, 2006 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, sorry, das war nicht der Thread, den ich gemeint hatte, aber dann muss ich ihn halt nochmal posten... Mad

Also gut, ich habe mir inzwischen Rob's Tutorial zum Netzwerk verinnerlicht und hab mich (jaja, ich weiß Rolling Eyes ) für DirectPlay entschieden.

Hierzu hab ich folgendes gecodet:
Code: [AUSKLAPPEN]

newgame = StartNetGame()
Select newgame
 Case 0
 Print "Keine Verbindung hergestellt."
 Case 1
 Print "Erfolgreich mit dem Netzwerk verbunden."
 Case 2
 Print "Ein neues Spiel wurde erstellt."
End Select


Graphics(640,480)
name$ = Input("Name: ")
playerID = CreateNetPlayer(name$)
Select playerID
 Case 0
 Print "Spieler konnte nicht erstellt werden."
 Default
 Print name$ + " hat die ID-Nr. " + playerID
End Select


While Not KeyHit(1)
 If RecvNetMsg()
 msgtype = NetMsgType()
  Select msgtype
  Case 100
  Print "Ein Spieler ist dem Spiel beigetreten."
  Case 101
  Print "Ein Spieler hat das Spiel verlassen."
  Case 102
  Print "Der Host hat das Spiel verlassen. Dieser Computer ist nun Host."
  Default
  Print "Nachricht zugeschickt von: " + NetMsgFrom()
  Print "an: " + NetMsgTo()
  Print "Nachricht: " + NetMsgData$()
  End Select
 EndIf
 message$ = "Kommt die Nachricht an?"
 SendNetMsg(Rand(1,99),playerID,playerID,0)
Wend


jetzt die heiß ersehnten Fragen:

1. Kann ich mir nicht selbst Nachrichten schicken? Wenn doch, warum funktioniert es dann hier nicht? Ich habe zwar die letzte Zeile der While-Schleife in Verdacht, aber das mündet schon ins zweite Problem:

2. Kann ich die Zeile 'playerID = CreateNetPlayer(name$)' so stehen lassen? Denn so wird doch nur die ID des zuletzt beigetretenen Spielers gespeichert, oder Muss ich das dann in eine Schleife einbauen, um dies zu beheben oder gibt es eine einfachere Lösung?

3. Wieso kommen für playerID so komische siebenstellige Werte raus und nicht Zahlen von 1-99? Denn diese sind doch eigentlich dazu gedacht, den Partner zu identifizieren, oder ahb ich das jetzt schon wieder falsch verstanden? Surprised

4. Irgend einer von euch hat doch bestimmt schon mal ein ganz, ganz simples Chatprogramm für DirectPlay gebastelt. Könntet ihr mir bitte möglicherweise so eins schicken? Wär super! Very Happy
Ich hab zwar nicht vor, eine Chatvorrichtung zu programmieren, aber das wäre mir sehr hilfreich, um hinter das Rätsel Netzwerk zu kommen...

Vielen Dank im Voraus.

AGU

d-bug

BeitragSa, Feb 04, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
dann hast du wohl vergessen zu posten Wink
greetz und ich trash den anderen mal
 

Donald Agu

BeitragSo, Feb 05, 2006 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
nichts für ungut, aber meine Fragen sind damit nicht beantwortet Wink

D2006

Administrator

BeitragSo, Feb 05, 2006 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du wirst nichts anderes erwarten können als das gleiche, was auch in Robs Tut steht:

Von der Benutzung von DirectPlay wird abgeraten.

Nimm TCP oder UDP.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Donald Agu

BeitragMo, Feb 06, 2006 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe Rob's Tutorial ja auch schon die 4 Fragen gestellt, aber ich konnte die Lösungen nicht daraus ableiten, da hab ich mir gedacht, es gibt bestimmt viele Leute, die auf meine Fragen banalster Art eine Antwort geben könnten... sonst hätt ich ja auch net gefragt Wink
 

Donald Agu

BeitragFr, Feb 10, 2006 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
HILFE! Crying or Very sad
 

$tankY

BeitragMo, Feb 13, 2006 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hab den quellcode net gelesen, dafür die fragen^^
zu 1. theoretisch kannste dir selber sachen schicken
zu 3. man kann eine unbegrenzte menge an spielern "einladen" (soweit ich mich errinnere)
 

Donald Agu

BeitragSa, Feb 18, 2006 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist zwar schon schön, dass immerhin eineinhalb Fragen beantwortet wurden, aber noch schöner wär's natürlich, ich bekäme auf alle eine Antwort Smile

Sind die anderen drei nicht verständlich genug formuliert oder zu banal oder was ist mit denen??

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 19, 2006 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Donald Agu, hier mal was zu deiner Frage Nr. 4. Aber warum muß es den unbedingt DP sein?

Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

nettyp%=0
netfrm%=0
netabc$=""
td#=0
tp#=0

Type pos
 Field xp#
 Field yp#
 Field xg#
 Field yg#
 Field id%
 Field nm$
End Type

Print "1-Host"
Print "2-Client"
wahl=Input()
If wahl=1 Then spiel=HostNetGame("IDKFA")
If wahl=2 Then spiel=JoinNetGame("IDKFA","127.0.0.1")

sp.pos=New pos
sp\xp=20
sp\yp=20
sp\xg=0
sp\yg=0
sp\nm=Input("Spielername: ")
sp\id=CreateNetPlayer(sp\nm)

td=1
tp=MilliSecs()




;Hauptschleife
While Not KeyHit(1)

 For sp.pos=Each pos
  sp\xg=sp\xg/((0.0002*td)+1)
  sp\yg=sp\yg/((0.0002*td)+1)
  sp\xp=sp\xp+sp\xg*td
  sp\yp=sp\yp+sp\yg*td
  If sp\xp<000 Then sp\xp=sp\xp+400
  If sp\xp>400 Then sp\xp=sp\xp-400
  If sp\yp<000 Then sp\yp=sp\yp+400
  If sp\yp>400 Then sp\yp=sp\yp-400
  Rect sp\xp-4,sp\yp-4,9,9,1
  Text sp\xp+6,sp\yp-6,sp\nm
 Next

 ;Nachricht empfangen
 If RecvNetMsg()=1 Then
  nettyp=NetMsgType()
  netfrm=NetMsgFrom()
  ;NachrichtTyp Neu
  If nettyp=100 Then
   sp.pos=New pos
   sp\xp=20
   sp\yp=20
   sp\xg=0
   sp\yg=0
   sp\id=netfrm
   sp\nm=NetPlayerName$(netfrm)
  End If
  ;NachrichtTyp Weg
  If nettyp=101 Then
   For sp.pos=Each pos
    If netfrm=sp\id Then Delete sp
   Next
  End If
  ;NachrichtTyp Info
  If nettyp=1 Then
   For sp.pos=Each pos
    If netfrm=sp\id Then
     sp\xp=NetMsgData()
     sp\yp=NetMsgData()
     sp\xg=NetMsgData()
     sp\yg=NetMsgData()
    End If
   Next
  End If
 Else
  ;Zeitschuld
  Delay 10
 EndIf

 sp.pos=First pos
 If KeyDown(203) Then sp\xg=sp\xg-0.001*td
 If KeyDown(205) Then sp\xg=sp\xg+0.001*td
 If KeyDown(200) Then sp\yg=sp\yg-0.001*td
 If KeyDown(208) Then sp\yg=sp\yg+0.001*td

 td=MilliSecs()-tp
 tp=MilliSecs()

 ;Alle 200ms
 ;Info senden
 If tp>ts Then
  SendNetMsg 1,sp\xp,sp\id,0
  SendNetMsg 2,sp\yp,sp\id,0
  SendNetMsg 3,sp\xg,sp\id,0
  SendNetMsg 4,sp\yg,sp\id,0
  ts=tp+200
 End If

 If KeyHit(57) Then w=1-w
 If w=1 Then Delay 80

 Flip
 Cls
Wend
StopNetGame
End

Goodjee

BeitragSo, Feb 19, 2006 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
dein fehler istm das du einen parameter beim schicken vergessen hast, nämlich die nachricht...du verschickst also die nummer von dir an die nummer 0
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group