Hehe i wonder how works this translator :P
Is last packet send from server new IP of gameserver?
Look at this
Код:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
procedure HexToBuff(hex:string);
var
a : integer;
convert : string;
begin
Packet.Size := length(hex) div 2;
for a := 0 to (length(hex) div 2)-1 do begin
convert := '$'+hex[a*2+1]+hex[a*2+2];
if length(convert) = 3 then begin
Packet.Buff[a] := strtoint(convert);
end;
end;
end;
var
hexi : string;
LastRecv: Byte;
begin
try
Athread.Connection.ReadBuffer(ReadPacket.Buff, 2);
LastRecv := ReadPacket.Buff[0];
with ReadPacket do begin
if Buff[0] = $2A then Size := 40;
if Buff[0] = $B2 then Size := 176;
if Buff[0] = $22 then Size := 32;
end;
Athread.connection.readbuffer(ReadPacket.Buff, ReadPacket.Size);
if LastRecv = $2A then begin
AThread.Connection.Socket.ConnectClient('127.0.0.1', 7777, '127.0.0.1', 5000, 7000, 8000, -1);
hexi := '2a00';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, 2);
hexi := 'ed415416247fca586b8aae0f9be333f26b8aae0f9be333f250f180c7377d74332cb8c2612b3a276f';
HexToBuff(hexi);
AThread.connection.WriteBuffer(Packet.Buff, Packet.Size);
end;
if LastRecv = $B2 then begin
hexi := '4200';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, 2);
hexi := '55dd3d3055c522dc463fdbb18cde12f24f868881fa4ca0f26b8aae0f9be333f26b8aae0f9be333f26b8aae0f9be333f27efcd76091496db7cba401fb92a9f292';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, Packet.Size);
end;
if LastRecv = $22 then begin
if id > 0 then begin
hexi := '1a00';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, 2);
hexi := 'ac7e71085ab4f4a8e7d6e19085ab0b41a789810517b1e0c4';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, Packet.Size);
log.lines.add('done..');
exit;
end;
hexi := '9200';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, 2);
hexi := 'ee32e6c07b0975d5880a69d3dcf213033c6959a0663fbee2b020b24398ef85ccf862'+
'1ed708b8a388e56b5a84ba92b9de0ad1a9b706ec7a5c06afff3b04c234e59855282e443ff830d5948c3ed6febbe5339bdc40b54ae3f983fcdbc7c6572e9c446c0930c2fe54eecf848e1ccdbf86acae734bf0593877319e530c3a99fbe7354a1d470a0fb042c74e3cd4003f497581';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, Packet.Size);
id := id +1;
end;
except
log.lines.add('except dc');
athread.connection.disconnect;
end;
end;
This one is last packet sent
Код:
if id > 0 then begin
hexi := '1a00';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, 2);
hexi := 'ac7e71085ab4f4a8e7d6e19085ab0b41a789810517b1e0c4';
HexToBuff(hexi);
Athread.Connection.WriteBuffer(Packet.Buff, Packet.Size);
log.lines.add('done..');
exit;
end;
How can i redirect client to GameServer after this? Or as i said last packet include IP and port?