Показать сообщение отдельно
Старый 06.10.2008, 02:07   #75
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

В камаеле нельзя выбирать семена\плоды пока не наступило время продажи, так что приходится постоянно жать на менеджера и проверять состояние поместья:
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
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 06.10.2008 в 02:12.
Breadfan вне форума   Ответить с цитированием
За это сообщение Breadfan нажился 2 спасибками от: