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

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

Рег
7 Дек 2015
Сообщения
125
Реакции
0
Здравствуйте,у меня такой вопрос,как добавить в скрипт проверку на баф/Соул шоты/хп банки,и если что-то отсутсвует,то персонаж вне боя юзает СОЕ и отключает интерфейс,после чего,скрипт начинает работу по новой?

Вот один из скриптов:

var obj: TL2NPC;
obj2: TL2Effect;

Enemy: TL2Live;
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(2000);
end;
delay(550);
end.
 
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;
delay(75000);// задержка перед проверкой
if CheckItemCount(728) < 100 then //если манапотов < 100
Engine.Facecontrol(0,False);
engine.useitem ();//тут ид сое/бсое
end;
if not User.Buffs.ById(1204, Obj) then - если нет бафа с таким ID, то
Engine.Facecontrol(0,False);
engine.useitem ();
end;
и рекомендую поставить данные условия в конце скрипта и поставить delay(75000);
что бы не было нагрузки на цп
 
Код:
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;
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, Obj) then - если нет бафа с таким ID, то
Engine.Facecontrol(0,False);
engine.useitem ();
end;
Delay(2000);
end;
delay(550);
end.
 
для поиска ид предмета зайдем в дроп
шаг1-шаг2.png
шаг3.png
шаг4.png
 
Айди проще смотреть в Персонаж - инвентарь
 
теперь ид бафа для этого добавляем вкладку
баф.png
нужный нам ид бафа (важно что бы вы выбрали не селф баф так как если стоит ребаф по кд условие с отсутствием бафа не будет выполнятся)
баф 2.png
 
@Алеку,
Спасибо.Ещё такой вопрос.Если нет n итема,как добавить в этот скрипт то,чтоб он шёл закупаться в шоп?Координаты я знаю как написать,а вот как произвести покупку у обычного шопа,хз.
 
@PandaTrader,

if CheckItemCount(8824) < 1 then
Engine.MoveTo(x, y, z);
Engine.MoveTo(x, y, z);
Engine.MoveTo(x, y, z);
Engine.SetTarget(32040);
delay(2550);
Engine.DlgOpen();
Engine.Dlgsel(1);
Engine.NPCTrade(false,[8824,1]);// - покупать предмет НПС ставим свой ид
end;
Engine.NPCTrade(True,[8824,1]); - продавать предмет НПС
http://rawr.su/topic/196-nebolshaya-pamyatka-po-komandam-adrenalina/ -памятка по командам
 
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: TL2Buff;
obj2: TL2Effect;
Enemy: TL2Live;

вот так попробуй вар добавить buff: TL2Buff;
 
PandaTrader написал(а):
Алеку, всё та же проблема.
buff:TL2Effect;
а если так?
Кстати все бафы описывал TL2Effect а не TL2Buff, есть принципиальная разница?
 
@PandaTrader, явно что он у тебя по второму параметру не проходит. Obj переименуй в buff и в var опиши дополнительно buff:TL2Buff. Если не получится - скинь конечную версию скрипта, исправим. f;
 
@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
Engine.Facecontrol(0,False);
engine.useitem ();//тут ид сое/бсое
end;
if not User.Buffs.ById(1204, buff) then - если нет бафа с таким ID, то
Engine.Facecontrol(0,False);
engine.useitem ();
end;
Delay(2000);
end;
delay(550);
end.
Снова ошибка в проверке бафа.
 
@PandaTrader, ты строчку после then "- если нет бафа с таким ID, то" либо сотри, либо закомментируй :)
 
@savant, я убрал не помогло ) не могу понять в чем дело ( чего не пашеет
 
Ребят,прошу,давайте постараемся решить проблему.Это может привести к тому,что в шаре будет скрипт 1-76:3
 
Ну в окно сообщений он хоть какую ошибку пишет?
 
Назад
Сверху