Guys, i do a frankstein script, its not perfect, but "works".
Works 95%, in the end my script dont repeat both functions, it repeat only "tobuff" or "aceitaress". If i to delete "tobuff", the summon accept ress but my char dont comeback to village to rebuff. if i to delete "aceitaress" the summon dont accept resurection when died. (its only way i fond to res and him accept). Anys sugestions? obs: sorry about english, i'm working that :< Ty
uses sysutils,classes;
var Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2Npc;
Obj: TL2Buff;
IdBuff: integer;
Buffs:TL2Buff;
var L2Skill: TL2Skill;
var p1,p2:pointer;
action:tl2action;
function boolToStr(var b:boolean):string;
begin
result:= string(b);
end;
procedure toVillage;
begin
Print('To Village');
Delay(100);
if (User.HP=0) then
begin
Delay(2000);
Engine.GoHome;
Engine.Facecontrol(0,False);
Buff;
end;
end;
procedure buff;
begin
if User.inrange(80054, 53209, -1552, 250, 150) then begin //1 res
Engine.MoveTo(80683, 53879, -1586);
Engine.MoveTo(81174, 53500, -1586);
Engine.MoveTo(82419, 53264, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(80267, 55497, -1552, 250, 150) then begin //2 res
Engine.MoveTo(80548, 53988, -1586);
Engine.MoveTo(81178, 53496, -1586);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(82638, 53885, -1488, 250, 150) then begin //3 res
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(80334, 5440, -1552, 250, 150) then begin //4 res
Engine.MoveTo(81086, 53506, -1586);
Engine.MoveTo(82210, 53429, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(79933, 55752, -1552, 250, 150) then begin //5 res
Engine.MoveTo(80475, 54936, -1586);
Engine.MoveTo(80485, 53895, -1586);
Engine.MoveTo(81174, 53504, -1586);
Engine.MoveTo(82051, 53442, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(82123, 53535, -1488, 250, 150) then begin //6 res
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(80304, 56241, -1552, 250, 150) then begin //7 res
Engine.MoveTo(80494, 54146, -1586);
Engine.MoveTo(81164, 53481, -1586);
Engine.MoveTo(82071, 53473, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(79706, 52986, -1552, 250, 150) then begin //8 res
Engine.MoveTo(80650, 53861, -1586);
Engine.MoveTo(81172, 53468, -1586);
Engine.MoveTo(81876, 53475, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(82880, 55390, -1520, 250, 150) then begin //9 res
Engine.MoveTo(82854, 55509, -1551);
Engine.MoveTo(82304, 55442, -1551);
Engine.MoveTo(82362, 53964, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(82552, 53447, -1488, 250, 150) then begin //10 res
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(80594, 55837, -1552, 250, 150) then begin //11 res
Engine.MoveTo(80401, 54735, -1586);
Engine.MoveTo(80614, 53921, -1586);
Engine.MoveTo(81151, 53475, -1586);
Engine.MoveTo(82065, 53454, -1522);
Engine.MoveTo(82484, 53280, -1488);
end;
if User.inrange(82484, 53280, -1488, 250, 150) then begin
Print('Go Buffer');
Delay(2000);
Engine.Settarget(35716);
Delay(2000);
Engine.Settarget(35716);
Delay(3000);
Engine.DlgOpen;
Delay(2500);
Engine.DlgSel(2); //buff list
Delay(800);
Engine.DlgSel(10); //buff summon
Delay(500);
Engine.DlgSel(6); //hp
Delay(500);
end;
RunTo;
end;
procedure RunTo;
begin
Print('Go Teleporte');
Engine.SetTarget(30177); //Target do NCP GK
Delay(1500);
Engine.DlgOpen; // abre chat combat npc
Delay(1500);
Engine.DlgSel(1);
Delay(1500);
Engine.DlgSel(9);
Delay(1500);
Fight;
end;
procedure toBuff;
begin
IdBuff:=1268 ; //Check BUFF
while not User.Buffs.ById(IdBuff,obj) do begin
Print('Check Buff');
Engine.UseItem(736); //Scroll Escape
Delay(30000);
buff;
end;
end;
procedure Fight;
begin
Print('Fight zone');
Delay(1000);
Engine.Facecontrol(0,False);
Engine.MoveTo(85391, 16228, -3672);
Engine.MoveTo(85357, 17267, -3571);
Engine.MoveTo(85348, 20027, -3813);
Engine.MoveTo(85348, 20027, -3813);
Engine.MoveTo(85348, 20027, -3813);
Engine.MoveTo(85348, 20027, -3813);
Delay(500);
Engine.MoveTo(85340, 21881, -3571);
Delay(500);
Engine.MoveTo(85350, 23218, -3544);
Delay(500);
Engine.MoveTo(85427, 24058, -3662);
Delay(500);
Engine.MoveTo(86253, 24565, -3621);
Delay(500);
Engine.MoveTo(87632, 24033, -3530);
Delay(500);
Engine.MoveTo(90071, 23495, -3629);
Delay(500);
Engine.MoveTo(92184, 21149, -3645);
Delay(500);
Engine.MoveTo(93909, 18609, -3654);
Delay(500);
Engine.MoveTo(94998, 16834, -3654);
Delay(500);
Engine.MoveTo(94716, 15174, -3616);
Delay(500);
Engine.LoadConfig('1'); //
Engine.LoadZone('Farm ewc2.zmap'); //zona de combat
Print('funfou');
Engine.Facecontrol(0,True);
end;
procedure aceitaRess;
begin
action := engine.waitaction([laConfirmDlg], p1,p2);
if action = laConfirmDlg then begin
print(engine.confirmdlg.msgid);
if (engine.confirmdlg.msgid = 1510) and (engine.confirmdlg.valid) then begin
engine.confirmdialog(true);
end;
end;
end;
begin //repete novamente o script
Print('repete novamente');
repeat
toBuff;
AceitaRess;
until Engine.Status = lsOffline;
Delay(5000);
end.