В камаеле нельзя выбирать семена\плоды пока не наступило время продажи, так что приходится постоянно жать на менеджера и проверять состояние поместья:
delphi Код:
const
name='';
var
OIDnpc:integer;
MyX,MyY,Myz:integer;
start:boolean;
startsk,startcmd:ttimer;
kolvocmd,i,j,jj,x,step,st,p,SeedID,Seedcount,count,IDlist,ListSize:integer;
Buy:array[1..15,1..2] of integer;
CmdNpc:array[1..50] of string;
findt,oldpck,cmd,itemIDstr,countstr:string;
Ste:array[1..3] of integer;
procedure Init; //Вызывается при включении скрипта
begin
OIDnpc:=268476667; //ID манор менеджера
startcmd:=TTimer.Create(nil);
startcmd.OnTimer:=@scmd;
startcmd.enabled:=false;
startcmd.interval:=500;
startsk:=TTimer.Create(nil);
startsk.OnTimer:=@skupka;
startsk.enabled:=false;
startsk.interval:=50;
Ste[1]:= 1;
step:=0;
count:=0;
end;
procedure Free; //Вызывается при выключении скрипта
begin
startsk.free;
end;
procedure scmd;
begin
sendmsg(cmd);
RequestByPassToServer(cmd);
startcmd.enabled:=false;
end;
{procedure SendMsg(msg:string); //отправка системных сообщений клиенту
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClientEx(Name);
end;}
procedure Skupka;
begin
target(OIDnpc);
delay(500);
end;
procedure Target(Attacker: Integer);
begin
sendmsg('Target');
buf:=#$1f;
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
end;
procedure CmdNpcParc;
Begin
kolvocmd:=0;
for j:=1 to 2 do begin
CmdNpc[j]:='';
end;
sendmsg('search command');
for j:=1 to length(oldpck) do begin
for x:=0 to 9 do begin
findt:=findt+oldpck[j+x];
end;
if findt='bypass -h ' then begin
for x:=10 to 25 do begin
CmdNpc[kolvocmd+1]:=CmdNpc[kolvocmd+1]+oldpck[j+x];
end;
kolvocmd:=kolvocmd+1;
if kolvocmd>0 then exit
end;
findt:='';
end;
end;
procedure RequestByPassToServer(cmd:string);
begin
buf:=#$23;
WriteS(cmd);
SendToServerEx(Name);
end;
procedure RequestBuySeed;
begin
sendmsg('Buy Seed');
buf:=#$C5;
WriteD(IDlist);
WriteD(count);
for i:=1 to count do begin
WriteD(buy[i,1]);
WriteD(buy[i,2]);
end;
SendToServerEx(Name);
end;
//----------------------------------------------------------
begin
if FromClient and (ConnectName=name) and (pck[1]=#$59) then
begin
MyX:=ReadD(6);
MyY:=ReadD(10);
MyZ:=ReadD(14);
sendmsg('Есть координаты');
end;
if FromClient and (ConnectName=name) and (pck[1]=#$34) and (pck[2]=#$06) then
begin
sendmsg('Proba');
startsk.enabled:=true;
end;
if FromClient and (ConnectName=name) and (pck[1]=#$34) and (pck[2]=#$05) then startsk.enabled:=false;
if fromserver and (ConnectName=name) and (pck[1]=#$19) then begin
oldpck:=ReadS(6);
CmdNpcParc;
if not startcmd.enabled then step:=step+1;
if step=2 then step:=1;
cmd:=CmdNpc[ste[step]];
startcmd.enabled:=true;
end;
//------------Обрабатываем пакет BuyListSeed--------------
if fromserver and (ConnectName=name) and (pck[1]=#$e9) then begin
sendmsg('Search in packets #$E9');
startsk.enabled:=false;
IDlist:=ReadD(6);
ListSize:=ReadC(10);
jj:=1;
sendmsg(inttostr(Listsize));
for j:=1 to ListSize do begin
i:=18+((j-1)*22);
SeedID:=ReadD(i);
Seedcount:=ReadD(i);
if (Seedid=6754) or (Seedid=6755) or (Seedid=6755) or (Seedid=6756) or (Seedid=8521) or (Seedid=6757) or (Seedid=6758) or (Seedid=6759) or (Seedid=6760) or (Seedid=6761) or (Seedid=6773) or (Seedid=6774) or (Seedid=6775) or (Seedid=6776) or (Seedid=6777) or (Seedid=6778) or (Seedid=8228) or (Seedid=6762) or (Seedid=6763) or (Seedid=6764) or (Seedid=6765) or (Seedid=6766) or (Seedid=8229) then begin //or (Seedid=1829) or (Seedid=7134) or (Seedid=7126)
buy[jj,1]:=SeedID;
buy[jj,2]:=Seedcount;
count:=count+1;
inc(jj,1);
end else begin
startsk.enabled:=true;
end;
end;
if count<>0 then begin
RequestBuySeed;
startsk.enabled:=true;
count:=0;
end;
sendmsg('Finish Check');
end;
end.
Поставил длиннющую проверку совпадения ID, подозреваю что можно выдернуть их из ItemsId.INI по имени семечки но как недогадываюсь)) Также надо следить за OID манорщика, а в остальном скупает нормально. Здесь поставлена скупка простых голд дезерт ред коб семян. Запуск: немного пройтись (получить координаты), взять манорщика в таргет (можно кстати тут и сделать получение OID), нажать соц.ДА
Скрипт под версию 3.3.9