[ Новые сообщения · Участники · Правила форума · Поиск · RSS ] |
|
Форум Lineage 2 Adrenalin бот Скрипты для Adrenalin Бегать вокруг при атаке |
Бегать вокруг при атаке |
Скрипт позовляет убегать от атакующих мобов, если это окно бафера к примеру, если его взяли в цель мобы и атакуют персонаж будет бегать вокруг главного персонажа чтобы его не убили мобы.
Код uses SysUtils; var CenterX,CenterY,CenterZ,NowRadius,NowAngle: integer; GuardName:string; DisableBot:boolean; Obj:Tl2Live; procedure GoToPoint(X,Y,Z,Radius,Angle:integer); //Расчёт конечной точки с учетом угла begin Engine.MoveTo(X+trunc(Radius*sin(Angle)),Y+trunc(Radius*cos(Angle)),Z+20); //Z чуть добавляем, иначе будет тупить на неровной поверхности и пытаться "закопаться" - спорный момент, можно не добавлять. end; function MobAggrToMe:boolean; //Проверка на атакующих меня мобов 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; begin GuardName:='СуперДД'; //Имя защитника (вокруг кого бегать) NowRadius:=150; //Радиус, по которому бегать вокруг Защитника NowAngle:=0; //Начальный угол (можно не трогать) DisableBot:=true; //Отключать остальные функции бота пока бегаем от мобов (хил, бафф и т.п.) while true do begin //Бесконечный цикл CharList.ByName(GuardName,Obj); //В каждом цикле обновляем координаты защитника CenterX:=Obj.X; //X CenterY:=Obj.Y; //Y CenterZ:=Obj.Z; //Z if MobAggrToMe then begin if DisableBot then Engine.FaceControl(0,false); GoToPoint(CenterX,CenterY,CenterZ,NowRadius,NowAngle); //Двигаемся вокруг защитника с изменяющимся углом NowAngle:=NowAngle+20; //Шаг угла if NowAngle>=340 then NowAngle:=0; //Если перевалило за 340 градусов, обнуляем (360 лучше не ставить) end else if DisableBot then Engine.FaceControl(0,true); end; end. |
| |||
| |||