AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Query an Gameserver

Query an Gameserver

Ein Thema von Flodding · begonnen am 18. Feb 2015 · letzter Beitrag vom 1. Nov 2015
Antwort Antwort
Seite 1 von 3  1 23   
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Query an Gameserver

  Alt 24. Feb 2015, 13:43
Das Funktionierende war auf die Verbindungsproblematik bezogen. Dies funktioniert jetzt schon soweit, dass wenn der Server nicht erreichbar ist, einfach nichts ausgewertet wird. Ändere ich den Queryport aber auf den Spielport zB, dann hängts immernoch.

Delphi-Quellcode:
  ServerName:= '';
  repeat
    mem.Read(tmpChar, SizeOf(AnsiChar));
    if (tmpChar <> #0) then
      ServerName:= ServerName + tmpChar;
  until tmpChar = #0;
da würde spätestens unten bei den Bytes nach den Strings dann wieder die Problematik aufkommen:

Mit Passwort: 8A 84 01 40 00 64 77 01 00

8A84 = Version
01 = Spieler aktuell
40 = Spieler max.
00 = Bots
64 = Typ
77 = Environment
01 = Passwort
00 = VAC status

Ohne Passwort: 8A 84 01 40 00 64 77 00

8A84 = Version
01 = Spieler aktuell
40 = Spieler max.
00 = Bots
64 = Typ
77 = Environment
--> PASSWORT FEHLT
00 = VAC status

Ebenso verhällt es sich bei den aktuellen Spielern auf dem Server. die werden auch als 00 gesendet und somit würden sie dann nur als "stop" für den Stream behandelt werden.
Flo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Query an Gameserver

  Alt 24. Feb 2015, 14:01
Ich hab mal aus Deinem HexDump ein Beispiel heraus gefischt:
Code:
8A84 
00 
00 
00 - Bots
00 - Typ
00 - Enviroment
00 - Passwortkenner(?)
00 - VAC status?
00 
00 
00 
C4
Ist der Passwortkenner jetzt nicht gesetzt (x00) oder fehlt er? Und wenn Ja, dan gibt es also mind. 2 verschiedene Satztypen?


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Query an Gameserver

  Alt 24. Feb 2015, 14:23
Wenn man das so betrachtet, dann macht das mit dem Zerlegen und dem ";" und dem Array am Ende keinen Sinn mehr.

Dann wäre es ja sinnvoller im oberen Teil einfach die ersten 4 variablen Strings zu lesen mit den 00en, danach die Bytes direkt an ihrer Position auszuwerten. Dann ist es egal ob 00 dort steht oder 0000 denn dann stehen die ersten 00 für 0 Spieler und die zweiten zB für 0 Bots.
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Query an Gameserver

  Alt 24. Feb 2015, 14:43
Also dieses ganz Rätselraten durch das falsche Zuordnen der einzelnen Bytes ist ja nicht zum Aushalten.

Nimm Papier und Bleistift zu Hand und mach dir mal eine Tabelle mit dem Satzaufbau (Name, Typ, Anzahl der Bytes, Bytes) und trage dann die empfangenen Bytes dort nach den vorgegebenen Regeln ein.

So wie ich die Dokumentation lese und verstehe gibt es da nichts mit einem Passwort Feld. Nach Environment (Byte) kommt Visibility (Byte) und danach VAC (Byte).

Also frisch ans Werk, das hilft dann auch bei der Umsetzung.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Query an Gameserver

  Alt 24. Feb 2015, 14:56
So wie ich die Dokumentation lese und verstehe gibt es da nichts mit einem Passwort Feld. Nach Environment (Byte) kommt Visibility (Byte) und danach VAC (Byte).
Code:
Visibility   byte   Indicates whether the server requires a password:
0 for public
1 for private
Flo
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Query an Gameserver

  Alt 24. Feb 2015, 16:02
Ich hoffe du hast es so gemeint. Ja... kein Papier

DataTypeDescriptionByte-LängeHEXErwartet
Headerbyte8 bit character or unsigned integer249I
Protocolbyte8 bit character or unsigned integer21117
Namestringvariable-length byte field, encoded in UTF-8, terminated by 0x00~5B4C2D542D535D2045706F6368204F726967696E732028312E302E352E312F3132353534382900[L-T-S] Epoch Origins (1.0.5.1/125548)
Mapstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~5461766900Tavi
Folderstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~61726D61326172726F77706300arma2arrowpc
Gamestringvariable-length byte field, encoded in UTF-8, terminated by 0x00~4461795A2045706F6368204F726967696E7300Dayz Epoch Origins
IDshort16 bit signed integer48A8433930
Playersbyte8 bit character or unsigned integer200 oder größer0
Max. Playersbyte8 bit character or unsigned integer219 oder kleiner / größer25
Botsbyte8 bit character or unsigned integer200 oder kleiner /größer0
Server Typebyte8 bit character or unsigned integer264d
Environmentbyte8 bit character or unsigned integer277w
Visibilitybyte8 bit character or unsigned integer200 oder 010
VACbyte8 bit character or unsigned integer200 oder 010
Versionstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~8A8433930
Extra Data Flagsbyte8 bit character or unsigned integer200 oder 010
Flo

Geändert von Flodding (24. Feb 2015 um 16:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Query an Gameserver

  Alt 24. Feb 2015, 16:21
Und da sieht man doch schon, dass du immer noch nicht richtig in die Doku geschaut hast.

Wenn der Wert vom Typ BYTE ist, dann hat es da nur 1 (in Worten ein) Byte.
DataTypeDescriptionByte-LängeHEXErwartet
Headerbyte8 bit character or unsigned integer149I
Protocolbyte8 bit character or unsigned integer11117
Namestringvariable-length byte field, encoded in UTF-8, terminated by 0x00~5B 4C 2D 54 2D 53 5D 20 45 70 6F 63 68 20 4F 72 69 67 69 6E 73 20 28 31 2E 30 2E 35 2E 31 2F 31 32 35 35 34 38 29 00[L-T-S] Epoch Origins (1.0.5.1/125548)
Mapstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~54 61 76 69 00Tavi
Folderstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~61 72 6D 61 32 61 72 72 6F 77 70 63 00arma2arrowpc
Gamestringvariable-length byte field, encoded in UTF-8, terminated by 0x00~44 61 79 5A 20 45 70 6F 63 68 20 4F 72 69 67 69 6E 73 00Dayz Epoch Origins
IDshort16 bit signed integer28A 8433930
Playersbyte8 bit character or unsigned integer100 0
Max. Playersbyte8 bit character or unsigned integer11925
Botsbyte8 bit character or unsigned integer1000
Server Typebyte8 bit character or unsigned integer164d
Environmentbyte8 bit character or unsigned integer177w
Visibilitybyte8 bit character or unsigned integer1000
VACbyte8 bit character or unsigned integer1000
Versionstringvariable-length byte field, encoded in UTF-8, terminated by 0x00~8A 84DAS PASST DOCH HIER NICHT
Extra Data Flagsbyte8 bit character or unsigned integer1000
Bei der Version hast du dich definitiv vertan und falsche Daten aufgeschrieben.

Hier Beispielhaften von der Valve Seite
Code:
FF FF FF FF 49 02 67 61 6D 65 32 78 73 2E 63 6F    ÿÿÿÿI.game2xs.co
6D 20 43 6F 75 6E 74 65 72 2D 53 74 72 69 6B 65    m Counter-Strike
20 53 6F 75 72 63 65 20 23 31 00 64 65 5F 64 75     Source #1.de_du
73 74 00 63 73 74 72 69 6B 65 00 43 6F 75 6E 74    st.cstrike.Count
65 72 2D 53 74 72 69 6B 65 3A 20 53 6F 75 72 63    er-Strike: Sourc
65 00 F0 00 05 10 04 64 6C 00 00 31 2E 30 2E 30    e......dl..1.0.0
2E 32 32 00                                        .22.
Das sieht man, dass es den Wert für Extra Data Flags nicht geben muss!
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Query an Gameserver

  Alt 24. Feb 2015, 15:58
Also dieses ganz Rätselraten durch das falsche Zuordnen der einzelnen Bytes ist ja nicht zum Aushalten.

Nimm Papier und Bleistift zu Hand und mach dir mal eine Tabelle mit dem Satzaufbau (Name, Typ, Anzahl der Bytes, Bytes) und trage dann die empfangenen Bytes dort nach den vorgegebenen Regeln ein.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#9

AW: Query an Gameserver

  Alt 24. Feb 2015, 16:29
Ändere ich den Queryport aber auf den Spielport zB, dann hängts immernoch.
Zeig' mal her, was Du bereits geschafft hast, damit wir einmal einen Überblick erhalten.

Dann sind notwendige Änderungen und Verbesserungsvorschläge leichter zu beschreiben.

So ist es manchmal mehr oder weniger ein Rätselraten.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Query an Gameserver

  Alt 24. Feb 2015, 16:35
Möchtest du dass ich das Projekt hochlade? Oder soll ich gesammten Code Posten?
Flo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz