функционал скрипта - Авто релог , если произошел разрыв связи с сервером . Авто сое , если перс стоит долго на одном месте или застрял юзает сое на изначальную точку ( город ),ну и конечно после смерти бежит на точку фарма. Делался для PentaWar , но конечно можно подпилить на свой сервер .
Скрипт помогали делать Div ,WingsFree ,Garfild им отдельно спасибо .
Скрипт помогали делать Div ,WingsFree ,Garfild им отдельно спасибо .
const
VK_BACK: cardinal = $8;
VK_TAB: cardinal = $9;
VK_RETURN: cardinal = $D;
login: string = '******';
password: string = '*******';
delayTime: cardinal = 2000;
var obj: TL2NPC;
obj2: TL2Effect;
i,soe: integer;
Enemy: TL2Live;
ProverkaXYZ: array [0..2] of Integer;
procedure clear;
begin
print('Запущена процедура запуска персонажа в игру');
for i:=0 to 32 do
engine.useKey(VK_BACK);
end;
procedure SetProverkaXYZ;
begin
while true do begin
print('запоминаю координаты');
ProverkaXYZ[0] := User.X;
ProverkaXYZ[1] := User.Y;
ProverkaXYZ[2] := User.Z;
delay(60000);
if (ProverkaXYZ[0] = User.X) and (ProverkaXYZ[1] = User.Y) and (ProverkaXYZ[2] = User.Z) then begin
soe:=1;
end;
end;
end;
procedure online;
begin
while true do begin
if engine.status<>lsonline then begin // its when user not online
print('Персонаж в оффлайне');
clear;
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);
end;
print('Должен быть в онлайне');
delay(5000);
end;
delay(5000);
end;
end;
Begin
soe:=0;
Script.newThread(@SetProverkaXYZ);
Script.newThread(@Online);
while true do begin // бесконечный цикл
if soe = 1 then begin
print('Стоим на месте больше минуты, делаю сое');
delay(1000);
engine.useitem(25847);
soe:=0;
end;
if User.Dead then begin // если чарт мертв выполнять следующие действия
print('Умер, встаю');
Engine.FaceControl(0,false); //отключить интерфейс бота
Engine.gohome; // нажать To Vilage
delay(12000);
end; //конец отрывка скрипта
//единственная точка респа . бежит на середнину между тп и бафера
if User.inrange(-116920, 46536, 368, 250, 150) then begin
print('точка респа . бежит на середнину между тп и бафера');
Engine.MoveTo(-116856, 46632, 368);
delay(2550);
delay(5000);
// Диалог с тп
Engine.SetTarget(4562);
Engine.DlgOpen();
delay(1000);
// выбор кнопки аванпосты
Engine.BypassToServer('01');
delay(1000);
//выбор нужного аванпоста из списка
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 00') then Engine.BypassToServer('00');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 01') then Engine.BypassToServer('01');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 02') then Engine.BypassToServer('02');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 03') then Engine.BypassToServer('03');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 04') then Engine.BypassToServer('04');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 05') then Engine.BypassToServer('05');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 06') then Engine.BypassToServer('06');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 07') then Engine.BypassToServer('07');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 08') then Engine.BypassToServer('08');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 09') then Engine.BypassToServer('09');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 10') then Engine.BypassToServer('10');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 11') then Engine.BypassToServer('11');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 12') then Engine.BypassToServer('12');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 13') then Engine.BypassToServer('13');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 14') then Engine.BypassToServer('14');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 15') then Engine.BypassToServer('15');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 16') then Engine.BypassToServer('16');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 17') then Engine.BypassToServer('17');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 18') then Engine.BypassToServer('18');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 19') then Engine.BypassToServer('19');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 20') then Engine.BypassToServer('20');
delay(100);
//выбор нужного тп в аванпосте
Engine.BypassToServer('00');
delay(5000);
delay(5000);
end;
//спот
if User.inrange(123456677, -56756, -45664, 250, 150) then begin
Engine.MoveTo(887543, -5677875, -56754);
end;
begin
if not engine.GetFaceState(0) then begin
Engine.FaceControl(0,true); //включить бота (true включить , false выключить)
print('Включил бота');
end;
end;
end;
delay(550);
end.
VK_BACK: cardinal = $8;
VK_TAB: cardinal = $9;
VK_RETURN: cardinal = $D;
login: string = '******';
password: string = '*******';
delayTime: cardinal = 2000;
var obj: TL2NPC;
obj2: TL2Effect;
i,soe: integer;
Enemy: TL2Live;
ProverkaXYZ: array [0..2] of Integer;
procedure clear;
begin
print('Запущена процедура запуска персонажа в игру');
for i:=0 to 32 do
engine.useKey(VK_BACK);
end;
procedure SetProverkaXYZ;
begin
while true do begin
print('запоминаю координаты');
ProverkaXYZ[0] := User.X;
ProverkaXYZ[1] := User.Y;
ProverkaXYZ[2] := User.Z;
delay(60000);
if (ProverkaXYZ[0] = User.X) and (ProverkaXYZ[1] = User.Y) and (ProverkaXYZ[2] = User.Z) then begin
soe:=1;
end;
end;
end;
procedure online;
begin
while true do begin
if engine.status<>lsonline then begin // its when user not online
print('Персонаж в оффлайне');
clear;
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);
end;
print('Должен быть в онлайне');
delay(5000);
end;
delay(5000);
end;
end;
Begin
soe:=0;
Script.newThread(@SetProverkaXYZ);
Script.newThread(@Online);
while true do begin // бесконечный цикл
if soe = 1 then begin
print('Стоим на месте больше минуты, делаю сое');
delay(1000);
engine.useitem(25847);
soe:=0;
end;
if User.Dead then begin // если чарт мертв выполнять следующие действия
print('Умер, встаю');
Engine.FaceControl(0,false); //отключить интерфейс бота
Engine.gohome; // нажать To Vilage
delay(12000);
end; //конец отрывка скрипта
//единственная точка респа . бежит на середнину между тп и бафера
if User.inrange(-116920, 46536, 368, 250, 150) then begin
print('точка респа . бежит на середнину между тп и бафера');
Engine.MoveTo(-116856, 46632, 368);
delay(2550);
delay(5000);
// Диалог с тп
Engine.SetTarget(4562);
Engine.DlgOpen();
delay(1000);
// выбор кнопки аванпосты
Engine.BypassToServer('01');
delay(1000);
//выбор нужного аванпоста из списка
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 00') then Engine.BypassToServer('00');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 01') then Engine.BypassToServer('01');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 02') then Engine.BypassToServer('02');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 03') then Engine.BypassToServer('03');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 04') then Engine.BypassToServer('04');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 05') then Engine.BypassToServer('05');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 06') then Engine.BypassToServer('06');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 07') then Engine.BypassToServer('07');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 08') then Engine.BypassToServer('08');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 09') then Engine.BypassToServer('09');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 10') then Engine.BypassToServer('10');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 11') then Engine.BypassToServer('11');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 12') then Engine.BypassToServer('12');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 13') then Engine.BypassToServer('13');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 14') then Engine.BypassToServer('14');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 15') then Engine.BypassToServer('15');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 16') then Engine.BypassToServer('16');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 17') then Engine.BypassToServer('17');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 18') then Engine.BypassToServer('18');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 19') then Engine.BypassToServer('19');
if Engine.DlgText.contains('Вечные руины(ур.70)" action="bypass -h 20') then Engine.BypassToServer('20');
delay(100);
//выбор нужного тп в аванпосте
Engine.BypassToServer('00');
delay(5000);
delay(5000);
end;
//спот
if User.inrange(123456677, -56756, -45664, 250, 150) then begin
Engine.MoveTo(887543, -5677875, -56754);
end;
begin
if not engine.GetFaceState(0) then begin
Engine.FaceControl(0,true); //включить бота (true включить , false выключить)
print('Включил бота');
end;
end;
end;
delay(550);
end.