📄 recvmessage.pas
字号:
unit recvmessage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,qsocket2,winsock,DePacket,packetstruct,unit2,unit1,queue;
var
coco:array [0..255] of char;
M1,M2,M3:string; //人物名字
h1,h2,h3:integer;//等级
procedure into(s:Tsocket);//登陆信息
procedure recv1(s:Tsocket);//进入游戏的第一个包
implementation
Function get_ID(flag:integer): integer;
var counter:integer;
begin
counter:=0;
//flag:=$a8;
if (flag and 1) <> 0 then counter:=counter+1;
if (flag and 2) <> 0 then counter:=counter+1;
if (flag and 4) <> 0 then counter:=counter+1;
if (flag and 8) <> 0 then counter:=counter+1;
if (flag and 16) <> 0 then counter:=counter+1;
if (flag and 32) <> 0 then counter:=counter+1;
if (flag and 64) <> 0 then counter:=counter+1;
if (flag and 8 =8) then counter:=counter+1;
result:=counter;
end;
procedure into(s:Tsocket);//登陆后收到的信息
var
i,j,g,n,p:integer;
mess:array [0..30] of char;
begin
sleep(1);
fillchar(buff,BUFFERSIZE,$00);
recv(s,buff,BUFFERSIZE,0);
decode(2);
if (uncode[0]=char($02)) and(uncode[1]=char($00)) then
begin
form2.Memo2.Lines.Add('登陆成功');
end
else
begin
form2.Memo2.Lines.Add('登陆失败,请检查帐号和密码');
StopNet(s);
end;
decode(10);
if uncode[0]=char($0E) then
begin
form2.Memo2.Lines.Add('帐号被使用');
end;
j:=0;
for i:=2 to integer(uncode[1])+1 do
begin
mess[j]:=uncode[i];
j:=j+1;
end;
i:=integer(uncode[1])+1;
i:=i+1;
j:=integer(uncode[i]);
if j=1 then
begin
fillchar(mess,30,$00);
j:=0;
i:=i+9;
h1:=integer(uncode[i]); //第一个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M1:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M1);
end;
if j=2 then
begin
fillchar(mess,30,$00);
j:=0;
i:=i+9;
h1:=integer(uncode[i]); //第一个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M1:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M1);
fillchar(mess,30,$00);
j:=0;
i:=i+g+9;
h2:=integer(uncode[i]);//第二个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M2:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M2);
end;
if j=3 then
begin
fillchar(mess,30,$00);
j:=0;
i:=i+9;
h1:=integer(uncode[i]); //第一个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M1:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M1);
fillchar(mess,30,$00);
j:=0;
i:=i+g+9;
h2:=integer(uncode[i]);//第二个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M2:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M2);
fillchar(mess,30,$00);
j:=0;
i:=i+g+9;
h3:=integer(uncode[i]);//第三个人物的等级
i:=i+1;
g:=integer(uncode[i]);
p:=get_ID(g);
i:=i+p*4+6;
g:=integer(uncode[i]);
for n:=i+1 to i+g do
begin
mess[j]:= uncode[n];
j:=j+1;
end;
M3:=format('%s',[mess]);
form2.bsSkinComboBox2.Items.Add(M3);
end;
end;
procedure recv1(s:Tsocket);//进入游戏的第一个包
var
i,j,n:integer;
begin
fillchar(buff,BUFFERSIZE,$00);
recv(s,buff,BUFFERSIZE,0);
decode(2);
j:=0;
n:=strlen(uncode);
for i:=7 to n do
begin
coco[j]:=uncode[i];
j:=j+1;
end;
//coco将被发送出去进行验证,同时利用coco产生新的key_tab作为进入系统以后的加密
// ****************重新定义Key_tab
fillchar(buf_4,5,$00);
for i:=0 to 3 do
begin
buf_4[i]:=coco[i];
end;
get_keytab;
// ****************重新定义Key_tab
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -