Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.06.2009, 14:20   #1
Пользователь
 
Регистрация: 26.08.2008
Сообщений: 30
Сказал Спасибо: 8
Имеет 10 спасибок в 3 сообщенях
ElKornacio пока неопределено
Радость Подборочка скриптов...

Сдул пыль со старого пнх, и достал оттуда бот найденый мною на кодриксе, но который я так и не смог запустить. Мозги подросли, перенастроил все пакеты, стёр лишнее(для меня лишнее), добавил новое и родил 2ух ботов - мага и спойлера.
Маг:
Delphi Код:
//Бот_маг with 'Hachling of Star' by NLObP // Edited by ElKornacio. Переведён под Грацию, не лупит игроков, которые лупят Вас и куча другого бреда, как автохилки и тп. { Социальное действие YES включить Социальное действие NO выключить Пить хилки - нажимаем на саааамый первый сошиал экшн в клиенте и стираем одну хилку. вот и всё. дальше она сама будет жрать хилки когда жизни меньше чем MinHP. NLObP: "Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя." А я тем более) } //****************************************************************************** Const   Name='ElKornacio';      //имя чара   max=50;         //max количество контролируемых мобов   Radius=4000;    //радиус участка для поиска мобов   DeltaZ=250;    //глубина/высота до мобов   Distance=700//дистанция до моба   DU=1031;   HB=1235;   SF=1265;   MinHP=1900;              ToCH='7D 01 00 00 00';   GKID='268464554';   RGKID='268465231'; //****************************************************************************** VAR   NameChar: string;   CharID, Attacker, ObjectID: integer;   tempX,tempY, tempLenght: extended;   tempZ, ColvoMobs: integer;   xe,ye: extended;   x,y,z,ox,oy,oz,n,tmp,tmp2: integer;    First,stoped:boolean;   Log:TStrings;   MobCurHP, MobMaxHP, CurHP, MaxHP, CurMP, MaxMP: integer;   BotCoordX,BotCoordY,BotCoordZ: integer; //координаты бота   BotCoordXext,BotCoordYext,BotCoordZext:extended;   MinPutID: integer; //указывает индекс моба в базе путь до которого самый короткий   MinPutLenght: extended; //расстояния до ближайшего моба   timer1: TTimer; //основной таймер   timerA: TTimer; //вспомогательный   i, itm, SocialID, HealID: integer; // вспомогательная   AddMob, UnderAttack, scrready, wh: boolean;   Text,Nick:string;   CharBase:   array[1..4,1..max] of integer// описатель игроков (которых не атакуем)   MobBase:    array[1..4,1..max] of integer// описатель мобов вокруг   MobBaseExt: array[1..4,1..max] of extended; // описатель мобов вокруг вспомогательная { 1 - ID   2 - X   3 - Y   4 - Z} //****************************************************************************** procedure Init; //Вызывается при включении скрипта begin   Log:=TStringList.Create;   UnderAttack:=false;   itm:=0;   scrready:=false;   colvomobs:=0;   timer1:=TTimer.Create(nil);   timer1.OnTimer:=@OnTimer1;   timer1.enabled:=False;   timer1.interval:=2000;        timerA:=TTimer.Create(nil);   timerA.OnTimer:=@OnTimerA;   timerA.enabled:=False;   timerA.interval:=500;        stoped:=true; end; procedure ReloadLog; var e:string; n:integer; begin n:=0; e:='<html>'; while n<>Log.Count do begin e:=e+Log[i]+'<br>'; n:=n+1; end; e:=e+'</html>'; buf:=#$19; WriteD(0); WriteS(e); SendToClientEx(Name); end; procedure AddLog(s:string); var t:string; begin t:=Log.Text; t:='['+TimeToStr(Time)+'] '+s+#13+t; Log.Text:=t; ReloadLog; end; procedure Free; //Вызывается при выключении скрипта begin   Log.Free;   timer1.Free;   timerA.Free;   stoped:=false;   wh:=false;   HealID:=0;   First:=true;   BotCoordX:=0;   BotCoordY:=0;   BotCoordZ:=0;   CharID:=0;   ObjectID:=0;   Attacker:=0; end; //****************************************************************************** //сообщения в приват, на сервер не отправляются procedure Say(msg:string); begin //AddLog(msg); end; {procedure SendHTML(s:String); begin buf:=#$23; WriteS('npc_'+GKID+'_'+s); SendToServer; end; procedure ComeToRune; begin buf:=hstr('0F 57 D0 FF FF F7 DF 01 00 C9 F3 FF FF'); WriteD(BotCoordX); WriteD(BotCoordY); WriteD(BotCoordZ); WriteD(1); SendToServerEx(Name); Delay(15000); buf:=hstr('0F 4C CE FF FF C3 DF 01 00 B9 F3 FF FF'); WriteD(BotCoordX); WriteD(BotCoordY); WriteD(BotCoordZ); WriteD(1); SendToServerEx(Name); Delay(6000); Attacker:=StrToInt(GKID); TargetAtt; SendHTML('goto 1041'); Delay(5000); Attacker:=StrToInt(RGKID); TargetAtt; TargetAtt; SendHTML('goto 1104'); Delay(5000); stoped:=false; Timer1.Enabled:=true; end;     } //0E=StatusUpdate:h(ObjectID)d(AttribCount)d(AttrID)d(AttrValue) procedure StatusUpdate; var i:integer; begin for i:=0 to ReadD(6)-1 do if pck[i*8+10]=#$09 then CurHP:=ReadD(i*8+14); if CurHP<=MinHP then begin buf:=#$19; WriteD(HealID); WriteD(0); SendToServerEx(Name); end; end; //****************************************************************************** procedure OnTimer1(Sender: TObject); begin   if Stoped=false then begin   if UnderAttack then exit;   MinPutID:=0;   MinPutLenght:=99999999;   for i:=1 to max do begin     if (MobBaseExt[1,i]<>0) then begin       tempX:=MobBaseExt[2,i];       tempY:=MobBaseExt[3,i];       tempLenght:=int(sqrt((BotCoordXext-tempx)*(BotCoordXext-tempx)+(BotCoordYext-tempy)*(BotCoordYext-tempy)));       if (tempLenght<MinPutLenght) and (CharID<>MobBase[1,i]) then begin       if (MinPutLenght-tempLenght)>=20 then begin         MinPutLenght:=tempLenght;         MinPutID:=i;                                    end;       end;     end;   end;   if (minputid<>0) then begin       Attacker:=MobBase[1,MinPutID];       TargetAttacker;       say('Атакуем моба!');   end;                        end;   end; //****************************************************************************** //01=MoveBackwardToLocation:d(targetX)d(targetY)d(targetZ)d(originX)d(originY)d(originZ)d(moveByMouse) procedure MoveDistance; begin   if Stoped=false then begin     xe:=MobBase[2,MinPutID]+Distance/4+round(random*(Distance/4));     ye:=MobBase[3,MinPutID]+Distance/4+round(random*(Distance/4));     x:=round(xe);     y:=round(ye);     z:=MobBase[4,MinPutID];     buf:=#$0F;     WriteD(x);     WriteD(y);     WriteD(z);     WriteD(BotCoordx);     WriteD(BotCoordy);     WriteD(BotCoordz);     WriteD(01);     SendToServerEx(Name);     say('Держим дистанцию');          end; end;      //****************************************************************************** procedure TargetAtt; begin   if Stoped=false then begin   buf:=#$1F;   WriteD(Attacker);   WriteD(BotCoordX);   WriteD(BotCoordY);   WriteD(BotCoordZ);   WriteC(00);   SendToServerEx(Name);        end; end; //*************************************************************** //2F=RequestMagicSkillUse:h(MagicID)d(CtrlPressed)b(ShiftPressed) procedure MagicSkillUse(MagicID:integer); begin     buf:=#$39;     WriteD(MagicID);     WriteD(00);     WriteC(00);     SendToServerEx(Name); end; //****************************************************************************** procedure OnTimerA(Sender: TObject); begin   if Stoped=false then begin   if First then begin MagicSkillUse(SF); First:=false; end;   Delay(50);   MagicSkillUse(HB);            end; end; //****************************************************************************** procedure TargetAttacker; begin   TargetAtt;   timerA.enabled:=true;   First:=true;   UnderAttack:=true; //зацепимся за атакуемого end; procedure iDie; begin   end; procedure WriteOK; begin buf:=hstr('49 59 00 65 00 73 00 20 00 53 00 69 00 72 00 21 00 00 00 03 00 00 00 '); SendToServerEx(Name); end; begin   //****************************************************************************   //не пропускаем пустые пакеты   if pck='' then exit;   //****************************************************************************   //16=NpcInfo:h(ObjectID)d(NpcTypeID)d(IsAttackable)d(X)d(Y)d(Z)d(Heading)d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRadius)f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(isRun)b(isInFight)b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d)d(karma?)d(abnEffect)d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collisHeight)d(d)   //NPCInfo, запоминаем мобов   if FromServer and (ConnectName=Name) and (pck[1]=#$0C) then begin     AddMob:=true;     //проверка, входит моб в радиус действия?     tempX:=ReadD(14); //x     tempY:=ReadD(18); //y     tempLenght:=sqrt((BotCoordX-tempX)*(BotCoordX-tempX)+(BotCoordY-tempY)*(BotCoordY-tempY));     //проверям, не под землей ли моб(в катакомбах)     tempZ:=BotCoordZ-ReadD(22);     if tempz<0 then tempZ:=tempz*(-1);     if tempZ<=DeltaZ then begin       if (tempLenght<Radius) then begin         for i:=1 to max do begin           //если нашли Моба в базе, то коректируем его координаты на новые           if (MobBase[1,i]=ReadD(2)) and (CharID<>ReadD(2)) then begin             MobBase[2,i]:=ReadD(14); //x             MobBase[3,i]:=ReadD(18); //y             MobBase[4,i]:=ReadD(22); //z             //Ext массив             MobBaseExt[2,i]:=ReadD(14); //x             MobBaseExt[3,i]:=ReadD(18); //y             MobBaseExt[4,i]:=ReadD(22); //z             AddMob:=false;           end;         end;         //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового моба         for i:=1 to max do begin           if (MobBase[1,i]=0) and AddMob and (CharID<>ReadD(2)) then begin             //запоминаем моба в свободную ячейку             MobBase[1,i]:=ReadD(2); //ObjectID             MobBase[2,i]:=ReadD(14); //x             MobBase[3,i]:=ReadD(18); //y             MobBase[4,i]:=ReadD(22); //z             //Ext массив             MobBaseExt[1,i]:=ReadD(2); //ObjectID             MobBaseExt[2,i]:=ReadD(14); //x             MobBaseExt[3,i]:=ReadD(18); //y             MobBaseExt[4,i]:=ReadD(22); //z             inc(colvomobs);             say('Запоминаем координаты Моба'+' Количество мобов: '+inttostr(colvomobs));             break;           end;         end;       end;     end;   end;     //****************************************************************************   //CharInfo, запоминаем игроков   if FromServer and (ConnectName=Name) and (pck[1]=#$31) then begin     AddMob:=true;     for i:=1 to max do begin       //если нашли чара в базе, то коректируем его координаты на новые       if (CharBase[1,i]=ReadD(18)) then begin         CharBase[2,i]:=ReadD(2)//x         CharBase[3,i]:=ReadD(6)//y         CharBase[4,i]:=ReadD(10); //z         AddMob:=false;       end;     end;     //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового чара     for i:=1 to max do begin       if (CharBase[1,i]=0) and AddMob then begin         //запоминаем моба в свободную ячейку         CharBase[1,i]:=ReadD(18); //ObjectID         CharBase[2,i]:=ReadD(2)//x         CharBase[3,i]:=ReadD(6)//y         CharBase[4,i]:=ReadD(10); //z         NameChar:=ReadS(22);         say('Приближается Игрок '+NameChar+'!!!');         break;       end;     end;     for i:=1 to max do begin       //если нашли Чара в базе Мобов, то удаляем его       if (MobBase[1,i]=ReadD(18)) then begin         MobBase[1,i]:=0; //x         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //x         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         dec(colvomobs);         say('Нашли Чара в базе Мобов, удаляем его'+' Количество мобов: '+inttostr(colvomobs));       end;     end;   end;          if FromServer and (pck[1]=#$4A) and (ReadD(6)=3) and (ReadS(10)='Marix') then begin   Text:=ReadS(22);      if Text='stop' then begin   timer1.enabled:=false;   timerA.enabled:=False;   underattack:=false;      BotCoordX:=0;   BotCoordY:=0;   BotCoordZ:=0;   Say('Команда Стоп!!!');   stoped:=true;      WriteOK;   end else   if Text='start' then begin   Say('Команда Старт!!!');   timer1.enabled:=true;   stoped:=false;    WriteOK;   end else   if Text='clear' then begin UnderAttack:=false; TimerA.enabled:=false; Attacker:=0; WriteOK; end else   if Text='unselect_target' then begin buf:=hstr('48 01 00'); SendToServerEx(Name); end else   if Text='go_with_me' then begin   tmp:=ReadD(2);   buf:=#$1F;   WriteD(tmp);   WriteD(BotCoordX);   WriteD(BotCoordY);   WriteD(BotCoordZ);   WriteC(00);   SendToServerEx(Name);   Delay(100);   buf:=#$1F;   WriteD(tmp);   WriteD(BotCoordX);   WriteD(BotCoordY);   WriteD(BotCoordZ);   WriteC(00);   SendToServerEx(Name);   WriteOK;   end;      end;   //****************************************************************************   //MoveToLocation, коректируем координаты мобов в базе   if FromServer and (ConnectName=Name) and (pck[1]=#$2F) then begin     AddMob:=true;     //проверка, входит моб в радиус действия?     tempX:=ReadD(6)//x     tempY:=ReadD(10); //y     tempLenght:=sqrt((BotCoordX-tempX)*(BotCoordX-tempX)+(BotCoordY-tempY)*(BotCoordY-tempY));     tempZ:=BotCoordZ-ReadD(14);     if tempz<0 then tempZ:=tempz*(-1);     if tempZ<=DeltaZ then begin       if (int(tempLenght)<Radius) then begin         //перебираем базу и ищем там моба, который бежит         for i:=1 to max do begin           //если нашли моба в базе, то коректируем его координаты на новые           if (MobBase[1,i]=ReadD(2)) and (CharID<>ReadD(2)) and (CharBase[1,i]<>ReadD(2)) then begin  //ObjectID             MobBase[2,i]:=ReadD(6)//x             MobBase[3,i]:=ReadD(10); //y             MobBase[4,i]:=ReadD(14); //z             //Ext массив             MobBaseExt[2,i]:=ReadD(6)//x             MobBaseExt[3,i]:=ReadD(10); //y             MobBaseExt[4,i]:=ReadD(14); //z             AddMob:=false;           end;         end;         //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового моба         for i:=1 to max do begin           if (MobBase[1,i]=0) and AddMob and (CharID<>ReadD(2)) then begin             //запоминаем моба в свободную ячейку             MobBase[1,i]:=ReadD(2); //ObjectID             MobBase[2,i]:=ReadD(6); //x             MobBase[3,i]:=ReadD(10); //y             MobBase[4,i]:=ReadD(14); //z             //Ext массив             MobBaseExt[1,i]:=ReadD(2); //ObjectID             MobBaseExt[2,i]:=ReadD(6); //x             MobBaseExt[3,i]:=ReadD(10); //y             MobBaseExt[4,i]:=ReadD(14); //z             inc(colvomobs);             break;           end;         end;       end;     end;   end;   //****************************************************************************   //MagicSkillUse 48, Attack 05   if FromServer and (ConnectName=Name) and ((pck[1]=#$48) or (pck[1]=#$33)) then begin     if UnderAttack then exit; //сначало убъем одного     tmp:=ReadD(2);     ObjectID:=ReadD(6);     tmp2:=0;     for i:=1 to max do if (CharBase[1,i]=tmp) then tmp2:=1;     if (tmp2=0) and (CharID=ObjectID) then begin       UnderAttack:=true;     //нас атакуют       Attacker:=tmp;       Say('Нас атакуют!');       TargetAttacker;     end;   end;   //****************************************************************************   //если принят пакет Die   if FromServer and (ConnectName=Name) and (pck[1]=#$00) then begin   if ReadD(2)<>CharID then begin     //ищем моба в базе     if (Attacker=ReadD(2)) then begin       UnderAttack:=false; //убили атакующего моба       timerA.enabled:=False;     end;     for i:=1 to max do begin       //очишаем запись связанную с етим мобом       if (MobBase[1,i]=ReadD(2)) then begin         dec(colvomobs);         MobBase[1,i]:=0; //ObjectID         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //ObjectID         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         break;       end;     end;                            end else begin     stoped:=true;     iDie;              say('Бот был остановлен в связи со смертью.');     end;   end;   if FromServer and (ConnectName=Name) and (pck[1]=#$23) then begin   // Здесь место для Вашей рекламы. А точнее для создания фигни, что бы бот не бил чужих мобов. Дерзайте :)   end;   //****************************************************************************   //если принят пакет DeleteObject   if FromServer and (ConnectName=Name) and (pck[1]=#$08) then begin     //ищем моба в базе     //say('DeleteObject');     if (Attacker=ReadD(2)) then begin       UnderAttack:=false; //убили атакующего моба       timerA.enabled:=False;     end;     for i:=1 to max do begin       //очишаем запись связанную с етим мобом       if (MobBase[1,i]=ReadD(2)) then begin         dec(colvomobs);         MobBase[1,i]:=0; //ObjectID         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //ObjectID         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         break;       end;     end;     for i:=1 to max do begin       //если нашли в базе, то удаляем       if (CharBase[1,i]=ReadD(2)) then begin         CharBase[2,i]:=0; //x         CharBase[3,i]:=0; //y         CharBase[4,i]:=0; //z       end;     end;   end;   //****************************************************************************   //ValidatePosition если принят пакет от клиента с моими кординатами то   if FromClient and (ConnectName=Name) and (pck[1]=#$59) then begin     //запоминаем мои координаты     BotCoordX:=ReadD(2);     BotCoordY:=ReadD(6);     BotCoordZ:=ReadD(10);     //ext     BotCoordXext:=ReadD(2);     BotCoordYext:=ReadD(6);     BotCoordZext:=ReadD(10);   end;   //****************************************************************************   //если от сервака принят пакет с UserInfo   if FromServer and (ConnectName=Name) and (pck[1]=#$32) then begin       //Запоминаем собственный ИД       CharID:=ReadD(18);       if scrready then exit       else begin         Say('Бот готов. ID лидера записаны.');         scrready:=true;       end;   end;   if FromClient and (ConnectName=Name) and (pck[1]=#$60) and (wh) then begin wh:=false; say('ID банки записаны!'); HealID:=ReadD(2); end;   if FromServer and (ConnectName=Name) and (pck[1]=#$18) and (CharID=ReadD(2)) then StatusUpdate;       if FromClient {and (ConnectName=Name)} and (pck[1]=#$34) then begin     SocialID:=ReadD(2);     case SocialID of       //социальное действие Yes для начала       6: begin         Say('Команда Старт!!!');         timer1.enabled:=true;         stoped:=false;         exit;         pck:='';       end;       //социальное действие No для окончания       5: begin         //if CharID=0 then exit;         timer1.enabled:=false;         timerA.enabled:=False;         underattack:=false;            BotCoordX:=0;         BotCoordY:=0;         BotCoordZ:=0;         Say('Команда Стоп!!!');         stoped:=true;         exit;            pck:='';       end;       2: begin wh:=true; say('Ожидаем удаления банки'); pck:=''; end;       3: begin wh:=false; say('Отменено удаление банки'); pck:=''; end;       4: begin pck:=''; UnderAttack:=false; TimerA.enabled:=false; Attacker:=0end;       end;       end; end.

Спойлер:
delphi Код:
//Бот_маг with 'Hachling of Star' by NLObP // Edited by ElKornacio. Переведён под Грацию, не лупит игроков, которые лупят Вас. Да и вообще.. Теперь это бот-воин-спойлер, а не маг :) { Социальное действие YES включить Социальное действие NO выключить Пить хилки - нажимаем на саааамый первый сошиал экшн в клиенте и стираем одну хилку. вот и всё. дальше она сама будет жрать хилки когда жизни меньше чем MinHP. NLObP: "Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя." А я тем более) } //****************************************************************************** Const   Name='Zhirdyachik';      //имя чара   max=50;         //max количество контролируемых мобов   Radius=4000;    //радиус участка для поиска мобов   DeltaZ=250;    //глубина/высота до мобов   Distance=700//дистанция до моба   MinHP=1500;   Spoil=254;   Sweeper=42;          //****************************************************************************** VAR   NameChar: string;   CharID, Attacker, ObjectID: integer;   tempX,tempY, tempLenght: extended;   tempZ, ColvoMobs: integer;   xe,ye: extended;   x,y,z,ox,oy,oz,n,tmp,tmp2: integer;    stoped:boolean;   Log:TStrings;   MobCurHP, MobMaxHP, CurHP, MaxHP, CurMP, MaxMP: integer;   BotCoordX,BotCoordY,BotCoordZ: integer; //координаты бота   BotCoordXext,BotCoordYext,BotCoordZext:extended;   MinPutID: integer; //указывает индекс моба в базе путь до которого самый короткий   MinPutLenght: extended; //расстояния до ближайшего моба   timer1: TTimer; //основной таймер   timerA: TTimer; //вспомогательный   i, itm, SocialID, HealID: integer; // вспомогательная   AddMob, UnderAttack, scrready, wh, Spoiled: boolean;   Text,Nick:string;      IDH:TStrings;   CharBase:   array[1..4,1..max] of integer// описатель игроков (которых не атакуем)   MobBase:    array[1..4,1..max] of integer// описатель мобов вокруг   MobBaseExt: array[1..4,1..max] of extended; // описатель мобов вокруг вспомогательная { 1 - ID   2 - X   3 - Y   4 - Z} //****************************************************************************** procedure Init; //Вызывается при включении скрипта begin   Log:=TStringList.Create;   UnderAttack:=false;   itm:=0;   scrready:=false;   colvomobs:=0;   timer1:=TTimer.Create(nil);   timer1.OnTimer:=@OnTimer1;   timer1.enabled:=False;   timer1.interval:=2000;        timerA:=TTimer.Create(nil);   timerA.OnTimer:=@OnTimerA;   timerA.enabled:=False;   timerA.interval:=500;        stoped:=true;   IDH:=TStringList.Create;      IDH.LoadFromFile('IDH.txt');   HealID:=StrToInt(IDH[0]); end; procedure Free; //Вызывается при выключении скрипта begin   Log.Free;   timer1.Free;   timerA.Free;   stoped:=false;   wh:=false;        IDH[0]:=IntToStr(HealID);   IDH.SaveToFile('IDH.txt');   HealID:=0;   BotCoordX:=0;   BotCoordY:=0;   BotCoordZ:=0;   CharID:=0;   ObjectID:=0;   Attacker:=0;    end; procedure Say(msg:string); begin //AddLog(msg); end; procedure StatusUpdate; var i:integer; begin for i:=0 to ReadD(6)-1 do if pck[i*8+10]=#$09 then CurHP:=ReadD(i*8+14); if CurHP<=MinHP then begin buf:=#$19; WriteD(HealID); WriteD(0); SendToServerEx(Name); end; end; procedure OnTimer1(Sender: TObject); begin   if Stoped=false then begin   if UnderAttack then exit;   MinPutID:=0;   MinPutLenght:=99999999;   for i:=1 to max do begin     if (MobBaseExt[1,i]<>0) then begin       tempX:=MobBaseExt[2,i];       tempY:=MobBaseExt[3,i];       tempLenght:=int(sqrt((BotCoordXext-tempx)*(BotCoordXext-tempx)+(BotCoordYext-tempy)*(BotCoordYext-tempy)));       if (tempLenght<MinPutLenght) and (CharID<>MobBase[1,i]) then begin         MinPutLenght:=tempLenght;         MinPutID:=i;                                  end;     end;   end;   if (minputid<>0) then begin       Attacker:=MobBase[1,MinPutID];       TargetAttacker;       say('Атакуем моба!');   end;                        end;   end;    procedure TargetAtt; begin   if Stoped=false then begin   buf:=#$1F;   WriteD(Attacker);   WriteD(BotCoordX);   WriteD(BotCoordY);   WriteD(BotCoordZ);   WriteC(00);   SendToServerEx(Name);        end; end; procedure MagicSkillUse(MagicID:integer); begin     buf:=#$39;     WriteD(MagicID);     WriteD(00);     WriteC(00);     SendToServerEx(Name); end; procedure OnTimerA(Sender: TObject); begin if (Stoped=false) and (UnderAttack) and (Spoiled=false) then begin MagicSkillUse(Spoil); TargetAtt; end;          end; procedure TargetAttacker; begin   TargetAtt; //Берём в таргет   timerA.enabled:=true;   Spoiled:=false;   UnderAttack:=true; //зацепимся за атакуемого end; begin   //не пропускаем пустые пакеты   if pck='' then exit;     //NPCInfo, запоминаем мобов   if FromServer and (ConnectName=Name) and (pck[1]=#$0C) then begin     AddMob:=true;     //проверка, входит моб в радиус действия?     tempX:=ReadD(14); //x     tempY:=ReadD(18); //y     tempLenght:=sqrt((BotCoordX-tempX)*(BotCoordX-tempX)+(BotCoordY-tempY)*(BotCoordY-tempY));     //проверям, не под землей ли моб(в катакомбах)     tempZ:=BotCoordZ-ReadD(22);     if tempz<0 then tempZ:=tempz*(-1);     if tempZ<=DeltaZ then begin       if (tempLenght<Radius) then begin         for i:=1 to max do begin           //если нашли Моба в базе, то коректируем его координаты на новые           if (MobBase[1,i]=ReadD(2)) and (CharID<>ReadD(2)) then begin             MobBase[2,i]:=ReadD(14); //x             MobBase[3,i]:=ReadD(18); //y             MobBase[4,i]:=ReadD(22); //z             //Ext массив             MobBaseExt[2,i]:=ReadD(14); //x             MobBaseExt[3,i]:=ReadD(18); //y             MobBaseExt[4,i]:=ReadD(22); //z             AddMob:=false;           end;         end;         //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового моба         for i:=1 to max do begin           if (MobBase[1,i]=0) and AddMob and (CharID<>ReadD(2)) then begin             //запоминаем моба в свободную ячейку             MobBase[1,i]:=ReadD(2); //ObjectID             MobBase[2,i]:=ReadD(14); //x             MobBase[3,i]:=ReadD(18); //y             MobBase[4,i]:=ReadD(22); //z             //Ext массив             MobBaseExt[1,i]:=ReadD(2); //ObjectID             MobBaseExt[2,i]:=ReadD(14); //x             MobBaseExt[3,i]:=ReadD(18); //y             MobBaseExt[4,i]:=ReadD(22); //z             inc(colvomobs);             say('Запоминаем координаты Моба'+' Количество мобов: '+inttostr(colvomobs));             break;           end;         end;       end;     end;   end;     //CharInfo, запоминаем игроков   if FromServer and (ConnectName=Name) and (pck[1]=#$31) then begin     AddMob:=true;     for i:=1 to max do begin       //если нашли чара в базе, то коректируем его координаты на новые       if (CharBase[1,i]=ReadD(18)) then begin         CharBase[2,i]:=ReadD(2)//x         CharBase[3,i]:=ReadD(6)//y         CharBase[4,i]:=ReadD(10); //z         AddMob:=false;       end;     end;     //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового чара     for i:=1 to max do begin       if (CharBase[1,i]=0) and AddMob then begin         //запоминаем моба в свободную ячейку         CharBase[1,i]:=ReadD(18); //ObjectID         CharBase[2,i]:=ReadD(2)//x         CharBase[3,i]:=ReadD(6)//y         CharBase[4,i]:=ReadD(10); //z         NameChar:=ReadS(22);         say('Приближается Игрок '+NameChar+'!!!');         break;       end;     end;     for i:=1 to max do begin       //если нашли Чара в базе Мобов, то удаляем его       if (MobBase[1,i]=ReadD(18)) then begin         MobBase[1,i]:=0; //x         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //x         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         dec(colvomobs);         say('Нашли Чара в базе Мобов, удаляем его'+' Количество мобов: '+inttostr(colvomobs));       end;     end;   end;        //MoveToLocation, коректируем координаты мобов в базе   if FromServer and (ConnectName=Name) and (pck[1]=#$2F) then begin     AddMob:=true;     //проверка, входит моб в радиус действия?     tempX:=ReadD(6)//x     tempY:=ReadD(10); //y     tempLenght:=sqrt((BotCoordX-tempX)*(BotCoordX-tempX)+(BotCoordY-tempY)*(BotCoordY-tempY));     tempZ:=BotCoordZ-ReadD(14);     if tempz<0 then tempZ:=tempz*(-1);     if tempZ<=DeltaZ then begin       if (int(tempLenght)<Radius) then begin         //перебираем базу и ищем там моба, который бежит         for i:=1 to max do begin           //если нашли моба в базе, то коректируем его координаты на новые           if (MobBase[1,i]=ReadD(2)) and (CharID<>ReadD(2)) and (CharBase[1,i]<>ReadD(2)) then begin  //ObjectID             MobBase[2,i]:=ReadD(6)//x             MobBase[3,i]:=ReadD(10); //y             MobBase[4,i]:=ReadD(14); //z             //Ext массив             MobBaseExt[2,i]:=ReadD(6)//x             MobBaseExt[3,i]:=ReadD(10); //y             MobBaseExt[4,i]:=ReadD(14); //z             AddMob:=false;           end;         end;         //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового моба         for i:=1 to max do begin           if (MobBase[1,i]=0) and AddMob and (CharID<>ReadD(2)) then begin             //запоминаем моба в свободную ячейку             MobBase[1,i]:=ReadD(2); //ObjectID             MobBase[2,i]:=ReadD(6); //x             MobBase[3,i]:=ReadD(10); //y             MobBase[4,i]:=ReadD(14); //z             //Ext массив             MobBaseExt[1,i]:=ReadD(2); //ObjectID             MobBaseExt[2,i]:=ReadD(6); //x             MobBaseExt[3,i]:=ReadD(10); //y             MobBaseExt[4,i]:=ReadD(14); //z             inc(colvomobs);             break;           end;         end;       end;     end;   end;   //MagicSkillUse , Attack   if FromServer and (ConnectName=Name) and ((pck[1]=#$48) or (pck[1]=#$33)) then begin     if UnderAttack then exit; //сначало убъем одного     tmp:=ReadD(2);     ObjectID:=ReadD(6);     tmp2:=0;     for i:=1 to max do if (CharBase[1,i]=tmp) then tmp2:=1;     if (tmp2=0) and (CharID=ObjectID) and (tmp<>CharID) then begin       UnderAttack:=true;     //нас атакуют       Attacker:=tmp;       Say('Нас атакуют!');       TargetAttacker;     end;   end;   //если принят пакет Die   if FromServer and (ConnectName=Name) and (pck[1]=#$00) then begin   if ReadD(2)<>CharID then begin     //ищем моба в базе     if (Attacker=ReadD(2)) then begin       UnderAttack:=false; //убили атакующего моба       timerA.enabled:=False;       if Spoiled then MagicSkillUse(Sweeper);       Spoiled:=false;     end;     for i:=1 to max do begin       //очишаем запись связанную с етим мобом       if (MobBase[1,i]=ReadD(2)) then begin         dec(colvomobs);         MobBase[1,i]:=0; //ObjectID         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //ObjectID         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         break;       end;     end;                            end else begin     stoped:=true;          say('Бот был остановлен в связи со смертью.');     end;   end;   if FromServer and (ConnectName=Name) and (pck[1]=#$23) then begin   // Здесь место для Вашей рекламы. А точнее для создания фигни, что бы бот не бил чужих мобов. Дерзайте :)   end;   //если принят пакет DeleteObject   if FromServer and (ConnectName=Name) and (pck[1]=#$08) then begin     if (Attacker=ReadD(2)) then begin       UnderAttack:=false; //убили атакующего моба       timerA.enabled:=False;     end;     for i:=1 to max do begin       //очишаем запись связанную с етим мобом       if (MobBase[1,i]=ReadD(2)) then begin         dec(colvomobs);         MobBase[1,i]:=0; //ObjectID         MobBase[2,i]:=0; //x         MobBase[3,i]:=0; //y         MobBase[4,i]:=0; //z         //Ext массив         MobBaseExt[1,i]:=0; //ObjectID         MobBaseExt[2,i]:=0; //x         MobBaseExt[3,i]:=0; //y         MobBaseExt[4,i]:=0; //z         break;       end;     end;     for i:=1 to max do begin       //если нашли в базе, то удаляем       if (CharBase[1,i]=ReadD(2)) then begin         CharBase[2,i]:=0; //x         CharBase[3,i]:=0; //y         CharBase[4,i]:=0; //z       end;     end;   end;   //ValidatePosition если принят пакет от клиента с моими кординатами то   if FromClient and (ConnectName=Name) and (pck[1]=#$59) then begin     //запоминаем мои координаты     BotCoordX:=ReadD(2);     BotCoordY:=ReadD(6);     BotCoordZ:=ReadD(10);     //ext     BotCoordXext:=ReadD(2);     BotCoordYext:=ReadD(6);     BotCoordZext:=ReadD(10);   end;   //если от сервака принят пакет с UserInfo   if FromServer and (ConnectName=Name) and (pck[1]=#$32) then begin       //Запоминаем собственный ИД       CharID:=ReadD(18);       if scrready then exit       else begin         Say('Бот готов. ID лидера записаны.');         scrready:=true;       end;   end;   if FromClient and (ConnectName=Name) and (pck[1]=#$60) and (wh) then begin wh:=false; say('ID банки записаны!'); HealID:=ReadD(2); pck:=''; end;   if FromServer and (ConnectName=Name) and (pck[1]=#$18) and (CharID=ReadD(2)) then StatusUpdate;   if FromServer and (ConnectName=Name) and (pck[1]=#$62) and (ReadD(2)=612) then Spoiled:=true;      if FromClient and (ConnectName=Name) and (pck[1]=#$34) then begin     SocialID:=ReadD(2);     case SocialID of       //социальное действие Yes для начала       6: begin         Say('Команда Старт!!!');         timer1.enabled:=true;         stoped:=false;            UnderAttack:=false;         pck:='';         exit;       end;       //социальное действие No для окончания       5: begin         //if CharID=0 then exit;         timer1.enabled:=false;         timerA.enabled:=False;         underattack:=false;            BotCoordX:=0;         BotCoordY:=0;         BotCoordZ:=0;         Say('Команда Стоп!!!');         stoped:=true;         pck:='';         exit;                  end;       2: begin wh:=true; say('Ожидаем удаления банки'); pck:=''; end;       3: begin wh:=false; say('Отменено удаление банки'); pck:=''; end;       4: begin pck:=''; UnderAttack:=false; TimerA.enabled:=false; Attacker:=0end;     end;   end; end.

Для игроков fanage.ru, которым недавно подсунули тривиального антибота(при входе в игру диалог, в котором просят ввести код с картинок, минуту не вводишь - дисконнект):
delphi Код:
// тупо включи и наслаждайся жизнью. var ids:array[0..9] of integer; s:string; html:string; tmp:TStrings; i:integer; procedure Init; begin ids[1]:=1; ids[2]:=6; ids[3]:=3; ids[4]:=9; ids[5]:=5; ids[6]:=2; ids[7]:=8; ids[8]:=0; ids[9]:=4; ids[0]:=7; end; function MiniSR(Sourse,Old,New:string):string; var i:integer; e,s:string; begin i:=Pos(Old,Sourse); s:=Copy(Sourse,0,i-1); e:=Copy(Sourse,i+length(Old),length(Sourse)-i); Result:=s+New+e; end; function SR(Sourse,Old,New:string):string; begin while Pos(Old,Sourse)<>0 do Sourse:=MiniSR(Sourse,Old,New); Result:=Sourse; end; begin if pck[1]=#$19 then begin s:=''; html:=ReadS(6); if Copy(html,Pos('<title>',html)+7,13)='Антибот(тест)' then begin HTML:=Copy(Html,Pos('<table>',html)+7,length(html)-Pos('<table>',html)); HTML:=Copy(html,0,Pos('</table>',html)-1); HTML:=SR(html,'<tr><td>',''); HTML:=SR(HTML,'</td></tr>',''); HTML:=SR(html,'</td><td>',#13); tmp:=TStringList.Create; tmp.Text:=html; i:=0; while i<>tmp.Count do begin tmp[i]:=Copy(tmp[i],Pos('00',tmp[i])+2,1); s:=s+IntToStr(ids[StrToInt(tmp[i])]);; i:=i+1; end; buf:=#$23; WriteS('capcha '+s); SendToServer; pck:=''; end; end; end.

Ещё есть скрипт которым очень удобно слать месаги в чат с предметами. другими словами вы можете подменять предметы и шокировать ваших друзей чужой маджой или Ы пухой с рынка. Ах да, этот скрип НЕ для установки галочки, его надо запускать через вкладку дополнительно.

delphi Код:
var e:string; begin buf:=#$49; e:=chr(8); e:=e+'Type=1 ID=269991058 Color=0 Underline=0 Title='; e:=e+#$1B; e:=e+'Анальные шарики'; e:=e+#$1B+chr(8); e:=e+'. Доставь себе удовольствие за 50кк!!))'; WriteS(e); WriteD(4); SendToServer; end.

Ну и гвоздь программы - мой скрипт на рыбалку. Интелект на уровне ИИ. Тыкаем - не попали, тыкаем другое, пока сново не промажем. как ни странно но помогает) умеет кушать соски. для его работы вы обязаны создать файл IDs.txt в папке пнх и записать в 6 строчек нули. потом работаем с сошиал экшенами и указываем ID сосок, удочки, пушки и тп..

delphi Код:
const Fishing=1312; Reeling=1313; RFail=1468; Pumping=1314; PFail=1466; AF=1231; MoveTime=300; MinHP=2200; Name='ElKornacio'; var CharID,MobID,X,Y,Z,tmp,ShotID,SocialID,PuhaID,colv,Udochka,Nazhivka,HealID:integer; stoped,Skill,wh,wh2,wh3,wh4,wh5,First,InFishing,InWar:boolean; LT,AT:TTimer; IDs:TStrings; procedure OnTimer(Sender:TObject); begin if Skill then begin UseItem(ShotID); MagicSkillUse(Reeling); end else begin UseItem(ShotID); MagicSkillUse(Pumping); end; end; procedure StatusUpdate; var i,CurHP:integer; begin for i:=0 to ReadD(6)-1 do if pck[i*8+10]=#$09 then CurHP:=ReadD(i*8+14); if CurHP<=MinHP then UseItem(HealID); end; procedure Init; //Вызывается при включении скрипта begin CharID:=0; MobID:=0; Skill:=true; stoped:=true; LT:=TTimer.Create(nil); LT.Interval:=250; LT.OnTimer:=@OnTimer; LT.Enabled:=false; AT:=TTimer.Create(nil); AT.Interval:=MoveTime; AT.OnTimer:=@OnTimerA; AT.Enabled:=false; wh:=false; wh2:=false; wh3:=false; wh4:=false; InFishing:=false; InWar:=false; IDs:=TStringList.Create; IDs.LoadFromFile('IDs.txt'); ShotID:=StrToInt(IDs[0]); PuhaID:=StrToInt(IDs[1]); Udochka:=StrToInt(IDs[2]); Nazhivka:=StrToInt(IDs[3]); HealID:=StrToInt(IDs[4]); end; procedure OnTimerA(Sender: TObject); begin if InWar then begin MagicSkillUseA(AF);    if colv=12 then begin AT.Enabled:=false; UseItem(Udochka); UseItem(Nazhivka); MagicSkillUse(Fishing); LT.Enabled:=false; InWar:=false; end else colv:=colv+1; end;        end; procedure Free; begin LT.Free; AT.Free; IDs.Clear; IDs.Add(IntToStr(ShotID)); IDs.Add(IntToStr(PuhaID)); IDs.Add(IntToStr(Udochka)); IDs.Add(IntToStr(Nazhivka)); IDs.Add(IntToStr(HealID)); IDs.SaveToFile('IDs.txt'); IDs.Free; end; procedure UseItem(ItemID:integer); begin buf:=#$19; WriteD(ItemID); WriteD(0); SendToServerEx(Name); end; procedure MagicSkillUse(MagicID:integer); begin if stoped=false then begin buf:=#$39; WriteD(MagicID); WriteD(00); WriteC(00); SendToServerEx(Name); end; end; procedure MagicSkillUseA(MagicID:integer); begin buf:=#$39; WriteD(MagicID); WriteD(01); WriteC(00); SendToServerEx(Name); end; procedure TargetAttacker; begin buf:=#$1F; WriteD(MobID); WriteD(X); WriteD(Y); WriteD(Z); WriteC(00); SendToServerEx(Name); end; procedure Say(s:string); begin buf:=#$4A; WriteD(CharID); WriteD(1); WriteS(Name); WriteS(s); SendToClientEx(Name); end; begin   if FromServer and (ConnectName=Name) and (pck[1]=#$33) then begin     tmp:=ReadD(6);     if (CharID=tmp) and (InWar=false) then begin       Say('Нас ударили');          InWar:=true;                                                              if InFishing then MagicSkillUse(Fishing);       LT.Enabled:=false;       UseItem(PuhaID);       MobID:=ReadD(2);       colv:=0;                TargetAttacker;       AT.Enabled:=true;     end;   end else          if FromClient and (ConnectName=Name) and (pck[1]=#$59) then begin     X:=ReadD(2);     Y:=ReadD(6);     Z:=ReadD(10);   end else   if FromServer and (ConnectName=Name) and (pck[1]+pck[2]=#$FE+#$27) then begin   if stoped=false then begin   Skill:=true;   LT.Enabled:=true;            end;   end else          if FromClient and (ConnectName=Name) and (pck[1]=#$34) then begin   SocialID:=ReadD(2);   case SocialID of        6: begin stoped:=false; AT.Enabled:=false; MagicSkillUse(Fishing); pck:=''; end;   5: begin if InFishing then MagicSkillUse(Fishing); stoped:=true; LT.Enabled:=false; AT.Enabled:=false; pck:=''; end;   2: begin wh:=true; pck:=''; end;   3: begin wh2:=true; pck:=''; end;   7: begin wh3:=true; pck:=''; end;   8: begin wh4:=true; pck:=''; end;   9: begin wh5:=true; pck:=''; end;   4: begin pck:=''; stoped:=false; MagicSkillUseA(AF); stoped:=true; end;    end;   end else   if FromClient and (ConnectName=Name) and (pck[1]=#$17) then begin   if (wh) then begin wh:=false; ShotID:=ReadD(2); end else   if (wh3) then begin wh3:=false; Udochka:=ReadD(2); end else   if (wh4) then begin wh4:=false; Nazhivka:=ReadD(2); end else   if (wh5) then begin wh5:=false; HealID:=ReadD(2); end else      if (wh2) then begin wh2:=false; PuhaID:=ReadD(2); end;   end else   if FromServer and (ConnectName=Name) and (pck[1]=#$62) then begin      if (ReadD(2)=RFail) or (ReadD(2)=PFail) then Skill:=not Skill;   end else   if FromServer and (ConnectName=Name) and (pck[1]+pck[2]=#$FE+#$1F) then begin   InFishing:=false;   if InWar=false then begin   LT.Enabled:=false;   Delay(500);   MagicSkillUse(Fishing);   end;   end else   if FromServer and (ConnectName=Name) and (pck[1]+pck[2]=#$FE+#$1E) then InFishing:=true else   if FromServer and (ConnectName=Name) and (pck[1]=#$32) then CharID:=ReadD(18) else   if FromServer and (ConnectName=Name) and (pck[1]=#$18) and (CharID=ReadD(2)) then StatusUpdate; end.

На самом деле он корявый до безумия, но мне нравицо

Ну вроде всё... если что то кто то ниасилил - пишите..
ElKornacio вне форума   Ответить с цитированием
За это сообщение ElKornacio нажился 5 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 22:27.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!