Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

фарм скрипт

Статус
В этой теме нельзя размещать новые ответы.
Рег
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]);
 
Попробуй так, у меня норм компилируется

Код:
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,2963,999,4072,999,4049,999,2963,999,1832,999,4104,999,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,2963,999,4072,999,4049,999,2963,999,1832,999,4104,999,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.
 
еще одну неприятность нашел , в процедуре слива, отказывается юзать дез пенальти , откатывается с 15лвл пенальти а потом только начинает юзать их, вроди же прописано юзать после каждой смерти если есть пеналти , как подправить мужики
 
Попробуй выставить дезпенальти в самом интерфейсе бота
 

Вложения

  • FastStoneEditor1.jpg
    FastStoneEditor1.jpg
    168.8 KB · Просмотры: 0
@evilinex, это уже пробовал интерфейс то выключен , и соответственно не работает )
 
ну тогда отдельно в процедуру вынеси снятие пенальти и отдельным потоком, там снятие 2 раза почему то в скрипте втречается
 
@evilinex, ну вот и я говорю что вроди как должно снимать после каждого нажатие в город если висит пенальти то снимать, но снимает только после всего отката перса, где то косяк
 
Мужики дописываю тему эту, осталось всего не чего прошу помощи даже хоть идею подкинте

вообщем

1. при дисконнекте чар заходит в игу и стоит на месте не двигаясь что бы он побежал нужно стрелками подвигать на клаве я думаю вы понимаете о чем я говорю, соответственно перс тупо стоит в онлайне и не бежит не куда , дайте хотя бы идею если не кто не знает как разрулить
2. это чек бафа , баф чекается и перс берет сам себя в таргет то моба то себя, это замедляет фарм на все эти затупы уходит время, соответсвенно как можно пофиксить чек бафа что бы он себя не брал в таргет

3. косяк с ресом пета через интерфейс , почему то два раза подряд юзает скролл , даже когда пет уже жив
 
НУ в втором пункте у тебя где в хиле или в бафах не стоит галка если бафф есть или нету , или с хлом где-то что-то навертел , или он пытается использовать скил который в КД.
В первом пункте попробуй Engine.UseKey();
 
как сделать проверку на то что персонаж стоит а не сидит?
 
Поправил косяки, такой прикол , можно ли отправлять почтой не стопковые ? вещи например 5 дк роб лежит и я хочу их за раз кинуть почтой, ид,кол во. не катит отсылает 1 робу , но при условии продажи в магазин ид,кол во. работает и продает все робы в магаз как быть?
 
engine.gohome;
end else
begin
if not user.buffs.byid(4322,buffs) then begin
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
if User.Sitting then begin
Engine.Stand;
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(35000);
engine.gohome;
end;
while User.InRange(147651, -21687, -3365, 12000) do begin // что -то с напарником
Print('стоп фарм,баф кончился');
Engine.FaceControl(0,false);
if User.Sitting then begin
Engine.Stand;
engine.gohome;
delay(500);
engine.gohome;
Engine.UseItem(736);
delay(30000);
engine.gohome;
end;
end;
end;
end;
end;
end;
end;


братаны при таком раскладе он встает всегда когда сел , а мне нужно что бы он вставал только при слетании определенного бафа
 
Закрыто. Один вопрос - одна тема.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху