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

Бафф

Рег
7 Сен 2016
Сообщения
21
Реакции
0
var obj: TL2NPC;
obj2: TL2Effect;

Enemy: TL2Live;
Begin
while 1<>2 do begin


if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(15000);
end;


Engine.BypassToServer('_bbshome', True);
delay(1000);
Engine.BypassToServer('11', True);
delay(1000);
Engine.BypassToServer('1a Player', True);
delay(1000);
Engine.BypassToServer('10', True);
delay(1000);
Engine.BypassToServer('15', True);
delay(1000);
Engine.BypassToServer('11', True);
delay(1000);
Engine.BypassToServer('13', True);
delay(1000);
Engine.BypassToServer('11', True);
delay(6000);
end;
end.
как сделать чтоб бессконечно не бафался. и когда есть определенные бафы остановился. и после смерти в город тпнулся и ребафался. буду благодарен ^_^
 
Лучше распределяй все свои действия по кусочкам (процедурам) , а потом уже в основном теле делай условия на свои процедуры для начала так проще разобраться.
В основном теле можешь делать разные условия , ну и со временем добавлять процедуры и усложнять скрипт разными проверками

Тут просто пример рабочего скрипта на спойлера 45 лвла под еглобал гф х7 , смотри и переделывай свой)
Uses SysUtils, Classes;

var Item: TL2Item; Npc: TL2Npc; obj: TL2NPC; L2Skill: TL2Skill; buff:TL2buff;

const
// Координаты спота
spot_x = 137692;
spot_y = 75796;
spot_z = -3466;
// Радиус спота
spot_R = 7000;

function GetCountMyAttackerNpc:integer; // функция отображения атакующих меня мобов
var
idx:integer;
begin
result:=0;
for idx:=0 to NpcList.Count-1 do begin
if Not(NpcList.Items(idx).Dead)and(NpcList.Items(idx).AtkOID=User.Oid)then begin
inc(result);
end;
end;
end;

procedure CheckAttackingMobs; // если меня бьют мобы, отбиваемся
//если цель мертва отмена таргета
begin
//print('Проверяем, аттакуют ли нас мобы');
while GetCountMyAttackerNpc<>0 do
begin
if(user.target.incombat) then
Engine.AutoSoulshot(1464,true); // BSSC
Engine.Attack(50);
if(user.target.dead) then engine.canceltarget;
delay(100);
end;
//print('Мобы не атакуют:)');
end;

procedure check_death;
begin
if (user.dead) then begin
print('Умер, воскрешаюсь');
engine.FaceControl(0, false);
while (user.dead) do begin
if engine.GoHome() then delay(3333+random(1111));
if (not user.dead) then delay(5555);
end;
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then engine.FaceControl(0, true)
else begin
to_gk;
gorodbuffka4;
print('Вернулся на спот, продолжаю фарм');
end;
end;
end;

procedure check_buff; //нет бафа в город >to_gk > баф и кач
begin
if not User.Buffs.ById(4324, Obj) then begin
print('нет бафа летим ');
Engine.FaceControl(0,false);
CheckAttackingMobs;
delay(random(2222)+random(3333));
Engine.UseItem(736); // юзаем сое
delay(15000);
to_gk;
gorodbuffka4;
end;
end;

procedure to_gk; //после сое респ, прийдет к гк
begin
print('процедура to_gk');
if user.inrange(117304,76318,-2670,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(118229,74677,-2450,250,150) then begin
Engine.MoveTo(118069,75907,-2680);
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115683,77610,-2650,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115685,75072,-2550,250,150) then begin
Engine.MoveTo(116949,76808,-2712);
end;
if user.inrange(115861,75200,-2550,250,150) then begin
Engine.MoveTo(116949,76808,-2712);
end;
if user.inrange(117671,78998,-2210,250,150)then begin
Engine.MoveTo(117031,78908,-2256);
Engine.MoveTo(116718,78406,-2560);
Engine.MoveTo(116232,77389,-2704);
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(116158,77443,-2660,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(116127,76015,-2729,250,150) then begin
Engine.MoveTo(117104,76838,-2688);
end;
if user.inrange(115193,77594,-2670,250,150) then begin
Engine.MoveTo(115193,77594,-2704);
Engine.MoveTo(117053,76874,-2712);
end;
if user.inrange(119862,76603,-2272,250,150)then begin
Engine.MoveTo(119711,76592,-2272);
Engine.MoveTo(118444,76180,-2664);
Engine.MoveTo(117674,76110,-2712);
Engine.MoveTo(117056,76868,-2712);
Engine.MoveTo(117056,76868,-2712);
end;
if user.inrange(117189,78952,-2264,250,150)then begin
Engine.MoveTo(117029,78912,-2264);
Engine.MoveTo(116221,77560,-2712);
Engine.MoveTo(117056,76868,-2712);
Engine.MoveTo(117056,76868,-2712);
end;
end;

procedure gorodbuffka4; //если у гк то иду бафферу, и тп иду кач
begin
print('процедура gorodbuffka4');
if User.inrange (117104,76838,-2688, 300, 300) then begin
delay(2550);
Engine.MoveTo(116947, 77219, -2720);
// путь к бафферу
Engine.SetTarget(32327); // таргет на баффера
delay(400);
Engine.DlgOpen();
delay(400);
Engine.DlgSel(1);
delay(400);
Engine.DlgSel(1);
delay(1550);
end;
if User.Buffs.ById(4324, Obj) then begin
Engine.MoveTo(117122, 76938, -2720);
Engine.SetTarget(30233);
delay(400);
Engine.DlgOpen();
delay(400);
Engine.DlgSel(1);
delay(400);
Engine.DlgSel(6);
delay(400);
Engine.DlgSel(1);
delay(1550);
end;
if User.inrange (142065, 81300, -3000, 100, 100) then begin
Engine.MoveTo(141550, 80946, -3136);
Engine.MoveTo(140719, 80469, -3477);
Engine.MoveTo(139564, 80126, -3462);
Engine.MoveTo(139061, 79567, -3264);
end;
if User.inrange (139061, 79567, -3264, 300, 300) then begin
engine.loadzone('оркитаикстил');
Engine.FaceControl(0,true); // включается интерфейс бота на конечной точке
end;
end;


begin
while (engine.status <> lsOnline) do delay(1111); // Ждем, пока персонаж не войдет в игру
while true do begin // Запускаем бесконечный цикл
while (engine.status = lsOnline) do begin // Пока в игре крутим проверку
delay(1111);
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then check_death;
delay(1000);
if (user.distto(spot_x, spot_y, spot_z) < spot_R) then check_buff;
delay(1000);
if (user.distto(spot_x, spot_y, spot_z) > spot_R) then begin
print('я не в зоне кача юзаю сое');
delay(5555+random(7777));
engine.useitem(736);
delay(25000);
to_gk;
gorodbuffka4;
end;
end;
end;
end.

ну или тупо по этому каркасу делай

Код:
var .... //твои переменные

// после переменных описываем процедуры
procedure check_death;  //проверка на смерть 
begin
  if (user.dead) then begin
    print('Умер, воскрешаюсь');
    engine.FaceControl(0, false);
    engine.gohome;
    delay(15000);
  end;      
end;

procedure check_buff;  //нет бафа в город   
begin
print('check_buff ');
    Engine.FaceControl(0,false);
    delay(random(2222)+random(3333));
    Engine.UseItem(736);  // юзаем сое
    delay(25000);
    end;
    end;
procedure rebuff;
 begin 
//тут вставляешь свои байпасы 
end; 
procedure TPnaSPOT; 
begin 
//тут описываешь как ты возвращаешься на спот из города, тут же можешь описать как будешь фармить , какой профиль загрузишь, зону и когда включишь интерфейс 
end; 
//так опиысываешь все свои действия мини процедурами а затем начинаешь основное тело скрипта 

begin 
 while true do begin // Запускаем бесконечный цикл 
 //дальше делаешь свои условия на начало использования твоих процедур 
  if (user.dead) then begin check_death;
  rebuff; 
  TPnaSPOT;
end;
   if  not User.Buffs.ById(ID, Obj) then begin check_buff; //ID бафа по которому будешь проверять
   rebuff;
   TPnaSPoT;
 end;
end.
 
Проще сделать через интерфейс, есть раздел с игровым бафом, туда нужно "записать" баф, в разделе селф хил -> реген есть опция ждать, если отсутствуют бафы, туда вставляются нужные бафы, таким образом когда баф падается или остается n секунд бот не бьет мобов и может ребафнуться в альт+б.

https://www.youtube.com/watch?v=ava1fhi38uc
 
@BreadfanLock, добавил) но неизвестно , что там у него и как ... условия все равно уже будет сам строить
 
Назад
Сверху