Перейти к содержанию
Форум шарда Middle-Earth
Авторизация  
nepret

[Stealth] Lumber в миноке

Рекомендуемые сообщения

скрипт жрёт из банка (жареное мясо), в банк кидает логи
на 158 строчке можно поменять тип еды
топор нубайный
при достижении максимального веса, бежит на разгрузку

 

Program Lumber_in_Minoc;
const
xMin = 2391;
xMax = 2534;
yMin = 378;
yMax = 655;
//
axe = $0F43; //Type топора

type
    TreeRecord = Record
    t,x,y,z : Word;
end;
var
Tree : array of TreeRecord;
ct, t : Integer;
ftime : TDateTime;
txtR, txtF : String;

procedure GetPoint;
var
tt, i : Integer;
a : Word;
b : TFoundTilesArray;
TreeTile : array[0..39] of Word;
begin
    if not Connected then exit;
    TreeTile[0]:=3274;
    TreeTile[1]:=3275;
    TreeTile[2]:=3277;
    TreeTile[3]:=3280;
    TreeTile[4]:=3283;
    TreeTile[5]:=3286;
    TreeTile[6]:=3288;
    TreeTile[7]:=3290;
    TreeTile[8]:=3293;
    TreeTile[9]:=3296;
    TreeTile[10]:=3299;
    TreeTile[11]:=3302;
    TreeTile[12]:=3320;
    TreeTile[13]:=3323;
    TreeTile[14]:=3326;
    TreeTile[15]:=3329;
    TreeTile[16]:=3393;
    TreeTile[17]:=3394;
    TreeTile[18]:=3395;
    TreeTile[19]:=3396;
    TreeTile[20]:=3415;
    TreeTile[21]:=3416;
    TreeTile[22]:=3417;
    TreeTile[23]:=3418;
    TreeTile[24]:=3419;
    TreeTile[25]:=3438;
    TreeTile[26]:=3439;
    TreeTile[27]:=3440;
    TreeTile[28]:=3441;
    TreeTile[29]:=3442;
    TreeTile[30]:=3460;
    TreeTile[31]:=3461;
    TreeTile[32]:=3462;
    TreeTile[33]:=3476;
    TreeTile[34]:=3478;
    TreeTile[35]:=3480;
    TreeTile[36]:=3482;
    TreeTile[37]:=3484;
    TreeTile[38]:=3492;
    TreeTile[39]:=3496; 
    for tt := 0 to 39 do
    begin
        a := GetStaticTilesArray(xMin,yMin,xMax,yMax, WorldNum,TreeTile[tt], b);
        if a > 0 then
        begin 
            for i := 0 to a - 1 do
            begin 
                SetLength(Tree, Length(Tree)+1);
                Tree[High(Tree)].x := b[i].x;
                Tree[High(Tree)].y := b[i].y;
                Tree[High(Tree)].z := b[i].z;
                Tree[High(Tree)].t := b[i].tile;
            end;   
        end;
    end;
end;

function CheckAxe : Boolean;
begin
    if not Connected then exit;
    result := True;
    if (GetType(ObjAtLayer(LhandLayer)) = Axe) then exit;
    FindTypeEx(Axe, $FFFF, Backpack, False);
    if FindCount > 0 then
    begin
        CheckLag(60000);
        Equip(RhandLayer,FindItem);
        wait(500); 
        exit;  
    end;
    result := False;
    AddToSystemJournal('>>>>>ERROR: нет топора!');
end;

function CheckWeight : Boolean;
begin
    if not Connected then exit;
    if Weight < MaxWeight then Result := True; 
    if Weight >= MaxWeight then Result := False;
end;

procedure DropResource;
var
t : integer;
bank : Cardinal;
ctime : TDateTime;
begin
    if not Connected then exit;
    if not CheckWeight then 
    begin                                          
        while (GetX(Self) <> 2498) or (GetY(Self) <> 560) do
            newMoveXY(2498, 560, True, 0, CheckWeight); 
        repeat
            if not Connected then exit;
            CheckLag(60000);
            repeat
                if not Connected then exit;
                t := 0;
                CheckLag(60000);
                UseObject(Backpack);
                repeat
                    if not Connected then exit;
                    wait(100);
                    t := t + 1;
                until (LastContainer = Backpack) or (t >= 100);
            until LastContainer = Backpack;
            CheckLag(60000);
            repeat
                if not Connected then exit;
                t := 0;
                CheckLag(60000);
                UOSay('bank');
                repeat    
                    if not Connected then exit;
                    wait(100);
                    t := t + 1;
                until (LastContainer = ObjAtLayer(BankLayer)) or (t >= 100);
            until LastContainer = ObjAtLayer(BankLayer);
        until LastContainer = ObjAtLayer(BankLayer); 
        if not Connected then exit;
        bank := ObjAtLayer(BankLayer); 
        FindTypeEx($1BDD, $FFFF, Backpack, False);
        if FindCount > 0 then 
        begin                                           
            CheckLag(60000);
            MoveItem(FindItem, FindQuantity, bank, 0,0,0);
            wait(500);                
        end;
        repeat
            if not Connected then exit;
            FindTypeEx($09F2,$FFFF, bank, False);//$09F2 тип еды
            if FindCount > 0 then
            begin  
                ctime := Now; 
                CheckLag(60000);
                UseObject(FindItem);
                wait(500);    
            end;
        until (FindCount <= 0) or (InJournalBetweenTimes('Я объелся', ctime, Now) <> -1);    
    end;  
end;

procedure CheckAttak;
begin
    if not Connected then exit;
    if not WarMode then SetWarMode(True); 
    if HP < MaxHP then 
    begin
        UOSay('.guards');
        if TargetPresent then CancelTarget;
        UOSay('.bandage');
        CheckLag(60000);
        WaitForTarget(5000);
        WaitTargetSelf;
    end;
end;
                 
begin
    SetARStatus(True);
    moveThroughNPC := 0;
    MoveOpenDoor := True;
    GetPoint;
    txtR := 'You have found some deadwood|Forest guardians are angry on you|not enough wood here to chop|Circle of Transparency|That is too far away';
    txtF := 'not enough wood here to chop|Circle of Transparency|That is too far away';
    repeat 
        while not Connected do
        begin
            wait(1000);
        end;
        for ct := 0 to High(Tree) do
        begin
            if not Connected then break;
            if not CheckAxe then exit;
            DropResource;    
            if newMoveXY(Tree[ct].x, Tree[ct].y, True, 2, CheckWeight) then
            begin
                repeat 
                    if not Connected then break;
                    repeat
                        if not Connected then break;
                        if TargetPresent then CancelTarget; 
                        CheckLag(60000);
                        UseObject(ObjAtLayer(LhandLayer));
                        WaitForTarget(5000);
                    until TargetPresent;
                    ftime := Now;
                    TargetToTile(Tree[ct].t, Tree[ct].x, Tree[ct].y, Tree[ct].z); 
                    CheckAttak;
                    t := 0;
                    repeat 
                        if not Connected then break;  
                        t := t + 1;
                        CheckLag(60000);
                        wait(100);
                    until (InJournalBetweenTimes(txtR, ftime, Now) <> -1) or (t >= 600);
                until (InJournalBetweenTimes(txtF, ftime, Now) <> -1);    
            end;
        end;    
    until false;      
end.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

×
×
  • Создать...