AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Counterstrike Server ansteuern
Thema durchsuchen
Ansicht
Themen-Optionen

Counterstrike Server ansteuern

Ein Thema von unaimed · begonnen am 25. Dez 2002 · letzter Beitrag vom 15. Jan 2003
Antwort Antwort
Seite 1 von 2  1 2      
unaimed

Registriert seit: 25. Dez 2002
4 Beiträge
 
Delphi 6 Enterprise
 
#1

Counterstrike Server ansteuern

  Alt 25. Dez 2002, 17:59
Hallo,
weiß einer, wie ich einen Counterstrike server von Delphi aus ansteuern kann?
Ich möchte ein Programm schreiben, dass mir das Rcon Passwort des Servers überprüft und bei richtigem Passwort weitere Serverbefehle erlaubt(ähnlich wie HLSW). Mir fehlt dazu aber der Befehl, um den Server anzusteuern.

Wenn mir jemand weiterhelfen könnte, wäre ich dankbar.

MfG
unaimed
---------------------------------------------
Hier sollte eigentlich was kluges stehen
oder so... hmm... ja... genau...
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 25. Dez 2002, 22:55
Hi,

da ich auch ein "Counterstriker" bin, hatte ich mir auchschonmal diese Frage gestellt.
Da aber alles über diese Server(GS,4NetPlayers usw) undokumentiert ist, wird es garnicht so einfach.
Vielleicht sollte man es aber "im Auge behalten" *gg*
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
DerKapitalist

Registriert seit: 25. Dez 2002
37 Beiträge
 
#3
  Alt 26. Dez 2002, 00:48
hi

zuerst würde ich mal einfach ne Runde zocken und nebenher ein Netzwerksniffer laufen lassen, dann die Befehle ausführen, die dich interessieren und dann im Sniffer sortieren und schauen, ob du schlau draus wirst.
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#4
  Alt 26. Dez 2002, 10:03
du bekommst keine rückmeldung von dem server ob dein rcon-passwort richtig war!
wie das aber genau geht???
das mit dem sniffer hört sich mal interessant an!
  Mit Zitat antworten Zitat
unaimed

Registriert seit: 25. Dez 2002
4 Beiträge
 
Delphi 6 Enterprise
 
#5
  Alt 26. Dez 2002, 15:08
Erstmal vielen Dank für die Antworten, das mit dem Netzwerksniffer muss ich auf jedenfall mal ausprobieren...

Danke an alle, wenn noch jemand Befehle oder andere nützliche Tips hat, würde ich mich auch freuen.

MfG
unaimed
---------------------------------------------
Hier sollte eigentlich was kluges stehen
oder so... hmm... ja... genau...
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 26. Dez 2002, 16:34
Hallo Unaimed,

ich habe bereits in einem anderen Beitrag etwas zu dem Thema gepostet, handelt sich da zwar um php, aber die Befehle sollten die gleichen sein.
Du musst dich allerdings durch die angefügte class in php durcharbeiten, obwohl es nicht sehr schwer ist die codes zu finden.
http://www.delphipraxis.net/viewtopic.php?t=1823
greetz
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
unaimed

Registriert seit: 25. Dez 2002
4 Beiträge
 
Delphi 6 Enterprise
 
#7
  Alt 26. Dez 2002, 17:13
Hallo Jan,
die Class ist leider nicht mehr auf dem Server.
Ich weiß, dass ich den Server über UDP ansteuern kann, bzw. muss, wenn ich Ergebnisse will. Die Strings sind z.B. rules, ping, usw...

Ich weiss aber nicht, wie ich das jetzt in Delphi umsetzen kann.

Trotzdem mal danke für deinen Post.

Achso, in Php bin ich zwar nicht so besonders gut, aber der Mensch ist ja lernfähig, muss mich mal durchg00glen...
---------------------------------------------
Hier sollte eigentlich was kluges stehen
oder so... hmm... ja... genau...
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 26. Dez 2002, 17:20
Hallo Unaimed,
Oh sry, wusste nicht, dass die datei nichtmehr existiert.
Werde sie hier mal anfügen.
Aber das ist schon etwas aufwendiger als du dir vorstellst, naja, und es ist halt erstmal nur zum Infos lesen, nicht zum Befehle senden.
Gruss
Jan
Angehängte Dateien
Dateityp: zip serverquery_869.zip (3,4 KB, 89x aufgerufen)
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
unaimed

Registriert seit: 25. Dez 2002
4 Beiträge
 
Delphi 6 Enterprise
 
#9
  Alt 26. Dez 2002, 17:23
Vielen Dank, dass du so schnell gepostet hast.

Zunächst geht es mir sowieso erstmal darum, überhaupt etwas vom Server zu empfangen, usw...

Danke für die Datei, ich werde sie mal durcharbeiten.
---------------------------------------------
Hier sollte eigentlich was kluges stehen
oder so... hmm... ja... genau...
  Mit Zitat antworten Zitat
Benutzerbild von radhome
radhome

Registriert seit: 27. Dez 2002
Ort: Taunusstein
3 Beiträge
 
#10

Ein bischen Code ...

  Alt 27. Dez 2002, 10:01
Moin!

Hab schon vor länger Zeit was programmiert um HL-Server abzufragen.
Stelle den Quellcode gerne auch online. Hier ein kleiner Auszug:



Delphi-Quellcode:
var
    NMUDP1: TNMUDP;

procedure DoUpdate;

var
  TmpStr: String;
  buffer:array[0..25]of Char;
  I:Integer;
Begin
  NMUDP1.ReportLevel := Status_Basic;
  NMUDP1.RemoteHost := 'irgendeine IP';
  NMUDP1.RemotePort := 'meistens irgendwas mit 27000';
  // Sende 4x Das Char 255 und dann 'details' und am Ende Char 0
  TmpStr := Chr(255)+Chr(255)+Chr(255)+Chr(255)+'details'+Chr(0);
  For i:= 1 to Length(TMPStr) do
   buffer[i-1]:=tmpstr[i];
  NMUDP1.SendBuffer(buffer,Length(TmpStr));
  // Sende 4x Das Char 255 und dann 'players' und am Ende Char 0
    TmpStr := Chr(255)+Chr(255)+Chr(255)+Chr(255)+'players'+Chr(0);
  For i:= 1 to Length(TMPStr) do
   buffer[i-1]:=tmpstr[i];
  NMUDP1.SendBuffer(buffer,Length(TmpStr));
  // Sende 4x Das Char 255 und dann 'rules' und am Ende Char 0
    TmpStr := Chr(255)+Chr(255)+Chr(255)+Chr(255)+'rules'+Chr(0);
  For i:= 1 to Length(TMPStr) do
   buffer[i-1]:=tmpstr[i];
  NMUDP1.SendBuffer(buffer,Length(TmpStr));
end;


// Und zum auswerten:

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  MyStream: TMemoryStream;
  TmpStr,TmpStr2: String;
  buffer:array[0..2048] of Char;
  I,j:Integer;
  ID,styp,os:Char;
  mccount,ccount,count,pv,pass:Word;
  pfrag:longInt;
  ptime:single;
  tfrag:longint;
begin
   NMUDP1.ReadBuffer(buffer, NumberBytes);
   ID:=buffer[4];
case ID of
 'D':begin
     //No. of Players ub ein Stringgrid namens "pl"
     i:=0; J:=5;tfrag:=0;
     pl.RowCount:=2; pl.cells[0,1]:=''; pl.cells[1,1]:='';
     count:=Ord(buffer[J]); J:=7;
     if count > 0 then begin
      repeat
      tmpstr:=''; pfrag:=0;
      While buffer[j] <> Chr(0) do
      begin
       tmpstr:=tmpStr+buffer[j];
       Inc(j);
      end;
      J:=j+10;
      // Ein kleiner "Workaround" für Frags <= 0
      pfrag:=Ord(buffer[j-9]); if Ord(buffer[j-8])=255 then
      pfrag:=pfrag -256; tfrag:=tfrag+pfrag;
      inc(i);
      pl.cells[0,I]:=IntToStr(pfrag);
      pl.cells[1,I]:=tmpStr;
      pl.RowCount:=I+1;
      until I =count;
     end;
     DoSort;
    end;
  'E':begin // jetzt kommen Serverdaten, also RULES
     i:=0; J:=5; // im Format "variable=irgendwas"
    count:=Ord(buffer[J])+Ord(buffer[j+1])*256; J:=7;
     if count > 0 then begin
      repeat
      tmpstr:='';
      tmpstr2:='';
      While buffer[j] <> Chr(0) do
      begin
       tmpstr:=tmpStr+buffer[j];
       Inc(j);
      end;
      Inc(J);
      rg.Cells[0,i+1]:=tmpstr;
      While buffer[j] <> Chr(0) do
      begin
       tmpstr2:=tmpStr2+buffer[j];
       Inc(j);
      end;
      rg.Cells[1,i+1]:=tmpstr2;
      if tmpstr='sv_contactthen // steht da Punkbuster drin?
       If Pos('{PB',tmpStr2)> 0 then
       // pbimg.Visible:=True else pbimg.Visible:=False;
      Inc(j);
      Inc(I);
      until I =count;
      rg.RowCount:=count+1;
     end;
    end;
  'm':begin // Server-Kurzinfo
      J:=5; I:=0;
      repeat
      INC(I);
     tmpstr:='';
      While buffer[j] <> Chr(0) do
     begin
      tmpstr:=tmpStr+buffer[j];
      Inc(j);
     end;
     Inc(J);
      case I of
      2: form1.Caption:='go2bf - '+tmpStr;
      3: status.caption:='Map: '+tmpstr; //if lmap.Caption <> tmpstr then
      4: begin lmod.caption:=tmpstr; status.caption:=status.caption+' Mod: '+tmpstr; end;
      end;
      until I=5;
      ccount:=Ord(buffer[J]);Inc(J);
      mccount:=Ord(buffer[J]);Inc(J);
      status.caption:=status.caption+' Spieler: '+IntToStr(ccount)+'/'+IntToStr(mccount);
      if ccount=mccount then full.Visible:=True else
        full.Visible:=False;
      // Protocol Version - unused
      // pv:=Ord(buffer[J]);
      Inc(J);
      styp:=buffer[J];Inc(J);
      os:=buffer[J];Inc(J);
       case styp of // Servertyp
       'd': tmpstr:='Dedicated';
       'l': tmpstr:='Listen ';
      end;
{      case os of // OS => w=windows l=linux
      'w': begin osimg.Visible:=true; osimg.hint:=tmpstr; end;
      'l': begin osimg2.Visible:=true; osimg2.hint:=tmpstr; end;
      end;
      osimg.visible:=True;}

      pass:=Ord(buffer[J]);
      if pass=1 then // Passwort?
      begin
       pw.visible:=true;
       labelpassw.Visible:=true;
       passw.visible:=true;
      end else
      begin
       pw.Visible:=false;
       labelpassw.Visible:=False;
       passw.Visible:=false;
      end;
     end;
 end;
end;
Werde es wohl doch hochladen ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz