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

<Sloupok> Скрипт на квесты у Маркелы (Деревня Карамель)! Need Help

Рег
14 Окт 2015
Сообщения
3
Реакции
0
Ребят, привет.
Собсно о себе.
Скрипты не писал ранее, поэтому прошу треш не разводить о качестве написанного.

Взялся за это не благодарное дело, по просьбе товарищей.
Нашел 1 квесты у Маркелы, малец переделал (как правильно), вышло не плохо, бегает проходит.
Уверившись в своих силах , решил продолжить самописку 2го квеста.
Все шло хорошо, даже встроенный компилятор не ругнулся ни разу.
Ну думал все, гуру Pascal и Delphi, но не тут то было:

Во-первых, по какой-то причине в функции woodenset в конце, когда после получения нового обмундирования скрипт ему говорит одеться - Но inGame он одевает вещи и тут же снимает. - Пол беды. Если подскажите, буду признателен.

Во-вторых, так же, по не понятным мне причинам, в конце функции wooden он должен прибежать на место, а уж потом включить конфиг. Но бот, сразу после того как портнулся на место "Алтарь золота", включает конфиг, и бьет мобов на ТП, не доходя до заданных координат.

P.s. Извините за мат в комметах кода......
Код:
var
Npc: TL2Npc;
shot: TL2Item;
Item: TL2Item;
qItem: TL2Item;
shw: TL2Item;
Quest: TItemList;
function CheckStatus: Boolean;
begin
Result:=true;
if User.Dead then begin
Print('Dead. Pressing to village.');
Delay(1000);
Engine.FaceControl(0,false);
Engine.GoHome;
Delay(3000);
end;
Result:=false;
end;
procedure start;
begin
Engine.Settarget('Newbie Helper');
Engine.Settarget('Помощник новичков');
Delay(1500);
Engine.DlgOpen;
Delay(1500);
Engine.Loadconfig('atack'); //меняем на свое
Engine.FaceControl(0, true);
end;
procedure kamael;
begin
Engine.FaceControl(0, false);
Engine.Settarget('Newbie Helper');
Engine.Settarget('Помощник новичков');
Delay(3000);
Engine.DlgOpen;
Delay(3000);
Engine.UseItem(12753);
Delay(30000);
end;

function woodenset: boolean;
begin
Engine.MoveTo(-119752, 44504, 376);//Бежим к нубигиду
Engine.Settarget(32135);//Таргет на него
Delay(1500);
Engine.Dlgopen;// Открываем диалог
Delay(1500);
Engine.MoveTo(-119640, 45784, 400);
Engine.MoveTo(-119512, 47816, 400);
Engine.MoveTo(-119384, 49192, 32); // Бежим к МАркелле
Engine.Settarget(32173);// Таргет на нее
Delay(1500);
Engine.Dlgopen;// Открываем диалог
Delay(2000);
Engine.DlgSel(3);// Выбираем Quest
Delay(1500);
Engine.DlgSel(1);// Выбираем 1 квест
Delay(1500);
Engine.DlgSel(1);// Выбираем нужну строку квеста
Delay(1500);
Engine.BypassToServer('00');
Delay(1500);
Engine.MoveTo(-119416, 47928, 400);
Engine.MoveTo(-119320, 46920, 376);
Engine.MoveTo(-116824, 45784, 376);
Engine.MoveTo(-115992, 45560, 520);
Engine.MoveTo(-115208, 44632, 528);
Engine.MoveTo(-115000, 44648, 528);
Engine.Settarget(32170); // Бежим по квесту
Engine.Dlgopen;
Delay(1500);
Engine.DlgSel(5);
Delay(1500);
Engine.MoveTo(-115560, 44728, 512);
Engine.MoveTo(-118888, 46888, 376);
Engine.MoveTo(-119350, 47038, 381);
Engine.MoveTo(-119416, 48552, 248);
Engine.MoveTo(-119368, 49208, 24);
Engine.Settarget(32173); // ВОзвращаемся к Маркеле
Engine.Dlgopen;
Delay(1500);
Engine.DlgSel(3);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Engine.MoveTo(-119381, 47992, 378);
Engine.MoveTo(-119336, 47016, 376);
Engine.MoveTo(-117192, 47640, 472);
Engine.MoveTo(-117144, 47976, 472);
Engine.Settarget(32167); // Бежим по квесту
Engine.Dlgopen;
Delay(1500);
Engine.DlgSel(3);
Delay(1500);
Engine.MoveTo(-117176, 47640, 472);
Engine.MoveTo(-117606, 47446, 462);
Engine.MoveTo(-119240, 47688, 464);
Engine.MoveTo(-119368, 47944, 392);
Engine.MoveTo(-119368, 49192, 32);
Engine.Settarget(32173); // ВОзвращаемся к Маркеле
Engine.Dlgopen;
Delay(1500);
Engine.DlgSel(3);
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Engine.BypassToServer('00');
Delay(1500);
Engine.UseItem(23); //Одеваем новый шмот (сука не одевается)
Delay(500);
Engine.UseItem(2386);//Одеваем новый шмот (сука не одевается)
Delay(500);
Engine.UseItem(43);//Одеваем новый шмот (сука не одевается)
Delay(500);
Engine.UseItem(37);//Одеваем новый шмот (сука не одевается)
Delay(500);
Engine.UseItem(49);//Одеваем новый шмот (сука не одевается)
Delay(500);
Engine.MoveTo(-119400, 49576, -48); //Отходим от Маркелы чтобы выполнилось условие if (user.level >=6) and user.inrange(-119400, 49576, -48, 50) then Script.Newthread(@shots);
end;
function shots: boolean;
begin
Engine.Settarget(32173); // Таргет на МАркелле
Delay(1500);
Engine.BypassToServer('00');
Delay(1500);
Engine.MoveTo(-119400, 47960, 384);
Engine.MoveTo(-119672, 44632, 376);
Engine.Settarget(32135); // Бежим к нубигиду и выделяем в таргет
Engine.Dlgopen;
Delay(2500);
Engine.DlgSel(6);// Выбираем строки диалога
Delay(1500);
Engine.DlgSel(1);// Выбираем строки диалога
Delay(1500);
Engine.Dlgopen;
Delay(2500);
Engine.DlgSel(6);// Выбираем строки диалога
Delay(1500);
Engine.DlgSel(2);// Выбираем строки диалога
Delay(1500);
Engine.NpcExchange(10477,1); //маг пуха 10474 - Сейчас выбирает кастеты
Delay(1500);
Engine.UseItem(10477); //Одевает кастеты
Engine.Settarget(32135);//выделяем в таргет
Engine.Dlgopen;
Delay(2500);
Engine.DlgSel(5);
Delay(1500);
Engine.DlgSel(1); // Баффаемся
Delay(1500);
Engine.MoveTo(-119640, 45784, 400);
Engine.MoveTo(-119512, 47816, 400);
Engine.MoveTo(-119384, 49192, 32);
Engine.Settarget(32173);// Ебашим опять к маркеле
Delay(1500);
Engine.Dlgopen;
Delay(2000);
Engine.DlgSel(3);// Выбираем Quest
Delay(1500);
Engine.DlgSel(2);// Выбираем 2 Quest
Delay(1500);
Engine.DlgSel(1); 
Delay(1500);
  Engine.MoveTo(-119416, 47944, 392);
     Engine.MoveTo(-119320, 46984, 376);
     Engine.MoveTo(-117672, 46776, 368);
     Engine.MoveTo(-116936, 46600, 368);
     Engine.Settarget(32163); //Пиздуем к телепорту и зводим диалог
	 Delay(1500);
Engine.Dlgopen;
Delay(2000);
Engine.DlgSel(1);// Выбираем "Телепорт"
Delay(2000);
Engine.DlgSel(9);//Выбираем "Алтарь золота"
Delay(2000);
Engine.MoveTo(-122460, 78275, -3208); // После порта должно пиздовать в эту точку, но сука включается функция attack (я хз чо делать) и он начинает бить мобов с респа.
end;

function attack :boolean;
begin
Engine.Loadconfig('atack'); //меняем на свое
Engine.FaceControl(0, true); // Включает управление интерфейсом
end;

function return: boolean; // Вот тут должно отработать условие if Inventory.Quest.ByID(9796, item) and (item.count >=1) then Script.Newthread(@return), после того как он убил гоблинов и получил итем.
begin
Engine.FaceControl(0, false);// Выключает управление интерфейсом
Delay(1500);
Engine.UseItem(12753);// Юзает СОЕ в камаель
Delay(25000);
Engine.MoveTo(-119640, 45784, 400);
Engine.MoveTo(-119512, 47816, 400);
Engine.MoveTo(-119384, 49192, 32);
Engine.Settarget(32173); // Пиздует к маркеле
Engine.Delay(1500);
Engine.Dlgopen;
Delay(2000);
Engine.DlgSel(3); // Выбирает Quest
Delay(2000);
Engine.DlgSel(2);//Выбирает 2 строку квеста
Delay(2000);
Engine.DlgSel(1); // Выбирать "Обменять на Adena"
Engine.BypassToServer('00');
Delay(1500);
Engine.MoveTo(-119400, 47960, 384);
Engine.MoveTo(-119672, 44632, 376);
Engine.Settarget(32135); // Возвращается к нубигиду
Engine.Dlgopen;
Delay(2500);
end;

function close: boolean;
begin

end;

begin
if (user.level = 1) then Script.Newthread(@start);
while Engine.Status = lsOnline do
begin
delay(1500);
if Inventory.User.ByID(6353, item) and (item.count >=1)and (user.level >=2) then kamael;
if (user.level =1) and user.inrange(-120000, 44500, 368, 200) then Script.Newthread(@woodenset);
if (user.level >=6) and user.inrange(-119400, 49576, -48, 50) then Script.Newthread(@shots);
if user.inrange(-122460, 78275, -3208, 2) then attack; // Вот тут основная засада. Бот начинает атаковать раньше, чем прибежит в конечные координаты, описанные в функции shots
if Inventory.Quest.ByID(9796, item) and (item.count >=1) then Script.Newthread(@return);

end;
end.
 
у меня в сове время пропускало команды по одной простой причине - маленькая или вообще нету задержки - 2 сек плосле тп, мне кажется очень мало. по поводу условия на атаку - четвёртое число 2 это радиус, не маленький он ?
 
Вот как у меня
Engine.SetTarget(32163);//гк у кам
Engine.DlgOpen;
Engine.DlgSel('Teleport');
Engine.Delay(500);
Engine.DlgSel(9);
Engine.Delay(10000);//прилетели в алтарь золота
Engine.MoveTo(-122278, 73816, -2898);
Engine.MoveTo(-122414, 74585, -3070);
Engine.MoveTo(-124093, 76100, -3246);
Engine.MoveTo(-125343, 76037, -3348);
while User.Level<15 do begin
Engine.AutoSoulshot(5790, true);
Engine.AutoTarget(2000);
Engine.UseSkill(1177);
if Inventory.Quest.ByID(9796, item) then break;
end;
while User.Level<15 do begin
Engine.AutoSoulshot(5790, true);
Engine.UseSkill(1177);
if User.InCombat=false then break;
end;
Engine.UseItem(12753);//выбили 1 итем и заюзали тп в Камаель виладж
Engine.Delay(20000);
 
Назад
Сверху