after getting some of the Scripts from this Post and making mine based on what we have here, I'm here to post my contribution.
var Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Obj: TL2Buff;
IdBuff: integer;
Buffs:TL2Buff;
var L2Skill: TL2Skill;
procedure toVillage;
begin
while true do begin
if (User.HP < 1) then
Engine.GoHome;
if (User.HP=0) then
Engine.GoHome;
Delay(1000);
Engine.GoHome;
toVillage;
Delay(5000);
CheckQuest;
end;
end;
procedure RunToKT3;
begin
if not User.InRange (143384, -77384, -4720, 2000) then //Ketra3
begin
engine.sendtoserver('21 47 00 6F 00 54 00 6F 00 5F 00 4B 00 65 00 74 00 72 00 61 00 4F 00 72 00 63 00 4F 00 75 00 74 00 70 00 6F 00 73 00 74 00 33 00 00 00');
end else
delay(15000);
Engine.LoadConfig('SPS K3'); // switch to your character seting
Delay(1000);
Fight;
delay(2500);
Engine.Facecontrol(0,True);
Print('RunToKT3_Ok'); //test if
CheckQuest;
end;
procedure RunToFW3;
begin
if User.InRange (83992, 214232, -3600, 900) then begin
Engine.MoveTo(82936, 214968, -3672);
Engine.MoveTo(81592, 216024, -3760);
Engine.Facecontrol(0,True);
//Print('RunToFW3_Ok') //test if
Engine.LoadConfig('SPS FW3'); // switch to your character seting
Fight;
delay(2500);
CheckQuest;
end else begin
Engine.Facecontrol(0,False);
engine.sendtoserver('21 47 00 6F 00 54 00 6F 00 5F 00 46 00 69 00 65 00 6C 00 64 00 6F 00 66 00 57 00 68 00 69 00 73 00 70 00 65 00 72 00 73 00 33 00 00 00');
end; end;
procedure Fight;
begin
Delay(1500);
Print('Fight_Ok');
Engine.Facecontrol(0,True);
CheckQuest;
end;
procedure GiranBlue; //Start Quest
begin
Print('GiranBlue_O');
if (engine.queststatus(761,1)= False) then begin
Print('SemQuest_Ok');
Engine.MoveTo(82440, 14848, -3464);
Delay(1000);
Engine.MoveTo(82446, 147522, -3464);
Delay(1000);
if User.InRange (82472, 147544, -3464, 90)then begin
Delay(500);
Print('Nicholas_Ok'); //test if
Engine.SetTarget(31597); // Nicholas[id: 31597]
Delay(1000);
Engine.DlgOpen;
Delay(1000);
Engine.BypassToServer ('npc_268436779_Quest'); //npc npc_268436787_Quest
Delay(1000);
Engine.BypassToServer ('npc_268436779_Quest Q761_ObtainBlessedBlueCrystal'); //Quest Blue nichols npc_268436787_Quest Q761_ObtainBlessedBlueCrystal
Delay(1000);
Engine.BypassToServer ('Quest Q761_ObtainBlessedBlueCrystal getquest.htm'); //Quest Blue Quest Q761_ObtainBlessedBlueCrystal getquest.htm
Delay(1500);
end;
end;
begin
if (Inventory.Quest.ByID(9528, Item) = True) and (Item.Count = 1 ) then begin
Print('Letter_Ok'); //test if
Engine.MoveTo(81800, 148056, -3464);
Delay(500);
Engine.MoveTo(81192, 148488, -3464);
Delay(1000);
Engine.MoveTo(80840, 148648, -3464);
Delay(500);
Engine.MoveTo(80200, 148648, -3528);
Delay(500);
Engine.MoveTo(79176, 148632, -3560);
Delay(500);
Engine.MoveTo(78200, 148664, -3592);
Delay(500);
Engine.MoveTo(77976, 148616, -3592);
Delay(500);
Engine.MoveTo(77544, 148536, -3592);
Delay(500);
Engine.MoveTo(77512, 148424, -3592);
Delay(500);
Engine.MoveTo(77608, 148216, -3592);
Delay(500);
Engine.SetTarget(30512); // Kusto[id: 30512]
Delay(500);
Print('Kusto_Ok');
Engine.DlgOpen;
Engine.BypassToServer ('npc_268466115_Quest'); //Quest Blue Missao
Delay(1000);
Engine.BypassToServer ('npc_268466115_Quest Q761_ObtainBlessedBlueCrystal'); //Quest Blue
Delay(1000);
Engine.BypassToServer ('Quest Q761_ObtainBlessedBlueCrystal 31002-03.htm'); //Quest Blue
Delay(1000);
if (engine.queststatus(761,2)= True) then begin
RunToKt3;
end;
end else begin
engine.sendtoserver('21 47 00 6F 00 54 00 6F 00 5F 00 54 00 6F 00 77 00 6E 00 6F 00 66 00 47 00 69 00 72 00 61 00 6E 00 00 00');
Delay(12000);
GiranBlue;
end;
end; end;
procedure EntregaC;
var
QuestItem: TL2Item;
Item: TL2Item;
begin
//Print('EntregaC_O'); //test if
if (Inventory.Quest.ByID(9267, Item) = True) and (Item.Count = 20 ) then begin
Print('Entregar Crystal'); // print quest stage
Engine.Facecontrol(0,false);
delay(1500);
engine.sendtoserver('21 47 00 6F 00 54 00 6F 00 5F 00 54 00 6F 00 77 00 6E 00 6F 00 66 00 47 00 69 00 72 00 61 00 6E 00 00 00'); //Giran
Delay(15000);
Engine.MoveTo(81192, 148488, -3464);
delay(1500);
Engine.MoveTo(80840, 148648, -3464);
delay(1500);
Engine.MoveTo(80200, 148648, -3528);
delay(1500);
Engine.MoveTo(79176, 148632, -3560);
Engine.MoveTo(78200, 148664, -3592);
delay(1500);
Engine.MoveTo(77976, 148616, -3592);
Engine.MoveTo(77544, 148536, -3592);
Engine.MoveTo(77512, 148424, -3592);
delay(1500);
Engine.MoveTo(77608, 148216, -3592);
Engine.SetTarget(30512); // Kusto[id: 30512]
Delay(1000);
Engine.DlgOpen;
Delay(1000);
Engine.BypassToServer ('npc_268466115_Quest'); //Quest Blue
Delay(1000);
Engine.BypassToServer ('npc_268466115_Quest Q761_ObtainBlessedBlueCrystal'); //Quest Blue
Print('blueCrystal_Ok');
Delay(4000);
engine.sendtoserver('21 47 00 6F 00 54 00 6F 00 5F 00 54 00 6F 00 77 00 6E 00 6F 00 66 00 47 00 69 00 72 00 61 00 6E 00 00 00'); //giran
Delay(20000);
end;
end;
procedure AntBan;
begin
delay(2500);
while true do begin
delay(2500);
//Print('AntBan_0'); //test if
if User.InRange (80392, 217000, -3656, 2000) then begin
Engine.Facecontrol(0,True);
engine.sendtoserver('21 6E 00 65 00 78 00 74 00 74 00 61 00 72 00 67 00 65 00 74 00 5F 00 53 00 68 00 6F 00 72 00 74 00 00 00');
delay(500);
engine.sendtoserver('21 41 00 75 00 74 00 6F 00 48 00 75 00 6E 00 74 00 69 00 6E 00 67 00 5F 00 4F 00 4E 00 00 00');
//Print('AntBan_FW'); //test if
delay(500);
end;
if User.InRange (143384, -77384, -4720, 2000) then //Ketra3
begin
Engine.Facecontrol(0,True);
engine.sendtoserver('21 6E 00 65 00 78 00 74 00 74 00 61 00 72 00 67 00 65 00 74 00 5F 00 53 00 68 00 6F 00 72 00 74 00 00 00');
delay(500);
engine.sendtoserver('21 41 00 75 00 74 00 6F 00 48 00 75 00 6E 00 74 00 69 00 6E 00 67 00 5F 00 4F 00 4E 00 00 00');
//Print('AntBan_KT'); //test if
end;
end;
end;
procedure CheckQuest;
var
QuestItem: TL2Item;
Item: TL2Item;
begin
while true do begin
//Print('CheckQuest_Blue_not_W'); //test if
Delay(15000);
if not user.inrange(77656, 148104, -3592, 4000,300) then begin //Giran
if not engine.queststatus(761,1) and not engine.queststatus(761,2) then begin
if (engine.queststatus(761,3)= False) then begin
Print('CheckQuest_Blue_not_0');
Engine.FaceControl(0, False);
GiranBlue;
Delay(2000)
end;
end;
end;
if (engine.queststatus(761,3)= False) then begin
if not engine.queststatus(761,1) and not engine.queststatus(761,2) then begin
if user.inrange(82504, 148136, -3464, 4000,300) then begin
GiranBlue;
//Engine.MoveTo(82504, 148136, -3464);
end;
end;
end;
//if not engine.queststatus(761,1) and not engine.queststatus(761,2) then begin
if (Inventory.Quest.ByID(9268, Item) = False) and (Item.Count = 20 ) then begin
Print('CheckQuest_Blue_not_1');
if (Inventory.Quest.ByID(9267, Item) = False) and (Item.Count = 20 ) then begin
//while not user.inrange(77656, 148104, -3592, 4000,300) do begin //Giran
Print('CheckQuest_Blue_not');
GiranBlue;
end;
end;
//Print('CheckQuest_RunToKT3_0'); //test while
if (engine.queststatus(761,2)= True) then begin
if (Inventory.Quest.ByID(9268, Item) = False) and (Item.Count < 20 ) then begin
//if (Inventory.Quest.ByID(9268, Item) = True) and (Item.Count = 20 ) then begin
while not user.inrange(143384, -77384, -4720, 3000,300) do begin
Print('CheckQuest_RunToKT3_1');
RunToKT3;
end;
end;
end;
if (engine.queststatus(761,2)= True) then begin
if (Inventory.Quest.ByID(9268, Item) = True) and (Item.Count < 20 ) then begin
//if (Inventory.Quest.ByID(9268, Item) = True) and (Item.Count = 20 ) then begin
while not user.inrange(143384, -77384, -4720, 3000) do begin
Print('CheckQuest_RunToKT3_2');
RunToKT3;
end;
end;
end;
//Print('CheckQuest_RunToFW3_0');
if (engine.queststatus(761,2)= True) then begin
if (Inventory.Quest.ByID(9268, Item) = True) and (Item.Count = 20 ) then begin
if (Inventory.Quest.ByID(9267, Item) = True) and (Item.Count < 20 ) then begin
if not User.InRange (81176, 216520, -3736, 3000,300)then begin
while not user.inrange(83912, 214120, -3624, 4000,300) do begin //fw3_resp
delay(15000);
RunToFW3;
Print('CheckQuest_RunToFW3_1');
end;
end;
end;
end;
end;
//Print('CheckQuest_RunToFW3_1_0');
if (Inventory.Quest.ByID(9268, Item) = True) and (Item.Count = 20 ) then begin
if not (Inventory.Quest.ByID(9267, Item) = True) and (Item.Count < 20 ) then begin
//Print('CheckQuest_RunToFW3_1_1'); //test if
if not User.InRange (81176, 216520, -3736, 3000,300)then begin
//Print('CheckQuest_RunToFW3_1_2'); //test if
RunToFW3;
while not user.inrange(83912, 214120, -3624, 4000,300) do begin //fw3_resp
//Print('CheckQuest_RunToFW3_1_3');
delay(10000);
RunToFW3;
end;
end;
end;
end else CheckQuest;
end;
end;
begin //repeats the script again
Script.NewThread (@antBan);
Script.NewThread (@toVillage);
Script.NewThread (@CheckQuest);
repeat
EntregaC;
until Engine.Status = lsOffline;
Delay(1000);
end.