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

Возврат в город при нахождении QuestItem в инвентаре.

Рег
20 Янв 2016
Сообщения
8
Реакции
0
Возврат в город при нахождении QuestItem в инвентаре. Как в боте или в самом скрипте задать параметр, что бы когда квест итем получал персонаж после убийства моба делал телепорт в город, но не просто после убийста а с паузой, т.к. мобы бывают агрр и просто 2-3 рядом стоят, добив всех кто атачит уже спокойно юзать сое. В самом боте почему то такой настройки нет, только на обычный инвентарь, а на квест инвентарь нету. Суть как бы простая, но как быть... Вот пример с кратким примером скрипта:

Проблема такова: в скрипте есть такой момент

if Inventory.Quest.ByID(55, Item) and (Item.count = 1) //выбили квест итемthen begin
Engine.Useitem(10650); //используем свиток телепорта
Engine.FaceControl(0, false); //отключение бота.

Да все супер выбили итем, а мобов 2-4 штуки других наст еще атачат, а скрипт уже поняв что итем есть - делает сое.
Но мы их не добили, а они нас лупят, сбивают нам телепорт и бот курит бамбук. Даже пауза не решает проблемы, ситуации бывают разные.
В самом боте есть такое как СОБЫТИЕ >> ПРЕДМЕТЫ >> ИНВЕНТАРЬ >> ИМЯ ИТЕМА иили его ID >> Условия: свой инвентарь, кол-во >=2. >> Действия при таких условиях выбираем: Приостановить активность на 10с., отбиться от напавших мобов и использовать Предмет: Свиток Телепорта. Данное событие решило бы все нюансы, но как я понимаю на квест итемы оно не работает, только на инвентарь.
Вопрос: как решить данную проблему, как замутить так, что бы если мы выбили итем, но нас еще атачит пару мобов и что бы он не юзал телепорт, а добил этих мобов и уже после того как нас никто не трогает делал ТП.
Спасибо.
 
Добавь условие на смерть, точки спавна городе и маршрут к гк.
 
@PalmaDeMajorka,
Дело не в том что смерть просто скрипт при этом продолжает свою работу и ему пофиг что сбили тп, он у себя продолжает действия как только опять доходит момент до файта он опять завалит моба и сделает сое. Так что таким способом проблему не решить.
 
function CheckItemCount (const itemID: Integer; const quest: Boolean = False) : Integer;
var Item: TL2Item;
begin
if quest then Inventory.Quest.ByID(itemID, Item)
else Inventory.User.ByID(itemID, Item);
Result := Item.Count;
end;
procedure proverka;
var Item: TL2Item;
begin
repeat
if CheckItemCount(6353, false) =0 then
begin
Engine.FaceControl(0, true);
delay(5000);
end;
if CheckItemCount(6353, false)>0 then
begin
if (User.InCombat=true) then
begin
Engine.FaceControl(0, false);
delay(150);
Engine.Attack;
delay(10000);
if (User.InCombat=false) then
begin
delay(5000);
end;
end;
end;
until Inventory.User.ByID(6353, Item) and (Item.count > 0) and (User.InCombat=false);
end;

begin
proverka;
Print('Выполнено');
end.

Можно примерно вот так сделать. Когда выбьет итем и чар будет не в боевом режиме то напишет "Выполнено". Написал по фасту. Допилить я думаю сам сможешь.
 
@excisi0n,
Спасибо за внимание, буду пробовать мудрить. Ну если у кого будут какие варианты кидайте если не сложно. Всем спасибо.
 
tugrikus написал(а):
Вопрос: как решить данную проблему, как замутить так, что бы если мы выбили итем, но нас еще атачит пару мобов и что бы он не юзал телепорт, а добил этих мобов и уже после того как нас никто не трогает делал ТП. Спасибо.

Я таким образом скрипты пишу:




while User.Level<80 do begin
Engine.Facecontrol(0,False);
Engine.AutoSoulshot(5789,true); //Автоюз маг нг сосок ид 5790, файтер нг соски 5789
Engine.Attack(50);
delay (6000);
if User.InCombat = false then break; эта строка отвечает как раз за режим боя
end;
Engine.Facecontrol(0,False);
begin
repeat
Dead(); проверка на смерть
Engine.UseItem(736);
delay (6000);
Engine.AutoSoulshot(5789,true);
Engine.Attack(50);
delay (10000);
until user.inrange (-45091, -113572, -192,5000,5000) координаты города куда тп надо
end;
end;


Интерфейс 2 раза отключаю для надежности, бывает не срабатывает.
 
Назад
Сверху