Uses SysUtils, Classes;
var Item: TL2Item; Npc: TL2Npc; obj: TL2NPC; L2Skill: TL2Skill; buff:TL2buff;
const
// Координаты спота
spot_x = 137692;
spot_y = 75796;
spot_z = -3466;
// Радиус спота
spot_R = 7000;
function GetCountMyAttackerNpc:integer; // функция отображения атакующих меня мобов
var
idx:integer;
begin
result:=0;
for idx:=0 to NpcList.Count-1 do begin
if Not(NpcList.Items(idx).Dead)and(NpcList.Items(idx).AtkOID=User.Oid)then begin
inc(result);
end;
end;
end;
procedure CheckAttackingMobs; // если меня бьют мобы, отбиваемся
//если цель мертва отмена таргета
begin
//print('Проверяем, аттакуют ли нас мобы');
while GetCountMyAttackerNpc<>0 do
begin
if(user.target.incombat) then
Engine.AutoSoulshot(1464,true); // BSSC
Engine.Attack(50);
if(user.target.dead) then engine.canceltarget;
delay(100);
end;
//print('Мобы не атакуют
');
end;
procedure check_death;
begin
if (user.dead) then begin
print('Умер, воскрешаюсь');
engine.FaceControl(0, false);
while (user.dead) do begin
if engine.GoHome() then delay(3333+random(1111));
if (not user.dead) then delay(5555);
end;
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then engine.FaceControl(0, true)
else begin
to_gk;
gorodbuffka4;
print('Вернулся на спот, продолжаю фарм');
end;
end;
end;
procedure check_buff; //нет бафа в город >to_gk > баф и кач
begin
if not User.Buffs.ById(4324, Obj) then begin
print('нет бафа летим ');
Engine.FaceControl(0,false);
CheckAttackingMobs;
delay(random(2222)+random(3333));
Engine.UseItem(736); // юзаем сое
delay(15000);
to_gk;
gorodbuffka4;
end;
end;
procedure to_gk; //после сое респ, прийдет к гк
begin
print('процедура to_gk');
if user.inrange(117304,76318,-2670,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(118229,74677,-2450,250,150) then begin
Engine.MoveTo(118069,75907,-2680);
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115683,77610,-2650,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115685,75072,-2550,250,150) then begin
Engine.MoveTo(116949,76808,-2712);
end;
if user.inrange(115861,75200,-2550,250,150) then begin
Engine.MoveTo(116949,76808,-2712);
end;
if user.inrange(117671,78998,-2210,250,150)then begin
Engine.MoveTo(117031,78908,-2256);
Engine.MoveTo(116718,78406,-2560);
Engine.MoveTo(116232,77389,-2704);
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(116158,77443,-2660,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(116127,76015,-2729,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115193,77594,-2670,250,150) then begin
Engine.MoveTo(115193,77594,-2704);
Engine.MoveTo(117053,76874,-2712);
end;
if user.inrange(119862,76603,-2272,250,150)then begin
Engine.MoveTo(119711,76592,-2272);
Engine.MoveTo(118444,76180,-2664);
Engine.MoveTo(117674,76110,-2712);
Engine.MoveTo(117056,76868,-2712);
Engine.MoveTo(117056,76868,-2712);
end;
if user.inrange(117189,78952,-2264,250,150)then begin
Engine.MoveTo(117029,78912,-2264);
Engine.MoveTo(116221,77560,-2712);
Engine.MoveTo(117056,76868,-2712);
Engine.MoveTo(117056,76868,-2712);
end;
end;
procedure gorodbuffka4; //если у гк то иду бафферу, и тп иду кач
begin
print('процедура gorodbuffka4');
if User.inrange (117104,76838,-2688, 300, 300) then begin
delay(2550);
Engine.MoveTo(116947, 77219, -2720);
// путь к бафферу
Engine.SetTarget(32327); // таргет на баффера
delay(400);
Engine.DlgOpen();
delay(400);
Engine.DlgSel(1);
delay(400);
Engine.DlgSel(1);
delay(1550);
end;
if User.Buffs.ById(4324, Obj) then begin
Engine.MoveTo(117122, 76938, -2720);
Engine.SetTarget(30233);
delay(400);
Engine.DlgOpen();
delay(400);
Engine.DlgSel(1);
delay(400);
Engine.DlgSel(6);
delay(400);
Engine.DlgSel(1);
delay(1550);
end;
if User.inrange (142065, 81300, -3000, 100, 100) then begin
Engine.MoveTo(141550, 80946, -3136);
Engine.MoveTo(140719, 80469, -3477);
Engine.MoveTo(139564, 80126, -3462);
Engine.MoveTo(139061, 79567, -3264);
end;
if User.inrange (139061, 79567, -3264, 300, 300) then begin
engine.loadzone('оркитаикстил');
Engine.FaceControl(0,true); // включается интерфейс бота на конечной точке
end;
end;
begin
while (engine.status <> lsOnline) do delay(1111); // Ждем, пока персонаж не войдет в игру
while true do begin // Запускаем бесконечный цикл
while (engine.status = lsOnline) do begin // Пока в игре крутим проверку
delay(1111);
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then check_death;
delay(1000);
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then check_buff;
delay(1000);
if (user.distto(spot_x, spot_y, spot_z) > spot_R) then begin
print('я не в зоне кача юзаю сое');
delay(5555+random(7777));
engine.useitem(736);
delay(25000);
to_gk;
gorodbuffka4;
end;
end;
end;
end.