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

Проверка квестовых итемов

Рег
28 Апр 2016
Сообщения
2
Реакции
0
Добрый день, делаю свой первый скрипт и не могу понять как реализовать - чар прибежал на место прохождения квеста, (надо набить например 10 костей со скелетов)

пример: прибежали и включили атаку


User.inrange(-80767, 149828, -3070, 250, 150) then begin
engine.settarget(30320); // выделить таргет с ID 30320
engine.dlgOPen(); // начать чат
delay(500);
engine.dlgsel(1); // Телепорт
delay(500);
engine.dlgsel(1); // Глудио
delay(5000);
engine.settarget(30256); // выделить таргет с ID 30256
engine.dlgOPen(); // начать чат
delay(500);
engine.dlgsel(2); // Телепорт
delay(500);
engine.dlgsel(16); // Руины страданий
delay(15000);
Engine.MoveTo(-41917, 122540, -3076);
Engine.MoveTo(-42180, 121453, -3267);
Engine.MoveTo(-42600, 119745, -3563);
Engine.MoveTo(-42932, 118978, -3560);
end;

engine.loadconfig('ЛукНети');
engine.loadzone('РуиныСтраданий');
engine.FaceControl(0,true); //включить бота (true включить , false выключить)
end;

на этом этапе мы мы нормально бегаем, бьем мобов и получаем квестовые итемы, так вот что нужно вставить в код, чтобы он отслеживал - когда наберется 10 квестовых итемов, то останавливаемся, например отбегаем в сторону и использовал soe?
 
gпочему вы не пользуетесь поиском, куча тем таких уже, даже вон соседняя есть
Код:
while (not Inventory.Quest.ByID(<ID квест итема>, Item))  or  (Item.count < 10) do delay(1000);
 
@Donator, Вангую, автор попросит написать все за него, потому что "в программировании он ничего не понимает"
 
SARCAZM написал(а):
Вангую, автор попросит написать все за него, потому что "в программировании он ничего не понимает"
Да, в программировании я новичок, и хотелось что бы знающие люди помогли, показали ошибки
 
@SARCAZM, Ой да, ванга ты знатная, прямо в сердце человеку!
 
Sepa191 написал(а):
когда наберется 10 квестовых итемов, то останавливаемся, например отбегаем в сторону и использовал soe?
Я пример твоего случая выложу, дальше сам разберайся.



begin
Engine.LoadConfig('профаВАРК'); загрузка конфига
begin
repeat начинаем повтор цикла до тех пор пока условие не будет выполнено
Dead(); проверка на смерть нужна процедура соответствующая
delay (7000);
if user.inrange (-45091, -113572, -192,5000,5000) then begin если перс умер и в радиусе города бежать к ГК (описано процедурой Town() )
Town(); в этой процедуре все точки респа города (или городов) + путь к ГК
Engine.Settarget(30576); // Таргет Тамил ГК (Tamil) таким образом если перс в умер и в городе, он побежит к ГК и сделает тп к мобам нужным
Engine.MoveToTarget(-30);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(11);
Delay(7000);
end;
if user.inrange (9340, -112509, -2536,150,150) then begin если от тп нужно бежать к мобам(используется только если перс в заданном радиусе точки)
Engine.MoveTo(12228, -112445, -3002);
Engine.MoveTo(12486, -111965, -3002);
Engine.MoveTo(13306, -111967, -3002);
Engine.MoveTo(13904, -112447, -3002);
Engine.MoveTo(15835, -112456, -3168);
Engine.Facecontrol(0,True);
end;
Delay(1500);
until CheckItemCount(1619, True) = 1 ну и наконец-то условие при достижении которого, цикл закончится, и скрипт продолжится
end; CheckItemCount - это функция, есть на форуме. Не буду выкладывать дабы не запутать тебя
while User.Level<80 do begin
Engine.Facecontrol(0,False);
Engine.AutoSoulshot(5789,true); //Автоюз маг сосок ид5790, файтер соски5789
Engine.Attack(50);
delay (8000);
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;
добавлю таки функции и некоторые процедуры ))


Код:
function CheckItemCount (const itemID: Integer; const quest: Boolean = False) : Integer;
var tempItem: TL2Item;
begin
   if quest then Inventory.Quest.ByID(itemID, tempItem)
   else Inventory.User.ByID(itemID, tempItem);
   Result := tempItem.Count;
end;


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