Jump to content

Recommended Posts

Posted (edited)

I want to know how to summon and feed the pet automatically.

 

Here is how to resurrect the pet. Although when I've tried it, it gave error because it target another mob before resurrecting the pet and then it said "This is the incorrect target". How do I do it then?

 

And to make him attack you put the attack skill in Attack -> Type: Pet skills, Name: [Pet] Attack.

I would say Condition: Target HP <99%. But he can still die from aggro mobs or area of damage.

How do I make the bishop heal the pet? I've seen in events I can use the heal script when the pet's life is under 50% but it doesn't work.

 

Here is some information about pets:

- To use the soulshots automatically is the same as with the character, you add the option in miscellaneous. He has to have the equipment in his inventory. The soulshots in yours.

- pets win exp based on the damage they make, they don't have to take the kill.

- The food has to be placed in their inventory and they will consume it automatically when fullness level is below 55%.

- Best way to level up a pet is with a healer and letting it attack mobs of it level.

- You can ride a great wolf (over lvl 70) or a strider.

Edited by darknesscrysis
Posted (edited)

I found a script here and I've modified the healing and following procedures  to work with the bishop skills and in my pet as this was for summons. I don't actually understand the countExpAdena method so if someone could explain it step by step I would greatly appreciate it.

 

The only changes I've done have been reduce the delay to match avg. human response time, remove the mp skill as the pet doesn't use skills, and reduce the follow range to match the major heal skill range, in the original script it was the pet who moved towards the healer but I've changed it so the healer moves to the pet.

 

To improve it, it could see which pet buffs are missing from an array of buffs and use the ones needed. Or check if the User is noble and use noblesse blessing after every resurrection.

 

Also it could check if you are in party and if so loop through the party members looking if they have pets and if their HP < 70 and then heal them, as this isn't working with the interface configuration.
 

uses SysUtils, Classes;

procedure tpContoller;
var
  buff: TL2Buff;
begin
  while Engine.Status = lsOnline do
  begin
    if not User.Dead and not User.Buffs.ById(1262, buff) then
      Engine.UseSkill(1262);
      
    delay(1000);
  end;
end;

procedure petRangeProtect;
var
  previousTarget: TL2Live;
begin
  print('[Thread] Summon range check started');
  while Engine.Status = lsOnline do
  begin
    if (petlist.count > 0) and (User.distTo(petlist.items(0)) > 600) then
    begin
      if User.Target <> nil then
        previousTarget := User.Target;
        
      Engine.SetTarget('Your pet name');
      Engine.MoveToTarget (-500);
      //Engine.UseAction(53); // Move action (ID 53)
      //Engine.UseAction(21); // Change movement mode);
      Engine.SetTarget(previousTarget);
      delay(3 * 1000);
    end;
    delay(500);
  end;
end;  

procedure petHeal;
begin
    print('[Thread] Summon heal thread started');
  while Engine.Status = lsOnline do
  begin
    if (petlist.count > 0) and (Petlist.items(0).HP < 70)
        and (User.MP > 5) and (User.HP > 15) then
    begin
      Engine.SetTarget('Your pet name');
      Engine.UseSkill(1401); // Major heal the pet
    end;

    if (petlist.count > 0) and (Petlist.items(0).Dead)
        and (User.MP > 5) and (User.HP > 15) then
    begin
      Engine.SetTarget('Your pet name');
      Engine.UseSkill(1016); // Resurrect the pet
    end;
  
    delay(250);
  end;
end;

procedure countExpAdena;
var
  exp : int64;
  TxtList : TStringList;
  today : tdatetime;
  adena : int64;
  obj: tl2item;
begin
  TxtList := TStringList.Create;
  exp := User.exp;
  adena := obj.count;
  while Engine.Status = lsOnline do begin
     Inventory.User.ById(57, obj); // move adena (ID 57) to obj
     
     if exp < User.exp then begin
        if fileexists(Script.Path + 'exp.txt') then
          TxtList.LoadFromFile(Script.Path + 'exp.txt');
          
        exp := User.exp - exp;
        today := now;
        TxtList.Add('+' + inttostr(exp)+', '+User.Name+', '+datetostr(today)+', '+timetostr(today));
        TxtList.SaveToFile(Script.Path + 'exp.txt'); 
        exp := User.exp; 
     end;
     if adena < obj.count then
     begin
      if fileexists(Script.Path + 'adena.txt') then
          TxtList.LoadFromFile(Script.Path + 'adena.txt');
          
        adena := obj.count - adena;
        today := now;
        TxtList.Add('+' + inttostr(adena)+', '+User.Name+', '+datetostr(today)+', '+timetostr(today));
        TxtList.SaveToFile(Script.Path + 'adena.txt'); 
        adena := obj.count;
     end;
     delay(60 * 5 * 1000);
   end;
   TxtList.Free;  
end;
 

begin
  script.newThread(@petHeal);
  script.newThread(@petRangeProtect);
  script.newThread(@tpContoller);
  script.newThread(@countExpAdena);
  delay(-1);
end.
Edited by darknesscrysis

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...