Jump to content

Recommended Posts

Posted

@adr.bot how could i read the system message window? i mean if i would like to catch, record all my damages, pick up or any other consumable actived

 

I've tried ChatMessage.ChatType= mtSystem but it is not getting anything.

Posted
5 hours ago, panchio said:

@adr.bot how could i read the system message window? i mean if i would like to catch, record all my damages, pick up or any other consumable actived

 

I've tried ChatMessage.ChatType= mtSystem but it is not getting anything.

Use WaitAction instead.

 

var
  id , p : integer;
begin
   while (true) do
   begin
      Engine.WaitAction([laSysMsg],id,p);
      print(id);
   end;
end.

 

Posted (edited)

hey @adr.bot is there any Method to get current loaded zone name? e.g.:

 

Engine.LoadZone('123');
// print(Engine.GetCurrentZone) or smth . Should print 123 (zone name)

And if not, is it possible to manually implement such method somehow? Tnanks in advance.

 

Edited by Griffin39
  • 3 weeks later...
  • 3 weeks later...
Posted (edited)

hi i need help with this script  works normal but when i tp rune reloop the tp and not move to path!!!

 

 

uses SysUtils,Teleport;

procedure AttackDefense;
var
uX,uY,uZ: integer;
begin
 engine.Facecontrol(0, false);
 engine.moveto(user.x,user.y,user.z);
 uX:=user.x;
 uY:=user.y;
 uZ:=user.Z;
 while user.inrange(uX,uY,uZ,500) do begin
     engine.useitem(736);//soe
     delay(20000);
 end;
 while user.incombat do delay(500);
end;
procedure Target(id: integer);
var
i:integer;
begin
for i:=0 to npclist.count-1 do begin
 if npclist.items(i).id = id then begin
  if not npclist.items(i).dead then begin
   engine.settarget(npclist.items(i));
   break();
  end;
 end;
end;
end;
function ValidNPC: boolean;
var
i,n:integer;
npc: TL2Live;
begin
result:=false;
n:=0;
for i:=0 to npclist.count-1 do begin
 if npclist.items(i).id = 31748 then begin
  if not npclist.items(i).dead then inc(n);
 end;
end;
if n = 4 then result:=true;
end;


procedure chapter1;  // Precious Soul 1
var
item: TL2item;
begin
if engine.queststatus(241,1) and not engine.queststatus(241,2) then begin //st1
 while not user.inrange(84429, 147265, -3392,300) do begin // Тп в гиран
   Teleport.TpGiran;
 end;
 Engine.MoveTo(83800, 147672, -3392);
 Engine.MoveTo(83672, 147880, -3384);
 Engine.MoveTo(83608, 148440, -3384);
 Engine.MoveTo(83496, 148840, -3392);
 Engine.MoveTo(83304, 149144, -3392);
 Engine.MoveTo(82984, 149224, -3456);
 Engine.MoveTo(82632, 149432, -3456);
 Engine.MoveTo(82136, 149496, -3456);
 Engine.MoveTo(81656, 149544, -3456);
 Engine.MoveTo(81304, 149672, -3448);
 while not engine.queststatus(241,2) do begin
  engine.settarget(30753);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
 end;
end;
if engine.queststatus(241,2) and not engine.queststatus(241,3) then begin //st2
 while not user.inrange(73048, 118300, -3688,300) do begin
  Teleport.TpDeathPass;
 end;
 while not engine.queststatus(241,3) do begin
  engine.settarget(30754);
  engine.movetotarget(-100);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
 end;
end;
if engine.queststatus(241,3) and not engine.queststatus(241,4) then begin //st3
 while not user.inrange(34208, 187379, -3088,300) do begin
  Teleport.TpBeeHive;
 end;
 Engine.MoveTo(33768, 187288, -3248);
 Engine.MoveTo(33016, 187144, -3200);
 Engine.MoveTo(32040, 186760, -3232);
 Engine.MoveTo(30984, 186408, -3400);
 Engine.MoveTo(30184, 186200, -3632);
 Engine.MoveTo(28632, 186312, -3664);
 Engine.MoveTo(26488, 186696, -3536);
 Engine.MoveTo(25400, 186504, -3360);
 Engine.MoveTo(23176, 186440, -3456);
 Engine.MoveTo(21944, 186280, -3336);
 Engine.MoveTo(21288, 186408, -3248);
 Engine.MoveTo(20936, 186472, -3240);
 Engine.MoveTo(20424, 186296, -3344);
 Engine.MoveTo(19944, 186040, -3344);
 Engine.MoveTo(19688, 185608, -3344);
 Engine.MoveTo(19816, 185416, -3336);
 Engine.MoveTo(20200, 185176, -3336);
 Engine.MoveTo(20584, 184904, -3336);
 Engine.MoveTo(20904, 184696, -3336);
 Engine.LoadZone(script.path+'BarahamNoblesse.zmap');
 engine.facecontrol(0, true);
 while not engine.queststatus(241,4) do delay(500);
 while user.incombat do delay(500);
 engine.facecontrol(0, false);
end;
if engine.queststatus(241,4) and not engine.queststatus(241,5) then begin //st4
 while not user.inrange(147452, 27127, -2192,300) do begin
  Teleport.TpAden;
 end;
 Engine.MoveTo(147624, 26904, -2192);
 Engine.MoveTo(147624, 26504, -2176);
 Engine.MoveTo(147688, 26360, -2120);
  while not engine.queststatus(241,5) do begin
   engine.settarget(31739);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;     
end;
if engine.queststatus(241,5) and not engine.queststatus(241,6) then begin //st5
 while not user.inrange(111078, 218929, -3520,300) do begin
  Teleport.TpHeine;
 end;
 Engine.MoveTo(110680, 219096, -3520);
 Engine.MoveTo(110040, 219096, -3456);
 Engine.MoveTo(110056, 218536, -3528);
 Engine.MoveTo(110056, 218104, -3528);
 Engine.MoveTo(110072, 217720, -3592);
 Engine.MoveTo(110040, 217288, -3728);
 Engine.MoveTo(109672, 217336, -3728);
 Engine.MoveTo(109336, 217496, -3728);
 Engine.MoveTo(108744, 217512, -3688);
 Engine.MoveTo(108248, 217528, -3672);
 Engine.MoveTo(107832, 217560, -3656);
 Engine.MoveTo(107624, 217848, -3656);
 Engine.MoveTo(107304, 218056, -3656);
 Engine.MoveTo(107144, 218072, -3656);
 Engine.MoveTo(107112, 217736, -3576);
 Engine.MoveTo(107096, 217192, -3576);
 Engine.MoveTo(107000, 217000, -3576);
 while not engine.queststatus(241,6) do begin
   engine.settarget(31042);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;
end;
if engine.queststatus(241,6) and not engine.queststatus(241,7) then begin //st6
 while not user.inrange(73048, 118300, -3688,300) do begin
  Teleport.TpDeathPass;
 end;
 Engine.MoveTo(72856, 117736, -3664);
 Engine.MoveTo(72424, 117000, -3664);
 Engine.MoveTo(71928, 115608, -3680);
 Engine.MoveTo(71592, 114440, -3712);
 Engine.MoveTo(71400, 113448, -3696);
 Engine.MoveTo(71336, 112472, -3680);
 Engine.MoveTo(71288, 111176, -3712);
 Engine.MoveTo(71016, 110168, -3712);
 Engine.MoveTo(70904, 108312, -3712);
 Engine.MoveTo(70952, 106984, -3712);
 Engine.MoveTo(71080, 105384, -3680);
 Engine.MoveTo(71240, 104376, -3664);
 Engine.MoveTo(71464, 102968, -3696);
 Engine.MoveTo(71608, 102120, -3712);
 Engine.MoveTo(71768, 101240, -3696);
 Engine.MoveTo(72104, 100888, -3680);
 Engine.MoveTo(72392, 100232, -3616);
 Engine.MoveTo(73176, 99992, -3392);
 Engine.MoveTo(73592, 99848, -3288);
 Engine.MoveTo(74200, 99576, -3264);
 Engine.MoveTo(74920, 99640, -3264);
 Engine.MoveTo(75640, 99800, -3296);
 Engine.MoveTo(76744, 100024, -3376);
 Engine.MoveTo(76648, 101304, -3296);
 Engine.MoveTo(76504, 102552, -3176);
 Engine.MoveTo(76328, 103432, -3056);
 Engine.MoveTo(76088, 104456, -2960);
 Engine.MoveTo(75992, 105016, -2880);
 Engine.MoveTo(76232, 105592, -2912);
 Engine.MoveTo(76920, 106568, -2944);
 Engine.MoveTo(76712, 107000, -2880);
 Engine.LoadZone(script.path+'SuccubusNoblesse.zmap');
 engine.facecontrol(0, true);
 while not engine.queststatus(241,7) do delay(500);
 AttackDefense;
end;
if engine.queststatus(241,7) and not engine.queststatus(241,8) then begin //st7
 while not user.inrange(111078, 218929, -3520,300) do begin
  Teleport.TpHeine;
 end;
 Engine.MoveTo(110680, 219096, -3520);
 Engine.MoveTo(110040, 219096, -3456);
 Engine.MoveTo(110056, 218536, -3528);
 Engine.MoveTo(110056, 218104, -3528);
 Engine.MoveTo(110072, 217720, -3592);
 Engine.MoveTo(110040, 217288, -3728);
 Engine.MoveTo(109672, 217336, -3728);
 Engine.MoveTo(109336, 217496, -3728);
 Engine.MoveTo(108744, 217512, -3688);
 Engine.MoveTo(108248, 217528, -3672);
 Engine.MoveTo(107832, 217560, -3656);
 Engine.MoveTo(107624, 217848, -3656);
 Engine.MoveTo(107304, 218056, -3656);
 Engine.MoveTo(107144, 218072, -3656);
 Engine.MoveTo(107112, 217736, -3576);
 Engine.MoveTo(107096, 217192, -3576);
 Engine.MoveTo(107000, 217000, -3576);
 while not engine.queststatus(241,8) do begin
   engine.settarget(31042);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;

end;
if engine.queststatus(241,8) and not engine.queststatus(241,9) then begin //st8
 while not user.inrange(147452, 27127, -2192,300) do begin
  Teleport.TpAden;
 end;
 Engine.MoveTo(147720, 26360, -2120);
 while not engine.queststatus(241,9) do begin
   engine.settarget(31739);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;     
end;
if engine.queststatus(241,9) and not engine.queststatus(241,10) then begin //st9
 while not user.inrange(116543, 76297, -2720,300) do begin
  Teleport.TpHunters;
 end;
 Engine.MoveTo(117112, 76264, -2720);
 Engine.MoveTo(117672, 76216, -2672);
 Engine.MoveTo(118072, 76136, -2672);
 Engine.MoveTo(118488, 76248, -2632);
 Engine.MoveTo(119336, 76504, -2368);
 Engine.MoveTo(119576, 76568, -2256);
 Engine.MoveTo(119688, 76680, -2256);
 Engine.MoveTo(119576, 76840, -2256);
 Engine.MoveTo(119272, 77112, -2256);
 Engine.MoveTo(119368, 77304, -2240);
 Engine.MoveTo(119544, 77400, -2224);
 Engine.MoveTo(119848, 77304, -2224);
 while not engine.queststatus(241,10) do begin
   engine.settarget(30692);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;    
end;
if engine.queststatus(241,10) and not engine.queststatus(241,11) then begin //st10
 while not user.inrange(147452, 27127, -2192,300) do begin
  Teleport.TpAden;
 end;
 Engine.MoveTo(147720, 26360, -2120);
 while not engine.queststatus(241,11) do begin
   engine.settarget(31739);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;     
end;
if engine.queststatus(241,11) and not engine.queststatus(241,12) then begin //st11
while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
 while not engine.queststatus(241,12) do begin
   engine.settarget(31742);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(2000);
 end;
end;
if engine.queststatus(241,12) and not engine.queststatus(241,13) then begin //st12
if not user.inrange(33000, -48200, 1792, 400) then begin
while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
end;
 while not engine.queststatus(241,13) do begin
   engine.settarget(31744);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,13) and not engine.queststatus(241,14) then begin //st13
 while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43880, -49816, -784);
 Engine.MoveTo(43624, -49208, -776);
 Engine.MoveTo(43432, -49176, -776);
 Engine.MoveTo(43112, -49256, -776);
 Engine.MoveTo(42936, -48776, -776);
 Engine.MoveTo(42552, -48328, -784);
 Engine.MoveTo(41656, -48264, -784);
 Engine.MoveTo(40568, -48248, -752);
 Engine.MoveTo(39736, -48232, -752);
 Engine.MoveTo(38168, -48248, -1136);
 Engine.MoveTo(37608, -48408, -1136);
 Engine.MoveTo(37384, -48648, -1112);
 Engine.MoveTo(37352, -49032, -1112);
 Engine.MoveTo(37416, -49240, -1112);
 Engine.MoveTo(37960, -49336, -1112);
 Engine.MoveTo(38184, -49352, -1112);
 Engine.MoveTo(38328, -49256, -1112);
 while not engine.queststatus(241,14) do begin
   engine.settarget(31336);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,14) and not engine.queststatus(241,15) then begin //st14
 while not user.inrange(172120, 20272, -3312,300) do begin
  Teleport.TpCementery;
 end;
 Engine.MoveTo(172216, 20056, -3312);
 Engine.MoveTo(172504, 20088, -3312);
 Engine.MoveTo(172712, 20200, -3312);
 Engine.MoveTo(173032, 20232, -3224);
 Engine.MoveTo(173960, 20232, -3232);
 Engine.MoveTo(174680, 20216, -3232);
 Engine.MoveTo(175768, 20232, -3232);
 Engine.MoveTo(176648, 20216, -3232);
 Engine.MoveTo(177656, 20232, -3232);
 Engine.MoveTo(178088, 20216, -3232);
 Engine.MoveTo(178424, 19816, -3232);
 Engine.MoveTo(178616, 19704, -3200);
 Engine.MoveTo(178840, 19656, -3152);
 Engine.MoveTo(179480, 19432, -3152);
 Engine.MoveTo(179592, 19240, -3152);
 Engine.MoveTo(179656, 19112, -3152);
 Engine.MoveTo(179720, 17192, -3152);
 Engine.MoveTo(181064, 17144, -3152);
 Engine.LoadZone(script.path+'CrimsonMoss.zmap');
 engine.facecontrol(0, true);
 while not engine.queststatus(241,15) do delay(500);
 AttackDefense;
end;
if engine.queststatus(241,15) and not engine.queststatus(241,16) then begin //st15
 while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43848, -49832, -784);
 Engine.MoveTo(43544, -49176, -776);
 Engine.MoveTo(43112, -49256, -776);
 Engine.MoveTo(42920, -48568, -784);
 Engine.MoveTo(42696, -48328, -784);
 Engine.MoveTo(42008, -48248, -784);
 Engine.MoveTo(40712, -48232, -752);
 Engine.MoveTo(39832, -48216, -752);
 Engine.MoveTo(38136, -48248, -1136);
 Engine.MoveTo(37528, -48440, -1136);
 Engine.MoveTo(37352, -48728, -1112);
 Engine.MoveTo(37384, -49144, -1112);
 Engine.MoveTo(37432, -49320, -1112);
 Engine.MoveTo(37896, -49336, -1112);
 Engine.MoveTo(38280, -49272, -1112);
 Engine.MoveTo(38344, -49272, -1112);
 while not engine.queststatus(241,16) do begin
   engine.settarget(31336);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,16) and not engine.queststatus(241,17) then begin //st16
while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
 while not engine.queststatus(241,17) do begin
   engine.settarget(31743);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,17) and not engine.queststatus(241,18) then begin //st17
 if not user.inrange(33000, -48200, 1792, 300) then begin
 while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
end;
 while not engine.queststatus(241,18) do begin
   engine.settarget(31742);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,18) and not engine.queststatus(241,19) then begin //st18
 while not user.inrange(147790, -56496, -2768,300) do begin
  Teleport.TpGoddard;
 end;
 Engine.MoveTo(148360, -56216, -2760);
 Engine.MoveTo(149016, -56376, -2768);
 Engine.MoveTo(149240, -56424, -2768);
 Engine.MoveTo(149912, -56904, -2960);
 Engine.MoveTo(150040, -57336, -2960);
 Engine.MoveTo(150104, -57864, -2960);
 while not engine.queststatus(241,19) do begin
   engine.settarget(31740);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(241,19) and not engine.queststatus(241,20) then begin //st19
while not Inventory.Quest.ByID(7677, item) do begin
   engine.settarget(31740);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
/////////////////////////
end;
procedure chapter2;  // Precious Soul 2
var
item: TL2item;
begin
if Inventory.Quest.ByID(7677, item) then begin
 while not user.inrange(44115, -50215, -784,300) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
 while not engine.queststatus(242,1) do begin
   engine.settarget(31742);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(242,1) and not engine.queststatus(242,2) then begin
 while not engine.queststatus(242,2) do begin
  engine.settarget(31743);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
  engine.DlgSel(1);
  delay(500);
 end;
end;
if engine.queststatus(242,2) and not engine.queststatus(242,3) then begin
 while not engine.queststatus(242,3) do begin
  engine.settarget(31744);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  delay(500);
  engine.DlgSel(1);
  delay(500);
 end;
end;
if engine.queststatus(242,3) and not engine.queststatus(242,4) then begin
 while not user.inrange(93137, -58245, -2832,300) do begin
  Teleport.TpScreams;
 end;
 Engine.MoveTo(94952, -59432, -2424);
 Engine.MoveTo(94984, -60152, -2432);
 Engine.MoveTo(95000, -60584, -2464);
 while not engine.queststatus(242,4) do begin
  engine.settarget(31751);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  delay(500);
  engine.DlgSel(1);
  delay(500);
 end;
end;
if engine.queststatus(242,4) and not engine.queststatus(242,5) then begin
 while not engine.queststatus(242,5) do begin
  engine.settarget(31752);
  delay(500);
  engine.dlgOpen;
  delay(500);
  engine.DlgSel('Quest');
  delay(500);
  delay(500);
  engine.DlgSel(1);
  delay(500);
  if user.target.dead then engine.canceltarget;
 end;
end;
if engine.queststatus(242,5) and not engine.queststatus(242,6) then begin
 while not engine.queststatus(242,6) do begin
   engine.settarget(31751);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(242,6) and not engine.queststatus(242,7) then begin
 while not user.inrange(85235, 16207, -3656,500) do begin
  Teleport.TpIvory;
 end;
 Engine.MoveTo(85400, 16488, -3624);
 Engine.MoveTo(85352, 16872, -3592);
 Engine.MoveTo(85368, 17384, -3496);
 Engine.MoveTo(85352, 17752, -3496);
 Engine.MoveTo(85368, 18760, -3680);
 Engine.MoveTo(85368, 19560, -3768);
 Engine.MoveTo(85384, 20056, -3768);
 Engine.MoveTo(85384, 20856, -3696);
 Engine.MoveTo(85384, 21368, -3608);
 Engine.MoveTo(85384, 21928, -3512);
 Engine.MoveTo(85384, 22504, -3496);
 Engine.MoveTo(85384, 23160, -3496);
 Engine.MoveTo(85432, 24008, -3624);
 Engine.MoveTo(85496, 24120, -3616);
 Engine.MoveTo(86056, 24424, -3576);
 Engine.MoveTo(86488, 24312, -3584);
 Engine.MoveTo(87288, 23976, -3536);
 Engine.MoveTo(87864, 23944, -3488);
 Engine.MoveTo(88280, 23944, -3504);
 Engine.MoveTo(89016, 23752, -3584);
 Engine.MoveTo(89656, 23608, -3584);
 Engine.MoveTo(90216, 23464, -3584);
 Engine.MoveTo(90760, 23528, -3592);
 Engine.MoveTo(91528, 23400, -3544);
 Engine.MoveTo(92088, 23304, -3408);
 Engine.MoveTo(93016, 23064, -3240);
 Engine.MoveTo(93976, 22872, -3112);
 Engine.MoveTo(94408, 22568, -2992);
 Engine.MoveTo(94872, 22392, -2896);
 Engine.MoveTo(95288, 22184, -2864);
 Engine.MoveTo(95352, 22136, -2864);
 while not engine.queststatus(242,7) do begin
   engine.settarget(30759);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
 
end;
if engine.queststatus(242,7) and not engine.queststatus(242,8) then begin
 while not user.inrange(85235, 16207, -3656,500) do begin
  Teleport.TpIvory;
 end;
 Engine.MoveTo(85400, 16360, -3648);
 Engine.MoveTo(85336, 17032, -3584);
 Engine.MoveTo(85336, 17544, -3496);
 Engine.MoveTo(85336, 19784, -3768);
 Engine.MoveTo(85352, 20984, -3680);
 Engine.MoveTo(85352, 21832, -3528);
 Engine.MoveTo(85352, 22664, -3496);
 Engine.MoveTo(85336, 23240, -3496);
 Engine.MoveTo(85336, 24024, -3632);
 Engine.MoveTo(85064, 24088, -3616);
 Engine.MoveTo(84856, 24008, -3568);
 Engine.MoveTo(84376, 24232, -3552);
 Engine.MoveTo(83640, 24264, -3552);
 Engine.MoveTo(82968, 24088, -3504);
 Engine.MoveTo(82056, 23848, -3520);
 Engine.MoveTo(81336, 23656, -3552);
 Engine.MoveTo(80312, 23272, -3552);
 Engine.MoveTo(79768, 22952, -3552);
 Engine.MoveTo(79032, 22248, -3536);
 Engine.MoveTo(78552, 21624, -3552);
 Engine.MoveTo(78168, 20760, -3552);
 Engine.MoveTo(77848, 19976, -3552);
 Engine.MoveTo(77640, 19112, -3600);
 Engine.MoveTo(77480, 17992, -3792);
 Engine.MoveTo(75656, 18568, -3744);
 Engine.MoveTo(74232, 18440, -3632);
 Engine.MoveTo(71592, 18360, -3664);
 Engine.MoveTo(70104, 18168, -3632);
 Engine.MoveTo(69880, 18120, -3648);
 while not engine.queststatus(242,8) do begin
   engine.settarget(30738);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
 
end;
if engine.queststatus(242,8) and not engine.queststatus(242,9) then begin
 while not user.inrange(85235, 16207, -3656,500) do begin
  Teleport.TpIvory;
 end;
 Engine.MoveTo(85400, 16488, -3624);
 Engine.MoveTo(85352, 16872, -3592);
 Engine.MoveTo(85368, 17384, -3496);
 Engine.MoveTo(85352, 17752, -3496);
 Engine.MoveTo(85368, 18760, -3680);
 Engine.MoveTo(85368, 19560, -3768);
 Engine.MoveTo(85384, 20056, -3768);
 Engine.MoveTo(85384, 20856, -3696);
 Engine.MoveTo(85384, 21368, -3608);
 Engine.MoveTo(85384, 21928, -3512);
 Engine.MoveTo(85384, 22504, -3496);
 Engine.MoveTo(85384, 23160, -3496);
 Engine.MoveTo(85432, 24008, -3624);
 Engine.MoveTo(85496, 24120, -3616);
 Engine.MoveTo(86056, 24424, -3576);
 Engine.MoveTo(86488, 24312, -3584);
 Engine.MoveTo(87288, 23976, -3536);
 Engine.MoveTo(87864, 23944, -3488);
 Engine.MoveTo(88280, 23944, -3504);
 Engine.MoveTo(89016, 23752, -3584);
 Engine.MoveTo(89656, 23608, -3584);
 Engine.MoveTo(90216, 23464, -3584);
 Engine.MoveTo(90760, 23528, -3592);
 Engine.MoveTo(91528, 23400, -3544);
 Engine.MoveTo(92088, 23304, -3408);
 Engine.MoveTo(93016, 23064, -3240);
 Engine.MoveTo(93976, 22872, -3112);
 Engine.MoveTo(94408, 22568, -2992);
 Engine.MoveTo(94872, 22392, -2896);
 Engine.MoveTo(95288, 22184, -2864);
 Engine.MoveTo(95352, 22136, -2864);
 while not engine.queststatus(242,9) do begin
   engine.settarget(30759);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
 end;
end;
if engine.queststatus(242,9) and not engine.queststatus(242,10) then begin // как будет перс для теста, переписать, пока и так работает.
 if not user.inrange(86488, -75912, -3464, 3000) then begin
 while not user.inrange(67989, -71937, -3728,500) do begin
  Teleport.TpVOS;
 end;
 Engine.MoveTo(69000, -72120, -3776);
 Engine.MoveTo(70152, -72760, -3776);
 Engine.MoveTo(71912, -73672, -3728);
 Engine.MoveTo(73608, -74600, -3536);
 Engine.MoveTo(74728, -74472, -3328);
 Engine.MoveTo(75704, -74408, -3184);
 Engine.MoveTo(77064, -74152, -3040);
 Engine.MoveTo(77752, -73192, -2992);
 Engine.MoveTo(77976, -72536, -2968);
 Engine.MoveTo(78728, -70968, -3488);
 Engine.MoveTo(80024, -71192, -3440);
 Engine.MoveTo(81192, -71384, -3424);
 Engine.MoveTo(82440, -71672, -3456);
 Engine.MoveTo(83400, -72296, -3472);
 Engine.MoveTo(84152, -72920, -3488);
 Engine.MoveTo(84936, -73576, -3600);
 Engine.MoveTo(86408, -73992, -3552);
 Engine.MoveTo(87416, -74232, -3520);
 Engine.MoveTo(87848, -74408, -3488);
 Engine.MoveTo(87160, -75160, -3480);
 Engine.MoveTo(86424, -75864, -3464);
 Engine.MoveTo(86040, -76216, -3456);
 Engine.MoveTo(85880, -76488, -3456);
 end;
 Engine.LoadZone(script.path+'VOS_Unicorn.zmap');
 engine.facecontrol(0, true);
 while not inventory.Quest.ByID(7595, item) or (item.count < 4) do delay(500);
 AttackDefense;
 Engine.MoveTo(85880, -76536, -3456);
 while not ValidNPC do delay(500);
 while inventory.Quest.ByID(7595, item) and (item.count > 0) do begin
   Target(31748);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   if user.target.dead then engine.canceltarget;
   delay(500);
 end;
 
 
end;
if engine.queststatus(242,10) and not engine.queststatus(242,11) then begin
 if not user.inrange(86488, -75912, -3464, 3000) then begin
 while not user.inrange(67989, -71937, -3728,500) do begin
  Teleport.TpVOS;
 end;
 Engine.MoveTo(69000, -72120, -3776);
 Engine.MoveTo(70152, -72760, -3776);
 Engine.MoveTo(71912, -73672, -3728);
 Engine.MoveTo(73608, -74600, -3536);
 Engine.MoveTo(74728, -74472, -3328);
 Engine.MoveTo(75704, -74408, -3184);
 Engine.MoveTo(77064, -74152, -3040);
 Engine.MoveTo(77752, -73192, -2992);
 Engine.MoveTo(77976, -72536, -2968);
 Engine.MoveTo(78728, -70968, -3488);
 Engine.MoveTo(80024, -71192, -3440);
 Engine.MoveTo(81192, -71384, -3424);
 Engine.MoveTo(82440, -71672, -3456);
 Engine.MoveTo(83400, -72296, -3472);
 Engine.MoveTo(84152, -72920, -3488);
 Engine.MoveTo(84936, -73576, -3600);
 Engine.MoveTo(86408, -73992, -3552);
 Engine.MoveTo(87416, -74232, -3520);
 Engine.MoveTo(87848, -74408, -3488);
 Engine.MoveTo(87160, -75160, -3480);
 Engine.MoveTo(86424, -75864, -3464);
 Engine.MoveTo(86040, -76216, -3456);
 Engine.MoveTo(85880, -76488, -3456);
 end;
  while not engine.queststatus(242,11) do begin
   engine.settarget(31746);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.canceltarget;
   delay(500);
   engine.settarget(31747);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
 end;
end;
if engine.queststatus(242,11) then begin
 while not user.inrange(44083, -50161, -784,500) do begin
  Teleport.TpRune;
 end;
 Engine.MoveTo(43928, -49704, -784);
 Engine.MoveTo(43848, -48968, -784);
 Engine.MoveTo(43608, -48328, -784);
 Engine.MoveTo(43368, -48184, -784);
 Engine.MoveTo(41960, -48184, -784);
 Engine.MoveTo(40344, -48264, -752);
 Engine.MoveTo(40344, -48760, -672);
 Engine.MoveTo(40200, -49592, -384);
 Engine.MoveTo(40088, -49880, -288);
 Engine.MoveTo(39672, -50472, -224);
 Engine.MoveTo(38776, -50968, 16);
 Engine.MoveTo(37992, -51208, 304);
 Engine.MoveTo(37112, -51224, 640);
 Engine.MoveTo(36872, -51224, 728);
 Engine.MoveTo(36664, -51128, 728);
 Engine.MoveTo(36680, -50728, 896);
 Engine.MoveTo(36680, -50504, 912);
 Engine.MoveTo(37176, -50136, 912);
 Engine.MoveTo(37912, -49496, 912);
 Engine.MoveTo(38184, -49016, 912);
 Engine.MoveTo(38456, -48264, 912);
 Engine.MoveTo(37656, -48232, 912);
 Engine.MoveTo(36728, -48216, 912);
 Engine.MoveTo(36328, -48104, 912);
 Engine.MoveTo(35928, -47752, 912);
 Engine.MoveTo(35928, -47064, 1072);
 Engine.MoveTo(35896, -46952, 1088);
 Engine.MoveTo(35640, -46920, 1160);
 Engine.MoveTo(35176, -46920, 1336);
 Engine.MoveTo(35000, -46920, 1408);
 Engine.MoveTo(34888, -46968, 1408);
 Engine.MoveTo(34904, -47528, 1560);
 Engine.MoveTo(34888, -47976, 1688);
 Engine.MoveTo(34872, -48168, 1728);
 Engine.MoveTo(34776, -48200, 1736);
 Engine.MoveTo(34280, -48216, 1792);
 Engine.MoveTo(33432, -48168, 1792);
 Engine.MoveTo(33048, -48184, 1792);
 while engine.queststatus(242,11) do begin
   engine.settarget(31743);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   
 end;
end;
////////////////////////////////////////////////
end;
procedure chapter3;  // Precious Soul 3
var
item: TL2item;
begin
if Inventory.Quest.ByID(7678, item) then begin
 while not user.inrange(147816, -56514, -2768,500) do begin
  Teleport.TpGoddard;
 end;
 Engine.MoveTo(147928, -56152, -2768);
 Engine.MoveTo(148488, -56200, -2768);
 Engine.MoveTo(149048, -56376, -2768);
 Engine.MoveTo(149272, -56488, -2760);
 Engine.MoveTo(149576, -56696, -2864);
 Engine.MoveTo(149896, -56952, -2960);
 Engine.MoveTo(150008, -57352, -2960);
 Engine.MoveTo(150104, -57816, -2960);
 Engine.MoveTo(150104, -57880, -2960);
 while Inventory.Quest.ByID(7678, item) do begin
   engine.settarget(31740);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
end;

 
end;
if engine.queststatus(246,1) and not engine.queststatus(246,2) then begin
 while not engine.queststatus(246,2) do begin
   engine.settarget(31741);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
end;
end;
if engine.queststatus(246,2) and not engine.queststatus(246,3) then begin
 while not user.inrange(67959, -71929, -3728,500) do begin
   Teleport.TpVOS;
 end;
 //to Piligrim
 Engine.MoveTo(68408, -72152, -3728);
 Engine.MoveTo(69032, -72472, -3776);
 Engine.MoveTo(70136, -72968, -3760);
 Engine.MoveTo(71528, -73576, -3752);
 Engine.MoveTo(72952, -74120, -3680);
 Engine.MoveTo(73736, -74408, -3504);
 Engine.MoveTo(74600, -74472, -3376);
 Engine.MoveTo(75512, -74408, -3200);
 Engine.MoveTo(76696, -74280, -3088);
 Engine.MoveTo(77464, -74264, -3024);
 Engine.MoveTo(77960, -74168, -3080);
 Engine.MoveTo(78328, -74360, -3224);
 Engine.MoveTo(78920, -75048, -3480);
 Engine.MoveTo(79384, -75736, -3672);
 Engine.MoveTo(79736, -76328, -3920);
 Engine.MoveTo(79896, -76808, -4000);
 Engine.LoadZone(script.path+'NoblessePiligrim.zmap');
 engine.facecontrol(0, true);
 while not inventory.Quest.ByID(7591, item) do begin
 if user.target = nil then Engine.DMoveTo(80488, -79192, -4032);
 delay(500); // вставить ID кольца.
 end;
 // вставить ID кольца.
 engine.facecontrol(0,false); ///////////
 //to Judge
 Engine.MoveTo(81544, -79496, -4032);
 Engine.MoveTo(82392, -79880, -3936);
 Engine.MoveTo(83192, -80040, -3728);
 Engine.MoveTo(83640, -80120, -3544);
 Engine.MoveTo(84408, -80456, -3504);
 Engine.MoveTo(85400, -80792, -3600);
 Engine.MoveTo(86280, -80760, -3696);
 Engine.MoveTo(87256, -79864, -3696);
 Engine.MoveTo(88056, -79032, -3696);
 Engine.MoveTo(89096, -78296, -3760);
 Engine.MoveTo(89656, -78088, -3776);
 Engine.LoadZone(script.path+'NoblesseJudge.zmap');
 engine.facecontrol(0, true);
 while not inventory.Quest.ByID(7592, item) do delay(500); // вставить ID кольца.
 AttackDefense; // придумать как фиксануть проверку на атаку
 
 
end;
if engine.queststatus(246,3) and not engine.queststatus(246,4) then begin
  while not user.inrange(147816, -56514, -2768,500) do begin
   Teleport.TpGoddard;
  end;
  Engine.MoveTo(148600, -56184, -2768);
  Engine.MoveTo(149224, -56424, -2768);
  Engine.MoveTo(149592, -56696, -2864);
  Engine.MoveTo(149896, -56920, -2960);
  Engine.MoveTo(149960, -57288, -2960);
  Engine.MoveTo(150088, -57656, -2960);
  Engine.MoveTo(150152, -57816, -2960);
  while not engine.queststatus(246,4) do begin
   engine.settarget(31741);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(2);
   delay(500);
end;
end;  
if engine.queststatus(246,4) and not engine.queststatus(246,5) then begin
 while not user.inrange(67959, -71929, -3728,500) do begin
   Teleport.TpVOS;
 end;
 Engine.MoveTo(69224, -72456, -3792);
 Engine.MoveTo(69976, -72776, -3776);
 Engine.MoveTo(70952, -73208, -3776);
 Engine.MoveTo(71832, -73576, -3744);
 Engine.MoveTo(73384, -74296, -3568);
 Engine.MoveTo(73976, -74504, -3472);
 Engine.MoveTo(75096, -74424, -3248);
 Engine.MoveTo(76104, -74392, -3152);
 Engine.MoveTo(76936, -74232, -3056);
 Engine.MoveTo(77688, -74216, -3040);
 Engine.MoveTo(78200, -74360, -3192);
 Engine.MoveTo(79272, -75048, -3552);
 Engine.MoveTo(80232, -77176, -4032);
 Engine.MoveTo(80408, -77736, -4032);
 Engine.MoveTo(81336, -78824, -4032);
 Engine.MoveTo(82264, -79704, -3968);
 Engine.MoveTo(83160, -79976, -3744);
 Engine.MoveTo(83688, -80056, -3536);
 Engine.MoveTo(84040, -80216, -3488);
 Engine.MoveTo(84584, -81160, -3504);
 Engine.MoveTo(84920, -82936, -3552);
 Engine.MoveTo(85320, -84664, -3552);
 Engine.MoveTo(86184, -85944, -3408);
 Engine.MoveTo(86648, -86344, -3192);
 Engine.MoveTo(87288, -86536, -2984);
 Engine.MoveTo(88168, -86424, -2840);
 Engine.MoveTo(89016, -86168, -2744);
 Engine.MoveTo(89208, -86984, -2752);
 Engine.MoveTo(88728, -87656, -2752);
 Engine.MoveTo(88488, -88456, -2760);
 Engine.MoveTo(88344, -88968, -2760);
 Engine.MoveTo(87704, -89192, -2704);
 Engine.MoveTo(87064, -89208, -2704);
 Engine.LoadZone(script.path+'NoblesseStuff.zmap');
 engine.facecontrol(0,true);
 while not inventory.Quest.ByID(7593, item) do delay(500);
 engine.facecontrol(0,false);
 AttackDefense;
end;
if engine.queststatus(246,5) and not engine.queststatus(246,6) then begin
  while not user.inrange(147816, -56514, -2768,500) do begin
   Teleport.TpGoddard;
  end;
  Engine.MoveTo(148392, -56200, -2760);
  Engine.MoveTo(148872, -56264, -2768);
  Engine.MoveTo(149256, -56424, -2760);
  Engine.MoveTo(149592, -56664, -2864);
  Engine.MoveTo(149880, -56888, -2960);
  Engine.MoveTo(149976, -57032, -2960);
  Engine.MoveTo(150040, -57432, -2960);
  Engine.MoveTo(150184, -57832, -2960);
  while not engine.queststatus(246,6) do begin
   engine.settarget(31741);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;
end;
if engine.queststatus(246,6) and not engine.queststatus(246,7) then begin
  while not user.inrange(85279, 16107, -3656,500) do begin
   Teleport.TpIvory;
  end;
  while not user.inrange(85424, 16071, -1760,500) do begin  //go 4 floor
   engine.settarget(30727);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel(3);
   delay(500);
   engine.DlgSel(4);
   delay(500);
  end;
  while not Inventory.Quest.ByID(7679, item) do begin
   engine.settarget(30721);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
   engine.DlgSel(1);
   delay(500);
  end;
            
end;  
//////////////////////////////////
end;
procedure chapter4;  // Precious Soul 4
var
item: TL2item;
begin
if Inventory.Quest.ByID(7679, item) then begin
 while not user.inrange(147816, -56514, -2768,500) do begin
  Teleport.TpGoddard;
 end;
 Engine.MoveTo(148072, -56312, -2768);
 Engine.MoveTo(148392, -56232, -2760);
 Engine.MoveTo(148728, -56280, -2768);
 Engine.MoveTo(149016, -56424, -2768);
 Engine.MoveTo(149272, -56488, -2760);
 Engine.MoveTo(149624, -56696, -2864);
 Engine.MoveTo(149848, -56936, -2960);
 Engine.MoveTo(149944, -57112, -2960);
 Engine.MoveTo(149992, -57432, -2960);
 Engine.MoveTo(150024, -57720, -2960);
 Engine.MoveTo(150072, -57848, -2960);
end;
////////////
end;

 


begin
  chapter1;
  chapter2;
  chapter3;
  chapter4;
end.

 
// разная хуйня
// пофиксить отбивку через интерфейс.
Engine.LoadZone(script.path+'VOS_Unicorn.zmap');


if engine.queststatus(246,1) and not engine.queststatus(246,2) then begin
 while not user.inrange(84429, 147265, -3392,500) do begin
   Teleport.TpGiran;
 end;

end;

while not engine.queststatus(242,11) do begin
   engine.settarget(31743);
   engine.movetotarget(-100);
   engine.dlgOpen;
   delay(500);
   engine.DlgSel('Quest');
   delay(500);
   engine.DlgSel(1);
   delay(500);
end;

 

 

 

Edited by amita
Posted
On 4/3/2020 at 4:28 PM, l3g0las said:

hi, 

does anyone has a nobless quest script?

I have nobless quest script but it doesn't kill the raidboss for you.

 

Quote

hi, any script for TTs + this captcha

https://imgur.com/a/lSufgOl

I have TTs script with sound when a dialog appears so you have to be there to enter captcha.

 

Amita what is the name of the quest and where do I start it? I'll check the script.

  • 2 weeks later...
Posted (edited)

 

On 4/9/2020 at 7:22 AM, darknesscrysis said:

I have nobless quest script but it doesn't kill the raidboss for you.

 

I have TTs script with sound when a dialog appears so you have to be there to enter captcha.

 

Amita what is the name of the quest and where do I start it? I'll check the script.

Hi! Do u have still the captcha script? Becuase i need it. In this server a captcha appears when u are leveling. So it would be easier for me to check my pc when adrenaline replays a sound than checking my pc every minute for this annoying captcha.

 

 

Edited by elrey2
Posted

Here is the captcha script. You have to stop it and run it again for the sound to stop. You have to have a sound named 'beep.wav' in a folder 'sounds' in the adrenaline folder.

 

uses sysutils,classes;
var
alarm:boolean= false;

procedure OnPacket(ID, ID2: Cardinal; Data: Pointer; Size: Word);
begin
  if  (ID = 160)  and  (not alarm)  then alarm := true; 
end;

procedure doAlarm;
begin
  while true do
  begin
    if alarm then begin
      playsound(exepath+'\sounds\beep.wav');
      delay(2222);
    end;
    Delay(1111)
  end;
end;

begin
  script.newthread(@doAlarm);
  delay(-1);
end.

 

Posted
13 hours ago, darknesscrysis said:

Here is the captcha script. You have to stop it and run it again for the sound to stop. You have to have a sound named 'beep.wav' in a folder 'sounds' in the adrenaline folder.

 


uses sysutils,classes;
var
alarm:boolean= false;

procedure OnPacket(ID, ID2: Cardinal; Data: Pointer; Size: Word);
begin
  if  (ID = 160)  and  (not alarm)  then alarm := true; 
end;

procedure doAlarm;
begin
  while true do
  begin
    if alarm then begin
      playsound(exepath+'\sounds\beep.wav');
      delay(2222);
    end;
    Delay(1111)
  end;
end;

begin
  script.newthread(@doAlarm);
  delay(-1);
end.

 

Thank you dark for the answer. Unfortunately the script doesnt work for me. The captcha is like a trade/party window. See in the image below. Anyone have a captcha script for this? I need only a sound when the captcha appears

Captcha2.png

Posted

The above script works for tutorial windows. For trade chats you would only need to change the packet ID, so search for that. You don't need to ask for a whole other script when you already have one that you just need to modify for it to work.

  • Upvote 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • A question: I’ve had two servers that were downgraded from C6 to C4, and both would lag for players when they changed subclass, and almost every time the L2 server would crash. They say it’s a problem with the C5 skills that were added. Has anyone experienced this issue? The server would run fine without errors until people started changing classes. Has anyone gone through this and knows the solution to the problem?
    • L2jBayev Chronicle 3: Rise of Darkness – AiEngine Edition In short: this is a C3 build with a full-fledged AI engine, live mercenaries, a built-in quiz, a “personal account” in the Community Board, and server logic neatly distributed across thread pools. The project is about a living world without lags : bots farm, communicate, gather parties, teleport along routes, and the server remains cold and stable.   What's inside (the most delicious) 1) Full-fledged AI engine for characters Behavior types: farming ( FarmAI ), combat ( CombatAI ), party logic ( PartyAI ), trading/walking ( TraderAI / WalkerAI ), support roles (healer, etc.). Class profiles: for mages/archers/daggers, etc., “smart” skill rotations, distance control, sleep/save skills, healing, loot pickup, etc. are implemented (see examples of classes like SpellSingerAI , NecromancerAI , etc.). Self-healing and teleports: when dying, the bot goes through a sequence of steps without sleep()- via AITaskSequence + AITeleportToLocTask , searches for the nearest gatekeeper and teleports via TeleportationManager with routes depending on the level. Auto-support: auto-nipples, arrows/bones, smart auto-proceduring of buffs and auto-banks CP/HP/MP with thresholds - all sewn into the auxiliary EtcPlayersAi . Chat context: ChatManagerAi processes mentions, makes responses with delays (anti-flood), supports party chat and “human” reaction. Understanding: ChatManagerAi system  processes the dialogue, bots remember your aggression and insults, they start to respond less often to modern users, stop accepting or inviting to a group (party) and when it goes beyond the peak they will simply merge you, and every time they see you on the PC, there is an opportunity to measure more often, communicate respectfully and beautifully, in general, a “human” reaction. Why a player/admin needs this: bots actually “live”, farm and interact, and don’t just stand on macros. This is a great background for online and PvE action.   2) Mercenaries (Mercenary system) Full-fledged companion character : L2MercenaryInstance with its own MercenaryAI (movement, attack, support, consumables, shots). Behavior modes: DEFENDER / SUPPORT / PASSIVE - switchable to suit your playing style. Progress and trust: the mercenary's trust/exp/level grows , skills are learned according to the MercenarySkillTree (conditions are based on the trust or level of the owner). Templates and equipment: via MercenaryTemplateTable and spawner - model/weapon/type are selected. Social: MercenarySpeechManager - a set of speeches; the mercenary "comes to life" in the chat. Premium Link: Premium account owners give the mercenary additional trust (faster progress). Why: This is not a dummy pet, but a playful companion with modes, training and “character”.   3) Quiz (event viktorina ) Rounds according to schedule: pre-launch with announcements (minutes/seconds before start), registration .reg, auto-opening of the window. Multiple choice questions: question + set of answer buttons; fair processing, timings, question change. Tops and history: results table, statistics, neat UI via HTML assembly. Flexible control: you can start immediately or set a delayed start (notification package 5/2/1 min, etc.). Why: regular activity for players, “social entertainment” module right in the build.   4) Personal account in Community Board KB managers: buff cabinet, teleports, clans/forums/mail/friends, tops (PK/PvP/wealth/players), character repair, viewing skill trees , etc. Premium logic: some services/mail are limited by premium; premium also affects the visual (nickname color) and bonuses (see effect on mercenary). Single sign-on: all in one place, no team chaos. Why: conveniently manage your character and services without going into the console or installing third-party mods.   Why is the system technically valuable? Minimum load and stability Separated thread pools: AI logic, hunting, teleports, chat - on separate onesScheduledExecutorService ( AI_THREAD_POOL , MONSTER_HUNT_POOL , TELEPORT_POOL , CHAT_POOL ). No "freezing": task sequencers (teleport/recovery) work through the scheduler, not Thread.sleep(). Bot limitation: protection against overload via thresholds/counters - “extra” bots do not start. One bot - one sequence: AITaskManager ensures that the character does not have parallel conflicting tasks. Smoothing out peaks: starting tasks with offsets so that there are no simultaneous “ticks” of hundreds of bots. Monitoring/logs: own loggers (separate files for info/errors/processes/chats), CPU load monitoring. Bottom line: the build is designed for “thick online” and mass activities without TPS failures .   Additional Features Auto-alliances for farming: party logic invites suitable players (checking level/equipment/clan flags), there are “human” responses to requests. Sub/class management: out of the box helpers for changing class/subclass, auto-learning of necessary skills and selection of equipment by level. Security/protection: secondary PIN/picture password support (used in KB/voiced commands; optional). Premium accounts: privileges in KB/mail/visual and synergy with mercenary progress. Ready-made services: tops, auctions/mail, teleports from KB, buff rooms, repairs, viewing skill trees, etc.   Who is this build for? Freeshare/project admins who want a living world “from the pack”: bots and mercenaries provide a constant background of activity. Players who value convenience: personal account, premium services, events and a mercenary companion. Developers who want a clean, predictable backend with thread pools and a neat task model without “magic”.   How it differs from standard assemblies Not macros - AI profiles with “brains”: rotations, positioning, healing, decision making. Not a decoration pet - a mercenary with his own modes, progress, skill tree and lines. Not a faceless gamemod - an event quiz with UI, schedule, tops. No chaos in flows - strict pools, planning and task managers designed for online and growth. No separate scripts - a single personal account in KB for most activities.   TL;DR (one paragraph for the project card) AiEngine C3 is a build with live AI, smart bots, mercenaries (modes/progress/skills), built-in quiz, premium logic and a convenient personal account in KB. Under the hood are distributed thread pools and task managers without sleep(), so even with a dense online the server remains stable and responsive.   Additionally add - there is still a lot of interesting things command .assassin or shift+target (order murder), shift+target for admins on AI characters for control, admin panel is completely rewritten, many additional functions, mercenaries change their appearance depending on trust, deepseek and chatGPT system is connected for communication of characters like real players, GPT - for newer java, there is still a very large list of fixes after the last versions, a lot has been fixed, including height coordinates (Z) geo-Squares, pathfinding, visibility through obstacles, fix pet summons, trade packages, shop packages, many effects, quests (including the original ones like nipples, etc.), Ai behavior of NPC and RB monsters, absolutely all epics have been transferred to AiLoader no longer in python scripts. Attention! The server is suitable for both classic mode and PvP format, as well as with various mods. Absolutely everything is configured in the configurations to suit your taste and purposes of use. It is recommended to launch the server through L2ServerControl (simplifies management and control of processes). Download Servers: Chronicle 3 Server Chronicle 4 Test Upgraded Server Full Desc & screens: Post & Screens c3 Post & Desc c4    
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock