Охотник Опубликовано 27 ноября, 2021 Поделиться Опубликовано 27 ноября, 2021 Всем привет. Скрипт под адреналин на проходку к валакасу. Название: Into the Flame. Стартовый уровень 60+ Данный скрипт делал специально под сервер HF x1 под физ чаров, но в целом можно и магом сделать просто пару строк на бафф поменять. Работает вроде неплохо сделал данным скриптом всей пати квест. Как всегда примитивно, но и ладно))) Да, чуть не забыл. Крякнутый адрик немного некорректно работает с квест айтемами и их проверкой, поэтому после запуска скрипта и когда бот начнет фармить мобов НЕЛЬЗЯ ОТКРЫВАТЬ ИНВЕНТАРЬ иначе будет вечно фармить мобов. На платном адрике работать будет без проблем) Запускать можно в любой точки мира. Всем спасибо не откажусь от лайка) Спойлер var obj: TL2NPC; obj2: TL2Effect; Enemy: TL2Live; 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; const Bypass_Home = '_bbshome'; //открываем альтб Bypass_Buff1 = '_bbsbuffer'; //открываем баффера Bypass_Buff2 = '_bbsbufferbypass_giveBuffSet figher 0 0'; //Бафаемся на воина Bypass_Buff3 = '_bbsbufferbypass_heal 0 0 0'; //Регеним ХП Bypass_port1 = '_bbsteleport'; //открываем телепорт Bypass_port2 = '_bbsteleport;page;epic'; //Выбираем epic Bypass_port3 = '_bbsteleport;teleport; 183640 -114840 -3362 0'; //Портуемся к НПЦ входа валакаса Bypass_port4 = '_bbsteleport;page;cities/goddard'; //выбираем локацию годдарта Bypass_port5 = '_bbsteleport;teleport; 146603 -58858 -2973 0'; //портуемся в кузню begin delay(1500); Engine.BypassToServer(Bypass_Home); delay(1000); Engine.BypassToServer(Bypass_Buff1); delay(1000); Engine.BypassToServer(Bypass_Buff2); delay(1000); Engine.BypassToServer(Bypass_Buff3); delay(1000); Engine.BypassToServer(Bypass_Home); delay(1000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port2); delay(1000); Engine.BypassToServer(Bypass_port3); delay(10000); Engine.SetTarget(31540); // Кляйн delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268460888_Quest'); delay(2000); Engine.BypassToServer('npc_268460888_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31540-03.htm'); delay(2000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port4); delay(1000); Engine.BypassToServer(Bypass_port5); delay(10000); Engine.MoveTo(146392, -58712, -2952); delay(1500); Engine.SetTarget(31271); // Хильда delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268445517_Quest'); delay(2000); Engine.BypassToServer('npc_268445517_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31271-02.htm'); delay(2000); Engine.MoveTo(146540, -58831, -2952); delay(400); Engine.MoveTo(146728, -58840, -2952); delay(400); Engine.MoveTo(146760, -58712, -2952); delay(400); Engine.MoveTo(146525, -58432, -2960); delay(400); Engine.MoveTo(145624, -57720, -2960); delay(400); Engine.MoveTo(144824, -57512, -2960); delay(400); Engine.MoveTo(144264, -57896, -2976); delay(400); Engine.MoveTo(143688, -58296, -3184); delay(400); Engine.MoveTo(143112, -58664, -3424); delay(400); Engine.MoveTo(142680, -58168, -3408); delay(400); Engine.MoveTo(142072, -56472, -3440); delay(400); Engine.MoveTo(141544, -55640, -3360); delay(400); Engine.MoveTo(141112, -55400, -3248); delay(400); Engine.MoveTo(140520, -54904, -3088); delay(400); Engine.MoveTo(139976, -54392, -2944); delay(400); Engine.MoveTo(138648, -53768, -3008); delay(1000); while CheckItemCount(7265, True) < 50 do begin delay(1000); Engine.FaceControl(0,true); end; delay(random(3000)); Engine.FaceControl(0,false); delay(15000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port4); delay(1000); Engine.BypassToServer(Bypass_port5); delay(10000); Engine.SetTarget(31271); // Хильда delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268445517_Quest'); delay(2000); Engine.BypassToServer('npc_268445517_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31271-05.htm'); delay(4000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port2); delay(1000); Engine.BypassToServer(Bypass_port3); delay(10000); Engine.SetTarget(31540); // Кляйн delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268460888_Quest'); delay(2000); Engine.BypassToServer('npc_268460888_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31540-05.htm'); end. 2 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
Hy6ac Опубликовано 28 ноября, 2021 Поделиться Опубликовано 28 ноября, 2021 Хорош,на тараса бы еще.....))) 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
hernesbird Опубликовано 29 ноября, 2021 Поделиться Опубликовано 29 ноября, 2021 (изменено) В 27.11.2021 в 21:46, Охотник сказал: Всем привет. Скрипт под адреналин на проходку к валакасу. Название: Into the Flame. Стартовый уровень 60+ Данный скрипт делал специально под сервер HF x1 под физ чаров, но в целом можно и магом сделать просто пару строк на бафф поменять. Работает вроде неплохо сделал данным скриптом всей пати квест. Как всегда примитивно, но и ладно))) Да, чуть не забыл. Крякнутый адрик немного некорректно работает с квест айтемами и их проверкой, поэтому после запуска скрипта и когда бот начнет фармить мобов НЕЛЬЗЯ ОТКРЫВАТЬ ИНВЕНТАРЬ иначе будет вечно фармить мобов. На платном адрике работать будет без проблем) Запускать можно в любой точки мира. Всем спасибо не откажусь от лайка) Скрыть контент var obj: TL2NPC; obj2: TL2Effect; Enemy: TL2Live; 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; const Bypass_Home = '_bbshome'; //открываем альтб Bypass_Buff1 = '_bbsbuffer'; //открываем баффера Bypass_Buff2 = '_bbsbufferbypass_giveBuffSet figher 0 0'; //Бафаемся на воина Bypass_Buff3 = '_bbsbufferbypass_heal 0 0 0'; //Регеним ХП Bypass_port1 = '_bbsteleport'; //открываем телепорт Bypass_port2 = '_bbsteleport;page;epic'; //Выбираем epic Bypass_port3 = '_bbsteleport;teleport; 183640 -114840 -3362 0'; //Портуемся к НПЦ входа валакаса Bypass_port4 = '_bbsteleport;page;cities/goddard'; //выбираем локацию годдарта Bypass_port5 = '_bbsteleport;teleport; 146603 -58858 -2973 0'; //портуемся в кузню begin delay(1500); Engine.BypassToServer(Bypass_Home); delay(1000); Engine.BypassToServer(Bypass_Buff1); delay(1000); Engine.BypassToServer(Bypass_Buff2); delay(1000); Engine.BypassToServer(Bypass_Buff3); delay(1000); Engine.BypassToServer(Bypass_Home); delay(1000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port2); delay(1000); Engine.BypassToServer(Bypass_port3); delay(10000); Engine.SetTarget(31540); // Кляйн delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268460888_Quest'); delay(2000); Engine.BypassToServer('npc_268460888_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31540-03.htm'); delay(2000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port4); delay(1000); Engine.BypassToServer(Bypass_port5); delay(10000); Engine.MoveTo(146392, -58712, -2952); delay(1500); Engine.SetTarget(31271); // Хильда delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268445517_Quest'); delay(2000); Engine.BypassToServer('npc_268445517_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31271-02.htm'); delay(2000); Engine.MoveTo(146540, -58831, -2952); delay(400); Engine.MoveTo(146728, -58840, -2952); delay(400); Engine.MoveTo(146760, -58712, -2952); delay(400); Engine.MoveTo(146525, -58432, -2960); delay(400); Engine.MoveTo(145624, -57720, -2960); delay(400); Engine.MoveTo(144824, -57512, -2960); delay(400); Engine.MoveTo(144264, -57896, -2976); delay(400); Engine.MoveTo(143688, -58296, -3184); delay(400); Engine.MoveTo(143112, -58664, -3424); delay(400); Engine.MoveTo(142680, -58168, -3408); delay(400); Engine.MoveTo(142072, -56472, -3440); delay(400); Engine.MoveTo(141544, -55640, -3360); delay(400); Engine.MoveTo(141112, -55400, -3248); delay(400); Engine.MoveTo(140520, -54904, -3088); delay(400); Engine.MoveTo(139976, -54392, -2944); delay(400); Engine.MoveTo(138648, -53768, -3008); delay(1000); while CheckItemCount(7265, True) < 50 do begin delay(1000); Engine.FaceControl(0,true); end; delay(random(3000)); Engine.FaceControl(0,false); delay(15000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port4); delay(1000); Engine.BypassToServer(Bypass_port5); delay(10000); Engine.SetTarget(31271); // Хильда delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268445517_Quest'); delay(2000); Engine.BypassToServer('npc_268445517_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31271-05.htm'); delay(4000); Engine.BypassToServer(Bypass_port1); delay(1000); Engine.BypassToServer(Bypass_port2); delay(1000); Engine.BypassToServer(Bypass_port3); delay(10000); Engine.SetTarget(31540); // Кляйн delay(1500); Engine.DlgOpen; delay(1500); Engine.BypassToServer('npc_268460888_Quest'); delay(2000); Engine.BypassToServer('npc_268460888_Quest _618_IntoTheFlame'); delay(2000); Engine.BypassToServer('Quest _618_IntoTheFlame 31540-05.htm'); end. Первое что бы хотелось отметить, зачем эти переменные? Нет ни поиска целей (мобов, переменная TL2NPC, ни проверки на отсутствие баффа =) ) Спойлер var obj: TL2NPC; obj2: TL2Effect; Enemy: TL2Live; Далее, константы. Спойлер Bypass_Buff2 = '_bbsbufferbypass_giveBuffSet figher 0 0'; //Бафаемся на воина Bypass_Buff3 = '_bbsbufferbypass_heal 0 0 0'; //Регеним ХП Bypass_port3 = '_bbsteleport;teleport; 183640 -114840 -3362 0'; //Портуемся к НПЦ входа валакаса Bypass_port5 = '_bbsteleport;teleport; 146603 -58858 -2973 0'; //портуемся в кузню На данном серве, да и на многих, можно отправить байпас напрямую, без предшествующего пути, как показала практика... Тобишь все те байпасы с консты, что я удалил, не нужны. Далее, Спойлер Engine.MoveTo(146540, -58831, -2952); delay(400); Engine.MoveTo(146728, -58840, -2952); delay(400); Engine.MoveTo(146760, -58712, -2952); delay(400); Engine.MoveTo(146525, -58432, -2960); delay(400); Engine.MoveTo(145624, -57720, -2960); delay(400); Engine.MoveTo(144824, -57512, -2960); delay(400); Engine.MoveTo(144264, -57896, -2976); delay(400); Engine.MoveTo(143688, -58296, -3184); delay(400); Engine.MoveTo(143112, -58664, -3424); delay(400); Engine.MoveTo(142680, -58168, -3408); delay(400); Engine.MoveTo(142072, -56472, -3440); delay(400); Engine.MoveTo(141544, -55640, -3360); delay(400); Engine.MoveTo(141112, -55400, -3248); delay(400); Engine.MoveTo(140520, -54904, -3088); delay(400); Engine.MoveTo(139976, -54392, -2944); delay(400); Engine.MoveTo(138648, -53768, -3008); delay(1000); Первое, дилей не нужен. После каждого engine.moveTo, ибо дилей формально присутствует по умолчанию, точнее, пока перс не дойдёт до указанной точки, дополнительных действий не требуется. В лучшем случае сделать конечно же массив. Как он будет выглядеть? Примерно так : Спойлер const rootToSpot: Array[0..15] of Array[0..2] of integer = ( (146540, -58831, -2952), (146728, -58840, -2952), (146760, -58712, -2952), (146525, -58432, -2960), (145624, -57720, -2960), (144824, -57512, -2960), (144264, -57896, -2976), (143688, -58296, -3184), (143112, -58664, -3424), (142680, -58168, -3408), (142072, -56472, -3440), (141544, -55640, -3360), (141112, -55400, -3248), (140520, -54904, -3088), (139976, -54392, -2944), (138648, -53768, -3008) ); function moveToSpot(): void; var i:integer; begin for i:= 0 to 15 do begin Engine.MoveTo(rootToSpot[i][0], rootToSpot[i][1], rootToSpot[i][2]); end; end; Далее, Спойлер while CheckItemCount(7265, True) < 50 do begin delay(1000); Engine.FaceControl(0,true); end; delay(random(3000)); Engine.FaceControl(0,false); delay(15000); Данный цикл вызывает сомнения. Первое, каждую секунду после проверки, будет подаваться команда включения бота, рандом дилей вообще зачем? Дилей 15 сек? А если будет на тебе висеть в этот момент моб ? Выходит перс не сможет послать байпас, если не выйдет с боя... Я конечно не осуждаю, но этот скрипт мягко говоря, сырой... Моя "миссия" не обосрать, а скорее указать на ошибки, для того чтобы ты в дальнейшем постил халявные скрипты, которые будут работать))) Опять же, тот кто не шарит, тот пусть со-со, тот кто может склеить всё, пусть наслаждается очередным "минигайдом"... Правильный цикл будет выглядеть так: Спойлер engine.LoadZone('1.zmap'); // карта как костыль, с картой проще, просто выделяем зону с необходимыми мобами и просто бьем их пока не будет нужное кол-во айтемов. Либо прописываем поиск и убийство нужных мобов delay(300); Engine.FaceControl(0,true); delay(500); while CheckItemCount(7265, True) < 50 do delay(1000); // пока кол-во айтемов меньше 50-ти, ожидаем 1 секунду(выполняем предшествующую функцию(в данном случаем бьем мобов...)) if CheckItemCount(7265, True) > 49 then begin // если кол-во айтемов больше 49-ти (то есть 50, для тупых...) делаем Engine.FaceControl(0,false); // только в случае если есть путь в город, если же ( тп альтб, скрол и т.д, нужна проверка на агроМоб, чтобы не залагал бот...) RunFromSpot; // Тут могут быть корды пути со спота, либо прописываем проверки на агро мобов в отдельной процедуре, чтобы не было загвоздок с висящими на вас мобами....( не знаем как? смотрим на форуме гайд "прокачка 1-85", есть готовые функции...) end; Лепим, пользуемся.... P/S То что я описал на базе того что было, это примитивно и работает. То что ты выкинул, не логично( речь о логике скрипта). Да, кряк адрик не обладает всем функционалом платной версии, в силу своего возраста. Но то что уже реализовано, работает идеально. Если Ваш скрипт "лагает" значит вы рак... В 27.11.2021 в 21:46, Охотник сказал: Да, чуть не забыл. Крякнутый адрик немного некорректно работает с квест айтемами и их проверкой, поэтому после запуска скрипта и когда бот начнет фармить мобов НЕЛЬЗЯ ОТКРЫВАТЬ ИНВЕНТАРЬ иначе будет вечно фармить мобов. На платном адрике работать будет без проблем) Чушь собачья, всё работает нормально, что там, что там. Перестань говнокодить и осознай, что тесты скрипта обычно занимают больше времени чем его написание... Изменено 29 ноября, 2021 пользователем hernesbird правки 1 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
HouseMD Опубликовано 11 декабря, 2021 Поделиться Опубликовано 11 декабря, 2021 (изменено) hernesbird, ну ты прям уничтожил человека. ))) Он же делал работу, старался. Нет его вины в том что он не учился программированию. Охотник, молодец. Спасибо за скрипт. Изменено 11 декабря, 2021 пользователем HouseMD 0 Цитата Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.