- Рег
- 7 Янв 2016
- Сообщения
- 8
- Реакции
- 0
unit
Collecting_Spores_Quest;
interface
uses SysUtils, Classes, RespPoint_Gludio, Utils;
const
QuestItemId = 7552;
QuestId = 44;
//Вписываем ник
PmUserName = 'FaN';
//Имя Нпц или Id
QuestNpcName = '30827';
//Писать в пм о ходе выполнения квеста?
ShouldPmToDriver = true;
//максимальное количество смертей
MaxDeathsCount = 5;
implementation
var deathCounts: Integer; obj:TL2Effect;
procedure TakeQuest;
begin
if User.inrange (-13943,123353, -3112, 5000, 300) then begin
Engine.SetTarget(30827);
Engine.MoveToTarget(-20);
Utils.RandomDelay(300, 500);
Engine.DlgOpen();
Utils.RandomDelay(300, 500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Utils.RandomDelay(500, 1500);
end;
end;
procedure Tp; //телепорт в город
begin
Engine.FaceControl(0, False); // вырубаем бота
Engine.UseItem(736); // юзаем сое
Utils.RandomDelay(20000, 30000);
end;
procedure GoToLa;
begin
if User.inrange (-14366, 123692, -3112, 5000, 150) then begin
Engine.MoveTo(-14366, 123692, -3112); //идем в центр города
Engine.MoveTo(-13914, 123311, -3143); //идем к ланди
Engine.SetTarget(30827);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Utils.RandomDelay(500, 1500);
end;
end;
procedure GoToOrk;
begin
Engine.MoveTo(-14132, 123709, -3143);
Engine.MoveTo(-14261, 124430, -3146);
Engine.MoveTo(-14202, 125735, -3169);
Engine.MoveTo(-13826, 126059, -3171);
Engine.MoveTo(-13251, 126173, -3171);
Engine.MoveTo(-12699, 124884, -3155);
Engine.MoveTo(-12823, 124887, -3126);
Utils.RandomDelay(500, 1500);
Engine.SetTarget(30505);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(6);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
end;
procedure GoToLa2;
begin
Engine.MoveTo(-12252, 124384, -3131);
Engine.MoveTo(-12128, 123799, -3124);
Engine.MoveTo(-13804, 123488, -3143);
Engine.MoveTo(-13892, 123349, -3143);
Engine.SetTarget(30827);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
end;
procedure EndQuest;
begin
Engine.SetTarget(30827); //меняем на куру
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(6);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Print('Поздравляю у Вас есть Кура!!!');
end;
procedure MoveToSpot;
begin
Engine.MoveTo(-14575, 123317, -3143);
Engine.MoveTo(-14914, 123884, -3143);
Engine.MoveTo(-17332, 124307, -3183);
Engine.MoveTo(-18052, 124301, -3175);
Engine.MoveTo(-19326, 123564, -3225);
Engine.MoveTo(-19914, 122657, -3340);
Print('Пришли на место');
end;
procedure MoveToNpc;
begin
Engine.MoveTo(-14760, 123432, -3143);
Engine.MoveTo(-14802, 123409, -3143);
Engine.MoveTo(-15029, 123417, -3134);
Engine.MoveTo(-15091, 123371, -3134);
Engine.MoveTo(-15123, 123371, -3134);
Engine.MoveTo(-15124, 123376, -3134);
end;
procedure BuyToNpc;
begin
Engine.Settarget(30321); // target сидни в магазине оружия
Engine.MoveToTarget(-20);
Utils.RandomDelay(300, 500);
Engine.Dlgopen;
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
Engine.NpcTrade(false,[168,1]); //купить молот за 425,250 аден
end;
procedure GoToLandy;
begin
Utils.RandomDelay(300, 500); //идем к ланди
Engine.MoveTo(-14894, 123442, -3104);
Engine.MoveTo(-14683, 123477, -3143);
Engine.MoveTo(-14376, 123431, -3143);
Engine.MoveTo(-14057, 123375, -3143);
Engine.MoveTo(-13905, 123357, -3143);
Engine.MoveTo(-13954, 123353, -3143);
Engine.MoveTo(-13946, 123347, -3143);
Engine.Settarget(30827); //Взять в таргет ланди;
Utils.RandomDelay(300, 500);
Engine.Dlgopen;
Utils.RandomDelay(300, 500);
Engine.DlgSel(8);
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
end;
procedure CheckBuff; //идем за баффом от ланди
begin
Print('Идем за Бафом');
Engine.MoveTo(-14227, 123122, -3143);
Engine.MoveTo(-14093, 122589, -3143);
Engine.MoveTo(-14142, 122334, -3079);
Engine.MoveTo(-14099, 122240, -3031);
Engine.MoveTo(-13959, 122014, -3015);
Engine.Settarget(31077);
Utils.RandomDelay(100, 200);
Engine.Dlgopen;
Utils.RandomDelay(100, 200);
Engine.DlgSel(1);
Utils.RandomDelay(100, 200);
Delay(500);
end;
procedure MoveHome;
begin
Engine.MoveTo(37345, 60235, -3584);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36982, 58862, -3648);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36376, 56651, -3664);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36155, 55622, -3536);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36130, 54336, -3496);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36531, 53598, -3576);
Utils.RandomDelay(100, 200);
Engine.MoveTo(38101, 53966, -3600);
Utils.RandomDelay(100, 200);
Engine.MoveTo(40703, 52809, -3224);
Utils.RandomDelay(100, 200);
Engine.MoveTo(41763, 52043, -3032);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42882, 51188, -2992);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42912, 50633, -2984);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42847, 50061, -2976);
end;
procedure ExecuteCollectingSporesQuest;
var
index: Integer;
item:TL2Item;
tempStr:string;
lastcount:Integer;
begin
if(User.Dead) then begin
Print('Stop bot');
Engine.FaceControl(0, false);
Utils.RandomDelay(1000, 2000);
Print('Go to town');
Engine.GoHome;
deathCounts := deathCounts + 1;
while not User.InRange(-13943,123353, -3112, 5000, 3550) do //ïðîâåðÿåì â ãîðîäå ëè ìû, åñëè íåò çàäåðæêà è òàê çàöèêëèâàåì
begin
Print('Не правильный город портанись в Глудио!');
Delay(10000);
end;
end;
Utils.RandomDelay(500, 1000);
if((Inventory.Quest.ByID(QuestItemId, item) = true) and (item.count = 30) ) then begin
Print('Квест выполнен идем сдавать!');
Tp; //тп в город
GoToLa; //идем сдавать
GoToOrk; //продолжаем
GoToLa2; //next)
EndQuest;
exit;
end;
if(not Engine.QuestStatus(QuestId, 44)) then begin //берем квест
Print('Взяли Квест на Курицу');
TakeQuest;
end;
Print('Идем в магазине за кувалдой');
MoveToNpc;
Print('Покупаем Кувалду');
BuyToNpc;
Print('Идем к Landy');
GoToLandy;
Print('Проверяем Бафф если нету идем бафаемся');
CheckBuff;
Print('Идем на спот');
MoveToSpot;
Utils.RandomDelay(500, 1500);
Print('Набиваем');
Engine.FaceControl(0, true);
//Проверяет сколько штук и пишет в системе бота осталось:
while( (Inventory.Quest.ByID(QuestItemId, item) = false) or (item.count < 30)) do begin
if(lastcount <> item.count) then begin
tempStr:= 'Осталось набить шт:' + IntToStr(30 - item.count);
Print(tempStr);
end;
lastcount:= item.count;
if(User.Dead) then begin
Engine.FaceControl(0, false);
Tp;
exit;
end;
end;
end;
begin
while ( (1=1) and (deathCounts < MaxDeathsCount) ) do begin
ExecuteCollectingSporesQuest();
end;
end.
Collecting_Spores_Quest;
interface
uses SysUtils, Classes, RespPoint_Gludio, Utils;
const
QuestItemId = 7552;
QuestId = 44;
//Вписываем ник
PmUserName = 'FaN';
//Имя Нпц или Id
QuestNpcName = '30827';
//Писать в пм о ходе выполнения квеста?
ShouldPmToDriver = true;
//максимальное количество смертей
MaxDeathsCount = 5;
implementation
var deathCounts: Integer; obj:TL2Effect;
procedure TakeQuest;
begin
if User.inrange (-13943,123353, -3112, 5000, 300) then begin
Engine.SetTarget(30827);
Engine.MoveToTarget(-20);
Utils.RandomDelay(300, 500);
Engine.DlgOpen();
Utils.RandomDelay(300, 500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Utils.RandomDelay(500, 1500);
end;
end;
procedure Tp; //телепорт в город
begin
Engine.FaceControl(0, False); // вырубаем бота
Engine.UseItem(736); // юзаем сое
Utils.RandomDelay(20000, 30000);
end;
procedure GoToLa;
begin
if User.inrange (-14366, 123692, -3112, 5000, 150) then begin
Engine.MoveTo(-14366, 123692, -3112); //идем в центр города
Engine.MoveTo(-13914, 123311, -3143); //идем к ланди
Engine.SetTarget(30827);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Utils.RandomDelay(500, 1500);
end;
end;
procedure GoToOrk;
begin
Engine.MoveTo(-14132, 123709, -3143);
Engine.MoveTo(-14261, 124430, -3146);
Engine.MoveTo(-14202, 125735, -3169);
Engine.MoveTo(-13826, 126059, -3171);
Engine.MoveTo(-13251, 126173, -3171);
Engine.MoveTo(-12699, 124884, -3155);
Engine.MoveTo(-12823, 124887, -3126);
Utils.RandomDelay(500, 1500);
Engine.SetTarget(30505);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(6);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
end;
procedure GoToLa2;
begin
Engine.MoveTo(-12252, 124384, -3131);
Engine.MoveTo(-12128, 123799, -3124);
Engine.MoveTo(-13804, 123488, -3143);
Engine.MoveTo(-13892, 123349, -3143);
Engine.SetTarget(30827);
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(8);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
end;
procedure EndQuest;
begin
Engine.SetTarget(30827); //меняем на куру
Utils.RandomDelay(500, 1500);
Engine.Dlgopen;
Utils.RandomDelay(500, 1500);
Engine.DlgSel(6);
Utils.RandomDelay(500, 1500);
Engine.DlgSel(1);
Print('Поздравляю у Вас есть Кура!!!');
end;
procedure MoveToSpot;
begin
Engine.MoveTo(-14575, 123317, -3143);
Engine.MoveTo(-14914, 123884, -3143);
Engine.MoveTo(-17332, 124307, -3183);
Engine.MoveTo(-18052, 124301, -3175);
Engine.MoveTo(-19326, 123564, -3225);
Engine.MoveTo(-19914, 122657, -3340);
Print('Пришли на место');
end;
procedure MoveToNpc;
begin
Engine.MoveTo(-14760, 123432, -3143);
Engine.MoveTo(-14802, 123409, -3143);
Engine.MoveTo(-15029, 123417, -3134);
Engine.MoveTo(-15091, 123371, -3134);
Engine.MoveTo(-15123, 123371, -3134);
Engine.MoveTo(-15124, 123376, -3134);
end;
procedure BuyToNpc;
begin
Engine.Settarget(30321); // target сидни в магазине оружия
Engine.MoveToTarget(-20);
Utils.RandomDelay(300, 500);
Engine.Dlgopen;
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
Engine.NpcTrade(false,[168,1]); //купить молот за 425,250 аден
end;
procedure GoToLandy;
begin
Utils.RandomDelay(300, 500); //идем к ланди
Engine.MoveTo(-14894, 123442, -3104);
Engine.MoveTo(-14683, 123477, -3143);
Engine.MoveTo(-14376, 123431, -3143);
Engine.MoveTo(-14057, 123375, -3143);
Engine.MoveTo(-13905, 123357, -3143);
Engine.MoveTo(-13954, 123353, -3143);
Engine.MoveTo(-13946, 123347, -3143);
Engine.Settarget(30827); //Взять в таргет ланди;
Utils.RandomDelay(300, 500);
Engine.Dlgopen;
Utils.RandomDelay(300, 500);
Engine.DlgSel(8);
Utils.RandomDelay(300, 500);
Engine.DlgSel(1);
Utils.RandomDelay(300, 500);
end;
procedure CheckBuff; //идем за баффом от ланди
begin
Print('Идем за Бафом');
Engine.MoveTo(-14227, 123122, -3143);
Engine.MoveTo(-14093, 122589, -3143);
Engine.MoveTo(-14142, 122334, -3079);
Engine.MoveTo(-14099, 122240, -3031);
Engine.MoveTo(-13959, 122014, -3015);
Engine.Settarget(31077);
Utils.RandomDelay(100, 200);
Engine.Dlgopen;
Utils.RandomDelay(100, 200);
Engine.DlgSel(1);
Utils.RandomDelay(100, 200);
Delay(500);
end;
procedure MoveHome;
begin
Engine.MoveTo(37345, 60235, -3584);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36982, 58862, -3648);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36376, 56651, -3664);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36155, 55622, -3536);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36130, 54336, -3496);
Utils.RandomDelay(100, 200);
Engine.MoveTo(36531, 53598, -3576);
Utils.RandomDelay(100, 200);
Engine.MoveTo(38101, 53966, -3600);
Utils.RandomDelay(100, 200);
Engine.MoveTo(40703, 52809, -3224);
Utils.RandomDelay(100, 200);
Engine.MoveTo(41763, 52043, -3032);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42882, 51188, -2992);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42912, 50633, -2984);
Utils.RandomDelay(100, 200);
Engine.MoveTo(42847, 50061, -2976);
end;
procedure ExecuteCollectingSporesQuest;
var
index: Integer;
item:TL2Item;
tempStr:string;
lastcount:Integer;
begin
if(User.Dead) then begin
Print('Stop bot');
Engine.FaceControl(0, false);
Utils.RandomDelay(1000, 2000);
Print('Go to town');
Engine.GoHome;
deathCounts := deathCounts + 1;
while not User.InRange(-13943,123353, -3112, 5000, 3550) do //ïðîâåðÿåì â ãîðîäå ëè ìû, åñëè íåò çàäåðæêà è òàê çàöèêëèâàåì
begin
Print('Не правильный город портанись в Глудио!');
Delay(10000);
end;
end;
Utils.RandomDelay(500, 1000);
if((Inventory.Quest.ByID(QuestItemId, item) = true) and (item.count = 30) ) then begin
Print('Квест выполнен идем сдавать!');
Tp; //тп в город
GoToLa; //идем сдавать
GoToOrk; //продолжаем
GoToLa2; //next)
EndQuest;
exit;
end;
if(not Engine.QuestStatus(QuestId, 44)) then begin //берем квест
Print('Взяли Квест на Курицу');
TakeQuest;
end;
Print('Идем в магазине за кувалдой');
MoveToNpc;
Print('Покупаем Кувалду');
BuyToNpc;
Print('Идем к Landy');
GoToLandy;
Print('Проверяем Бафф если нету идем бафаемся');
CheckBuff;
Print('Идем на спот');
MoveToSpot;
Utils.RandomDelay(500, 1500);
Print('Набиваем');
Engine.FaceControl(0, true);
//Проверяет сколько штук и пишет в системе бота осталось:
while( (Inventory.Quest.ByID(QuestItemId, item) = false) or (item.count < 30)) do begin
if(lastcount <> item.count) then begin
tempStr:= 'Осталось набить шт:' + IntToStr(30 - item.count);
Print(tempStr);
end;
lastcount:= item.count;
if(User.Dead) then begin
Engine.FaceControl(0, false);
Tp;
exit;
end;
end;
end;
begin
while ( (1=1) and (deathCounts < MaxDeathsCount) ) do begin
ExecuteCollectingSporesQuest();
end;
end.
Строго не пинайте - учусь, кое чего ещё не понимаю, допиливал сам, кое что не проверенно, кое что не работает НО скрипт свою функцию выполняет. Поэтому прошу приведите в хороший вид код и уберите лишнее, т.к. этот скрипт мне больше не интересен) мучаю скрипт на волка.
По скрипту - начало в центре глудио. Необходимо иметь сое при себе, и кол-во денег чтоб хватило на покупку Булавы необходимой для квеста. Бафается у нюбо нпц сам.
Далее после того как набил необходимое кол-во не отбегая с места спота выключает бота и делает сое в город - сдесь и проблема будет у маленьких лвл, можно упасть во время СОЕ.
После сое сам завершает квест, и меняет на курицу.
Что хотелось бы в идеале:
1. проверка на баф - если есть более 20 минут не подбегает к бафферу а сразу бежит фармить лизарменов.
2. Проверка на кол-во сое
3. После смерти возвращение на спот