Jump to content

Lineage 2


Fishing


  • You cannot reply to this topic
23 replies to this topic

#21
Guest_Alex_*

Guest_Alex_*
  • Гости
program fishing;

/// Настройки ///
const
    ceti = $0DCA;
    check_dagger = false;                 //Если false - снимает нож и лутает выловленную рыбу с земли.
    move_map_to = 0;                             //Нужно указать куда будут складываться карты. (ид контейнера \  \ 0 = оставлять на земле)
    move_backpack_to = 0;                    //Нужно указать куда будут складываться бакпаки.
    move_sos_to = 0;                             //Нужно указать куда будут складываться сос-бутылки. (ид контейнера \ 1 = оставлять в бакпаке \ 2 = trash \ 0 = на землю)
    fishing_type = 1;                            // 1 - удочкой, 2 - сетями
    Sunduk = $71C4D195;   // ид сундука куда все складываем

type
    water_record = Record
    t,x,y,z: integer;
    end;
    
var
    s: boolean;
    trash, water_count: cardinal;
    fish: array[0..10] of integer;
    water_tile: array[0..50] of integer;
    water_place: array[0..500] of water_record;

    
function check_tool: boolean;
begin
    if not Connected then
        begin;
            repeat
                Wait(1000);
            until Connected;
            Wait(3000);
        end;
        
    result:=true;
    
    FindType($0DBF, backpack);
    if (not Dead) and (FindQuantity = 0) and (ObjAtLayer(LhandLayer) = 0) then
        begin
            AddToSystemJournal('Нет удочки');
            result:=true;
        end;
        
    if check_dagger then
        if ObjAtLayer(RHandLayer) = 0 then
            begin
                FindType($13FD, backpack);
                if FindQuantity > 0 then
                    Equip(RHandLayer, finditem);
            end
        else
            begin
                AddToSystemJournal('Нет ножа');
                result:=false;
            end;
            
    if (move_backpack_to = 2) or (move_map_to = 2) or (move_sos_to = 2) then
        begin
            FindDistance:=1;
            FindType($0E77, ground);
            if FindCount <> 0 then
                Trash:=finditem
            else
                begin
                    AddToSystemJournal('Мусорка не найдена. Должна быть рядом.');
                    result:=false;
                end;
        end;            
end;


procedure check_gold;
var
    b, i, a: integer;
    find_list: TStringList;  
 
 
begin
    FindDistance:=0;
    FindType($0E75, ground);
    if (FindCount > 0) then
    begin
        find_list:=TStringList.Create();
        GetFindedList(find_list);
        for i:=0 to find_list.Count-1 do
            begin
                b:=StrToInt('$'+find_list.Strings[i]);
                UseObject(b);
                a:=0;
                repeat
                    Wait(50);
                    a:=a + 1;
                until (LastContainer = b) or (a = 100) or not Connected;
                if FindTypeEx($0EED, $FFFF, b, false) > 0 then
                    MoveItem(finditem, 0, Sunduk, 0, 0, 0);
                if find_list.Count=1 then
                    break;
            end;
    end;
end;    


procedure move_map;
var
    i: integer;
    find_list: TStringList;
 
begin
    FindDistance:=0;
    FindType($14ED, ground);
    if (FindCount > 0) then
        begin
            find_list:=TStringList.Create();
            GetFindedList(find_list);
            for i:=0 to find_list.Count - 1 do
                begin
                    case move_map_to of
                        1: MoveItem(StrToInt('$'+find_list.Strings[i]), 1, backpack, 0, 0, 0);
                        2: MoveItem(StrToInt('$'+find_list.Strings[i]), 1, trash, 0, 0, 0);
                    else MoveItem(StrToInt('$'+find_list.Strings[i]), 1, move_map_to, 0, 0, 0);
                    end;
                end;
        end;
end;    


procedure move_bp;
var
    i: integer;
    find_list: TStringList;
 
begin
    FindDistance:=0;
    FindType($0E75, ground);
    if (FindCount > 0) then   
        begin
        find_list:=TStringList.Create();
        GetFindedList(find_list);
        for i:=0 to find_list.Count - 1 do
            begin
                case move_backpack_to of
                    1: MoveItem(StrToInt('$'+find_list.Strings[i]), 1, backpack, 0, 0, 0);
                    2: MoveItem(StrToInt('$'+find_list.Strings[i]), 1, trash, 0, 0, 0);
                else MoveItem(StrToInt('$'+find_list.Strings[i]), 1, move_backpack_to, 0, 0, 0);
                end;
            end;
        end;
end;


procedure move_sos;
begin
    if FindType($099F, backpack) > 0 then
        case move_sos_to of
            0: DropHere(finditem);
            2: MoveItems(backpack, $099F, $FFFF, trash, 0, 0, 0, 10);
            else MoveItems(backpack, $099F, $FFFF, move_sos_to, 0, 0, 0, 10);
        end;
end;


procedure check_fish;
var
    i: integer;
  tmpid : cardinal;

begin
    if not check_dagger then
        for i:=0 to 7 do
            begin
                FindDistance:=0;
                tmpid := findtype(Fish[i], ground);
                if FindQuantity > 0 then
                //    Grab(finditem, 0);
        moveitem(tmpid,0,Sunduk,0,0,0);
            end;        
end;

 procedure seti;
var
    i: integer;
  tpid : cardinal;

begin
    if not check_dagger then
        for i:=0 to 7 do
            begin
                FindDistance:=0;
                tpid := findtype(ceti, backpack);
                if FindQuantity > 0 then
                //    Grab(finditem, 0);
        moveitem(tpid,0,Sunduk,0,0,0);
            end;        
end;


procedure find_water_tile;
var
    i, t, x, y, layer_count: integer;
    ttile: TStaticCell;
 
begin
    for x:=GetX(self) - 8 to GetX(self) + 8 do
        for y:=GetY(self) - 8 to GetY(self) + 8 do
            begin
                ttile:=ReadStaticsXY(x, y, WorldNum);
                layer_count:=GetLayerCount(x, y, WorldNum);
                i:=0;
                while i < layer_count do
                    begin
                        for t:=0 to 5 do
                            begin
                                if ttile.Statics[0].Tile=water_tile[t] then
                                begin
                                    water_place[water_count].t:=ttile.Statics[0].Tile;
                                    water_place[water_count].x:=x;
                                    water_place[water_count].y:=y;
                                    water_place[water_count].z:=ttile.Statics[0].z;
                                    water_count:=water_count+1;
                                end;        
                            end;
                        i:=i + 1;
                    end;    
            end;
    water_count:=water_count - 1;
end;


procedure fishing;
var
    t: TDateTime;
    a, i: integer;
 
begin
    for a:=0 to water_count do
        begin
            i:=0;
            t:=now;
            if check_tool then
                begin
                    WaitTargetTile(water_place[a].t, water_place[a].x, water_place[a].y, water_place[a].z);
                    UseType($0DBF, $FFFF);
                    repeat
                        check_gold;    
            seti;
                        if not check_dagger then check_fish;
                        if move_map_to <> 0 then move_map;
                        if move_backpack_to <> 0 then move_bp;
                        if move_sos_to <> 1 then move_sos;
                        Wait(1000);
                        i:=i+1;
                    until (InJournalBetweenTimes('already|see that.|far|stop|any fish|that on this|cast your fishing', t, now) > 0) or not Connected or Dead or (i > 120);
                    Wait(100);
                    //AddToSystemJournal('Debug: i = '+IntToStr(i));
                end
            else
                begin
                    s:=false;
                    break;
                end;
        end;
end;

begin
    fish[0]:=$09CF;
    fish[1]:=$09CE;
    fish[2]:=$09CD;
    fish[3]:=$09CC;
    fish[4]:=$0DD8;
    fish[5]:=$0DD7;
    fish[6]:=$0DD6;
  fish[7]:=$097B;

    water_tile[0]:=6038;
    water_tile[1]:=6039;
    water_tile[2]:=6040;
    water_tile[3]:=6041;
    water_tile[4]:=6042;
    water_tile[5]:=6043;
    water_tile[6]:=6044;
    water_tile[7]:=6050;

    s:=true;
    find_water_tile;
    AddToSystemJournal('Найдено тайлов для рыбалки: '+IntToStr(water_count));

    if not check_dagger then
        if ObjAtLayer(RHandLayer) > 0 then
            UnEquip(RHandLayer);
        
    while not dead and s do
        fishing;        

end.

скрипт настроен, чтобы все складывать в сундук(секьюр рядом с домом)

 

Не ловит он сетями !

: Найдено тайлов для рыбалки: 120
: Нет удочки
: UseType error: Object not found.
Во 1 если указать сундук рядом он их складывает туда ,если свой пак то разницы нету (
Там где нужно сети выбрать всё ровно :2 поставил (может где ещё что над поменять?)
Кто подскажет ?


#22
Guest_Alex_*

Guest_Alex_*
  • Гости

 

Не ловит он сетями !

: Найдено тайлов для рыбалки: 120
: Нет удочки
: UseType error: Object not found.
Во 1 если указать сундук рядом он их складывает туда ,если свой пак то разницы нету (
Там где нужно сети выбрать всё ровно :2 поставил (может где ещё что над поменять?)
Кто подскажет ?

 

Кто ловит сетями дайте рабочий плз  :)



#23
GUCCI

GUCCI

    Истребитель Нечисти

  • Пользователи
  • PipPipPipPip
  • 107 posts
sub main()
NewFishing(183,117,5,3) #
end sub
sub do_one_loop(x,y)
UO.Exec("usetype 0x0DCA")
Wait(750)
UO.LClick(x,y)
Wait(3200)
end sub
sub NewFishing(startx, starty, dx, dy)
var i, j, x, y
while true
for j=0 to dx
x = startx - 24*j
y = starty + 22*j
for i=0 to dy
do_one_loop(x + 24*i ,y + 22*i)
next
next
wend
end sub


#24
GUCCI

GUCCI

    Истребитель Нечисти

  • Пользователи
  • PipPipPipPip
  • 107 posts

skript peredelan pod seti . ska4an s etogo saita))







0 user(s) are reading this topic

members, guests, anonymous users