Advertisement
Xalera_xelsing

Adrenalin Rebaf

May 16th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.57 KB | None | 0 0
  1. uses SysUtils, Classes;
  2.  
  3. var
  4.   SafePoint: array of integer = [147593, -112774, -2144];  // "безопасная" точка - куда отбегать для ребафа
  5.   BuffID: integer = 1204;         // ID бафа, по которому проверять необходимость ребафа
  6.   RebuffTime: cardinal = 60000;   // время до окончания бафа для ребафа (в мс)
  7.   AltB: array of string = ['_bbshome', '_cbbsbuff;', '_cbbsblist:mage_scheme:index'];  // байпасы для бафа
  8.  
  9. procedure AltB_Rebuff_Thread();
  10. var X, Y, Z: integer;
  11. begin
  12.   while delay(555) do begin
  13.     if not User.Buffs.Byid(15649, Obj) or (Obj.EndTime<30000) then begin //эту строку я поменял
  14.       Engine.Msg('[Rebuff]', 'Пора ребафаться, отхожу в безопасное место', 0);
  15.       // предпринимаем необходимые действия, например тормозим другие потоки или что-то еще
  16.       // если хотите чтобы бот сначала добил всех агро мобов, которые висят на нем,
  17.       // прежде чем бежать в безопасную точку, то раскоментируйте код ниже
  18.       {if (HaveAgroMobs) then begin
  19.         Engine.Msg('[Rebuff]', 'Отбиваюсь от мобов', 128);
  20.         while (HaveAgroMobs) do delay(555);
  21.         Engine.FaceControl(1, true);
  22.       end; }
  23.       X:= User.X;
  24.       Y:= User.Y;
  25.       Z:= User.Z;
  26.       Engine.FaceControl(1, false);
  27.       Engine.Msg('[Rebuff]', 'Запомнил свои координаты: ['+IntToStr(X)+', '+IntToStr(Y)+', '+IntToStr(Z)+']', 0);
  28.       while (User.DistTo(SafePoint[0], SafePoint[1], SafePoint[2]) > 222) do           // если нужно, то
  29.         if Engine.MoveTo(SafePoint[0], SafePoint[1], SafePoint[2]) then delay(555);    // бежим в безопасную точку
  30.       Delay(1000);
  31.       if (HaveAgroMobs) then begin                                                     // если на нас висят агро мобы, то
  32.         Engine.Msg('[Rebuff]', 'Отбиваюсь от мобов', 128);
  33.         Engine.FaceControl(1, true);                                                   // включаем интерфейс
  34.         while (HaveAgroMobs) do delay(555);                                            // пока есть агро мобы - ждем
  35.         Engine.FaceControl(1, false);                                                  // выключаем интерфейс
  36.         while (User.InCombat) do delay(555);                                           // ждем выхода из боя
  37.       end;
  38.  
  39.       repeat BuffAltB();                                          // ребафаемся до тех пор
  40.    //коментим эту строку так как нам не интересно \ьл   until (BuffTime(BuffID) > RebuffTime);                      
  41. // пока время бафа не станет больше требуемого
  42.       Engine.MoveTo(X, Y, Z);                                     // возвращаемся в координаты, которые запомнили перед бафом
  43.       Engine.FaceControl(1, true);                                // включаем обратно интерфейс и продолжаем фарм
  44.  
  45.     end;
  46.   end;
  47. end;
  48.  
  49. function BuffTime(ID: integer): cardinal;
  50. var i: integer;
  51. begin
  52.   result:= 0;
  53.   for i:= 0 to User.Buffs.Count-1 do begin        // пробегаем по списку своих бафов
  54.     if (User.Buffs.Items(i).id = ID) then begin   // если ID совпал, то
  55.       result:= User.Buffs.Items(i).EndTime;       // записываем в результат время до окончания бафа
  56.       break;
  57.     end;
  58.   end;
  59. end;
  60.  
  61. procedure BuffAltB();
  62. var i: integer;
  63. begin
  64.   for i:= Low(AltB) to High(AltB) do
  65.     if Engine.BypassToServer(AltB[i]) then delay(555);
  66. end;
  67.  
  68. function HaveAgroMobs(): boolean;                 // функция проверяет, висят ли на нас агромобы
  69. var i: integer;
  70. begin
  71.   result:= false;
  72.   for i:= 0 to NpcList.Count-1 do begin
  73.     if (IsAgr(NpcList(i))) then begin
  74.       result:= true;
  75.       exit;
  76.     end;
  77.   end;
  78. end;
  79.  
  80. function IsAgr(Mob: TL2Npc): boolean;
  81. begin
  82.   result:= (Mob.AtkOID = User.OID) and (not Mob.Dead);
  83. end;
  84.  
  85. begin
  86.   Script.NewThread(@AltB_Rebuff_Thread);
  87.   // тут может быть дополнительный код если что
  88.   Delay(-1);
  89. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement