first your script without red line
var
QuestItem: TL2Item;
Item: TL2Item;
begin
Engine.MoveTo(147960,-55272,-2728);
Delay(500);
Engine.SetTarget(31275);
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('[Noblesse Exclusive] Teleport');
Delay(500);
Engine.DlgSel(2);
Delay(500);
Engine.DlgSel('Four Sepulchers - 1000 9');
Delay(500);
Engine.CancelTarget;
Engine.MoveTo(178296,-85560,-7216);
Delay(500);
Engine.SetTarget(31453);
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('Quest');
Delay(500);
Engine.DlgSel('65402');
Delay(500);
Engine.DlgSel('I will do it.');
Delay(500);
Engine.CancelTarget;
if not (Inventory.User.ByID(8073, Item) = true) and (Item.Count < 5) then begin
Engine.UseItem(736);
Delay(10000);
Engine.MoveTo(147960,-55272,-2728);
Delay(500);
Engine.SetTarget(31275);
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('Teleport');
Delay(500);
Engine.DlgSel('Wall of Argos - 2200 9');
Delay(500);
Engine.CancelTarget;
if not (Inventory.Quest.ByID(8072, QuestItem) = true) then begin
Engine.FaceControl(0,true);
end;
Engine.FaceControl(0,false);
Engine.UseItem(736);
Delay(10000);
Engine.MoveTo(147960,-55272,-2728);
Delay(500);
Engine.SetTarget(31275);
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('[Noblesse Exclusive] Teleport');
Delay(500);
Engine.DlgSel(2);
Delay(500);
Engine.DlgSel('Four Sepulchers - 1000 9');
Delay(500);
Engine.CancelTarget;
Engine.MoveTo(178296,-85560,-7216);
Delay(500);
Engine.SetTarget(31453);
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('Quest');
Delay(500);
Engine.DlgSel('65402');
Delay(500);
Engine.DlgSel('Here it is.');
Delay(500);
Engine.DlgOpen;
Delay(500);
Engine.DlgSel('Quest');
Delay(500);
Engine.DlgSel('65402');
Delay(500);
Engine.DlgSel('I will do it.');
Delay(500);
Engine.CancelTarget;
end;
end.
second i dont know how explain xd better i think write in to procedures steps, to avoid problems when someone pk you, like example from my script (maybe not best way but works xd)
procedure tosepulchers;
begin
engine.settarget('Tatiana');
delay(500);
engine.dlgopen;
delay(500);
engine.dlgsel('Nobless only');
delay(500);
engine.dlgsel(2);
delay(500);
engine.dlgsel('Four Sepulchers');
end;
procedure towncheck;
begin
if user.inrange(146272, -58176, -2976, 250, 150) then begin
Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(145264, -57680, -2976, 250, 150) then begin
Engine.MoveTo(145588, -56926, -3007);
Engine.MoveTo(146673, -56095, -2807);
Engine.MoveTo(147543, -56054, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
end;
procedure quest;
begin
if(User.Dead) then begin
Print('Dead. Pressing to village.');
Engine.FaceControl(0, false);
Engine.GoHome;
delay(5000);
end;
if user.inrange(147936, -55368, -2760, 250) and (Engine.QuestStatus(654, 3)) then begin
tosepulchers;
end;
end;
begin
while (engine.status = lsOnline) do begin
delay(300);
quest();
townCheck();
end;
end.
this is not all script but like example how i write, this near gatekeeper check quest status and go where needed, i think you understand what i mean xdd