1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116:
| type TPlayerlist = array of array[0..17] of string;
function Convert(zahl : integer;zielsystem : Byte) : string; const ziffern : array[0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); var b : Integer; begin Result:=''; b:=Zahl; while b > 0 do begin Result:=ziffern[b mod zielsystem]+Result; b:=b div zielsystem; end; end;
function Get_Playerlist(Client: TIdTCPClient): TPlayerlist; var Antwort: string; Ende: boolean; PlayerExpr: TRegExpr; K, I, Anzahl_Player: integer; Node: TTreeNode; begin Ende:=false; Anzahl_Player:=0; Client.Writeln('pl'); Antwort:=Client.Readln; PlayerExpr:=TRegExpr.Create; PlayerExpr.Expression:='^\s*p_id\s+(.*)\s+ps\s+bs\s+pr\s+br\s+pl\s+ping\s+logintime\s+idletime\s+cprivs\s+pprivs\s+pflags\s+ip\s+nick\s+loginname\s*$'; if PlayerExpr.Exec(Antwort) then begin if (PlayerExpr.Match[1] = 'c_id') then begin repeat Antwort:=CLient.Readln; if Antwort = 'OK' then Ende:=true else begin setLength(Result, Anzahl_Player +1); PlayerExpr.Expression:='^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+"\d+\.\d+\.\d+\.\d+"\s+".+"\s+".*"\s*$'; if PlayerExpr.Exec(Antwort) then begin Result[Anzahl_Player, 1]:=PlayerExpr.Match[1]; Result[Anzahl_Player, 2]:=PlayerExpr.Match[2]; Result[Anzahl_Player, 3]:=PlayerExpr.Match[3]; Result[Anzahl_Player, 4]:=PlayerExpr.Match[4]; Result[Anzahl_Player, 5]:=PlayerExpr.Match[5]; Result[Anzahl_Player, 6]:=PlayerExpr.Match[6]; Result[Anzahl_Player, 7]:=PlayerExpr.Match[7]; Result[Anzahl_Player, 8]:=PlayerExpr.Match[8]; end; PlayerExpr.Expression:='^\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+"(\d+\.\d+\.\d+\.\d+)"\s+"(.+)"\s+"(.*)"\s*$'; if PlayerExpr.Exec(Antwort) then begin Result[Anzahl_Player, 9]:=PlayerExpr.Match[1]; Result[Anzahl_Player, 10]:=PlayerExpr.Match[2]; Result[Anzahl_Player, 11]:=Convert(strtoint(PlayerExpr.Match[3]), 2); Result[Anzahl_Player, 12]:=Convert(strtoint(PlayerExpr.Match[4]), 2); Result[Anzahl_Player, 13]:=Convert(strtoint(PlayerExpr.Match[5]), 2); Result[Anzahl_Player, 14]:=PlayerExpr.Match[6]; Result[Anzahl_Player, 15]:=PlayerExpr.Match[7]; Result[Anzahl_Player, 16]:=PlayerExpr.Match[8]; end; Result[Anzahl_Player, 17]:='('; if (Length(Result[Anzahl_Player, 12]) >= 3) AND (Copy(Result[Anzahl_Player, 12], Length(Result[Anzahl_Player, 12]) -2, 1) = '1') then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+'R' else Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+'U'; if Copy(Result[Anzahl_Player, 12], Length(Result[Anzahl_Player, 12]), 1) = '1' then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' SA'; if Copy(Result[Anzahl_Player, 11], Length(Result[Anzahl_Player, 11]), 1) = '1' then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' CA'; if (Length(Result[Anzahl_Player, 11]) >= 4) AND (Copy(Result[Anzahl_Player, 11], Length(Result[Anzahl_Player, 11]) -3, 1) = '1') then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' AO'; if (Length(Result[Anzahl_Player, 11]) >= 5) AND (Copy(Result[Anzahl_Player, 11], Length(Result[Anzahl_Player, 11]) -4, 1) = '1') then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' AV'; if (Length(Result[Anzahl_Player, 11]) >= 2) AND (Copy(Result[Anzahl_Player, 11], Length(Result[Anzahl_Player, 11]) -1, 1) = '1') then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' O'; if (Length(Result[Anzahl_Player, 11]) >= 3) AND (Copy(Result[Anzahl_Player, 11], Length(Result[Anzahl_Player, 11]) -2, 1) = '1') then Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+' V'; Result[Anzahl_Player, 17]:=Result[Anzahl_Player, 17]+')'; end; inc(Anzahl_Player); until (Ende) OR (Client.ReadlnTimedOut); end; end; PlayerExpr.Free; end;
procedure TForm1.Button1Click(Sender: TObject); var cvar: string; plarray: TPlayerlist; begin tcp1.Host := '62.141.42.34'; tcp1.Port := 51234; tcp1.Connect(-1); tcp1.WriteLn('sel 8767'); cvar := tcp1.ReadLn; plarray := Get_Playerlist(tcp1); end; |