В общем попробовал реализовать АФК фарм в тулли (ЕЕ + даггерщик), и все получается до того момента, как через стену сагрится голем и даст по щщам, либо ее затупит и перестанет слипать. На фришках, где дистанция агра моба не высокая, будет нормально работать. Скрипт сыроват, если кто поможет исправить ошибки, буду признателен.
Для фарма нужна ее с точеным трансом и турн андедом ( 14 - 17) и обоим нормальные сеты с защитой от дарк атрибута.
Скрипт позволяет подтаскивать мобов к ЕЕ. Запускается на даггерщике. Иногда начинает тупить и ножик вместо того, чтобы чекать вторую комнату начинает заного с первой.
function MobInZone: boolean; // Проверка мобов в зоне, взята из этой темы http://rawr.su/topic/2604-prostoj-skript-na-farm-katakomb/
var
mob: integer;
begin
result:= False;
for mob:=0 to npclist.count-1 do begin // 1 если ЕЕ с курой
if npclist.items(mob).inzone and not npclist.items(mob).dead then begin
if npclist.items(mob).z > (user.z-400) then begin
if npclist.items(mob).z < (user.z+400) then begin
result:= true;
end;
end;
end;
end;
end;
function MobAggrToMe: boolean; // Проверка на атакующих мобов, взята из этой темы http://rawr.su/topic/123-beg-vokrug-persa-pri-atake/
var num:integer;
begin
result:=false;
for num:=0 to NpcList.Count - 1 do
if (NpcList.Items(num).Target=User) and not(NpcList.Items(num).Dead) then begin
result:=true;
exit;
end;
end;
procedure stChek1; // чекаем первую комнату
begin
while Engine.Status = lsOnline do begin
delay(200);
Engine.Facecontrol(0,false); // отключаем интерфейс, чтобы бот нормально прошел наш маршрут
delay(200);
Engine.LoadConfig('topTH'); // загружает настройки даггерщика, в которых он атакует нужных андедов люром
delay(200);
engine.LoadZone('T1.zmap'); // загружаем зону первой комнаты в тулли
delay(200);
Engine.MoveTo(-12315, 273134, -13627); // координаты точки входа в комнату
Engine.Facecontrol(0,True); // включаем интерфейс, чтобы бот зацепил люром моба
Engine.MoveTo(-12329, 272949, -13627);
Engine.MoveTo(-12562, 272635, -13627);
if MobAggrToMe then begin // как только сагрили моба, выключаем интерфейс и бежим к нашей ЕЕ
Engine.FaceControl(0,false);
Engine.MoveTo(-12272, 273187, -13627);
Engine.MoveTo(-12786, 273723, -13623);
Engine.CancelTarget;
engine.LoadZone('Tully.zmap'); // загружаем зону в которой наша ее будет леталить мобов
Engine.LoadConfig('topTHbluff'); // загружаем настройки, в которых наш ножик подстрахует ЕЕху блафом
delay(200);
Engine.Facecontrol(0,True);
delay(200);
while MobInZone do delay(1500); // проверка мобов в зоне
while not mobinzone do stchek2; // если мобов убиты, бежим в следующую комнату (вообще эту функцию можно и убрать для увеличения КПД, если ЕЕ держит в своей зоне все живое в слипе и нормально леталит)
end;
end;
end;
procedure stChek2; // все тоже самое что и выше, только во второй комнате
begin
delay(200);
Engine.Facecontrol(0,false);
delay(200);
Engine.LoadConfig('topTH');
delay(200);
engine.LoadZone('T2.zmap');
delay(200);
Engine.MoveTo(-13332, 273744, -13627);
Engine.Facecontrol(0,True);
Engine.MoveTo(-13773, 274074, -13627);
if MobAggrToMe then begin
Engine.FaceControl(0,false);
Engine.MoveTo(-13636, 273984, -13627);
Engine.MoveTo(-12524, 273619, -13622);
engine.LoadZone('Tully.zmap');
Engine.MoveTo(-12787, 273798, -13621);
Engine.CancelTarget;
Engine.LoadConfig('topTHBluff');
delay(200);
Engine.Facecontrol(0,True);
delay(200);
while MobInZone do delay(1500);
while not mobinzone do stchek1; // мобы в зоне с ЕЕ убиты, чекаем снова первую комнату
end;
end;
begin
stchek1;
pause; //
end.
Интересует вопрос: как заставить ЕЕ слипать все живое и не спящее в заданной зоне?
Для фарма нужна ее с точеным трансом и турн андедом ( 14 - 17) и обоим нормальные сеты с защитой от дарк атрибута.
Скрипт позволяет подтаскивать мобов к ЕЕ. Запускается на даггерщике. Иногда начинает тупить и ножик вместо того, чтобы чекать вторую комнату начинает заного с первой.
function MobInZone: boolean; // Проверка мобов в зоне, взята из этой темы http://rawr.su/topic/2604-prostoj-skript-na-farm-katakomb/
var
mob: integer;
begin
result:= False;
for mob:=0 to npclist.count-1 do begin // 1 если ЕЕ с курой
if npclist.items(mob).inzone and not npclist.items(mob).dead then begin
if npclist.items(mob).z > (user.z-400) then begin
if npclist.items(mob).z < (user.z+400) then begin
result:= true;
end;
end;
end;
end;
end;
function MobAggrToMe: boolean; // Проверка на атакующих мобов, взята из этой темы http://rawr.su/topic/123-beg-vokrug-persa-pri-atake/
var num:integer;
begin
result:=false;
for num:=0 to NpcList.Count - 1 do
if (NpcList.Items(num).Target=User) and not(NpcList.Items(num).Dead) then begin
result:=true;
exit;
end;
end;
procedure stChek1; // чекаем первую комнату
begin
while Engine.Status = lsOnline do begin
delay(200);
Engine.Facecontrol(0,false); // отключаем интерфейс, чтобы бот нормально прошел наш маршрут
delay(200);
Engine.LoadConfig('topTH'); // загружает настройки даггерщика, в которых он атакует нужных андедов люром
delay(200);
engine.LoadZone('T1.zmap'); // загружаем зону первой комнаты в тулли
delay(200);
Engine.MoveTo(-12315, 273134, -13627); // координаты точки входа в комнату
Engine.Facecontrol(0,True); // включаем интерфейс, чтобы бот зацепил люром моба
Engine.MoveTo(-12329, 272949, -13627);
Engine.MoveTo(-12562, 272635, -13627);
if MobAggrToMe then begin // как только сагрили моба, выключаем интерфейс и бежим к нашей ЕЕ
Engine.FaceControl(0,false);
Engine.MoveTo(-12272, 273187, -13627);
Engine.MoveTo(-12786, 273723, -13623);
Engine.CancelTarget;
engine.LoadZone('Tully.zmap'); // загружаем зону в которой наша ее будет леталить мобов
Engine.LoadConfig('topTHbluff'); // загружаем настройки, в которых наш ножик подстрахует ЕЕху блафом
delay(200);
Engine.Facecontrol(0,True);
delay(200);
while MobInZone do delay(1500); // проверка мобов в зоне
while not mobinzone do stchek2; // если мобов убиты, бежим в следующую комнату (вообще эту функцию можно и убрать для увеличения КПД, если ЕЕ держит в своей зоне все живое в слипе и нормально леталит)
end;
end;
end;
procedure stChek2; // все тоже самое что и выше, только во второй комнате
begin
delay(200);
Engine.Facecontrol(0,false);
delay(200);
Engine.LoadConfig('topTH');
delay(200);
engine.LoadZone('T2.zmap');
delay(200);
Engine.MoveTo(-13332, 273744, -13627);
Engine.Facecontrol(0,True);
Engine.MoveTo(-13773, 274074, -13627);
if MobAggrToMe then begin
Engine.FaceControl(0,false);
Engine.MoveTo(-13636, 273984, -13627);
Engine.MoveTo(-12524, 273619, -13622);
engine.LoadZone('Tully.zmap');
Engine.MoveTo(-12787, 273798, -13621);
Engine.CancelTarget;
Engine.LoadConfig('topTHBluff');
delay(200);
Engine.Facecontrol(0,True);
delay(200);
while MobInZone do delay(1500);
while not mobinzone do stchek1; // мобы в зоне с ЕЕ убиты, чекаем снова первую комнату
end;
end;
begin
stchek1;
pause; //
end.
Интересует вопрос: как заставить ЕЕ слипать все живое и не спящее в заданной зоне?