📄 mainform.pas
字号:
var
i,onelen ,outlen:integer;
packet_Header :pchar;
begin
i := 0;
onelen := 0;
packet_header := buf;
while i < len do
begin
if buf[i] = '(' then
begin
onelen := 1;
packet_header := @buf[i] ;
end;
if buf[i] = ')' then
begin
numbertest:=0;
gamepacketrecv(packet_header,onelen);
doanything;
end;
inc (onelen);
inc (i);
end;
end;
procedure Tmainfrm.Timer1Timer(Sender: TObject);
var i:integer;px,py:real;eatset1:integer;
begin
if clienttoserver=false then
begin
sendfb('(luNVNNNNNNNxNTANNNNN@p^jNyWKNNSkPpV\AmYxUuNN)');
// sendfb('(luNVNNNNNNNxNTANNNNNNNNNNNNNNNNNNNNNNNNNNNNN)');
px:=strtoint(mainfrm.statusbar1.Panels[2].Text)/mapx * mainfrm.image1.Width;
py:=strtoint(mainfrm.statusbar1.Panels[3].Text)/mapy * mainfrm.image1.Height;
mainfrm.Shape1.Left:=Trunc(px)+mainfrm.Image1.Left;
mainfrm.shape1.top:=Trunc(py);
end;
//吃大药设定
if checkbox23.Checked=true then
begin
//检测药的位置
for i:=0 to mainfrm.goodsview.Items.Count-1 do
begin
if (mainfrm.lowerlife0.Text<>'') and (mainfrm.lowerlife1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=gooddrug.text then eatset1:=i; end;
end;
//发送吃药命令
sendfb(leftclickshow1(1,eatset1));
end;
//武功检测
if (checkbox3.Checked=true)then
begin
for i:=0 to baseview.Items.Count-1 do
begin
if pos(usegest1.Text,baseview.Items.Item[i].Caption)<>0 then begin geststr1:=4;gestset1:=i; end;
if pos(usegest2.Text,baseview.Items.Item[i].Caption)<>0 then begin geststr2:=4;gestset2:=i; end;
if pos(usegest3.Text,baseview.Items.Item[i].Caption)<>0 then begin geststr3:=4;gestset3:=i; end;
end;
//一层武功
for i:=0 to onegestview.Items.Count-1 do
begin
if pos(usegest1.Text,onegestview.Items.Item[i].Caption)<>0 then begin geststr1:=5;gestset1:=i; end;
if pos(usegest2.Text,onegestview.Items.Item[i].Caption)<>0 then begin geststr2:=5;gestset2:=i; end;
if pos(usegest3.Text,onegestview.Items.Item[i].Caption)<>0 then begin geststr3:=5;gestset3:=i; end;
end;
//二层武功
for i:=0 to twogestview.Items.Count-1 do
begin
if pos(usegest1.Text,twogestview.Items.Item[i].Caption)<>0 then begin geststr1:=15;gestset1:=i; end;
if pos(usegest2.Text,twogestview.Items.Item[i].Caption)<>0 then begin geststr2:=15;gestset2:=i; end;
if pos(usegest3.Text,twogestview.Items.Item[i].Caption)<>0 then begin geststr3:=15;gestset3:=i; end;
end;
//掌风
for i:=0 to palmwindview.Items.Count-1 do
begin
if pos(usegest1.Text,palmwindview.Items.Item[i].Caption)<>0 then begin geststr1:=24;gestset1:=i; end;
if pos(usegest3.Text,palmwindview.Items.Item[i].Caption)<>0 then begin geststr2:=24;gestset2:=i; end;
if pos(usegest3.Text,palmwindview.Items.Item[i].Caption)<>0 then begin geststr3:=24;gestset3:=i; end;
end;
//三层
for i:=0 to threegestview.Items.Count-1 do
begin
if pos(usegest1.Text,threegestview.Items.Item[i].Caption)<>0 then begin geststr1:=28;gestset1:=i; end;
if pos(usegest2.Text,threegestview.Items.Item[i].Caption)<>0 then begin geststr2:=28;gestset2:=i; end;
if pos(usegest3.Text,threegestview.Items.Item[i].Caption)<>0 then begin geststr3:=28;gestset3:=i; end;
end;
//检测使用的武功
if (usegest1.Text<>'')and (pos(usegest1.Text,statusbar1.Panels[1].text)=0) then sendfb(leftclickshow1(geststr1,gestset1));
sleep(300);
if (usegest2.Text<>'')and (pos(usegest2.Text,statusbar1.Panels[1].text)=0) then sendfb(leftclickshow1(geststr2,gestset2));
sleep(300);
if (usegest3.Text<>'')and (pos(usegest3.Text,statusbar1.Panels[1].text)=0) then sendfb(leftclickshow1(geststr3,gestset3));
end;
end;
procedure Tmainfrm.FormCreate(Sender: TObject);
var i:integer;
begin
// fblist.Clear;
MI := TMapInfor.Create;
ackmonster:=true;
skindata1.active:=true;
FirstFlag:=true;
clientwork:=0;
answerok:=false;
richview1.Clear;
clientconnect:=true;
richview1.AddNL('欢迎使用私服简易脱机',6,1);
// richview1.AddNL('http://www.freespaces.com/xunmeng110/jianyi/jianyi.zip',3,1);
richview1.AddNL('http://xunmeng110.ys168.com',3,1);
RichView1.Format;
scaled := true;
str1:='';
INIPath:=extractFilePath(ParamStr(0));
pagecontrol1.ActivePageIndex:=0;
pagecontrol2.ActivePageIndex:=0;
baseskill.ActivePageIndex:=0;
ExtractFilePath(filepath);
if FileExists(filepath+'item.txt') then
mainfrm.ComboBox3.Items.LoadFromFile(filepath+'item.txt');
if FileExists(filepath+'wp.txt') then
mainfrm.listbox1.Items.LoadFromFile(filepath+'wp.txt');
if FileExists(filepath+'monster.txt') then
mainfrm.listbox2.Items.LoadFromFile(filepath+'monster.txt');
if FileExists(filepath+'addr.txt') then
begin
serveraddr := TStringList.Create ;
serveraddr.loadfromfile(filepath+'addr.txt');
end;
for i:=0 to serveraddr.Count-1 do
begin
myserver1.items.add(copy(serveraddr.strings[i],pos(',',serveraddr.strings[i])+6,length(serveraddr.strings[i])-(pos(',',serveraddr.strings[i])+5)));
end;
myserver1.ItemIndex:=0;
if FileExists(filepath+'sheding.txt') then
mainfrm.savesd.Items.LoadFromFile(filepath+'sheding.txt');
end;
//定时检测连线状况
procedure Tmainfrm.Timer2Timer(Sender: TObject);
var i,listnum:integer;
begin
if mainfrm.CheckBox15.Checked=true then
begin
if mainfrm.clientsocket1.Socket.Connected then
begin
statusbar1.Panels[0].Text:='在线中..';
if richview1.LineCount-1>400 then richview1.Clear;
if richview2.LineCount-1>400 then richview2.Clear;
if richview3.LineCount-1>400 then richview3.Clear;
if richview4.LineCount-1>400 then richview4.Clear;
end
else
begin
speedbutton2.visible:=true;
speedbutton1.visible:=false;
answerok :=false;
statusbar1.Panels[0].Text:='连接中断';
timer1.Enabled:=false;
speedButton2Click(self);
checkbox21.Visible:=false;
// speedbutton5.Visible:=false;
end;
end;
if mainfrm.CheckBox19.Checked=true then
begin
for i:=0 to mainfrm.goodsview.Items.Count-1 do
begin
if pos(mainfrm.Edit17.Text,mainfrm.goodsview.Items.Item[i].Caption)>0 then
begin
listnum:=i;
//mainfrm.ComboBox2.Text:=inttostr(i);
break;
end;
end;
for i:=0 to mainfrm.listView9.Items.Count-1 do
begin
if pos(mainfrm.Edit17.Text,mainfrm.listView9.Items.Item[i].Caption)=0 then
begin sendfb(leftclickshow1(1,listnum));
// mainfrm.ComboBox2.Text:=leftclickshow1(1,listnum);
end;
end;
end;
end;
procedure Tmainfrm.Button6Click(Sender: TObject); //添加怪物名字
var i:integer;px,py:real;
begin
if edit14.text<>'' then listbox2.Items.Add(edit14.Text);
if mainfrm.clientsocket1.Socket.Connected then
for i:=0 to listview2.Items.Count-1 do
begin
if edit14.Text=listview2.Items.Item[i].Caption then
combobox5.Items.Add(listview2.Items.Item[i].SubItems[1]);
end;
end;
function eatdrug:string; //吃药设定
var i:integer; eatset1,eatset2,eatset3,eatset4,eatset5,eatset6:integer;
neigongeat,waigongeat,wugongeat:bool;
neigongnum1,neigongnum2,waigongnum1,waigongnum2,wugongnum1,wugongnum2:integer;
begin
neigongeat:=false;
waigongeat:=false;
wugongeat:=false;
repeat
begin
eatset1:=30;eatset2:=30;eatset3:=30;eatset4:=30;eatset5:=30;eatset6:=30;//位置初始化
// eatdrugtime.Interval:=strtoint(edit2.Text); //定义时间
if (mainfrm.checkbox1.Checked=true) and (mainfrm.clientsocket1.Socket.Connected) then
begin
//先获取物品得位置
for i:=0 to mainfrm.goodsview.Items.Count-1 do
begin
if (mainfrm.lowerlife0.Text<>'') and (mainfrm.lowerlife1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.lowerlife1.text then eatset1:=i; end;
if (mainfrm.life0.Text<>'') and (mainfrm.life1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.life1.text then eatset2:=i; end;
if (mainfrm.neigong0.Text<>'') and (mainfrm.neigong1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.neigong1.text then eatset3:=i; end;
if (mainfrm.waigong0.Text<>'') and (mainfrm.waigong1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.waigong1.text then eatset4:=i; end;
if (mainfrm.wugong0.Text<>'') and (mainfrm.wugong1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.wugong1.text then eatset5:=i; end;
if (mainfrm.yuanqi0.Text<>'') and (mainfrm.yuanqi1.Text<>'') then
begin if mainfrm.goodsview.Items.Item[i].Caption=mainfrm.yuanqi1.text then eatset6:=i; end;
end;
//判断值 然后吃药
neigongnum1:=strtoint(copy(neigong,0,pos('/',neigong)-1));
neigongnum2:=strtoint(copy(neigong,pos('/',neigong)+1,length(neigong)));
waigongnum1:=strtoint(copy(waigong,0,pos('/',waigong)-1));
waigongnum2:=strtoint(copy(waigong,pos('/',waigong)+1,length(waigong)));
wugongnum1:=strtoint(copy(wugong,0,pos('/',wugong)-1));
wugongnum2:=strtoint(copy(wugong,pos('/',wugong)+1,length(wugong)));
case mainfrm.CheckBox18.Checked of
false : begin
if (eatset1<>30) and (strtoint(mainfrm.lowerlife0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[9].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[9].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset1)); end;
if (eatset2<>30) and (strtoint(mainfrm.life0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[9].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[9].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset2)); end;
if (eatset3<>30) and (strtoint(mainfrm.neigong0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[6].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[6].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset3)); end;
if (eatset4<>30) and (strtoint(mainfrm.waigong0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[7].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[7].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset4)); end;
if (eatset5<>30) and (strtoint(mainfrm.wugong0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[8].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[8].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset5)); end;
if (eatset6<>30) and (strtoint(mainfrm.yuanqi0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[5].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[5].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset6)); end;
end;
true : begin
//判断值 是否补满或空
if (neigongnum1<>0) and (waigongnum1<>0) and (wugongnum1<>0) then
begin
if ((neigongnum2 div neigongnum1)>=10) then neigongeat:=true;
if (neigongnum2 = neigongnum1) then neigongeat:=false;
if ((waigongnum2 div waigongnum1)>=10) then waigongeat:=true;
if (waigongnum2 = waigongnum1) then waigongeat:=false;
if ((wugongnum2 div wugongnum1 )>=10) then wugongeat:=true;
if (wugongnum2 = wugongnum1 ) then wugongeat:=false;
end
else
begin
if neigongnum1=0 then neigongeat:=true;
if waigongnum1=0 then waigongeat:=true;
if wugongnum1=0 then wugongeat:=true;
end;
if (eatset1<>30) and (strtoint(mainfrm.lowerlife0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[9].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[9].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset1)); end;
if (eatset2<>30) and (strtoint(mainfrm.life0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[9].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[9].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset2)); end;
if neigongeat=true then sendfb(leftclickshow1(1,eatset3));
if waigongeat=true then sendfb(leftclickshow1(1,eatset4));
if wugongeat =true then sendfb(leftclickshow1(1,eatset5));
if (eatset6<>30) and (strtoint(mainfrm.yuanqi0.Text)>= strtoint(trim(copy(mainfrm.basicattribe.Items.Item[5].SubItems.strings[0],0,pos('/',mainfrm.basicattribe.Items.Item[5].SubItems.strings[0])-1)))) then
begin sendfb(leftclickshow1(1,eatset6)); end;
end; //对应true的begin
end; //对应case的
end;
sleep(strtoint(mainfrm.Edit2.Text));
end;
until mainfrm.checkbox1.Checked=false;
end;
//循环点走路找怪
procedure Tmainfrm.crcrunTimer(Sender: TObject);
var i,sitxy:integer;manx,many:integer;
begin
manx:=abs(strtoint(StatusBar1.Panels[2].Text)-strtoint(listview1.Items.Item[0].SubItems[0]));
many:=abs(strtoint(StatusBar1.Panels[3].Text)-strtoint(listview1.Items.Item[0].SubItems[1]));
if (manx<3) and (many<3) then
begin
//设定循环
for i:=0 to listview1.Items.Count-1 do
begin
repeat
begin
manx:=abs(strtoint(StatusBar1.Panels[2].Text)-strtoint(listview1.Items.Item[i+1].SubItems[0]));
many:=abs(strtoint(StatusBar1.Panels[3].Text)-strtoint(listview1.Items.Item[i+1].SubItems[1]));
//设定走路开步法
if pos('无名步法',StatusBar1.Panels[1].Text)=0 then sendfb(leftclickshow1(4,7));
//设定走路
sendfb(movexy(strtoint(listview1.Items.Item[i].Caption),strtoint(StatusBar1.Panels[2].Text),strtoint(StatusBar1.Panels[3].Text)));
// memo1.lines.Add(inttostr(2));
// sleep(200);
case strtoint(listview1.Items.Item[i].Caption) of
0 : begin
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)-1);
end;
1 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)+1);
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)-1);
end;
2 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)+1);
end;
3 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)+1);
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)+1);
end;
4 : begin
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)+1);
end;
5 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)-1);
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)+1);
end;
6 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)-1);
end;
7 : begin
mainfrm.statusbar1.Panels[2].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[2].Text)-1);
mainfrm.statusbar1.Panels[3].Text:=inttostr(strtoint(mainfrm.statusbar1.Panels[3].Text)-1);
end;
end;
end;//case的end;
if clientsocket1.Active=false then exit;
until (manx<3) and (many<3) ;
if clientsocket1.Active=false then exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -