Jump to content

Recommended Posts

Posted

Here I'm planned posted scripts for l2packetHack, and replanish of content.

Ferst script "warrior helper" Char warrior fallawing the main char and help him in a fight)

 

 

 

Capabilities:

1. Can fallaw the player

2. Help fight.

3. Can healing (HP pots).

4. For script it's not importantly that players in party, or not in party.

5. Working on same Interlude servers

 

Instruction:

1. Run packet hack

2. Run 2 client's of the game.

3. Ask the name of main charecter and support.

4. Carefully configure other constant's in script.

5.Run script

}

//######################## Section of configure######################################################

const

interlude = true;  // C6 - true,  C4 - false;

CommanderName = 'abc';          // nick of main charecter

AssistantName = 'def';          // nick of helper

CommanderBot = true;            // main it's bot or man

HPMedium = 70;                  // % when we must healing HP with pots

HPBottleID = 1061;              //  ItemID 1060=Lesser Healing Potion;    1061=Healing Potion;  1539=Greater Healing Potion;

DrinkDelay = 14;                // reapeat time (10 - 20 sec)

InvRazmer = 99;                  // Inventor from assistant -1 (if invetor 80, then writting 79, if 100, so writting 99)

//#################################################################################################

 

var

CommanderX, CommanderY, CommanderZ : integer;            // my stats

CommanderID, CommanderHP, CommanderMaxHP: integer;

 

AssistX, AssistY, AssistZ : integer;                    // stats helper

AssistID, AssistHP, AssistMaxHP: integer;

AssistMP, AssistMaxMP : integer;

AssistHPlevelProcent : integer;

 

TargetID : integer;

time1: integer;

Inventory: array[0..InvRazmer, 0..9] of integer;  // inventor (itemType1, ObjectID, ItemID, count, itemType2, CustType1, isEquipped, BodyPart, EnchantLevel, CustType2)

HPBottleObjID: integer;                          // ObjectID pots

HpBottleCount: integer;                          // how long pots

 

procedure Init; //begining when script started

begin

  CommanderID:= 0;        // zero all data

  CommanderX:= 0;

  CommanderY:= 0;

  CommanderZ:= 0;

  CommanderID:= 0;

  CommanderHP:= 0;

  CommanderMaxHP:= 0;

//  MyMP:= 0;

//  MyMaxMP:= 0;

  AssistID:= 0;

  AssistX:= 0;

  AssistY:= 0;

  AssistZ:= 0;

  AssistID:= 0;

  AssistHP:= 0;

  AssistMaxHP:= 0;

  AssistMP:= 0;

  AssistMaxMP:= 0;

  TargetID:=0;

  time1:=1;

  buf:= #$0F;                            //requiers packet of invetor and userinfo

  SendToServerEx(AssistantName);

  SendToServerEx(CommanderName);

end;

 

function Wait(var tick: integer;Timewait: Integer): Boolean; // сквозная проверка без остановки скрипта ©dmitry501, modifed by Sh00rGo

var

  t: integer;

begin

  result:=false;

  t:=Round(Time*86400);

  if t>(tick+Timewait) then begin

    if tick>0 then result:=true;

    tick:=t;

  end;

end;

 

//############################## Модуль работы с Инвентарем ###########################

procedure InventoryCreate;

var

  i,k, offset : integer;

begin

  if interlude then offset:= 8 else offset:=0;

  for i:=0 to InvRazmer do

    if (i<ReadH(4)) then begin

      Inventory[i,0]:=ReadH(i*(28+offset)+6);  // itemType1

      Inventory[i,1]:=ReadD(i*(28+offset)+8);  // ObjectId

      Inventory[i,2]:=ReadD(i*(28+offset)+12); // ItemID

      Inventory[i,3]:=ReadD(i*(28+offset)+16); // count

      Inventory[i,4]:=ReadH(i*(28+offset)+20); // itemType2

      Inventory[i,5]:=ReadH(i*(28+offset)+22); // CustType1

      Inventory[i,6]:=ReadH(i*(28+offset)+24); // isEquipped

      Inventory[i,7]:=ReadD(i*(28+offset)+26); // BodyPart

      Inventory[i,8]:=ReadH(i*(28+offset)+30); // EnchantLevel

      Inventory[i,9]:=ReadH(i*(28+offset)+32); // CustType2

    end else

      for k:=0 to 9 do Inventory[i,k]:=0; // забиваем нулями

end;

 

function GetInv(obj,up,down:integer): integer; // up и down не проверяются

  var // 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2

    i: integer;

begin

  for i:=0 to InvRazmer do if (Inventory[i,up]=obj) then

  begin

    Result:=Inventory[i,down];

    exit;

  end;

  Result:=-1;

end;

 

procedure UseItemObjID(ItemObjID:integer);      //Использовать предмет с заданным ItemID

begin

  buf:=#$14;

  WriteD(ItemObjID);

  WriteD(0);

  SendToServerEx(AssistantName);;

end;

//############################################################################################

 

procedure AssistUserInfo;                  // обновление данных о ассистенте

var

  i:word;

begin

  AssistID:=ReadD(18);

  AssistX:=ReadD(2);

  AssistY:=ReadD(6);

  AssistZ:=ReadD(10);

  i:=22;

  ReadS(i);

  if interlude then i:=i+48 else i:=i+44;

  AssistMaxHP:=ReadD(i);

  AssistHP:=ReadD(i);

  AssistMaxMP:=ReadD(i);        // чисто информативно

  AssistMP:=ReadD(i);

//  i:=i+363;              пока не используется

//  MyMaxCP:=ReadD(i);

//  MyCP:=ReadD(i);

end;

 

procedure AssistStatusUpdate;      // обновление данных о ассистенте

var

  i:integer;

begin

  for i:=0 to ReadD(6)-1 do

  case pck[i*8+10] of

    #$09: AssistHP:=ReadD(i*8+14);

    #$0A: AssistMaxHP:=ReadD(i*8+14);

    #$0B: AssistMP:=ReadD(i*8+14);

    #$0C: AssistMaxMP:=ReadD(i*8+14);

//    #$21: MyCP:=ReadD(i*8+14);          пока не используется

//    #$22: MyMaxCP:=ReadD(i*8+14);

  end;

  if AssistMaxHP > 0 then AssistHPlevelProcent:= Round((AssistMaxHP/100)*HPMedium);

end;

 

procedure CommanderUserInfo;            //  обновление данных о себе

var

  i:word;

begin

  CommanderID:=ReadD(18);

  CommanderX:=ReadD(2);

  CommanderY:=ReadD(6);

  CommanderZ:=ReadD(10);

  i:=22;

  ReadS(i);

  if interlude then i:=i+48 else i:=i+44;

  CommanderMaxHP:=ReadD(i);

  CommanderHP:=ReadD(i);

end;

 

procedure Action;          // команда действия

begin

  buf:=#$04;                //action

  WriteD(TargetID);

  WriteD(AssistX);

  WriteD(AssistY);

  WriteD(AssistZ);

  WriteC(0);

  SendToServerEx(AssistantName);

end;

 

procedure DrinkBottle;          // пьем бутылки и следим за их количеством

begin

  if HPBottleCount > 0 then

  begin

    UseItemObjID(HPBottleObjID);

    dec (HPBottleCount);

  end;

end;

 

begin                  // Далее обработка входящих пакетов

if pck = '' then exit;

 

if (ConnectName = CommanderName) and FromServer then

  case pck[1] of

  #$04: if ReadS(22) = CommanderName then CommanderUserInfo;

  end;

 

if (ConnectName = AssistantName) and FromServer then

  case pck[1] of

  #$04: if ReadS(22) = AssistantName then AssistUserInfo;

  #$0E: if AssistID=ReadD(2) then    //  StatusUpdate:h(ObjectID)d(Attributes)

          begin

            AssistStatusUpdate;

            if (AssistHP > 0) and (AssistHP < AssistHPlevelProcent) then if Wait(time1, DrinkDelay) then DrinkBottle;    // пьем бутылки с интервалом в 19 сек

            if (AssistHP > 0) and (AssistHP > AssistHPlevelProcent) then time1:=1;

          end;

  #$1B: begin

          InventoryCreate;  // Инвентарь

          HPBottleObjID:= getinv(HPBottleID, 2,1);

          HPBottleCount:= getinv(HPBottleID, 2,3);

        end;

  //#$27: InventoryUpdate;

  end;

 

if (ConnectName = AssistantName) and FromServer and CommanderBot then

  case pck[1] of

  #$01: if CommanderID = ReadD(2) then

        begin

          TargetID:= CommanderID;

          Action; Action;

        end;

  #$05, #$60 : if CommanderID = ReadD(2) then            //Attack:d(AttackerID)d(TargetID)d(Damage)b(Flags)d(X)d(Y)d(Z)h(Hits)

          begin

          TargetID:= ReadD(6);

          Action; Action;

          end;

  end;

 

if (ConnectName = CommanderName) and FromClient and (not CommanderBot) then

  case pck[1] of

  #$01: begin

          TargetID:= CommanderID;

          Action; Action;

        end;

  #$04: begin

          TargetID:= ReadD(2);            //  Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ActionID)

          Action;

        end;

  end;

 

end.

 

 

 

Level up script for the dragon

//auto level up for 'Hatchling of the Stars'

 

//******************************************************************************

// 1)call the dragon

//

// 2 - give the eat

//******************************************************************************

// When healer select taret , dragon attacked them ,if it's need in heal he healing himself

// after fight fallowing the healer

//******************************************************************************

 

//******************************************************************************

//                  const of the scripts

//******************************************************************************

const

    Owner='Sex_Driver';    //nick of the owner

    Pet='';                  //name of pet

var

    OwnerID, PetID, TargetID : Integer; //ID owner, pet, ID target

    CoordX, CoordY, CoordZ : String;  //coordination of the pet

    Cmd :String;                      //commands for pet

    CurHP, MaxHP, CurMP, MaxMP, i : Integer;

    tick: Integer;

    timerA: TTimer;

    timerB: TTimer;

    timerHP: TTimer;

    MagicAtck:boolean;

 

//******************************************************************************

//                          Подпрограммы

//******************************************************************************

//©dmitry501

//если ставить sleep() то скрипт останавливается на время, но и пакеты тоже

//не принимаются и не отправляются, так вот эта функция позваляет избежать этого

function Pause(Timewait: Integer):Boolean;

// сквозная проверка без остановки скрипта

var

    t : integer;

begin

    result:=false;

    t:= Round(Time*86400);

    if t>(tick+Timewait) then

      begin

        tick:=t;

        result:=true;

      end;

end;

 

//все сообщения ботов в приватном чате патилидера

//видны только нам

procedure Say(msg:string);

begin

  buf:=hstr('4A 00 00 00 00');

  WriteD(2);

  WriteS(ConnectName);

  WriteS(msg);

  SendToClientEx(Owner);

end;

 

procedure OnTimerA(Sender: TObject);

begin

    //пакет RequestActionUse;

    buf:=hstr('45 ED 03 00 00 00 00 00 00 00'); //магическая атака пета

    SendToServerEX(Owner);

    //Say('магическая атака пета');

end;

 

procedure OnTimerB(Sender: TObject);

begin

    //пакет RequestActionUse;

    buf:=hstr('45 10 00 00 00 00 00 00 00 00'); //атака пета

    SendToServerEX(Owner);

end;

 

procedure OnTimerHP(Sender: TObject);

begin

    buf:=hstr('45 EE 03 00 00 00 00 00 00 00'); //пет лечиться

    SendToServerEX(Owner);

end;

 

//******************************************************************************

//                Вызывается при включении скрипта

//******************************************************************************

procedure Init;

begin

    MagicAtck:=true; //магическая атака

    OwnerID:=0;

    PetID:=0;

    timerA:=TTimer.Create(nil);

    timerA.OnTimer:=@OnTimerA;

    timerA.enabled:=false;

    timerA.interval:=5000; //время отката магии пета

    timerB:=TTimer.Create(nil);

    timerB.OnTimer:=@OnTimerB;

    timerB.enabled:=false;

    timerB.interval:=5000; //время отката

    timerHP:=TTimer.Create(nil);

    timerHP.OnTimer:=@OnTimerHP;

    timerHP.enabled:=false;

    timerHP.interval:=2000; //время отката лечения пета

end;

 

//******************************************************************************

//                Вызывается при выключении скрипта

//******************************************************************************

procedure Free;

begin

    timerA.Free;

    timerB.Free;

    timerHP.Free;

end;

 

//******************************************************************************

//      Вызывается при приходе каждого пакета, если скрипт включен

//******************************************************************************

begin

  //не обрабатываем пустые пакеты

  if pck='' then exit;

 

  //если от сервака принят пакет с UserInfo

  if FromServer and (OwnerID=0) and (ConnectName=Owner) and (pck[1]=#$04) then begin

      //Запоминаем собственный ИД

      OwnerID:=ReadD(18);

      Say('Скрипт готов к работе!');

  end;

 

  //пакет Attack

  //атаковать, если хозяин напал на цель

  if FromServer and (ConnectName=Owner) and (pck[1]=#$05) and (OwnerID=ReadD(2)) then begin

      if (TargetID<>0) and (OwnerID<>TargetID) then begin

        if magicatck then begin

          buf:=hstr('45 ED 03 00 00 00 00 00 00 00'); //магическая атака пета

          SendToServerEX(Owner);

          Say('Атакую магией!');

          TimerA.enabled:=true;

          TimerB.enabled:=false;

          //Say('Включили таймер');

        end

        else begin

          Say('Атакую цель!');

          TimerB.enabled:=true;

          TimerA.enabled:=false;

        end;

      end;

  end;

 

  //пакет MagicSkillUse

  //атаковать, если хозяин напал на цель магией

  if FromServer and (ConnectName=Owner) and (pck[1]=#$48) and (OwnerID=ReadD(2)) then begin

      if (TargetID<>0) and (OwnerID<>TargetID) then begin

        if magicatck then begin

          buf:=hstr('45 ED 03 00 00 00 00 00 00 00'); //магическая атака пета

          SendToServerEX(Owner);

          Say('Атакую магией!');

          TimerA.enabled:=true;

          TimerB.enabled:=false;

          //Say('Включили таймер');

        end

        else begin

          Say('Атакую цель!');

          TimerB.enabled:=true;

          TimerA.enabled:=false;

        end;

      end;

  end;

 

  //пакет TargetSelect

  //если принят пакет со сменой таргета

  if FromServer and (ConnectName=Owner) and (pck[1]=#$a6) then begin

      //запоминаем ИД таргета для ассиста

      TargetID:=ReadD(2);

      //Say('Это ИД таргета.');

  end;

 

  //пакет TargetUnselected

  //командир отменил цель

  if FromServer and (ConnectName=Owner) and (pck[1]=#$2a) and (OwnerID=ReadD(2)) then begin

      TargetID:=0;

      buf:=hstr('45 11 00 00 00 00 00 00 00 00'); //stop current action

      SendToServerEX(Owner);

      //Say('Стоп!');

      TimerA.enabled:=false;

      TimerB.enabled:=false;

      //Say('Выключили таймер');

  end;

 

  //если от сервака принят пакет с PetInfo

  if FromServer and (PetID=0) and (ConnectName=Owner) and (pck[1]=#$b1) then begin

      //Запоминаем ИД пета

      PetID:=ReadD(6);

    //смещение переменное, зависит от имени Пета(LenName*2+2) и имени Чара(LenName*2+2)

    //126 байт до имени Пета(LenName*2+2) и имени Чара(LenName*2+2) после 20 байт (+1 начало CurHP)

    i:=126+(Length(Pet)*2+2)+(Length(Owner)*2+2)+20+1;

    CurHP:=ReadD(i);

    MaxHP:=ReadD(i);

    CurMP:=ReadD(i);

    MaxMP:=ReadD(i);

    if (CurHP<MaxHP)

      then TimerHP.enabled:=true

      else TimerHP.enabled:=false;

    if (CurMP<MaxMP/2) then MagicAtck:=false else MagicAtck:=true; //магическая атака

  end;

 

  //пакет PetStatusUpdate

  //проверяем на жизнь пета

  if FromServer and (ConnectName=Owner) and (pck[1]=#$b5) and (PetID=ReadD(6)) then begin

    //смещение переменное, зависит от имени Пета(LenName*2+2)

    //21 байт до имени Пета(LenName*2+2) после 8 байт (+1 начало CurHP)

    i:=21+(Length(Pet)*2+2)+8+1;

    CurHP:=ReadD(i);

    MaxHP:=ReadD(i);

    CurMP:=ReadD(i);

    MaxMP:=ReadD(i);

    //Say('Считываем параметры пета');

    if (CurHP<MaxHP)

        then TimerHP.enabled:=true

        else TimerHP.enabled:=false;

    if (CurMP<MaxMP/2) then MagicAtck:=false else MagicAtck:=true; //магическая атака

  end;

end.

It's for begin....

 

 

Posted

Script working on Interlude or HB.Script for BD or SvS.

Thi{

AutoBD_SVS

Join party dancing or singing, and fallawing if it's important!

For the normal fallowing of the char writting something in chat , that bot remember ID of word.

 

name- nick BD or SvS

name2- nick who send party and which all must fallawing.

 

Run script only after all chercter is enter in game.

 

}

 

Const

 name2='my nick';

 name='nick BD or SvS';

 

 //ID of packets Kamael, HB, Gracia

 //from client's

 ACTION_ID = #$1F;

 REQUESTITEMLIST_ID = #$14;

 REQUESTANSWERJOINPARTY_ID = #$43;

 REQUESTWITHDRAWALPARTY_ID = #$44;

 REQUESTMAGICSKILLUSE_ID = #$39;

 REQUESTSOCIALACTION_ID = #$34;

 REQUESTSSKILLLIST_ID = #$50;

 //от сервера

 USERINFO_ID = #$32;

 ASKJOINPARTY_ID = #$39;  

 SAY2_ID = #$4A;

 SKILLLIST_ID = #$5F;

 MAGICSKILLLAUNCHED_ID = #$54;

 

 //ID packets Interlude

 //from client

{  ACTION_ID = #$04;

 REQUESTITEMLIST_ID = #$0F;

 REQUESTANSWERJOINPARTY_ID = #$2A;

 REQUESTWITHDRAWALPARTY_ID = #$2B;

 REQUESTMAGICSKILLUSE_ID = #$2F;

 REQUESTSOCIALACTION_ID = #$1B;

 REQUESTSSKILLLIST_ID = #$3F;

 //от сервера

 USERINFO_ID = #$04;

 ASKJOINPARTY_ID = #$39;  

 SAY2_ID = #$4A;

 SKILLLIST_ID = #$58;

 MAGICSKILLLAUNCHED_ID = #$76;   }

 

 

Var

 Msg : TMemo;

 FormMain : TForm; //Создаваемая форма

 useskill: TTimer;

 skills:string;

 skillid,skillidold:integer;

 party_have,iswork,skillhave:boolean;

 skillbase: array[1..200,0..3] of integer;

 SkillsName : TStringList;

 listbox1,listbox2: TListBox;

 GB1: TGroupBox;

 Button1,Button2,Button3,Button4: TButton;

 Lb1,Lb2: Tlabel;

 cb3:tcheckbox;

 myOID,myX,myY,myZ: integer;      

 targetOID:integer;

 

function Create_FormMain : TForm;

Var

 Yes : boolean;

begin

 Yes := FALSE;

 Result := TForm.Create(nil);

 

 Result.Caption     := 'AutoBD v.0.0.1';

 Result.Left        := 397;

 Result.Top         := 233;

 Result.Width       := 450;

 Result.Height      := 650;

 Result.FormStyle   := fsNormal;

 Result.Position    := poDesigned;

 Result.BorderStyle := bsSizeable;

 Result.BorderWidth := 0;

 Result.WindowState := wsNormal;

 Result.Color       := clBtnFace;

 Result.Font.Name   := 'Tahoma';

 Result.Font.Size   := 8;

 Result.Font.Color  := clWindowText;

 Result.Font.CharSet:= 1;

 Result.OnClose := @FormClose;

 

 Msg := TMemo.Create(Result);

 Msg.Parent := Result;

 Msg.Left    := 0;

 Msg.Top     := 400;

 Msg.Width   := 200;

 Msg.Height  := 200;

 Msg.Visible := TRUE;

 Msg.Tag     := 0;

 Msg.Enabled  := TRUE;

 Msg.Hint     := '';

 Msg.ShowHint := FALSE;

 Msg.Font.Name  := 'Tahoma';

 Msg.Font.Size  := 8;

 Msg.Font.Color := clWindowText;

 Msg.Color         := clWindow;

 Msg.TabOrder      := 2;

 Msg.TabStop       := TRUE;

 Msg.Align         := alBottom;

 Msg.WordWrap      := TRUE;

 Msg.Alignment     := taLeftJustify;

 Msg.WantTabs      := FALSE;

 Msg.WantReturns   := TRUE;

 Msg.HideSelection := TRUE;

 Msg.MaxLength     := 0;

 Msg.OEMConvert    := FALSE;

 Msg.ReadOnly      := FALSE;

 Msg.ScrollBars    := ssNone;

 

 GB1 := TGroupBox.Create(Result);

 GB1.Parent := result;

 GB1.Align         := alRight;

 GB1.Left    := 1;

 GB1.Top     := 2;

 GB1.Width   := 100;

 GB1.Height  := 95;

 GB1.Visible := TRUE;

 GB1.Tag     := 0;

 GB1.Enabled  := TRUE;

 GB1.Hint     := '';

 GB1.ShowHint := FALSE;

 GB1.Caption    := 'НЕПРИНИМАЕТ ПАТИ';

 GB1.Align      := alTOP;

 GB1.Color      := clBtnFace;

 GB1.Font.Name  := 'Tahoma';

 GB1.Font.Size  := 8;

 GB1.Font.Color := clWindowText;

 GB1.Font.CharSet := 1;

 GB1.TabOrder     := 3;

 GB1.TabStop      := FALSE;

 

 listbox1 := Tlistbox.Create(Result);

 listbox1.Parent := Result;

 listbox1.Left    := 0;

 listbox1.Top     := 100;

 listbox1.Width   := 180;

 listbox1.Height  := 200;

 listbox1.Visible := TRUE;

 listbox1.Tag     := 0;

 listbox1.Enabled  := TRUE;

 listbox1.Hint     := '';

 listbox1.ShowHint := FALSE;

 listbox1.Font.Name  := 'Tahoma';

 listbox1.Font.Size  := 8;

 listbox1.Font.Color := clWindowText;

 listbox1.Color         := clWindow;

 listbox1.TabOrder      := 2;

 listbox1.TabStop       := TRUE;

 listbox1.Align         := alLeft;

 listbox1.OnDblClick :=@button3click;

 

 listbox2 := Tlistbox.Create(Result);

 listbox2.Parent := Result;

 listbox2.Left    := 0;

 listbox2.Top     := 100;

 listbox2.Width   := 180;

 listbox2.Height  := 200;

 listbox2.Visible := TRUE;

 listbox2.Tag     := 0;

 listbox2.Enabled  := TRUE;

 listbox2.Hint     := '';

 listbox2.ShowHint := FALSE;

 listbox2.Font.Name  := 'Tahoma';

 listbox2.Font.Size  := 8;

 listbox2.Font.Color := clWindowText;

 listbox2.Color         := clWindow;

 listbox2.TabOrder      := 2;

 listbox2.TabStop       := TRUE;

 listbox2.Align         := alRight;

 listbox2.OnDblClick :=@button4click;

 

 Button1 := TButton.Create(Result);

 Button1.Parent := gb1;

 Button1.Left    := 10;

 Button1.Top     := 30;

 Button1.Width   := 75;

 Button1.Height  := 25;

 Button1.Visible := TRUE;

 Button1.Tag     := 0;

 Button1.Enabled  := true;

 Button1.Hint     := '';

 Button1.ShowHint := FALSE;

 Button1.Caption    := 'Вкл';

 Button1.Font.Name  := 'Tahoma';

 Button1.Font.Size  := 8;

 Button1.Font.Color := clWindowText;

 Button1.Font.CharSet := 1;

 Button1.TabOrder     := 1;

 Button1.TabStop      := TRUE;

 Button1.Cancel       := FALSE;

 Button1.ModalResult  := 0;

 Button1.OnClick     := @Button1click;

 

 Button2 := TButton.Create(Result);

 Button2.Parent := gb1;

 Button2.Left    := 100;

 Button2.Top     := 30;

 Button2.Width   := 75;

 Button2.Height  := 25;

 Button2.Visible := TRUE;

 Button2.Tag     := 0;

 Button2.Enabled  := true;

 Button2.Hint     := '';

 Button2.ShowHint := FALSE;

 Button2.Caption    := 'Выкл';

 Button2.Font.Name  := 'Tahoma';

 Button2.Font.Size  := 8;

 Button2.Font.Color := clWindowText;

 Button2.Font.CharSet := 1;

 Button2.TabOrder     := 1;

 Button2.TabStop      := TRUE;

 Button2.Cancel       := FALSE;

 Button2.ModalResult  := 0;

 Button2.OnClick     := @Button2click;

 

 Button3 := TButton.Create(Result);

 Button3.Parent := result;

 Button3.Left    := 200;

 Button3.Top     := 140;

 Button3.Width   := 40;

 Button3.Height  := 25;

 Button3.Visible := TRUE;

 Button3.Tag     := 0;

 Button3.Enabled  := True;

 Button3.Hint     := '';

 Button3.ShowHint := FALSE;

 Button3.Caption    := '>>>>';

 Button3.Font.Name  := 'Tahoma';

 Button3.Font.Size  := 8;

 Button3.Font.Color := clWindowText;

 Button3.Font.CharSet := 1;

 Button3.TabOrder     := 1;

 Button3.TabStop      := TRUE;

 Button3.Cancel       := FALSE;

 Button3.ModalResult  := 0;

 Button3.OnClick     := @button3click;

 

 Button4 := TButton.Create(Result);

 Button4.Parent := result;

 Button4.Left    := 200;

 Button4.Top     := 220;

 Button4.Width   := 40;

 Button4.Height  := 25;

 Button4.Visible := TRUE;

 Button4.Tag     := 0;

 Button4.Enabled  := True;

 Button4.Hint     := '';

 Button4.ShowHint := FALSE;

 Button4.Caption    := '<<<<';

 Button4.Font.Name  := 'Tahoma';

 Button4.Font.Size  := 8;

 Button4.Font.Color := clWindowText;

 Button4.Font.CharSet := 1;

 Button4.TabOrder     := 1;

 Button4.TabStop      := TRUE;

 Button4.Cancel       := FALSE;

 Button4.ModalResult  := 0;

 Button4.OnClick     := @button4click;

 

 Lb1:= Tlabel.Create(result);

 Lb1.Parent := GB1;

 Lb1.Left    := 140;

 Lb1.Top     := 30+200;

 Lb1.Align         := alLeft;

 Lb1.Layout     := tlBottom;

 Lb1.Visible := TRUE;

 Lb1.Tag     := 0;

 Lb1.Enabled  := TRUE;

 Lb1.Hint     := '';

 Lb1.ShowHint := FALSE;

 Lb1.Caption    := 'Все Скилы';

 Lb1.Font.Name  := 'Tahoma';

 Lb1.Font.Size  := 10;

 Lb1.Font.Color := clWindowText;

 Lb1.Font.CharSet := 1;

 

 Lb2:= Tlabel.Create(result);

 Lb2.Parent := GB1;

 Lb2.Left    := 140;

 Lb2.Top     := 30+200;

 Lb2.Align         := alRight;

 Lb2.Layout     := tlBottom;

 Lb2.Visible := TRUE;

 Lb2.Tag     := 0;

 Lb2.Enabled  := TRUE;

 Lb2.Hint     := '';

 Lb2.ShowHint := FALSE;

 Lb2.Caption    := 'Те которые использовать';

 Lb2.Font.Name  := 'Tahoma';

 Lb2.Font.Size  := 10;

 Lb2.Font.Color := clWindowText;

 Lb2.Font.CharSet := 1;

 

 cb3:= TCheckbox.Create(result);

 cb3.Parent := GB1;

 cb3.Left    := 220;

 cb3.Top     := 60;

 cb3.Width   := 220;

 cb3.Checked := TRUE;

 cb3.Visible := TRUE;

 cb3.Tag     := 0;

 cb3.Enabled  := TRUE;

 cb3.Hint     := '';

 cb3.ShowHint := FALSE;

 cb3.Caption    := 'Следовать послы выхода из пати';

 cb3.Font.Name  := 'Tahoma';

 cb3.Font.Size  := 10;

 cb3.Font.Color := clWindowText;

 cb3.Font.CharSet := 1;

 

 Yes := TRUE;

 

 Result.Show;

 msg.Lines.Add(timetostr(now)+': '+'Autodance, by Ad');

 msg.Lines.Add(timetostr(now)+': '+'Работаем с чаром: '+Name);

 

end;

 

procedure button1click(Sender: TButton);

begin

 iswork:=true;

 GB1.Caption    := 'ПРИНИМАЕТ ПАТИ';

end;

 

procedure button2click(Sender: TButton);

begin

 iswork:=false;

 GB1.Caption    := 'НЕПРИНИМАЕТ ПАТИ';

end;

 

procedure perreshet;

var i:integer;

str:string;

begin

str:='';

for i:=1 to ListBox2.items.Count do

    begin

    str:=str+Copy(ListBox2.Items.Strings[i-1],1+pos(':',ListBox2.Items.Strings[i-1]),pos(' ',ListBox2.Items.Strings[i-1])-4)+':';

    end;

skills:=str;

end;

 

procedure button3click(Sender: TButton);

var m:integer;

begin

 

if ListBox1.Items.Count>0 then

  begin

  m:=ListBox1.ItemIndex;

  if (ListBox1.Items.Count=1) then m:=0

  else

  if m=ListBox1.Items.Count-1 then dec(m);

 

  ListBox2.Items.Add(ListBox1.Items.Strings[ListBox1.ItemIndex]);

  ListBox1.Items.Delete(ListBox1.ItemIndex);

  ListBox1.ItemIndex:=m;

  perreshet;

  end;

 

end;

 

procedure Button4Click(Sender: TObject);

var m:integer;

begin

 

if ListBox2.Items.Count>0 then

  begin

  m:=ListBox2.ItemIndex;

  if (ListBox2.Items.Count=1) then m:=0

  else

  if m=ListBox2.Items.Count-1 then dec(m);

 

  ListBox1.Items.Add(ListBox2.Items.Strings[ListBox2.ItemIndex]);

  ListBox2.Items.Delete(ListBox2.ItemIndex);

  ListBox2.ItemIndex:=m;

  perreshet;

end;

 

end;

 

procedure FormClose(Sender: TObject; var Action: TCloseAction);

begin

 Action:=caNone;

end;

 

procedure Free_FormMain;

begin

 TRY

   if FormMain<>NIL then begin

      FormMain.Free;

      FormMain:=NIL;

   end;

 FINALLY

 END;

end;

 

procedure SendMesg(msg:string);  //отправка сообщений клиенту

begin

buf:=SAY2_ID;

 WriteD(0);

 WriteD(2);

 WriteS('->БОГ');

 WriteS(msg);

 SendToClientEx(Name);

end;

 

procedure Init; //Вызывается при включении скрипта

begin

 

skillsName:=TStringList.Create;

try

 skillsName.LoadFromFile('.\settings\SkillsID.ini');

 except

   msg.Lines.Add('itemsid.ini не найден!');

   exit;

 end;

 

skillid:=0;

iswork:=false;

useskill:=TTimer.Create(nil);

useskill.OnTimer:=@timerskill;

useskill.interval:=200; //время задержки

useskill.enabled:=true;

skillhave:=false;

party_have:=false;

FormMain:=Create_FormMain;

buf:=REQUESTSSKILLLIST_ID;

SendToServerEx(name);

 

buf:=REQUESTITEMLIST_ID;

SendToServerEx(name);

 

end;

 

procedure timerskill;

begin

if skillid<>0 then

begin

  msg.lines.add('Юзаю скилл');

  MagicSkillUse(skillid);

  skillidold:=skillID;

  skillID:=0;

end;

 

end;

 

procedure Free; //Вызывается при выключении скрипта

begin

useskill.free;

Free_FormMain;

end;

 

procedure UserInfo; //обновление данных о себе

var

 i:word;

begin

 MyOID:=ReadD(18);

 MyX:=ReadD(2);

 MyY:=ReadD(6);

 MyZ:=ReadD(10);

end;

 

procedure MagicSkillUse(MagicID:integer);

begin

 buf:=REQUESTMAGICSKILLUSE_ID;

 WriteD(MagicID);

 WriteD(00);

 WriteC(00);

 SendToServerEx(Name);

end;

 

procedure createskillbase;

var

i, j,n: integer;

begin

 for i:=1 to 200 do begin

   skillbase[i,0]:=0;

   skillbase[i,1]:=0;

   skillbase[i,2]:=0;

 end;

 n:=0;

 J:=6;

 I:=1;

 listbox1.items.Clear;

 while I<200 do

 begin

   skillbase[i,0]:=ReadD(j);

   skillbase[i,1]:=ReadD(j);

   skillbase[i,2]:=ReadD(j);

 if skillbase[i,2]=0 then break;

   j:=j+1;

   inc(n);

   if skillbase[i,0]=0 then

   listbox1.items.Add('ID:'+inttostr(skillbase[i,2])+'   '+SkillsName.Values[intToStr(skillbase[i,2])]+'  LVL:'+inttostr(skillbase[i,1]));

   inc(i);

 end;

 if N>0 then skillhave:=true;

 

end;

 

procedure Target(Attacker: Integer);

begin

 buf:=ACTION_ID;

 WriteD(Attacker);

 WriteD(MyX);

 WriteD(MyY);

 WriteD(MyZ);

 WriteC(00);

 SendToServerEx(Name);

end;

 

procedure TargetAttacker(Attacker: Integer);

begin

 if Attacker<>0 then begin

   msg.Lines.Add('Attacker='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));

   Target(Attacker);

   delay(800);

   Target(Attacker);

   delay(800);

   Target(Attacker);

 end;

end;

       

procedure buffok;

begin

 if ReadD(6)=skillIDold then begin

   msg.lines.add('Прописываем следующий скилл');

   if Length(skills)>0 then begin

     skillID:=strtoint(Copy(Skills,1,pos(':',Skills)-1));

     delete(Skills,1,pos(':',Skills));

   end else

     if  party_have=true then begin

       if cb3.Checked=true then

          begin

          msg.lines.add('Cледуем за '+name2);

          TargetAttacker(targetOID);

          end;

       msg.lines.add('Разрываем пати');

       delay(200);

       buf:=REQUESTWITHDRAWALPARTY_ID;

       SendToServerEx(name);

       party_have:=false;

     end;

 end;

end;

 

var

 temp : String;

 

begin

 if pck='' then exit;

 if (LowerCase(ConnectName)=LowerCase(Name)) and FromClient then

   case pck[1] of

   REQUESTSOCIALACTION_ID:

       case ReadD(2) of

         //социальное действие Yes для старта

         6: begin

            iswork:=true;

            GB1.Caption:= 'ПРИНИМАЕТ ПАТИ';

            end;

         //социальное действие No для остановки

          5: begin

             iswork:=false;

             GB1.Caption:= 'НЕПРИНИМАЕТ ПАТИ';

             end;

       end;

   end;

 

if (ConnectName=Name) and FromServer then

begin

        case pck[1] of

        ASKJOINPARTY_ID: if iswork then

             begin

               temp:=ReadS(2);

               if LowerCase(temp)=LowerCase(name2) then

                 begin

                 perreshet;

                 Delay(100);

                 buf:=REQUESTANSWERJOINPARTY_ID+HStr('01 00 00 00');

                 SendToServerEx(name);

                 msg.Lines.Add('Принимаю пати');

                 party_have:=true;

                 Delay(200);

                 if Length(skills)>0 then

                   begin

                   msg.Lines.Add('Прописываю скилл');

                   skillID:=strtoint(Copy(Skills,1,pos(':',Skills)-1));

                   delete(Skills,1,pos(':',Skills));

                   end;

                 pck:='';

                 end else msg.Lines.Add('Проигнорирован запрос пати от: '+temp);

             end;

 

        MAGICSKILLLAUNCHED_ID:  begin

                                if (MyOID=ReadD(2)) then buffok;

                                end;

        USERINFO_ID:  begin //пакет с инфой о моём чаре

                      UserInfo;

                      end;

        SAY2_ID:  begin //пакет с инфой о том за кем бежать

                  if LowerCase(ReadS(10))=LowerCase(name2) then

                    begin

                    TargetOID:=ReadD(2);

                    msg.lines.add('Нашли цель следовния: '+inttostr(TARGETOID));

                    end;

                 end;

        SKILLLIST_ID:  begin

                       if skillhave=false then createskillbase;

                       end;

           end;

end;

 

end.

  • 2 weeks later...
Posted

Script for lvl up when you chage sub class.

 

begin

 

if FromClient and (pck=Hstr('packet of sub clas change - sniffed yourself')) then

begin

buf:=pck;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

delay(1);

buf:=#$46;

SendToServer;

 

end;

end.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • L2 Kings    Stage 1 – The Awakening Dynasty and Moirai Level Cap: 83 Gear: Dynasty -Moirai & Weapons (Shop for Adena + Drop from mobs/instances ) Masterwork System: Available (Neolithics S required with neolithics u can do armor parts foundation aswell) Class Cloaks: Level 1 - Masterwork sets such us moirai/dynasty stats are boosted also vesper(stage 2) Olf T-Shirt: +6 (fails don’t reset) safe is +2 Dolls: Level 1 Belts: Low & Medium Enchant: Safe +3 / Max +8 / Attribution Easy in Moirai-Dynasty . Main Zones: Varka Outpost: Easy farm, Adena, EXP for new players = > 80- 100kk hour Dragon Valley: Main farm zone — , 100–120kk/hour Weapon Weakness System active (all classes can farm efficiently) Archers get vampiric auto-hits vs mobs Dragon Valley Center: Main Party Zone — boosted drops (Blessed enchants, Neolithics chance) => farm like 150-200kk per hour. Dragon Valley North: Spoil Zone (Asofe + crafting materials for MW) Primeval Isle: Safe autofarm zone (low adena for casual players) ==> 50kk per hour Forge of the Gods & Imperial Tomb: Available from Stage 1 (lower Adena reward in compare with Dragon Valley) Hellbound also avaliable from stage 1 In few words all zones opened but MAIN farm zone with boosted adena and drops is Dragon valley also has more mobs Instances: Zaken (24h Reuse) → Instead of Vespers drop Moirai , 100% chance to drop 1 of 9 dolls lvl 1, Zaken 7-Day Jewelry Raid Bosses (7 RBs): Drop Moirai Parts + Neolithic S grade instead of Vespers parts that has 7 Rb Quest give Icarus Weapons Special Feature 7rb bosses level up soul crystals aswell. Closed Areas : Monaster of SIlence, LOA, ( It wont have mobs) / Mahum Quest/Lizardmen off) Grand Epics: Unlocked on Day 4 of Stage 1 → Antharas, Valakas, Baium, AQ, etc ================================================================================= Stage 2 – Rise of Vespers Level Cap: 85 Gear: Moirai Armors (Adena GM SHOP / Craft/ Drop) Weapons: Icarus Cloaks: Level 2 Olf: +8 Dolls: Level 2 Belts: High & Top Enchant: Safe +3 / Max +8 Masterwork can be with Neolithics S84 aswell but higher so craft will be usefull aswell. 7 Raid Boss Quest Updated: Now works retail give vesper weapons 7rb Bosses Drops : Vespers Instances: Zaken : Drops to retail vespers + the dolls and the extra items that we added on stage 1 New Freya Instance: Added — drops vespers and instead of mid s84 weapons will drop vespers . Extra drops Blessed Bottle of Freya - drops 100% chance 1 of 9 dolls. Farm Areas Dragon Valley remains main farm New Zone : Lair of Antharas (mobs nerfed and added drop Noble stone so solo players can farm too) New Party Zone : LOA Circle   ============================================================================   Stage 3 – The Vorpal ERA Gear: Vorpal Unclock Cloaks: Level 3 Olf: +10 (max cap) Dolls: Level 3 Enchant: Safe +3 / Max +12 Farm Zones : Dragon Valley Center Scorpions becomes a normal solo zone (no longer party zone) Drops:   LOA & Knorik → Mid Weapons avaliable in drop New Party Zone Kariks Instances: Easy Freya Drops Mid Weapons Frintezza Release =================================================================================     Stage 4 – Elegia Era (Final Stage) Elegia Unlock Gear: Elegia Weapons: Elegia TOP s84 ( farmed via H-Freya/ Drops ) Cloaks: Level 5 Dolls: Level 3 (final bonuses) Enchant: Safe +6 / Max +16 Instances: Hard Freya → Drops Elegia Weapons + => The Instance will drop 2-3 parts for sure and also will be able to Join with 7 people . Party Zone will have also drop chances for elegia armor parts and weapons but small   Events (Hourly): Win: 50 Event Medals + 3 GCM + morewards Lose: 25 Medals + 1 GCM + more rewards Tie: 30 Medals + 2 GCM + more rewards   ================================================================================ Epic Fragments Currency Participating in Daily Bosses mass rewarding all players Participating in Instances (zaken freya frintezza etc) all players get reward ================================================================================ Adena - Main server currency (all items in gm shop require adena ) Event Medals (Festival Adena) - Event shop currency Donation coins you can buy with them dressme,cosmetics and premium account Epic Fragments you can buy with them fake epic jewels Olympiad Tokens you can buy many items from olympiad shop (Hero Coin even items that are on next stages) Olympiad Win = 1000 Tokens / Lose = 500 Tokens ================================================================================= Offline Autofarm Allows limited Offline farming requires offline autofarm ticket that you get by voting etc ================================================================================= Grand Epics have Specific Custom NPC that can spawn Epics EU/LATIN TIME ZONE ================================================================================= First Olympiad Day 19 December First Heroes 22 December ( 21 December Last day of 1st Period) After that olympiad will be weekly. ================================================================================= Item price and economy Since adena is main coin of server and NOT donation coins we will always add new items in gm shop with adena in order to burn the adena of server and not be inflation . =================================================================================        
    • Hello, I'd like to change a title color for custom npc.  I created custom NPC, cloned existing. I put unique id for it in npcname-e, npcgrp and database. I have "0" to serverSideName in db, so that it would use npcname-e, but instead it has "NoNameNPC"and no title color change.
    • Trusted Guy 100% ,  I asked him for some work and he did it right away.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock