Jump to content

Lineage 2


Script Fish помогите плззз

- - - - - fish

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

#1
Жека

Жека

    Путешественник

  • Пользователи
  • PipPip
  • 26 posts
sub newfish()
dim tiles[249]
dim mintile[7]
dim maxtile[7] 
mintile[0] = 6038
maxtile[0] = 6066
mintile[1] = 8099
maxtile[1] = 8138
mintile[2] = 13422
maxtile[2] = 13499
mintile[3] = 13501
maxtile[3] = 13514
mintile[4] = 13521
maxtile[4] = 13525
mintile[5] = 13549
maxtile[5] = 13608
mintile[6] = 13613
maxtile[6] = 13616
var x, y, title, d = 8
var my_x
var my_y
var num, tile, i, j, k=0, ch
var fishingpole = '0x0dbf'
dim msg[10]
msg[0] = "That is too far away"
msg[1] = "You can't seem to get any fish here."
msg[2] = "You can't use"
msg[3] = "You stop fishing." 
while not uo.dead()
i = 0
my_x = uo.getx('self')
my_y = uo.gety('self')
for y = my_y + d to my_y - d step -1
for x = my_x + d to my_x - d step -1
num = 0
while num < 7
if uo.privategettile(x,y,-1,mintile[num],maxtile[num]) then
tile = mintile[num]
while tile < (maxtile[num]+1) and uo.privategettile(x,y,-1,tile,tile) < 1
tile = tile + 1
wend
k = i
if tile >= mintile[num] and tile <= maxtile[num] then
num = 7
tiles[i] = 'waittargettile ' + str(tile) + ' ' + str(x) + ' ' + str(y) + ' 0' 
i = i + 1
endif 
endif
num = num + 1
wend
next
next
j = 0
while uo.getx('self') == my_x and uo.gety('self') == my_y and not uo.dead()
uo.exec(tiles[j])
uo.deletejournal()
uo.usetype(fishingpole)
repeat
wait(100)
until uo.injournal(msg[0]) or uo.injournal(msg[1]) or uo.injournal(msg[2]) or uo.injournal(msg[3])
j = j + 1
if j >= i then
j = 0
endif
wend
wend 
endsub
 
 
 
ловит режет! и через небольшой промежуток времени останавливается и ничего не делает помогите плззз кто знает в чем причина )спасибо 


#2
meow

meow

    Вождь Зулу

  • Пользователи
  • PipPipPipPipPipPipPip
  • 921 posts
  • Location:Череповец

на и не мучайся(стелс),просто запускай.

 

 

 

program fishing;
 
/// Настройки ///
const
check_dagger = false; //Если false - снимает нож и лутает выловленную рыбу с земли.
move_map_to = 0; //Нужно указать куда будут складываться карты. (ид контейнера \  \ 0 = оставлять на земле)
move_backpack_to = 0; //Нужно указать куда будут складываться бакпаки.
move_sos_to = 1; //Нужно указать куда будут складываться сос-бутылки. (ид контейнера \ 1 = оставлять в бакпаке \ 2 = trash \ 0 = на землю)
fishing_type = 1; // 1 - удочкой, 2 - сетями
 
 
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:=false;
end;
 
if check_dagger then 
if ObjAtLayer(RHandLayer) = 0 then
begin
FindType($0F51, 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, backpack, 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;
 
begin
if not check_dagger then
for i:=0 to 7 do
begin
FindDistance:=0;
FindType(Fish[i], ground);
if FindQuantity > 0 then 
Grab(finditem, 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;
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|to be biting|far|seem to get|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]:=$0DBA;
 
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.


#3
Жека

Жека

    Путешественник

  • Пользователи
  • PipPip
  • 26 posts

spasibo!



#4
Жека

Жека

    Путешественник

  • Пользователи
  • PipPip
  • 26 posts

а как сделать что бы он рыбу резал а не лутал типо целиковую ? )



#5
Жека

Жека

    Путешественник

  • Пользователи
  • PipPip
  • 26 posts

и чет половил мой чуток и приуныл не ловит )))



#6
meow

meow

    Вождь Зулу

  • Пользователи
  • PipPipPipPipPipPipPip
  • 921 posts
  • Location:Череповец

В скрипте же написано,а так это сделано для того чтобы вылавливать magic fish которой можно кастоваться.Разрезать её можно нажав 2 раза на дагер.И у не резанной рыбы веса намного меньше.

Место поменяй попробуй,у меня все хорошо работает.


Edited by meow, 26 October 2016 - 04:55 PM.


#7
cSmoke

cSmoke

    Путешественник

  • Пользователи
  • PipPip
  • 54 posts

и чет половил мой чуток и приуныл не ловит )))

Походу какое-то сообщение, которого у тебя в списке нет. Вот на нем может быть запинка.



#8
80aX

80aX

    Охотник на Драконов

  • Пользователи
  • PipPipPipPipPip
  • 172 posts
  • Location:Hawaii

Хороший скрипт, спасибо.

 

Не забываем autoloop отключить в .options

 

Не будет ловить пока не добавите доп.условие stop fishing. сюда: 

until (InJournalBetweenTimes('already|to be biting|far|seem to get|any fish|that on this|cast your fishing|stop fishing.', t, now) > 0) or not

А еще у скрипта какая то большая область поиска тайтлов воды, можно вот тут 8 менять на 6. Тогда он не будет пытаться слишком далеко закинуть удочку.

 

for x:=GetX(self) - 6 to GetX(self) + 6 do
for y:=GetY(self) - 6 to GetY(self) + 6 do

Edited by 80aX, 27 October 2016 - 02:21 PM.


#9
Soulful

Soulful

    МОДЕРАТОР

  • Модератор
  • PipPipPipPipPip
  • 154 posts
  • Interests:$cripting

Для инжекта:

Sub FishTile(t, x, y, z)
   var timer
   
   repeat
      uo.WaitTargetTile(Str(t), Str(x), Str(y), Str(z))
      uo.UseType(0x0DBF)
      uo.DeleteJournal()
      timer = 0
      repeat
         wait(1000)
         timer = timer + 1
      until uo.InJournal("stop") or uo.InJournal("here") or uo.InJournal("away") or uo.InJournal("cast") or timer > 120      
   until uo.InJournal("stop") or uo.InJournal("away") or uo.InJournal("cast")
end sub

sub Fishing()
   var i, j, tile
   
   while not uo.dead()
      for i = -6 to 6
         for j = -6 to 6
            tile = 168
            while (not uo.PrivateGetTile(uo.GetX() + i, uo.GetY() + j, 251, tile, tile)) and (tile < 6045)
               if tile == 171 then
                  tile = 310
               else
                  if tile == 311 then
                     tile = 6039
                  else
                     tile = tile + 1
                  endif
               endif
            wend
            
            if tile < 6039 then
               tile = 0
            endif
            
            if tile < 6045 then
               uo.concolor(0x53)
               uo.Print("Fishing: " + Str((i + 6) * 13 + j + 7) + "/169...")
               uo.concolor(0)
               FishTile(tile, uo.GetX() + i, uo.GetY() + j, 251)
            endif
         next
      next    
   wend
end sub


#10
cSmoke

cSmoke

    Путешественник

  • Пользователи
  • PipPip
  • 54 posts

Кому надо скрип, режет рыбу + перебирает все сумки и если есть голда, перекладует ее в бекпак. Правда оставляет открытые сумки. Можете доделать.
Скрипт бля утренего запуска. когда надо все перебрать и порезать.
 

sub money()
var sumka,i
dim  items[8] 
uo.ignorereset()   
  while uo.findtype('0x0E75',-1,-1)   
  sumka = uo.findtype('0x0E75',-1,-1)
  uo.print(sumka)
  uo.useobject(sumka)
  wait(500)  
  uo.findtype('0x0EED',-1,sumka)
  uo.moveitem('finditem',0,backpack)
  wait(100)
  uo.ignore(sumka,'on')
  wend 
  
       
   items[1] = '0x09CE'
   items[2] = '0x09CD'
   items[3] = '0x09CF'
   items[4] = '0x09CC'
   items[5] = '0x0E75'
   items[6] = '0x0DD6'
   items[7] = '0x0DD7'
   items[8] = '0x0DD8'
   i = 1     
   while i<9
   uo.usetype('0x0F51')
   uo.waittargettype(items[i])
   wait(2000)
   i=i+1
   wend                                     
    uo.ignorereset()
end sub

Edited by cSmoke, 31 October 2016 - 07:14 PM.


#11
T-ReXX

T-ReXX

    Путешественник

  • Пользователи
  • PipPip
  • 29 posts

подскажите как внести в жyрнал фразу You can't see than , я так понимаю в стелсе недолжно быть фраз с ' таким знаком ...

скрипт просто тормозится тк этой фразы нету в журнале ...



#12
daimond

daimond

    Искатель Сокровищ

  • Пользователи
  • PipPipPip
  • 70 posts

 

на и не мучайся(стелс),просто запускай.

 

 

 

program fishing;


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




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:=false;
end;


if check_dagger then 
if ObjAtLayer(RHandLayer) = 0 then
begin
FindType($0F51, 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(;
a:=0;
repeat
Wait(50);
a:=a + 1;
until (LastContainer =  or (a = 100) or not Connected;
if FindTypeEx($0EED, $FFFF, b, false) > 0 then
MoveItem(finditem, 0, backpack, 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;


begin
if not check_dagger then
for i:=0 to 7 do
begin
FindDistance:=0;
FindType(Fish[i], ground);
if FindQuantity > 0 then 
Grab(finditem, 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; 
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|to be biting|far|seem to get|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]:=$0DBA;


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.

 

Так будет удобней копировать без смайликов.







0 user(s) are reading this topic

members, guests, anonymous users