Зарегистрировавшись у нас, вы сможете обсуждать, делиться личными сообщениями с другими членами нашего сообщества.
Регистрируйтесь прямо сейчас!Всем бы рассказали)Проблема решена, всё в личке
это он думал что решено) на самом деле не решено)Всем бы рассказали)
собственно говоря...я писал себе скрипты ребафа и возврата на спот на процедурах с повторами. все работает отлично кроме одного. добежав до спота бот бежит по маршруту обратно к начальной точке мув он. туда сюда. решение не нашел, поэтому забахал обычные версии. работают нормально, за одним исключением, грузят цп. ок, убрал в них цикл повтора. без этого работают. но без повтора отсутствует проверка на баф, ручками соимся и запускаем скриптец ребафа.это он думал что решено) на самом деле не решено)
проблема остается.
скрипты без повтора и скрипты на процедурах (в т.ч. с повторами) работают нормально.
а вот обычные скрипты с циклами повтора по прежнему добавляют к адрику 15-20% нагрузки цп за штуку...
выложи сделаю тесты, мб пойму в чем бедасобственно говоря...я писал себе скрипты ребафа и возврата на спот на процедурах с повторами. все работает отлично кроме одного. добежав до спота бот бежит по маршруту обратно к начальной точке мув он. туда сюда. решение не нашел, поэтому забахал обычные версии. работают нормально, за одним исключением, грузят цп. ок, убрал в них цикл повтора. без этого работают. но без повтора отсутствует проверка на баф, ручками соимся и запускаем скриптец ребафа.
бог с ними со спойлами, но есть персы или ситуации, когда нужен цикл
obj: TL2NPC;выложи сделаю тесты, мб пойму в чем беда
var
obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
Buff: TL2Buff;
begin
while 1 <> 2 do
begin
if (not User.Buffs.ByID(1086, buff)) or User.dead then // если нет хаст
begin
Engine.FaceControl(0, false); //выключаем бота
delay(500);
Engine.UseItem(1829);
delay(1000);
Engine.gohome(rtClanHall); // сое кх
Delay(25000);
begin
if User.inrange(145667, 25356, -2096, 500) then // точка появления в КХ
begin
Engine.SetTarget(35443);
delay(1000);
Engine.DlgOpen();
delay(500);
Engine.DlgSel(3);
delay(500);
Engine.BypassToServer('01');
delay(1000);
Engine.DlgSel(1);
delay(2000);
Engine.MoveTo(147480, 28064, -2256);
Engine.MoveTo(147154, 27773, -2279);
Engine.MoveTo(147197, 27211, -2215);
Engine.MoveTo(147292, 26298, -2133);
Engine.MoveTo(147193, 25871, -2023);
delay(2000);
begin
if User.inrange(147193, 25871, -2023, 500) then // рядом с бафером адена без бафа
begin
Engine.SetTarget(31613);
delay(1000);
Engine.MoveToTarget(-20);
Delay(3000);
Engine.DlgOpen();
delay(500);
Engine.BypassToServer('02');
delay(1000);
Engine.BypassToServer('03');
delay(1000);
Engine.BypassToServer('00');
Delay(500);
Engine.CancelTarget;
begin
if User.inrange(147176, 25688, -2016, 500) then // рядом с бафером адена с бафом
begin
Engine.SetTarget(31107);
delay(1000);
Engine.MoveToTarget(-20);
Delay(1000);
Engine.DlgOpen();
delay(500);
Engine.BypassToServer('03');
delay(500);
Engine.DlgSel(2); //улетаем в бренд
delay(1500);
begin
if User.inrange(46177, 170307, -4960, 500) then // точка появления в бренд
begin
Engine.MoveTo(46743, 170298, -4989); //первая метка по дороге от шарика
Engine.MoveTo(47206, 170369, -4991);
Engine.MoveTo(47572, 170596, -4991);
Engine.MoveTo(48139, 170550, -4991);
Engine.MoveTo(48435, 170322, -4991);
Engine.MoveTo(49141, 170299, -4989); //добежали до спота
Delay(500);
begin
if User.inrange(49141, 170299, -4989, 500) then //добежали до спота
begin
Engine.FaceControl(0,true); //врубаем бота
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
Delay(500); //добавил
end;
//Delay(500); удалил
end.
о, вот это классная идея, проверю, сяп)достаточно последний делей перенести внутрь цикла. (см код внизу)
есть теория что логика для вайл ду вообще отсутствует, потому что это просто повтор цикла...но не могу придумать другую логику, опять таки...советую поработать над логикой.
это же не процедуры, не скриптер не знаю как назвать, скажем это последовтельные действия...если убираем вайл ду...то есть цикл, то смысл в проверке отсутствует, их тоже убираем, и дальше просто руками сое, запускаем, норм без нагрузки ребафется добегает...но без повтора будет лежать в случае смерти пока руками не отошлю в кх и не запущу скрипт по новойкуча вложеных друг в друга процедур не есть гуд.
хз что там не так может пойти) скрипт вообще пройстейший) при отсутствии бафа или смерти сое кх, бежим к баферу, бежим на спот, все остальное в настройках адрика вшито)))))если что-то пошло не так
var
obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
var Buff: TL2Buff;
procedure dead();
begin
if User.dead then
begin
Engine.FaceControl(0, false); //выключаем бота
Engine.gohome(rtClanHall); //сразу улетаем в КХ
Delay(2000);
gotobuff();
Delay(2000);
end;
end;
procedure checkbuff();
begin
if (not User.Buffs.ByID(1086, buff)) then // если нет хаст
begin
Engine.FaceControl(0, false); //выключаем бота
Engine.UseItem(1829); // сое кх
Delay(25000);
gotobuff();
Delay(2000);
end;
end;
procedure gotobuff();
begin
if User.inrange(145667, 25356, -2096, 500) then // точка появления в КХ
begin
Engine.SetTarget(35443);
delay(1000);
Engine.DlgOpen();
delay(500);
Engine.DlgSel(3);
delay(500);
Engine.BypassToServer('01');
delay(1000);
Engine.DlgSel(1);
delay(2000);
Engine.MoveTo(147480, 28064, -2256);
Engine.MoveTo(147154, 27773, -2279);
Engine.MoveTo(147197, 27211, -2215);
Engine.MoveTo(147292, 26298, -2133);
Engine.MoveTo(147193, 25871, -2023);
delay(2000);
end;
end;
procedure rebuff();
begin
if User.inrange(147193, 25871, -2023, 500) then // рядом с бафером адена
begin
Engine.SetTarget(31613);
delay(1000);
Engine.MoveToTarget(-20);
Delay(3000);
Engine.DlgOpen();
delay(500);
Engine.BypassToServer('02');
delay(1000);
Engine.BypassToServer('03');
delay(1000);
Engine.BypassToServer('00');
Delay(500);
Engine.CancelTarget;
end;
end;
procedure roadtospot();
begin
if (User.Buffs.ByID(1268, buff)) then // если есть вампирик
begin
Engine.SetTarget(31107);
delay(1000);
Engine.MoveToTarget(-20);
Delay(1000);
Engine.DlgOpen();
delay(500);
Engine.BypassToServer('03');
delay(500);
Engine.DlgSel(2); //улетаем в бренд
delay(500);
Engine.MoveTo(46743, 170298, -4989); //первая метка по дороге от шарика
end;
end;
procedure roadtospot2();
begin
if User.inrange(46743, 170298, -4989, 500) then //первая метка по дороге от шарика
begin
Engine.MoveTo(47206, 170369, -4991);
Engine.MoveTo(47572, 170596, -4991);
Engine.MoveTo(48139, 170550, -4991);
Engine.MoveTo(48435, 170322, -4991);
Engine.MoveTo(49141, 170299, -4989); //добежали до спота
Delay(1000);
onn();
Delay(1000);
end;
end;
procedure onn();
begin
if User.inrange(49141, 170299, -4989, 500) then //добежали до спота
begin
Engine.FaceControl(0,true); //врубаем бота
end;
end;
begin
while 1 <> 2 do
begin // бесконечный цикл
begin
dead();
checkbuff();
gotobuff();
rebuff();
roadtospot();
roadtospot2();
onn();
end;
end;
end.