Entwickler-Ecke
Internet / Netzwerk - Auf Battlefiel 1942 Server connecten
superchatti - Fr 07.11.03 23:19
Titel: Auf Battlefiel 1942 Server connecten
Ich würde gerne den Ping von einem BF server ermitteln und Wenn man connect sagt darauf connecten wie mache ich sowas?
MrSaint - Sa 08.11.03 14:40
ping dürfte ja kein problem sein... die IP des servers wirst du ja kennen.... schwieriger wirds beim connecten... da brauchst du das protokoll, das BF da verwednet. und wenn das net öffentlich is, gehts nur durch reversed engineering... das wird aber heftig, sag ich dir gleich :?
MrSaint
superchatti - Sa 08.11.03 14:48
wie ermittle ich den Ping denn?
MrSaint - Sa 08.11.03 14:53
guck dir mal die Indy Kompos an, da is glaub was dabei.. oder die ICS Kompos (
http://www.overbyte.be )
MrSaint
Currywurst - Sa 08.11.03 18:37
zum joinen natürlich einfach die bf1942.exe mit parameter starten, zb. BF1942.exe +joinServer 217.160.178.129:14567 +restart 1
aber weisst du wie man die server liste vom gamespymaster bekommt??? das scheint wohl nich öffentlich zu sein, irgendein key muss da in der kommunikation mit dem gamespy master ausgetauscht werden, weiss zufällig jemand mehr dazu?
superchatti - Di 11.11.03 18:18
stimmen diese angegeben Parameter?
Currywurst - Di 11.11.03 18:32
was meinst du mit stimmen?, ist halt ein beispiel, 217.160.178.129 ist die ip und 14567 der port des servers, hab ich beides auch so getestet und ging
superchatti - Di 11.11.03 19:45
weißt du denn auch wie ich den Ping ermittle?
Currywurst - Mi 12.11.03 07:56
zum theme pingen solltest du eigentlich in der (google) suche reichlich finden, mein tipp, nimm indy und schau in den demos
http://www.indyproject.org/download/Indy9.html
aber woher bekommst du denn die server ip?, bekommste eine liste der ganzen server?, wenn ja woher??, wie gesagt, bin sehr interessiert daran wie man an eine battlefield server liste kommt :-)
lemming - Mi 12.11.03 09:47
superchatti. Das was du pingen meinst glaube ich ist nicht das was du wirklich willst. Du willst doch schauen ob der BF Server auf einem rechner irgendwo im Internet gerade läuft und am besten noch ob gerade ein Platz darauf frei ist.
Das kennen wir ja alle von half-Life. Bei Half-Life war es sehr einfach, da man RCON hatte. Das Urgestein aus Quake 1 ff..
Bei Battelefield verhält es sich ähnlich. Da solltest du mal nach einem SDK für Modder ausschau halten. Darin wird meistens erklärt wie man auch die Console des Servers fernsteuert oder wie z.B. GameSpy den Status abfrägt.
Ich kann dir gern dabei helfen, die Infos musst allerdings du auftreiben. Dafür hab ich keine Zeit.
superchatti - Mi 12.11.03 18:54
sanke das ihr mir bis jetzt geholfen habt.
Also is ja schön und gut mit dem C# Code...
Aber war bringt er mir in C#?
Danke für die ganzen Antworten
Currywurst - Do 13.11.03 08:05
| superchatti hat folgendes geschrieben: |
| Aber war bringt er mir in C#? |
sorry für den spruch, aber man könnte es mit denken versuchen! :shock:
ich hab genau wie du keine ahnung von c#, mit indy und udp hab ich auch nie wirklich was gemacht, aber nach harten 3 minuten habe ich erkannt das man lediglich ein udp paket mit dem inhalt '\\info\\' an den server (seinem query port) schicken muss, und dann kommen die daten zurück...
das wesentliche in stolzen zwei zeilen:
Delphi-Quelltext
1: 2: 3:
| IdUDPClient1.Send('\\info\\'); ShowMessage(IdUDPClient1.ReceiveString(-1)); |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt
superchatti - Do 13.11.03 16:43
also...
Ich habe das gemacht, aber irgendwie hängt sich dann das ganze Programm weg!
Obi-Wan - Sa 22.04.06 16:57
Sorry das ich den Thread ausgrabe aber ich fänd es unnütz einen neuen dafür aufzumachen. Ich habe das hier so gemacht wie beschrieben, allerdings mit Battlefield 2 und es funzt auch wunderbar, wenn man nur die serverstats haben will...
Denn der Server scheint mehrere UDP Packets zu schicken (max 1400 bytes wenn ich mich nicht irre). Wenn ich das hier mache:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| udp.Active := true; udp.Host := '81.3.59.98'; udp.Port := 31531; udp.Send('\status\'); udp.ReceiveBuffer() status := udp.ReceiveString(1000); udp.Active := false; |
bekomme ich zwar einen string zurück mit den serverinfos, jedoch sind hinten dran noch die spielerinfos und ca. bei spieler 20/21 sind die abgeschnitten. LAnge rede kurzer sinn, wie bekomme ich es bei dem tidudpclient hin das der die packets hintereinander ausliest und zusammenfügt? Bin jetzt schon seit 2 stunden am suchen (delphi-forum, delphi-source, delphi-praxis, google, ...) aber ich finde einfach nichts.
Wäre schön wenn da einer was wüßte, stehe echt auf dem schlauch :)
MfG
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!