Americas Army Server anpingen

  • VB6

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Kröger.

    Americas Army Server anpingen

    Hallo alle , ich bin schon am verzweifeln , wie kann ich Daten von Americas Army Server ablesen ? z.b. Wie viel Players darauf sind usw....

    Ich weiß nur das es mit WinSock klappen würde aber ich hab keine Ahnung wie ich das anstellen soll

    Bitte hiermit um Hilfe , ;(

    Wäre für jede Hilfe sehr dankbar.

    PS: Schönes Wochenende

    mfg AtomSoldier.
    Besorg dir einen "Netzwerk Sniffer" (z.B. Ethereal oder CommView) und lasse diesen laufen, wenn du mit AA:O von einem Server die Daten anforderst. Der Sniffer zeigt dir dann an, was du senden musst und was du empfangen wirst.

    Dann kannst du das ganze mit WinSock machen. Ich nehme mal an, es wird das UDP Protokoll benutzt, das musst du dann einstellen. Als RemoteHost musst du dann die IP des Servers und als RemotePort den Port des Servers einstellen.

    Mit SendData und GetData sendest und empfängst du dann die Daten.

    Genaueres kann ich dir dazu nicht sagen, ich kenne das AA:O Netzwerkprotokoll nicht.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Jetzt hab ich noch ein Problem also ich muss \basic\\info an den Server sender , damit er mir antwortert.

    Hier ist mein Code bis jetzt:

    Option Explicit
    '--------------------------------------------------------------------------------

    Private Sub Command1_Click()
    Winsock1.Close
    DoEvents

    Winsock1.Protocol = sckUDPProtocol
    Winsock1.RemoteHost = "69.25.18.224"

    Winsock1.RemotePort = 1716
    Winsock1.Connect
    DoEvents
    Winsock1.SendData "\basic\\info"

    End Sub

    '--------------------------------------------------------------------------------
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Data As String

    Winsock1.GetData Data

    Text1.Text = Data

    End Sub

    Der Server antwortert mir das: @.1

    ICh hab gehört das ich das Byteweise auslesen muss, Wie soll das gehen ????

    Vielleicht hilft das weiter: Ein Delphi Source Code

    GameNameLB.Caption := 'Game Name : ' + Values['gamename'];
    HostNameLB.Caption := 'Host Name : ' + Values['hostname'];
    HostPortLB.Caption := 'Host Port : ' + Values['hostport'];
    GameVersionLB.Caption := 'Game Version : ' + Values['gamever'];
    TourLB.Caption := 'Tour : ' + Values['tour'];

    // i use these if statements when the values is 0=False, 1=True
    if Values['official'] = '0' then OfficialLB.Caption := 'Official : ' + 'No'
    else if Values['official'] = '1' then OfficialLB.Caption := 'Official : ' + 'Yes';

    if Values['leased'] = '0' then LeasedLB.Caption := 'Leased : ' + 'No'
    else if Values['leased'] = '1' then LeasedLB.Caption := 'Leased : ' + 'Yes';

    if Values['cheats'] = '0' then CheatsLb.Caption := 'Cheats : ' + 'No'
    else if Values['cheats'] = '1' then CheatsLb.Caption := 'Cheats : ' + 'Yes';

    if Values['password'] = '0' then PasswordLB.Caption := 'Password : ' + 'No'
    else if Values['password'] = '1' then PasswordLB.Caption := 'Password : ' + 'Yes';

    // does miles contain a True/False value ?
    MilesLB.Caption := 'Miles : ' + Values['miles'];

    MapTitleLB.Caption := 'Map Title : ' + Values['maptitle'];
    MapNameLB.Caption := 'Map Name : ' + Values['mapname'];
    GameTypeLB.Caption := 'Game Type : ' + Values['gametype'];
    PlayersLB.Caption := 'Players : ' + Values['numplayers'];
    MaxPlayersLB.Caption := 'Max Players : ' + Values['maxplayers'];
    MinHonorLB.Caption := 'Min Honor : ' + Values['minhonor'];
    MaxHonorLB.Caption := 'Max Honor : ' + Values['maxhonor'];
    Team1ScoreLB.Caption := 'Team 1 Scores : ' + Values['team0_score'];
    Team2ScoreLB.Caption := 'Team 2 Scores : ' + Values['team1_score'];
    CurrentRoundLB.Caption := 'Current Round : ' + Values['current_round'];
    TimeLB.Caption := 'Mission Time : ' + Values['mission_time'];
    GameModeLB.Caption := 'Game Mode : ' + Values['gamemode'];
    end;
    for I := 0 to InputResults.Count-1 do
    begin
    // Something happened here at one point
    end;
    end;


    Marcus hat mir gesagt , das Delphi Programm sendet an den Server den befehl "\basic\\info". Dann antwortet der Server so in komischen Zeichen. Ich hab ihn gefragt wieso ? Er meint , du must es Bytesweise auslesen. Das Delphi Programm nimmt diesen Befehl(der vom Server)an und liest ihn Bytesweise aus. Mehr weiß ich auch nicht.

    Ich hab Marcus gefragt aber er hat zur Zeit sehr viel um die Ohren.

    Hoffe jetzt kannst weiter helfen X(
    Der Delphi Code sendet tatsächlich nichts. Atomsoldier hat das mit dem Senden und Empfangen ja schon hinbekommen. Es geht jetzt nur noch um das Auslesen der empfangenen Infos und die Zuordnung, was jetzt Spieleranzahl, was Mapname, etc. ist.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Kröger schrieb am 25.02.2004 19:01
    ...Vielleicht muss man dem Server noch mehr senden...


    glaub ich auch.. als wenn das was der server da sendet ("@.1") wirklich mit irgendwelchen infos vollgepackt ist, dann allerhöchstens binär (also so mit nullen und einsen), das müsste man dann in eben diese nullen und einsen konvertieren, bzw. mit einem operator (and, or, xor,..) ausfiltern..
    ansonsten wird das irgend ein erzeugtes ergebnis aufgrund eines fehlers sein..
    wie z.b. bei dem laserdrucker bei uns im büro, der gibt auch manchmal nur irgendwelche kryptischen zeichen anstelle des eigentlichen word-dokuments aus :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „makrele32“ ()

    Hast du denn schon mal versucht einen NetSniffer zu benutzen? Ich hab das zwar noch nie gemacht, aber den Inhalt der Pakete kann man bestimmt auslesen. Lass einfach das Delphi-Teil mal laufen und Daten von irgend einem Server anfordern ...

    Jue ;)
    Aber woher kommt beim Delphi-Code der Values-Array (ich denke mal, dass es einer ist)? Dann kann ich dir warscheinlich weiterhelfen. Hast du nicht den gesamten Delphi-Code mit Empfangen? Wenn ja, kannst du den mal Mailen oder hierrein posten?


    Felix Kröger
    makrele32 schrieb am 26.02.2004 08:22
    als wenn das was der server da sendet ("@.1") wirklich mit irgendwelchen infos vollgepackt ist, dann allerhöchstens binär (also so mit nullen und einsen)


    Genau so wird es sein! Bei Half-Life Servern (oder CS, DoD, etc.) kommt auch nur so ein Mini String an. Aber da stehen dann haufenweise Infos drin. Die Frage ist, wie kommt man hier an die einzelnen Werte. Für HL war es ganz einfach, da musste man die Daten einfach byteweise auslesen und fertig. Aber das klappt hierbei irgendwie nicht.

    Es kann natürlich auch sein, dass die neue AA:O Version ein völlig anderes Serverprotokoll benutzt und daher die alten Befehle nicht mehr gültig sind.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum