Jump to content

Alt+B Buffs Bypasses


Jdub
 Share

Recommended Posts

I'm not very knowledgeable and could use some help. How do I see what commands are being sent to the server when I click a button?

Trying to figure out what commands I need to send using ReqBypassToServer

This is for L2 Project.

Little help?

  • Like 1
Link to comment
Share on other sites

  • Toggle Staff
On 5/11/2020 at 9:20 PM, Jdub said:

I'm not very knowledgeable and could use some help. How do I see what commands are being sent to the server when I click a button?

Trying to figure out what commands I need to send using ReqBypassToServer

This is for L2 Project.

Little help?

NOTE: This post has been edited because the information was incorrect.

I am writing this after I wrote the rest of the post. I hope it's no surprise that we didn't write all the features ourselves, almost the whole alt+b buffer came with the files. The bypass processing is... Weird. You can see the patterns, and go from there. Here's a few examples.

Buff with Default Warrior Scheme:

_bbshome
12
15
13

_bbshome opens Community Board
12 clicks on Buff
15 clicks on Warrior (Change to 14 for Defender, 16 for Mage)
13 click on Buff Me (Change accordingly if you want to buff party or pet)

Buff with your 1st own scheme:

_bbshome
12
1b
13

1b clicks on 1st "Own Scheme" counting from the top (Change to 1c for 2nd scheme and so on.)

Hope this helps! And if you would share your final findings that would help others in the future. Cheers

Link to comment
Share on other sites

Thank you for this, I will test/share.

What I am really after is -

How did you get this information?  I understand certain things about scripts like how they are structured and I am slowly learning the proper syntax for writing them but is there a script I can use to record the packets being sent to the server in order to obtain things like skill/item/npc ids or links like below?

_cbbsbuffer get 0 2_0 1

 

  • Like 1
Link to comment
Share on other sites

  • Toggle Staff
10 hours ago, Jdub said:

Thank you for this, I will test/share.

What I am really after is -

How did you get this information?  I understand certain things about scripts like how they are structured and I am slowly learning the proper syntax for writing them but is there a script I can use to record the packets being sent to the server in order to obtain things like skill/item/npc ids or links like below?


_cbbsbuffer get 0 2_0 1

 

I got it from the back end of the server 😶

I know you can record bypasses with paid Adrenaline. Also, L2net has a "packet tool" where you can see all outgoing and incoming packets - I used to just grab the packet, convert HEX to letters and that's the bypass 🙂

Very likely that there are other (easier?) ways to obtain it, I was just used to my way and didn't look for other options.

Link to comment
Share on other sites

  • Toggle Staff
On 5/13/2020 at 6:02 PM, Scrapyard said:

I know you're going to post a buff script for Adrenalin at some point.

I'd like to be able to choose from a custom buff scheme for me and a separate one possibly for a pet. 

Alright.

Meanwhile here's a bypass to buff pet with default warrior scheme 🙂

_bbshome
12
15
14

 

Link to comment
Share on other sites

Having a tough time trying to use adrenaline to return the same result that you have posted. Due to the menu being made of buttons adrenaline is returning the values supplied by the function.  

This is what I get when

Engine.BypassToServer('_bbshome');  //Main
Engine.BypassToServer('12');  //Buffs Tab
Engine.BypassToServer('18');  //Warrior selection

Engine.BypassToServer('16');  // Buff me

 

what to place in *********** when a script is performing this function instead of adrenaline eludes me.

Send.ReqBypassToServer("************");

 

Edited by Jdub
Link to comment
Share on other sites

2 hours ago, Scrapyard said:

I know you're going to post a buff script for Adrenalin at some point.

I'd like to be able to choose from a custom buff scheme for me and a separate one possibly for a pet. 

You can use adrenaline itself setup alt+B buffs without a script.

 

Capture.thumb.PNG.e68a5981841e143c39e20741ca8070c6.PNG

Link to comment
Share on other sites

  • Toggle Staff
11 hours ago, Jdub said:

Send.ReqBypassToServer("************");

Have you tried?

Engine.BypassToServer("_cbbsbuffer get 2 2_0 1");

 

11 hours ago, Jdub said:

You can use adrenaline itself setup alt+B buffs without a script.

Ah yes, paid adrenaline is (was?) a rare sight, I just assumed you don't have it. My bad.
Yes you can record bypasses with adrenaline.

Link to comment
Share on other sites

(async function main() {
    console.log("Warrior Buffs Enabled");

    for(;;) {

        if (Status.IsConnected && !Me.IsDead) {

            let buffTest = null;
            if (BuffsList.ContainsID(268)) {
                
                buffTest = BuffsList.GetItemByID(268);
            }

            if (null == buffTest || buffTest .RemainTime < 60 * 20) {
                Send.ReqBypassToServer("_bbshome");
                await sleep(1500);
                Send.ReqBypassToServer("_cbbsbuffer get 0 1_0 1");
                await sleep(1500);

            }
        }

        await sleep(1500);
    }
})();

This currently does not work, I'm missing the "buffer" tab selection.

Edited by Mantosh
<code>
Link to comment
Share on other sites

  • 5 years later...
uses SysUtils, Classes;       
var
  SafePoint: array of integer = [147064, 25816, -2016];  // "безопасная" точка - куда отбегать для ребафа
  BuffID: integer = 1388;         // ID бафа, по которому проверять необходимость ребафа 1388-Greater Might
  RebuffTime: cardinal = 60000;   // время до окончания бафа для ребафа (в мс)
  AltB: array of string = ['_bbshome', '11', '17', '16'];  // байпасы для бафа 17-voin 16-me

procedure AltB_Rebuff_Thread();
var X, Y, Z: integer;
begin
  while delay(555) do begin
    if (BuffTime(BuffID) < RebuffTime) then begin
      Engine.Msg('[Rebuff]', 'Пора ребафаться, отхожу в безопасное место', 0);
      // предпринимаем необходимые действия, например тормозим другие потоки или что-то еще
      // если хотите чтобы бот сначала добил всех агро мобов, которые висят на нем,
      // прежде чем бежать в безопасную точку, то раскоментируйте код ниже
      {if (HaveAgroMobs) then begin
        Engine.Msg('[Rebuff]', 'Отбиваюсь от мобов', 128);
        while (HaveAgroMobs) do delay(555);
        Engine.FaceControl(1, true);
      end; }
      X:= User.X;
      Y:= User.Y;
      Z:= User.Z;
      Engine.FaceControl(1, false);
      Engine.Msg('[Rebuff]', 'Запомнил свои координаты: ['+IntToStr(X)+', '+IntToStr(Y)+', '+IntToStr(Z)+']', 0);
      while (User.DistTo(SafePoint[0], SafePoint[1], SafePoint[2]) > 222) do           // если нужно, то
        if Engine.MoveTo(SafePoint[0], SafePoint[1], SafePoint[2]) then delay(555);    // бежим в безопасную точку
      Delay(1000);
      if (HaveAgroMobs) then begin                                                     // если на нас висят агро мобы, то
        Engine.Msg('[Rebuff]', 'Отбиваюсь от мобов', 128);
        Engine.FaceControl(1, true);                                                   // включаем интерфейс
        while (HaveAgroMobs) do delay(555);                                            // пока есть агро мобы - ждем
        Engine.FaceControl(1, false);                                                  // выключаем интерфейс
        while (User.InCombat) do delay(555);                                           // ждем выхода из боя
      end;

      repeat BuffAltB();                                          // ребафаемся до тех пор
      until (BuffTime(BuffID) > RebuffTime);                      // пока время бафа не станет больше требуемого
      Engine.MoveTo(X, Y, Z);                                     // возвращаемся в координаты, которые запомнили перед бафом
      Engine.FaceControl(1, true);                                // включаем обратно интерфейс и продолжаем фарм

    end;
  end;
end;

// https://adrenalinebot.com/ru/api/example/buff-time-check
function BuffTime(ID: integer): cardinal;
var i: integer;
begin
  result:= 0;
  for i:= 0 to User.Buffs.Count-1 do begin        // пробегаем по списку своих бафов
    if (User.Buffs.Items(i).id = ID) then begin   // если ID совпал, то
      result:= User.Buffs.Items(i).EndTime;       // записываем в результат время до окончания бафа
      break;
    end;
  end;
end;

procedure BuffAltB();
var i: integer;
begin
  for i:= Low(AltB) to High(AltB) do
    if Engine.BypassToServer(AltB[i]) then delay(555);
end;

function HaveAgroMobs(): boolean;                 // функция проверяет, висят ли на нас агромобы
var i: integer;
begin
  result:= false;
  for i:= 0 to NpcList.Count-1 do begin
    if (IsAgr(NpcList(i))) then begin
      result:= true;
      break;
    end;
  end;
end;

function IsAgr(Mob: TL2Npc): boolean;
begin
  result:= (Mob.AtkOID = User.OID) and (not Mob.Dead);
end;

begin
  Script.NewThread(@AltB_Rebuff_Thread);
  // тут может быть дополнительный код если что
  Delay(-1);
end.

 

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.

 Share

×
×
  • Create New...