📄 myfun.pas
字号:
function leftclickshow1(w1:byte;w2:byte):string; //双击用 w1表示面板 w2面板里得位置
const click1:array[0..10]of byte=($17,$00,$13,$00,$00,$00,$00,$00,$0D,$00,$15); //点击物品,人物,武功得头部
var
fbbf :array[0..31]of char;
where1 :array[0..1] of char; //代表是那个面板 如 物品,一层武功 等
where2 :array[0..1] of char; //物品栏里得位置 或其他
i,j,wz :integer;
outstr :array[0..31]of char;
zhanghao :string;
begin
where1[0]:=chr(w1);
where1[1]:=chr(0);
where2[0]:=chr(w2);
where2[1]:=chr(0);
wz:=0;
//清空fbbf
for j:=0 to 31 do
begin
fbbf[j]:=chr(0);
outstr[j]:=chr(0);
end;
//定义头部
for i:=0 to 10 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
//定义面板 或人物
fbbf[wz]:=where1[0];
wz:=wz+1;
fbbf[wz]:=where1[1];
wz:=wz+1;
//此处暂不知道方式 先定义为0
for i:=0 to 3 do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
//定义某面板得位置 或方向
fbbf[wz]:=where2[0];
wz:=wz+1;
fbbf[wz]:=where2[1];
wz:=wz+1;
//后面部分可以定义为坐标 目前先置0
for i:=0 to 4 do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
encode(fbbf,wz,outstr); //加密
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
// frmtest.idtelnetdemo.Write(zhanghao);
end;
function movexy(face:byte;movex:integer;movey:integer):string; //人物移动
const move1:array[0..10]of byte=($15,$00,$00,$00,$00,$00,$00,$00,$0B,$00,$0B);
var i,j,wz :integer;
fbbf :array[0..40]of char;
outstr :array[0..40]of char;
zhanghao :string;
begin
wz:=0;
for i:=0 to 10 do
begin
fbbf[wz]:=chr(move1[i]);
wz:=wz+1;
end;
fbbf[wz]:=chr(face);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
//设定x的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(movex,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(movex,4),1,2)));
wz:=wz+1;
//设定y的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(movey,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(movey,4),1,2)));
wz:=wz+1;
//设定末尾4位值
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
//加密发送数据
encode(fbbf,wz,outstr); //加密
zhanghao:=copy(outstr,1,28);
zhanghao:='('+zhanghao+')';
result:=zhanghao;
// frmtest.idtelnetdemo.Write(zhanghao);
end;
//答题字符串加密发送部分
function sayanswer(str:string):string;
const namestr1:array[0..6]of byte=($00,$13,$00,$00,$00,$00,$00);
var
sayword:array[0..255]of char;
outstr:array[0..255]of char;
j,wz: integer;
renwu,zhanghao:string;
i : integer;
s : string;
begin
for j:=0 to 255 do
begin
sayword[j]:=chr(0);
outstr[j]:=chr(0);
end;
// frmtest.FlatMemo2.Lines.Add(str);
s := str; //读取输入栏得文字
sayword[0]:=chr(13+length(pchar(s))); //取得头部长度
wz:=1;
for i:=0 to 6 do
begin
sayword[wz]:=chr(namestr1[i]);
wz:=wz+1;
end;
sayword[wz]:=chr(3+length(pchar(s))); //
wz:=wz+1;
sayword[wz]:=chr(0);
wz:=wz+1;
sayword[wz]:=chr(12); //标志位 此位应该是0c
wz:=wz+1;
sayword[wz]:=chr(length(pchar(s))); //文字数据长度
wz:=wz+1;
sayword[wz]:=chr(0);
wz:=wz+1;
for i:=0 to length(pchar(s)) do //分解字符串
begin
sayword[wz]:=pchar(s)[i];
wz:=wz+1;
end;
wz:=wz+1;
sayword[wz]:=chr(0);
encode(sayword,wz,outstr); //加密
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
// frmtest.idtelnetdemo.Write(zhanghao); //发送
end;
//定义人物名字发送封包 帐号密码发送
function sendname(zhanghao1:string;mima:string):string;
const namestr1:array[0..10]of byte=($44,$00,$01,$00,$00,$00,$00,$00,$3A,$00,$03);
var zhanghaomima:array[0..68]of char;
outstr:array[0..300]of char;
j,wz: integer;
zhanghao:string;
begin
wz:=0;
for j:=0 to 10 do
begin
zhanghaomima[wz]:=chr(namestr1[j]);
wz:=wz+1;
end;
for j:=0 to (length(zhanghao1)) do
begin
zhanghaomima[wz]:=pchar(zhanghao1)[j];
wz:=wz+1;
end;
for j:=1 to (18-length(zhanghao1)) do
begin
zhanghaomima[wz]:=chr(0);
wz:=wz+1;
end;
for j:=0 to (length(mima)-1) do
begin
zhanghaomima[wz]:=pchar(mima)[j];
wz:=wz+1;
end;
for j:=1 to (38-length(mima))+1 do
begin
zhanghaomima[wz]:=chr(0);
wz:=wz+1;
end;
encode(zhanghaomima,wz,@outstr);
zhanghao:=copy(outstr,0,92);
zhanghao:='('+zhanghao+')';
result:=zhanghao;
// frmtest.idtelnetdemo.Write(zhanghao);
end;
//选人物
function xuanrenwu(renwu1:string;renwunum:string):string; //根据人物得位置 按需要发送
const namestr1:array[0..10]of byte=($26,$00,$02,$00,$00,$00,$00,$00,$1c,$00,$08);
const namestr2:array[0..10]of byte=($00,$00,$4b,$00,$00,$00,$74,$FD,$12,$00,$00);
var xuanzerenwu:array[0..38]of char;
outstr:array[0..300]of char;
j,wz: integer;
renwu,zhanghao:string;
ts:TStringList;
begin
ts := TStringList.Create ;
ts.Delimiter:= ',' ;
ts.DelimitedText:=renwu1;
renwu:=ts.Strings[strtoint(renwunum)-1];
if renwu<>'' then
begin
// end;
//填头部
wz:=0;
for j:=0 to 10 do
begin
xuanzerenwu[wz]:=chr(namestr1[j]);
wz:=wz+1;
end;
//名字部分
for j:=0 to length(renwu) do
begin
xuanzerenwu[wz]:=pchar(renwu)[j];
wz:=wz+1;
end;
//补名字不足部分
for j:=1 to (17-length(renwu)) do
begin
xuanzerenwu[wz]:=chr(0);
wz:=wz+1;
end;
//填尾巴
for j:=0 to 10 do
begin
xuanzerenwu[wz]:=chr(namestr2[j]);
wz:=wz+1;
end;
encode(xuanzerenwu,wz,@outstr);
zhanghao:=copy(outstr,0,52);
zhanghao:='('+zhanghao+')';
result:=zhanghao;
// frmtest.idtelnetdemo.Write(zhanghao);
// frmtest.Timer1.Enabled:=true;
end;
// else
// frmtest.FlatMemo1.Lines.Add('你选择了没有人物得位置');
end;
function goodsmima(mima:string;key:integer):string; //设定或解除密码
const click1:array[0..10]of byte=($15,$00,$13,$00,$00,$00,$00,$00,$0b,$00,$28); //点击物品,人物,武功得头部
var
fbbf :array[0..31]of char;
i,j,wz :integer;
outstr :array[0..31]of char;
zhanghao :string;
begin
wz:=0;
//清空fbbf
for j:=0 to 31 do
begin
fbbf[j]:=chr(0);
outstr[j]:=chr(0);
end;
//定义头部
for i:=0 to 10 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
//定义密码
for i:=0 to length(mima)-1 do
begin
fbbf[wz]:=pchar(mima)[i];
wz:=wz+1;
end;
for i:=0 to (8-length(mima)) do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
fbbf[wz]:=chr(key);
wz:=wz+1;
encode(fbbf,wz,outstr); //加密
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
end;
function trademenu(tradename:string;x,y:integer):string;
const click1:array[0..16]of byte=($21,$00,$00,$00,$00,$00,$00,$00,$17,$00,$16,$01,$03,$00,$00,$00,$00 ); //拖放到对方身上得头部
var fbbf :array[0..40]of char;
outstr :array[0..60]of char;//出来的数据
where1 :array[0..4] of char;
i,wz :integer;
zhanghao :string;
begin
Fillchar(outstr,41,chr(0));
where1[0]:=chr(HexaToDecimal(copy(tradename,1,2)));
where1[1]:=chr(HexaToDecimal(copy(tradename,3,2)));
where1[2]:=chr(HexaToDecimal(copy(tradename,5,2)));
where1[3]:=chr(HexaToDecimal(copy(tradename,7,2)));
wz:=0;
//与人交易头部
for i:=0 to 16 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
//设定交易者得代码
for i:=0 to 3 do
begin
fbbf[wz]:=where1[i];
wz:=wz+1;
end;
for i:=0 to 3 do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
//设定x的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(x,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(x,4),1,2)));
wz:=wz+1;
//设定y的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(y,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(y,4),1,2)));
wz:=wz+1;
for i:=0 to 3 do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
wz:=wz+1;
encode(fbbf,wz,outstr);
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
end;
//交易物品拖放 w1代表数量
function tradedragnum(w1:integer;w2:integer):string;
const click1:array[0..11]of byte=($18,$00,$00,$00,$00,$00,$00,$00,$0e,$00,$1B,$01);
click2:array[0..6]of byte=($00,$00,$00,$0f,$00,$00,$00);
var fbbf :array[0..34]of char;
outstr :array[0..80]of char;//出来的数据
i,wz :integer;
zhanghao :string;
begin
Fillchar(outstr,80,chr(0));
fillchar(fbbf,35,chr(0));
wz:=0;
//定义头部
for i:=0 to 11 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
//物品栏物品位置
fbbf[wz]:=chr(w2);
wz:=wz+1;
for i:=0 to 6 do
begin
fbbf[wz]:=chr(click2[i]);
wz:=wz+1;
end;
//定义物品数量
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(w2,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(w2,4),1,2)));
wz:=wz+1;
//最后2位0
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
encode(fbbf,wz,outstr);
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
end;
//扔东西拖放步骤
function flap(x,y,z:integer):string;
const click1:array[0..24]of byte=($21,$00,$00,$00,$00,$00,$00,$00,$17,$00,$16,$01,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ); //拖放到对方身上得头部
var fbbf :array[0..40]of char;
outstr :array[0..60]of char;//出来的数据
i,wz :integer;
zhanghao :string;
begin
Fillchar(outstr,41,chr(0));
wz:=0;
//扔东西头部
for i:=0 to 24 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
//设定x的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(x,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(x,4),1,2)));
wz:=wz+1;
//设定y的值
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(y,4),3,2)));
wz:=wz+1;
fbbf[wz]:=chr(HexaToDecimal(copy(inttohex(y,4),1,2)));
wz:=wz+1;
fbbf[wz]:=chr(z);
wz:=wz+1;
for i:=0 to 3 do
begin
fbbf[wz]:=chr(0);
wz:=wz+1;
end;
wz:=wz+1;
encode(fbbf,wz,outstr);
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
end;
//技能物品拖放
function makeskilldrag(x1:integer;x2:integer;x3:integer;x4:integer;w1:integer;w2:integer;w3:integer;w4:integer):string;
const click1:array[0..10]of byte=($1b,$00,$00,$00,$00,$00,$00,$00,$11,$00,$37); //拖放到技能框头部
var fbbf :array[0..40]of char;
outstr :array[0..60]of char;//出来的数据
i,wz :integer;
zhanghao :string;
begin
Fillchar(outstr,41,chr(0));
wz:=0;
for i:=0 to 10 do
begin
fbbf[wz]:=chr(click1[i]);
wz:=wz+1;
end;
fbbf[wz]:=chr(x1);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(x2);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(x3);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(x4);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(w1);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(w2);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(w3);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
fbbf[wz]:=chr(w4);
wz:=wz+1;
fbbf[wz]:=chr(0);
wz:=wz+1;
encode(fbbf,wz,outstr);
zhanghao:=outstr;
zhanghao:='('+zhanghao+')';
result:=zhanghao;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -