Brauche Hilfe mit Direct Play (Internet)
Übersicht

![]() |
ApprauuuuBetreff: Brauche Hilfe mit Direct Play (Internet) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich wollte in mein Spiel Einen Onlinemodus über Direct Play einbauen.... Aber irgendwie will das nicht alles nicht so ganz funktionieren.... Hier ist der Link: http://home.arcor.de/nein2/weltraumspiel.exe Der Link enthält eine exe-Datei der letzten Spielversion (somit auch das komplette Spiel) und den Code, wo ich versucht habe das Spiel internetkompatibel zu bekommen, was aber nicht ganz gelungen ist.... (die Datei mit dem Code heißt internet.bb) Ich hoffe einer kann die Übersicht bei dem Code finden und mir zur Hilfe eilen.... PS: Die Spieler könenn connecten, aber irgendwie klappt das mit dem Nachrichten empfangen/senden nicht.... (er erkennt aber, wenn der andere Spieler raus geht...) |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
Jaramia |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DirectPlay ist generell mist. Nimm für sowas lieber UDP | ||
alu.art-FX.org |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch eine schöne Antwort ![]() Ich habs mir gerade mal gesaugt (nimm wenigstens die Exe raus um den Download zu verkleinern), aber ohne eine größere Suchaktion werd ich wohl die Zeilen zum empfangen und senden einer Nachricht nicht finden können. Also bitte rauskopieren und hier ins Forum stellen. So werden sich auch sicher mehr Leute um Dein Problem bemühen und Du weißt ja: Viele Augen sehen mehr als zwei ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst ja die Suchfunktion benutzen ![]() Aber da ich ja will, dass mir einer hilft werde ich es euch mal so einfach wie möglich acmhen und cshreibe alles raus.... (habe nur den ganzen code zum DL gestellt, da es vileleicht irgendwie im Zusammenhang nen Fehler geben könnte oder so was ![]() Hier ersdt mal das erstellen einer Verbindung zum Gegenspieler (das ist ein 2-Spieler-spiel): (hab das unwichtige rausgestrichen, was man nicht für den internetmodus wissen muss, damit man schneller erkennt was sache ist...): Code: [AUSKLAPPEN] Function internetmenü()
Repeat Cls Text 400, 300, "(1) Spiel erstellen" Text 400, 400, "(2) Einem erstellten Spiel beitreten" If KeyHit(1) Then End If KeyHit(2) Then online=1 multiplayer = 1 Exit EndIf If KeyHit(3) Then multiplayer = 1 online=2 Exit EndIf Delay 100 Flip Until KeyHit(1) Cls If online=1 netgame=HostNetGame("LOL³-Fighters") If netgame=2 myid=CreateNetPlayer("host") Repeat Cls Text 50, 50, "warten...." Flip joined=RecvNetMsg() If KeyHit(1) StopNetGame online=0 Exit EndIf If joined=True Then Exit Forever Else Color 255,255,255 Text 3, 310, "Das Spiel konnte nicht erstellt werden." Color 0,0,0 WaitKey FlushKeys online=0 EndIf EndIf If online=2 Color 255,255,255 HostIP$=Input("IP des Hosts: ") Color 0,0,0 netgame=JoinNetGame ("LOL³-Fighters",HostIP$) If netgame=1 myid=CreateNetPlayer("joiner") Else SetBuffer FrontBuffer() Color 255,255,255 Text 3, 310, "Das Spiel konnte nicht erstellt werden." Color 0,0,0 WaitKey FlushKeys online=0 EndIf EndIf Flip multiplayer() End Function Es kann sein, dass es ein wernig umständlich geproggt ist, aber das kann ich ändern, wenn es mal funzt... Hier jetzt, wo er alles empfängt (steht am anfang der function multiplayer und multiplayer ist die function, wo das komplette spiel abläuft...) Code: [AUSKLAPPEN] Function internet_nachrichtenempfang()
If online>0 nachricht=RecvNetMsg() If nachricht=1 Then typ=NetMsgType() Select typ Case 2 ; Hauptschiff y y_koordinate = NetMsgData() Case 3 ; Schuss feuer schiessen = NetMsgData() Case 4 ; Schuss y schuss = First schuss schuss\y=NetMsgData() Case 5 ; Schiff bauen bauknopf=NetMsgData() Case 6 ; Schiff y schiff_1 = First raumschiffe schiff_1\y = NetMsgData() Case 7 ; Hauptschiff y 2 y_koordinate_2 = NetMsgData() Case 8 ; Schuss feuer 2 schiessen_2 = NetMsgData() Case 9 ; Schuss y 2 schuss_2 = First schuss_2 schuss_2\y = NetMsgData() Case 10 ; Schiff bauen 2 bauknopf_2 = NetMsgData() Case 11 ; Schiff y 2 schiff_2 = First raumschiffe_2 schiff_2\y = NetMsgData() Case 101 StopNetGame Print "Ihr Gegner hat das Spiel verlassen." Delay 1000 End End Select EndIf EndIf FlushKeys End Function Und hier ist einfach mal ein Fall, wo was gesendet werden muss: Code: [AUSKLAPPEN] Function bewegung()
If multiplayer = 1 Or singleplayer = 1 Then If online <> 2 Then unten = KeyDown(31) oben = KeyDown(17) EndIf EndIf If oben = True Then y_koordinate = y_koordinate - 5 If online=1 Then SendNetMsg 2, y_koordinate, myid, 0, 0 EndIf If unten = True Then y_koordinate = y_koordinate + 5 If online=1 Then SendNetMsg 2, y_koordinate, myid, 0, 0 EndIf DrawImage held, x_koordinate, y_koordinate End Function Ich weiß, dass das bier wieder schlecht gecodet ist und ich werde es auch ändern, dass der die Position bei jedem Durchlauf schickt, aber das änder ich auch erst mal, wenn es mal funktionieren will.... Zu guter letzt noch die einiegermaßen unnötig zu zeigende funvtion multiplayer, nur um zu zeigen, dass das Nachrichten empfangen am Start steht.... Code: [AUSKLAPPEN] Function multiplayer()
Repeat Cls If online > 0 Then internet_nachrichtenempfang() bewegung() bewegung2() aussenwaende() aussenwaende2() schüsse() schüsse_fliegen schüsse_fliegen2() schüsse2() zielsuchschuss_bewegung() zielsuchschuss_bewegung_2() lebensanzeige_spieler1() lebensanzeige_spieler2() geld2() geld() raumschiffe_fliegen2() türme() türme_2() raumschiffe_bauen() raumschiffe_fliegen() raumschiffe_bauen2() kollission() update_explosion() update_explosion_2() Flip If KeyHit(1) Then End Until KeyHit(1) End Function Ich hoffe mir kann jemand helfen ![]() |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puh, eine ganze Menge Code ![]() Bin mir nicht sicher ob solche Sonderzeichen hier funzen:Code: [AUSKLAPPEN] ...HostNetGame("LOL³... Mehr kann ich des Chaos nicht ersehen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmm....
Schade... Ist halt nen einiegermaßen fast fertiges Spiel..... ![]() Aber connecten kann der ja, weshalb meiner Meinung nach die Sopnderzeichen funktionieren sollten, nur der hat Probleme beim Senden und empfangen.... Oder kann der Spielname auch das beinträchigen.... Mal ne Frage bei Rande: (oder auch 2 ![]() Hat Cs2d einen Server oder gibt es einen Befehl, dass der alle Spiele anzeigt ?? Wenn ja welchen?? 2.) Bei deinem Spiel Bastard kann ja die Score ins Internet geschickt werdenb, sodass die auf die Highscore deiner Seite kommt.... Könntest du auch mal nen kleines Überblick geben, wie das funktioniert ?? Würde so was ähnliches gerne bei meinem Spiel machen, da wenn der Onlinemodus funt, die Stats (Siege und Niederlagen...) auf dem Rechner gespeichert werden sollen und dann nach jedem Onlinespiel an den Server geschickt werden sollen, sodass es ne Highscore der besten Spieler gibt.... Ich finde nämlich, dass das ne gute alternative zu nem Spielserver ist, da der einfach zu teuetr für mich wäre.... ![]() (ist das teilweise mit my SQL gemacht??) |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist diese Funktion:Code: [AUSKLAPPEN] Function ShareScore(url$,script$,par$,port=80)
Ist von BruZard, soweit ich das noch im Kopf habe (Bannt mich wenn ich falsch liege is_online=OpenTCPStream(url$,port) If is_online req$=script$+par$ ; Request an das Serverscript schicken WriteLine is_online,"GET /"+req$+" HTTP/1.1" WriteLine is_online,"Host: "+url$ WriteLine is_online,"User-Agent: score" WriteLine is_online,"Accept: */*" WriteLine is_online,"" CloseTCPStream is_online Return 1 Else Return 0 EndIf End Function ![]() Auf dem Server benötigst Du noch folgendes php-Script:Zitat: <?
Viel Spaß damit $newname=$HTTP_GET_VARS["user"]; $newpoint=$HTTP_GET_VARS["score"]; $newname.="\n"; $newpoint.="\n"; $name=array(); $point=array(); $tempp=0; settype($newpoint,"integer"); settype($tempp,"integer"); $count=0; $file=fopen("highscores.txt","r"); while ($count<999) { $tempn=fgets($file); $tempp=fgets($file); if ($tempp==0) { $count=999; } else { array_push($name,$tempn); array_push($point,$tempp); $count++; } } fclose($file); array_push($name,$newname); array_push($point,$newpoint); $count=count($name); $count--; $tempcount=$count; $writecount=count($name); while ($tempcount>0) { if ($point[$count]>$point[($count-1)]) { $temp=$point[$count-1]; $point[$count-1]=$point[$count]; $point[$count]=$temp; $temp=$name[$count-1]; $name[$count-1]=$name[$count]; $name[$count]=$temp; $count--; } $tempcount=$tempcount-1; } $tempcount=$count; $count=0; $file=fopen("highscores.txt","w+"); while ($count<$writecount) { if ($count==$tempcount) { $point[$count].="\n"; } fputs($file,$name[$count]); fputs($file,$point[$count]); $count++; } fclose($file); ?> ![]() Edit: Ganz vergessen, den Source von Bastard kannst Du downloaden. Das arbeitet auch mit DirectPlay ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh danke sehr !
Den Php-Code werde ich dann ein wenig meinen Ansprüchen nach umschreiben ![]() Das mit Direct Play ist einfach das Problem, dass ich es verstehe, aber sich in meienm Code ein fehler eingeschlichen hat.... The Yeti hat auch sein Spiel mit Direct Play (Er will es aber abschaffen...) und er konnte auch nicht helfen.... Vielleicht sollte ich es auch einfach mit UDP versuchen, da ich dafür auch ein ausreichendes Tut. gefunden hab und vielleicht schaffe ich das ohne Fehler, der mir verborgen bleiben will..... (UDP ist meiens Wissens nach eh VIEL besser...) |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jup, UDP hat nur 8 Byte Header. Wie groß der Header von DirectPlay ist, weiß ich nicht auswendig (gibt auch glaube ich verschiedene Größen, je nachdem ob als wichtig gesendet oder nicht), er ist aber auf alle Fälle größer. Soviel hab ich noch im Kopf ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
The Yeti |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verdammt! In meinen Code passt UDP leider nicht (müsste zu viel ändern, Bomberman ist eh nur´n Übungsgame gewesen ^^).
Aber für dich, Apprauuuu ist das so ziemlich perfekt! Und ich finde es nicht viel schwerer als DP! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group