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

Проверка бафа/соулшотов

сейчас зайду скину ошибку у меня платный )
(70): "begin" expected but "end" found
function CheckItemCount (const itemID: Integer; const quest: Boolean = False) : Integer;
var tempItem: TL2Item;
procedure delete_items;
begin
if quest then Inventory.Quest.ByID(itemID, tempItem)
else Inventory.User.ByID(itemID, tempItem);
Result := tempItem.Count;
end;
var obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
Buff: TL2Buff;

Begin
while 1<>2 do begin // бесконечный цикл

// этот кусок не трогаем
if User.Dead then // умер- вырубаем интерфейс, возврат в город и пауза 15 секунд
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(2000);
end;
// этот кусок не трогаем

//1 менять тут
// этот кусок - точки респа выбранной деревни их просто заменить на нужную вам
if user.inrange(147469, 20164, -2008, 250, 150) //Аден(выход к замку)
then
begin
Engine.MoveTo(147398, 21074, -2136);
Engine.MoveTo(145164, 22453, -2136);
Engine.MoveTo(145150, 24118, -2136);
Engine.MoveTo(146423, 24367, -2008);
Engine.MoveTo(147134, 25834, -2008); //Центр(Возле ньюби бафера)
end;

// точка которая указаная в инренж этот точка в которую видут все точки респа,
// тут указываем путь к нубскому баферу либо сразу к гк если мы не б
Engine.MoveTo(147105, 25918, -2008);

// выделение нпц с ИД указанным в скобках,ид видны справа снизу в боте рядом с именем нпц
Engine.SetTarget(32327);
// открывем диалоговое окно и прожимаем строки ( у нас сначала 2 потом 15)
Engine.DlgOpen();
Engine.DlgSel(1);
Engine.DlgSel(1); // бафнулись у нубобафа
Engine.MoveTo(146999, 25808, -2008);
Engine.MoveTo(146785, 25828, -2008);
Engine.SetTarget(30848);
Engine.DlgOpen();
Engine.DlgSel(1);
Engine.DlgSel(15);
Engine.MoveTo(183707, 19741, -3168);

if user.InRange(183707, 19741, -3168,500) then begin

Engine.FaceControl(0,true);
while not User.Dead do delay(2000);
end;
delay(75000);// задержка перед проверкой
if CheckItemCount(728) < 100 then //если манапотов < 100
Engine.Facecontrol(0,False);
engine.useitem ();//тут ид сое/бсое
end;
if not User.Buffs.ById(1204, buff) then
Engine.Facecontrol(0,False);
engine.useitem ();
end;
end.
 
@PandaTrader,
Код:
function CheckItemCount (const itemID: Integer; const quest: Boolean = False) : Integer;
var tempItem: TL2Item;
//procedure delete_items; - тут не понял зачем это
begin
  if quest then Inventory.Quest.ByID(itemID, tempItem)
  else Inventory.User.ByID(itemID, tempItem);
  Result := tempItem.Count;
end;

var obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
Buff: TL2Buff;

begin
while 1<>2 do begin // бесконечный цикл

// этот кусок не трогаем
  if User.Dead then // умер- вырубаем интерфейс, возврат в город и пауза 15 секунд
  begin
    Engine.FaceControl(0,false);
    Engine.gohome;
    delay(2000);
  end;
// этот кусок не трогаем

//1 менять тут
// этот кусок - точки респа выбранной деревни их просто заменить на нужную вам
  if user.inrange(147469, 20164, -2008, 250, 150) //Аден(выход к замку)
  then
  begin
    Engine.MoveTo(147398, 21074, -2136);
    Engine.MoveTo(145164, 22453, -2136);
    Engine.MoveTo(145150, 24118, -2136);
    Engine.MoveTo(146423, 24367, -2008);
    Engine.MoveTo(147134, 25834, -2008); //Центр(Возле ньюби бафера)
  end;

// точка которая указаная в инренж этот точка в которую видут все точки респа,
// тут указываем путь к нубскому баферу либо сразу к гк если мы не б
  Engine.MoveTo(147105, 25918, -2008);

// выделение нпц с ИД указанным в скобках,ид видны справа снизу в боте рядом с именем нпц
  Engine.SetTarget(32327);
// открывем диалоговое окно и прожимаем строки ( у нас сначала 2 потом 15)
  Engine.DlgOpen();
  Engine.DlgSel(1);
  Engine.DlgSel(1); // бафнулись у нубобафа
  Engine.MoveTo(146999, 25808, -2008);
  Engine.MoveTo(146785, 25828, -2008);
  Engine.SetTarget(30848);
  Engine.DlgOpen();
  Engine.DlgSel(1);
  Engine.DlgSel(15);
  Engine.MoveTo(183707, 19741, -3168);

  if user.InRange(183707, 19741, -3168,500) then
  begin
    Engine.FaceControl(0,true);
    while not User.Dead do delay(2000);
  end;
  delay(75000);// задержка перед проверкой
  if CheckItemCount(728) < 100 then //если манапотов < 100
  begin
    Engine.Facecontrol(0,False);
    engine.useitem (1);//тут ид сое/бсое
  end;
  if not User.Buffs.ById(1204, buff) then
  begin
     Engine.Facecontrol(0,False);
     engine.useitem(1);
  end;
Delay(2000);
end;
end.
 
Только мне тут в скрипте не совсем концовка понятна :) Персонаж умер, после этого мы проверяем количество предметов, что-то юзаем и после этого ресаемся
 
@savant, Например если нету маны или сосак то он узает сое
 
savant написал(а):
function CheckItemCount (const itemID: Integer; const quest: Boolean = False) : Integer; var tempItem: TL2Item; //procedure delete_items; - тут не понял зачем это begin if quest then Inventory.Quest.ByID(itemID, tempItem) else Inventory.User.ByID(itemID, tempItem); Result := tempItem.Count; end; var obj: TL2NPC; obj2: TL2Effect; Enemy: TL2Live; Buff: TL2Buff; begin while 1<>2 do begin // бесконечный цикл // этот кусок не трогаем if User.Dead then // умер- вырубаем интерфейс, возврат в город и пауза 15 секунд begin Engine.FaceControl(0,false); Engine.gohome; delay(2000); end; // этот кусок не трогаем //1 менять тут // этот кусок - точки респа выбранной деревни их просто заменить на нужную вам if user.inrange(147469, 20164, -2008, 250, 150) //Аден(выход к замку) then begin Engine.MoveTo(147398, 21074, -2136); Engine.MoveTo(145164, 22453, -2136); Engine.MoveTo(145150, 24118, -2136); Engine.MoveTo(146423, 24367, -2008); Engine.MoveTo(147134, 25834, -2008); //Центр(Возле ньюби бафера) end; // точка которая указаная в инренж этот точка в которую видут все точки респа, // тут указываем путь к нубскому баферу либо сразу к гк если мы не б Engine.MoveTo(147105, 25918, -2008); // выделение нпц с ИД указанным в скобках,ид видны справа снизу в боте рядом с именем нпц Engine.SetTarget(32327); // открывем диалоговое окно и прожимаем строки ( у нас сначала 2 потом 15) Engine.DlgOpen(); Engine.DlgSel(1); Engine.DlgSel(1); // бафнулись у нубобафа Engine.MoveTo(146999, 25808, -2008); Engine.MoveTo(146785, 25828, -2008); Engine.SetTarget(30848); Engine.DlgOpen(); Engine.DlgSel(1); Engine.DlgSel(15); Engine.MoveTo(183707, 19741, -3168); if user.InRange(183707, 19741, -3168,500) then begin Engine.FaceControl(0,true); while not User.Dead do delay(2000); end; delay(75000);// задержка перед проверкой if CheckItemCount(728) < 100 then //если манапотов < 100 begin Engine.Facecontrol(0,False); engine.useitem (1);//тут ид сое/бсое end; if not User.Buffs.ById(1204, buff) then begin Engine.Facecontrol(0,False); engine.useitem(1); end; Delay(2000); end; end.
Скрипт в целом работает,но проверка почему-то не идёт.Выставил даже дэлей 200.Итем удалил до 1-го.

Всё,просто нужно было
delay
(75000);// задержка перед проверкой
if CheckItemCount(728) < 100 then //если манапотов < 100
begin
Engine.Facecontrol(0,False);
engine.useitem (1);//тут ид сое/бсое
end;
if not User.Buffs.ById(1204, buff) then
begin
Engine.Facecontrol(0,False);
engine.useitem(1);
end;
перенести в начало скрипта.

Огромное спасибо этим двум товарищам,которые помогли мне.Медальки им)
 
Назад
Сверху