- Рег
- 24 Дек 2015
- Сообщения
- 46
- Реакции
- 0
uses SysUtils, Classes;
var Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Moved:Boolean;
tempItem: TL2Item;
Party:TParty;
i:integer;
buffs :TL2Buff;
L2Skill: TL2Skill;
Obj: TL2Buff;
skills : TL2Skill;
const
VK_BACK: cardinal = $8;
VK_TAB: cardinal = $9;
VK_RETURN: cardinal = $D;
login: string = '';
password: string = '';
delayTime: cardinal = 4510;
//--
procedure reconnect;
var
i: integer;
begin
delay(100);
Print('реконнект');
while 1<>2 do begin //бесконечный цикл
Delay(1010);
// Когда я не в онлайне
delay(60000);
Print('Мы вылетели,заходим');
engine.useKey(VK_RETURN);
delay(delayTime);
engine.enterText(login);
delay(delayTime);
engine.useKey(VK_TAB);
delay(delayTime);
engine.enterText(password);
for i:=0 to 3 do
begin
delay(delayTime);
engine.useKey(VK_RETURN);
if engine.status=lsonline then begin // Когда я в онлайне
script.resume;
Print('Мы зашли в игру');
delay(delayTime);
engine.loadzone('поле брани');//название конфига
end;
end;
end;
end;
//----------------------------------------------------
procedure proverka;
var Party:TParty;
i:integer;
buffs :TL2Buff;
obj:TL2Live;
Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Moved:Boolean;
tempItem: TL2Item;
L2Skill: TL2Skill;
skills : TL2Skill;
begin
delay(100);
Print('процедура кач запущена');
while true do begin
Print('процедура кач зациклена');
Delay(1000);
engine.loadzone('поле брани');//название конфига
//----- проверка на смерть
if (User.HP=0) then
begin
Print('Умерли летим в город');
Engine.GoHome;
Engine.Facecontrol(0,False);
Delay(7000);
end;
//-----------------------делевел
if User.InRange(147439, 20181, -2048, 700, 600) and (User.Level >= 67) then begin //если в точке респа и больше 65
Print('Я БОЛЬШЕ 65 ИЛИ 65 НАЧИНАЕМ СЛИВ');
Engine.FaceControl(0,false);
Delay(500);
while (User.Level >= 62) do begin // ПОКА Я БОЛЬШЕ 61 ЕБОШУ
Print('Первая часть слива');
delay(20000);
if inventory.user.byid(5780, item) and (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
if User.InRange(147461, 20075, -2034, 800) and not User.Dead then begin
Engine.MoveTo(147477, 19912, -2035);
Engine.SetTarget(30871);
Print('Выделяем одного из гварда');
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.Attack(100, True);
Delay(1200);
Engine.useSkill(100, true);
Delay(4000);
Engine.Attack(100, True);
Delay(500);
Engine.Attack(100, True);
Delay(500);
Engine.GoHome;
Delay(1000);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);
end;
if User.Dead then begin
Print('Умер при сливе');
Delay(500);
Engine.GoHome;
Delay(500);
end;
Delay(100);
if (User.Level >= 61) and User.InRange(147619, 19846, -2030, 600, 600)then begin
Print('Вторая часть слива,первая не сработала');
Engine.MoveTo(147477, 19912, -2035);
Engine.SetTarget(30870);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
delay(1200);
Engine.useSkill(100, true);
Delay(500);
Engine.Attack(100, True);
Delay(200);
Engine.GoHome;
end;
end;
while user.DeathPenalty > 0 do begin
print('penalty>0');
Engine.GoHome;
Delay(10500);
Engine.UseItem(8598);
end;
end;
//------------------ Точки респа и маршрут к баферу
if User.InRange(147465, 20190, -2049, 1000, 100) then begin //если я на 1 точке респа бежим к баферу
if inventory.User.ByID(1880, Item) and (Item.count > 99) then //отправка почты
begin
Engine.SendMail('ник перса которому отправляем почту!!!!', 'qwerty', '',[1880,999,948,999,57,1000000,1876,999,8766,999,947, 999,1868,999,1869,999]);
Print('отправка стали и ресов');
delay(1000);
end;
while user.DeathPenalty > 0 do begin
print('penalty>0');
Delay(10500);
Engine.UseItem(8598);
end;
Print('Я на 1 точке респа');
Delay(500);
Engine.FaceControl(0,false);
Engine.MoveTo(149286, 22103, -2167);
Engine.MoveTo(149580, 22651, -2164);
Engine.MoveTo(149666, 23106, -2162);
Engine.MoveTo(149642, 23367, -2142);
Engine.MoveTo(149622, 23471, -2145);
Engine.MoveTo(149499, 24119, -2167);
Engine.MoveTo(149499, 24119, -2167);
Engine.MoveTo(148764, 24422, -2030);
Engine.MoveTo(148517, 24981, -2018);
Engine.MoveTo(148471, 25575, -2039);
Engine.MoveTo(148348, 25646, -2039);
Engine.MoveTo(147698, 25942, -2039);
Engine.MoveTo(147281, 25898, -2039);
Engine.MoveTo(147204, 25870, -2039);
end;
if User.InRange(149966, 22518, -2167, 2400, 40) then begin // 2 точка респа
Print('Я на 2 точке респа');
Engine.MoveTo(149966, 22518, -2136);
Engine.MoveTo(149855, 23667, -2167);
Engine.MoveTo(148764, 24422, -2030);
Engine.MoveTo(148517, 24981, -2018);
Engine.MoveTo(148471, 25575, -2039);
Engine.MoveTo(148348, 25646, -2039);
Engine.MoveTo(147698, 25942, -2039);
Engine.MoveTo(147281, 25898, -2039);
Engine.MoveTo(147204, 25870, -2039);
end;
if User.InRange(148528, 24418, -2008, 1400, 100) then begin // 3 точка респа
Print('Я на 3 точке респа');
Engine.MoveTo(148528, 24418, -2008);
Engine.MoveTo(148470, 25737, -2039);
Engine.MoveTo(147201, 25935, -2039);
end;
if User.InRange(147295, 27145, -2200, 940, 110) then begin // 4 точка респа
Print('Я на 4 точке респа');
Engine.MoveTo(147295, 27145, -2200);
Engine.MoveTo(147197, 25948, -2039);
end;
if User.InRange(146533, 28404, -2264, 600, 40) then begin // 5 точка респа
Print('Я на 5 точке респа');
Engine.MoveTo(146763, 28203, -2264);
Engine.MoveTo(147491, 26578, -2192);
Engine.MoveTo(147450, 26155, -2093);
Engine.MoveTo(147151, 25905, -2039);
end;
if User.InRange(147801, 25790, -2039, 700, 30) then begin // 5 точка респа
Print('Я на 5 точке респа');
Engine.MoveTo(147801, 25790, -2039);
Engine.MoveTo(147220, 25915, -2039);
end;
//------------------ закуп и продажа хлама
if User.InRange(147204, 25870, -2039, 300) and ((inventory.User.ByID(8598, Item) and (Item.count < 15) or not inventory.User.ByID(8598, Item)) or ( inventory.User.ByID(736, Item) and (Item.count < 15) or not inventory.User.ByID(736, Item))
or (inventory.User.ByID(737, Item) and (Item.count < 5) or not inventory.User.ByID(737, Item))or (inventory.User.ByID(4050, Item) and (Item.count > 100)))
then begin
Print('идем закупаться');
Engine.MoveTo(147336, 25907, -2039);
Engine.MoveTo(147366, 26026, -2039);
Engine.MoveTo(147545, 26553, -2230);
Engine.MoveTo(147545, 26553, -2230);
Engine.MoveTo(147305, 27160, -2230);
Engine.MoveTo(147305, 27160, -2230);
Engine.MoveTo(146920, 27832, -2284);
Engine.MoveTo(146889, 27895, -2295);
Engine.MoveTo(146741, 28231, -2295);
Engine.MoveTo(146672, 28800, -2281);
Engine.MoveTo(146143, 28853, -2281);
Engine.MoveTo(146145, 28047, -2275);
Engine.MoveTo(146147, 27950, -2280);
Engine.MoveTo(146065, 27965, -2280);
if User.InRange(146065, 27965, -2280, 200) then Moved := true;
Engine.SetTarget(30839);
Delay(500);
Engine.MoveToTarget(-20);
Delay(500);
Engine.DlgOpen;
Delay(5000);
Engine.DlgSel(1);
Delay(1000);
Delay(500);
Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);
Delay(500);
Engine.NPCTrade(true,[4173,999,4065,999,4056,999,4167,999,4197,999,4067, 999,1864,999,4068,999,4129,999,4057,999]);
Delay(1500);
Engine.NPCTrade(true,[4173,999,4065,999,4056,999,4167,999,4197,999,4067, 999,1864,999,4068,999,4129,999,4057,999]);
Delay(1500);
Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);
Delay(1500);
if (inventory.User.ByID(8598, Item) and (Item.count < 15) or not inventory.User.ByID(8598, Item)) then Engine.NPCTrade(false,[8598,25]);
Delay(1500);
if (inventory.User.ByID(736, Item) and (Item.count < 15) or not inventory.User.ByID(736, Item)) then Engine.NPCTrade(false,[736,20]);
Delay(1500);
if (inventory.User.ByID(737, Item) and (Item.count < 5) or not inventory.User.ByID(737, Item)) then Engine.NPCTrade(false,[737,20]);
Delay(1500);
if (inventory.User.ByID(1061, Item) and (Item.count < 70) or not inventory.User.ByID(1061, Item))then Engine.NPCTrade(false,[1061,200]);
Delay(1000);
Engine.MoveTo(146142, 27951, -2280);
Engine.MoveTo(146174, 28051, -2281);
Engine.MoveTo(146238, 28107, -2281);
Engine.MoveTo(146265, 28208, -2281);
Engine.MoveTo (146291, 28268, -2280);
Engine.MoveTo(146453, 28123, -2295);
Engine.MoveTo(146550, 28004, -2295);
Engine.MoveTo(146668, 27859, -2257);
Engine.MoveTo(147096, 27338, -2233);
Engine.MoveTo(147147, 27276, -2231);
Engine.MoveTo(147382, 26907, -2211);
Engine.MoveTo(147444, 26093, -2065);
Engine.MoveTo(147373, 25886, -2039);
Engine.MoveTo(147061, 25927, -2039);
Engine.MoveTo(147204, 25870, -2039);
Engine.MoveTo(147173, 25941, -2039);
if User.InRange(147173, 25941, -2039, 50) then Moved := true;
end;
//------------------Если во области бафера бафаюсь и бегу к тп
if User.InRange(147204, 25870, -2039, 350) then begin //Если я в области баффера
if inventory.User.ByID(57, Item) and (Item.count > 10000000) then //отправка почты с золотом
begin
Print('отправка золота после продажи хлама');
Engine.SendMail('ник вашего перса которому отправляем почту', 'money', '',[57,7000000]);
delay(1000);
end;
Delay(500);
if inventory.user.byid(5780, item) and not (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
Print('Я У БАФФЕРА');
Delay(1000);
Engine.SetTarget(32327);
Engine.MoveToTarget(-20);
Engine.DlgOpen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Print('бАФНУЛСЯ');
Delay(1000);
Engine.MoveTo(147223, 25927, -2039);
Print('бегу к ТП');
Engine.MoveTo(147294, 25877, -2039);
Engine.MoveTo(147402, 25787, -2039);
Engine.MoveTo(147380, 25591, -2039);
Engine.MoveTo(147040, 25651, -2039);
Engine.MoveTo(146744, 25648, -2039);
Engine.MoveTo(146739, 25723, -2008);
Engine.MoveTo(146746, 25761, -2039);
end;
//----------------------Если я в области ТП
if User.InRange(146746, 25761, -2039, 150) then begin //Если я в области ТП
Engine.SetTarget(30848);
Delay(100);
Engine.DlgOpen;
Delay(2000);
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(18);
Delay(1500);
if User.InRange(183561, -14976, -2806, 3500) then Moved := true;
end;
//------------------Если я в радиусе точек пути на поле брани
if User.InRange(183561, -14976, -2806, 3500) then begin //точки пути к споту
Engine.MoveTo(182715, -15275, -2696);
Engine.MoveTo(182123, -15055, -2574);
Engine.MoveTo(181808, -14741, -2448);
Engine.MoveTo(181376, -14537, -2329);
Engine.MoveTo(180995, -14357, -2297);
Engine.MoveTo(179383, -13673, -2289);
Engine.MoveTo(177380, -13413, -2293);
Engine.MoveTo(176502, -13303, -2290);
Engine.MoveTo(176330, -13295, -2292);
Engine.MoveTo(176133, -13350, -2349);
Engine.MoveTo(175762, -13220, -2780);
Engine.MoveTo(175358, -13117, -3448);
Engine.MoveTo(175205, -13047, -3436);
Engine.MoveTo(175198, -13070, -3408);
Engine.MoveTo(175328, -12913, -3384);
end;
//-------------------Если персонаж не в боевой зоне и напарник ближе 50 метров к нам тогда бежим в боевую зону
if not user.inzone and User.InRange(175314, -12769, -3389, 450) then begin
delay(500);
Engine.MoveTo(175233, -12703, -3400);
end;
//-------------------- Когда персонаж в боевой зоне
while user.inzone and User.InRange(168239, -14785, -3104, 12000) do
begin
if user.inzone and user.buffs.byid(4322,buffs) and (buffs.EndTime/60000 >= 2) then begin
delay(30000);
Print('Мы в зоне');
if Engine.FaceControl(0,false) then Engine.FaceControl(0,True); // если выкл то вкл бота
print('Фармим ');
if inventory.user.byid(7900, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(7900);
Delay(800);
end;
Delay(500);
if inventory.user.byid(5780, item) and not (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
engine.gohome;
Engine.SetTarget(user);
end else
begin
if not user.buffs.byid(4322,buffs) then begin
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(35000);
engine.gohome;
end;
while User.InRange(168239, -14785, -3104, 12000) do begin // что -то с напарником
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(30000);
engine.gohome;
end;
end;
end;
end;
end;
procedure RandomMove;
Var OldX, OldY, OldXs, OldYs, def:integer; move: boolean;
begin
def:=200;
OldX:=0;
OldY:=0;
while Engine.Status = lsOnline do begin
move:=false;
delay(2000+random(10000));
OldXs:=user.x;
OldYs:=user.y;
delay(200);
if (OldXs<>user.x) or (OldYs <> user.y) then
begin
move:=true;
// Print('бежим');
end
else
begin
// Print('стоим');
end;
if sqrt(power(user.x-OldX,2) + power(user.y-OldY,2))>sqrt(2*def*def) then
begin
OldX:=user.x;
OldY:=user.y;
//Print('сменилась точка');
end;
if ((user.target = nil) or (user.target.dead)) and (not move) then
Engine.DMoveTo(OldX+random(2*def)-def,OldY+random(2*def)-def,user.z);
end;
end;
begin
Script.NewThread(@reconnect); //reconnect - процедура, в которой выполняется первый скрипт
Script.NewThread(@proverka); //my_procedure - процедура, в которой выполняется второй скрипт. ЕЕ необходимо описать выше
script.newthread(@RandomMove);
end.
мужики в чем косяк ? в строке 297 подчеркивает красным это у нас процедура продажа хлама Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);
var Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Moved:Boolean;
tempItem: TL2Item;
Party:TParty;
i:integer;
buffs :TL2Buff;
L2Skill: TL2Skill;
Obj: TL2Buff;
skills : TL2Skill;
const
VK_BACK: cardinal = $8;
VK_TAB: cardinal = $9;
VK_RETURN: cardinal = $D;
login: string = '';
password: string = '';
delayTime: cardinal = 4510;
//--
procedure reconnect;
var
i: integer;
begin
delay(100);
Print('реконнект');
while 1<>2 do begin //бесконечный цикл
Delay(1010);
// Когда я не в онлайне
delay(60000);
Print('Мы вылетели,заходим');
engine.useKey(VK_RETURN);
delay(delayTime);
engine.enterText(login);
delay(delayTime);
engine.useKey(VK_TAB);
delay(delayTime);
engine.enterText(password);
for i:=0 to 3 do
begin
delay(delayTime);
engine.useKey(VK_RETURN);
if engine.status=lsonline then begin // Когда я в онлайне
script.resume;
Print('Мы зашли в игру');
delay(delayTime);
engine.loadzone('поле брани');//название конфига
end;
end;
end;
end;
//----------------------------------------------------
procedure proverka;
var Party:TParty;
i:integer;
buffs :TL2Buff;
obj:TL2Live;
Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Moved:Boolean;
tempItem: TL2Item;
L2Skill: TL2Skill;
skills : TL2Skill;
begin
delay(100);
Print('процедура кач запущена');
while true do begin
Print('процедура кач зациклена');
Delay(1000);
engine.loadzone('поле брани');//название конфига
//----- проверка на смерть
if (User.HP=0) then
begin
Print('Умерли летим в город');
Engine.GoHome;
Engine.Facecontrol(0,False);
Delay(7000);
end;
//-----------------------делевел
if User.InRange(147439, 20181, -2048, 700, 600) and (User.Level >= 67) then begin //если в точке респа и больше 65
Print('Я БОЛЬШЕ 65 ИЛИ 65 НАЧИНАЕМ СЛИВ');
Engine.FaceControl(0,false);
Delay(500);
while (User.Level >= 62) do begin // ПОКА Я БОЛЬШЕ 61 ЕБОШУ
Print('Первая часть слива');
delay(20000);
if inventory.user.byid(5780, item) and (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
if User.InRange(147461, 20075, -2034, 800) and not User.Dead then begin
Engine.MoveTo(147477, 19912, -2035);
Engine.SetTarget(30871);
Print('Выделяем одного из гварда');
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
Engine.Attack(100, True);
Delay(1200);
Engine.useSkill(100, true);
Delay(4000);
Engine.Attack(100, True);
Delay(500);
Engine.Attack(100, True);
Delay(500);
Engine.GoHome;
Delay(1000);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);
Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);Engine.Attack(100, True);
end;
if User.Dead then begin
Print('Умер при сливе');
Delay(500);
Engine.GoHome;
Delay(500);
end;
Delay(100);
if (User.Level >= 61) and User.InRange(147619, 19846, -2030, 600, 600)then begin
Print('Вторая часть слива,первая не сработала');
Engine.MoveTo(147477, 19912, -2035);
Engine.SetTarget(30870);
Engine.MoveToTarget(-20);
Engine.MoveToTarget(-20);
delay(1200);
Engine.useSkill(100, true);
Delay(500);
Engine.Attack(100, True);
Delay(200);
Engine.GoHome;
end;
end;
while user.DeathPenalty > 0 do begin
print('penalty>0');
Engine.GoHome;
Delay(10500);
Engine.UseItem(8598);
end;
end;
//------------------ Точки респа и маршрут к баферу
if User.InRange(147465, 20190, -2049, 1000, 100) then begin //если я на 1 точке респа бежим к баферу
if inventory.User.ByID(1880, Item) and (Item.count > 99) then //отправка почты
begin
Engine.SendMail('ник перса которому отправляем почту!!!!', 'qwerty', '',[1880,999,948,999,57,1000000,1876,999,8766,999,947, 999,1868,999,1869,999]);
Print('отправка стали и ресов');
delay(1000);
end;
while user.DeathPenalty > 0 do begin
print('penalty>0');
Delay(10500);
Engine.UseItem(8598);
end;
Print('Я на 1 точке респа');
Delay(500);
Engine.FaceControl(0,false);
Engine.MoveTo(149286, 22103, -2167);
Engine.MoveTo(149580, 22651, -2164);
Engine.MoveTo(149666, 23106, -2162);
Engine.MoveTo(149642, 23367, -2142);
Engine.MoveTo(149622, 23471, -2145);
Engine.MoveTo(149499, 24119, -2167);
Engine.MoveTo(149499, 24119, -2167);
Engine.MoveTo(148764, 24422, -2030);
Engine.MoveTo(148517, 24981, -2018);
Engine.MoveTo(148471, 25575, -2039);
Engine.MoveTo(148348, 25646, -2039);
Engine.MoveTo(147698, 25942, -2039);
Engine.MoveTo(147281, 25898, -2039);
Engine.MoveTo(147204, 25870, -2039);
end;
if User.InRange(149966, 22518, -2167, 2400, 40) then begin // 2 точка респа
Print('Я на 2 точке респа');
Engine.MoveTo(149966, 22518, -2136);
Engine.MoveTo(149855, 23667, -2167);
Engine.MoveTo(148764, 24422, -2030);
Engine.MoveTo(148517, 24981, -2018);
Engine.MoveTo(148471, 25575, -2039);
Engine.MoveTo(148348, 25646, -2039);
Engine.MoveTo(147698, 25942, -2039);
Engine.MoveTo(147281, 25898, -2039);
Engine.MoveTo(147204, 25870, -2039);
end;
if User.InRange(148528, 24418, -2008, 1400, 100) then begin // 3 точка респа
Print('Я на 3 точке респа');
Engine.MoveTo(148528, 24418, -2008);
Engine.MoveTo(148470, 25737, -2039);
Engine.MoveTo(147201, 25935, -2039);
end;
if User.InRange(147295, 27145, -2200, 940, 110) then begin // 4 точка респа
Print('Я на 4 точке респа');
Engine.MoveTo(147295, 27145, -2200);
Engine.MoveTo(147197, 25948, -2039);
end;
if User.InRange(146533, 28404, -2264, 600, 40) then begin // 5 точка респа
Print('Я на 5 точке респа');
Engine.MoveTo(146763, 28203, -2264);
Engine.MoveTo(147491, 26578, -2192);
Engine.MoveTo(147450, 26155, -2093);
Engine.MoveTo(147151, 25905, -2039);
end;
if User.InRange(147801, 25790, -2039, 700, 30) then begin // 5 точка респа
Print('Я на 5 точке респа');
Engine.MoveTo(147801, 25790, -2039);
Engine.MoveTo(147220, 25915, -2039);
end;
//------------------ закуп и продажа хлама
if User.InRange(147204, 25870, -2039, 300) and ((inventory.User.ByID(8598, Item) and (Item.count < 15) or not inventory.User.ByID(8598, Item)) or ( inventory.User.ByID(736, Item) and (Item.count < 15) or not inventory.User.ByID(736, Item))
or (inventory.User.ByID(737, Item) and (Item.count < 5) or not inventory.User.ByID(737, Item))or (inventory.User.ByID(4050, Item) and (Item.count > 100)))
then begin
Print('идем закупаться');
Engine.MoveTo(147336, 25907, -2039);
Engine.MoveTo(147366, 26026, -2039);
Engine.MoveTo(147545, 26553, -2230);
Engine.MoveTo(147545, 26553, -2230);
Engine.MoveTo(147305, 27160, -2230);
Engine.MoveTo(147305, 27160, -2230);
Engine.MoveTo(146920, 27832, -2284);
Engine.MoveTo(146889, 27895, -2295);
Engine.MoveTo(146741, 28231, -2295);
Engine.MoveTo(146672, 28800, -2281);
Engine.MoveTo(146143, 28853, -2281);
Engine.MoveTo(146145, 28047, -2275);
Engine.MoveTo(146147, 27950, -2280);
Engine.MoveTo(146065, 27965, -2280);
if User.InRange(146065, 27965, -2280, 200) then Moved := true;
Engine.SetTarget(30839);
Delay(500);
Engine.MoveToTarget(-20);
Delay(500);
Engine.DlgOpen;
Delay(5000);
Engine.DlgSel(1);
Delay(1000);
Delay(500);
Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);
Delay(500);
Engine.NPCTrade(true,[4173,999,4065,999,4056,999,4167,999,4197,999,4067, 999,1864,999,4068,999,4129,999,4057,999]);
Delay(1500);
Engine.NPCTrade(true,[4173,999,4065,999,4056,999,4167,999,4197,999,4067, 999,1864,999,4068,999,4129,999,4057,999]);
Delay(1500);
Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);
Delay(1500);
if (inventory.User.ByID(8598, Item) and (Item.count < 15) or not inventory.User.ByID(8598, Item)) then Engine.NPCTrade(false,[8598,25]);
Delay(1500);
if (inventory.User.ByID(736, Item) and (Item.count < 15) or not inventory.User.ByID(736, Item)) then Engine.NPCTrade(false,[736,20]);
Delay(1500);
if (inventory.User.ByID(737, Item) and (Item.count < 5) or not inventory.User.ByID(737, Item)) then Engine.NPCTrade(false,[737,20]);
Delay(1500);
if (inventory.User.ByID(1061, Item) and (Item.count < 70) or not inventory.User.ByID(1061, Item))then Engine.NPCTrade(false,[1061,200]);
Delay(1000);
Engine.MoveTo(146142, 27951, -2280);
Engine.MoveTo(146174, 28051, -2281);
Engine.MoveTo(146238, 28107, -2281);
Engine.MoveTo(146265, 28208, -2281);
Engine.MoveTo (146291, 28268, -2280);
Engine.MoveTo(146453, 28123, -2295);
Engine.MoveTo(146550, 28004, -2295);
Engine.MoveTo(146668, 27859, -2257);
Engine.MoveTo(147096, 27338, -2233);
Engine.MoveTo(147147, 27276, -2231);
Engine.MoveTo(147382, 26907, -2211);
Engine.MoveTo(147444, 26093, -2065);
Engine.MoveTo(147373, 25886, -2039);
Engine.MoveTo(147061, 25927, -2039);
Engine.MoveTo(147204, 25870, -2039);
Engine.MoveTo(147173, 25941, -2039);
if User.InRange(147173, 25941, -2039, 50) then Moved := true;
end;
//------------------Если во области бафера бафаюсь и бегу к тп
if User.InRange(147204, 25870, -2039, 350) then begin //Если я в области баффера
if inventory.User.ByID(57, Item) and (Item.count > 10000000) then //отправка почты с золотом
begin
Print('отправка золота после продажи хлама');
Engine.SendMail('ник вашего перса которому отправляем почту', 'money', '',[57,7000000]);
delay(1000);
end;
Delay(500);
if inventory.user.byid(5780, item) and not (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
Print('Я У БАФФЕРА');
Delay(1000);
Engine.SetTarget(32327);
Engine.MoveToTarget(-20);
Engine.DlgOpen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Print('бАФНУЛСЯ');
Delay(1000);
Engine.MoveTo(147223, 25927, -2039);
Print('бегу к ТП');
Engine.MoveTo(147294, 25877, -2039);
Engine.MoveTo(147402, 25787, -2039);
Engine.MoveTo(147380, 25591, -2039);
Engine.MoveTo(147040, 25651, -2039);
Engine.MoveTo(146744, 25648, -2039);
Engine.MoveTo(146739, 25723, -2008);
Engine.MoveTo(146746, 25761, -2039);
end;
//----------------------Если я в области ТП
if User.InRange(146746, 25761, -2039, 150) then begin //Если я в области ТП
Engine.SetTarget(30848);
Delay(100);
Engine.DlgOpen;
Delay(2000);
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(18);
Delay(1500);
if User.InRange(183561, -14976, -2806, 3500) then Moved := true;
end;
//------------------Если я в радиусе точек пути на поле брани
if User.InRange(183561, -14976, -2806, 3500) then begin //точки пути к споту
Engine.MoveTo(182715, -15275, -2696);
Engine.MoveTo(182123, -15055, -2574);
Engine.MoveTo(181808, -14741, -2448);
Engine.MoveTo(181376, -14537, -2329);
Engine.MoveTo(180995, -14357, -2297);
Engine.MoveTo(179383, -13673, -2289);
Engine.MoveTo(177380, -13413, -2293);
Engine.MoveTo(176502, -13303, -2290);
Engine.MoveTo(176330, -13295, -2292);
Engine.MoveTo(176133, -13350, -2349);
Engine.MoveTo(175762, -13220, -2780);
Engine.MoveTo(175358, -13117, -3448);
Engine.MoveTo(175205, -13047, -3436);
Engine.MoveTo(175198, -13070, -3408);
Engine.MoveTo(175328, -12913, -3384);
end;
//-------------------Если персонаж не в боевой зоне и напарник ближе 50 метров к нам тогда бежим в боевую зону
if not user.inzone and User.InRange(175314, -12769, -3389, 450) then begin
delay(500);
Engine.MoveTo(175233, -12703, -3400);
end;
//-------------------- Когда персонаж в боевой зоне
while user.inzone and User.InRange(168239, -14785, -3104, 12000) do
begin
if user.inzone and user.buffs.byid(4322,buffs) and (buffs.EndTime/60000 >= 2) then begin
delay(30000);
Print('Мы в зоне');
if Engine.FaceControl(0,false) then Engine.FaceControl(0,True); // если выкл то вкл бота
print('Фармим ');
if inventory.user.byid(7900, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(7900);
Delay(800);
end;
Delay(500);
if inventory.user.byid(5780, item) and not (Item.Equipped) then begin //поверка надет ли шмот
Delay(500);
Engine.UseItem(5780);
Delay(800);
end;
if inventory.user.byid(5768, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(5768);
Delay(800);
end;
if inventory.user.byid(547, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(547);
Delay(800);
end;
if inventory.user.byid(2382, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(2382);
Delay(800);
end;
engine.gohome;
Engine.SetTarget(user);
end else
begin
if not user.buffs.byid(4322,buffs) then begin
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(35000);
engine.gohome;
end;
while User.InRange(168239, -14785, -3104, 12000) do begin // что -то с напарником
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(30000);
engine.gohome;
end;
end;
end;
end;
end;
procedure RandomMove;
Var OldX, OldY, OldXs, OldYs, def:integer; move: boolean;
begin
def:=200;
OldX:=0;
OldY:=0;
while Engine.Status = lsOnline do begin
move:=false;
delay(2000+random(10000));
OldXs:=user.x;
OldYs:=user.y;
delay(200);
if (OldXs<>user.x) or (OldYs <> user.y) then
begin
move:=true;
// Print('бежим');
end
else
begin
// Print('стоим');
end;
if sqrt(power(user.x-OldX,2) + power(user.y-OldY,2))>sqrt(2*def*def) then
begin
OldX:=user.x;
OldY:=user.y;
//Print('сменилась точка');
end;
if ((user.target = nil) or (user.target.dead)) and (not move) then
Engine.DMoveTo(OldX+random(2*def)-def,OldY+random(2*def)-def,user.z);
end;
end;
begin
Script.NewThread(@reconnect); //reconnect - процедура, в которой выполняется первый скрипт
Script.NewThread(@proverka); //my_procedure - процедура, в которой выполняется второй скрипт. ЕЕ необходимо описать выше
script.newthread(@RandomMove);
end.
мужики в чем косяк ? в строке 297 подчеркивает красным это у нас процедура продажа хлама Engine.NPCTrade(true,[4066,999,4130,999,4050,999,4052,999,4439,999,4966, 999,4949,999,1988,999,2960,999,4072,999,4049,999,2 963,999,4072,999,4049,999,2963,999,1832,999,4104,9 99,4107,999,4064,999,4108,999]);