Показать сообщение отдельно
Старый 31.08.2008, 14:58   #470
Местный
 
Аватар для 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,itemID,itemcount,count,IDlist:integer; Buy:array[1..15,1..2] of integer; //массив для хранения ID и количества итемов в Buy-листе CmdNpc:array[1..50] of string; findt,oldpck,cmd,itemIDstr,countstr:string; Ste:array[1..3] of integer; //в этом массиве содержится последовательность номеров нажимаемых кнопок в меню procedure Init; begin OIDnpc:=0//Ввести OID нпс кланхолла startcmd:=TTimer.Create(nil)//счетчик для отсылки команд startcmd.OnTimer:=@scmd; startcmd.enabled:=false; startcmd.interval:=1500; startsk:=TTimer.Create(nil)//счетчик для частоты пробы покупки startsk.OnTimer:=@skupka; startsk.enabled:=false; startsk.interval:=1000*60*1; Ste[1]:= 3; Ste[2]:= 4; ste[3]:= 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(800); target(OIDnpc); delay(800); end; procedure Target(Attacker: Integer); begin   buf:=#$1f;   WriteD(Attacker);   WriteD(MyX);   WriteD(MyY);   WriteD(MyZ);   WriteC(00);   SendToServerEx(Name); end; procedure CmdNpcParc; Begin kolvocmd:=0; for j:=1 to 50 do begin CmdNpc[j]:=''; end; 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;     end;     findt:=''; end; end; procedure RequestByPassToServer(cmd:string); begin   buf:=#$23;   WriteS(cmd);   SendToServerEx(Name); end; procedure RequestBuyItem; begin   buf:=#$40;   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);         end; if FromClient and (ConnectName=name) and (pck[1]=#$34)  and (pck[2]=#$06) then startsk.enabled:=true; 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=4 then step:=1;    cmd:=CmdNpc[ste[step]];    startcmd.enabled:=true; end; if fromserver and (ConnectName=name) and (pck[1]=#$07) then begin    IDlist:=ReadD(6);    jj:=1;    for j:=1 to 15 do begin           //берем первые 15 итемов из buy-листа, мне более ненужно       i:=18+((j-1)*64);       itemID:=ReadD(i);       itemcount:=ReadD(i);       if (itemID=5858) or (itemid=1829) or (itemid=7134) or (itemid=7126) then begin  //здесь ID вещей которые хотелось бы купить       buy[jj,1]:=ItemID;       buy[jj,2]:=itemcount;       count:=count+1;       inc(jj,1);       end;    end; if count<>0 then begin    RequestBuyItem;    count:=0;    end; end; end.
Прошу вашей помощи в оптимизации скрипта, он как-то вышел кривобоко ппц
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

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

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