Page 1 of 2
Что-же в нем не так? Скрипт Фишинг!
Posted: 2009-12-06 13:12:21
by Swint
Не пойму,почему он не берет удочку из пака - кода она сломалась?
Ковырялся,так и не смог понять.Помогите плз...(=
Code: Select all
var MaxFailure=2 # Кол-во фейловых попыток перед переходом к след тайлу
sub main()
var iX,iY
for var iStep=0 to 1000
for iX=-6 to 6
for iY=-6 to 6
GetAllFish(UO.GetX()+iX,UO.GetY()+iY)
next
next
next
end sub
Sub GetAllFish(iX,iY)
var counter=0
repeat
counter=counter+1
UO.DeleteJournal()
UO.WaitTargetTile(0,iX,iY,0)
UO.UseType('0x0DBF')
while not UO.InJournal('You pull out') and not UO.InJournal('but fail to catch') and not UO.InJournal('no fish here') and not UO.InJournal('Try fishing in water') and not UO.InJournal('That is too far away') and not UO.InJournal('You are too quick') and not UO.InJournal('The item should')
wait(4000)
wend
if UO.InJournal('no fish here') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') then
return
end if
if UO.InJournal('You pull out') then
counter=0
GetFish()
end if
until UO.Injournal('no fish here') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR counter>MaxFailure
end sub
Sub GetFish()
UO.set('finddistance',0)
UO.IgnoreReset()
UO.Ignore('self')
UO.FindType('0x352D',-1,'ground')
UO.Ignore('finditem')
UO.FindType(-1,-1,'ground')
while UO.FindCount()>0
UO.WaitTargetObject('finditem')
UO.UseType('0x13F6')
UO.Ignore('finditem')
wait(1000)
UO.FindType(-1,-1,'ground')
wend
UO.Ignorereset()
UO.Ignore('self')
UO.FindType('0x352D',-1,'ground')
UO.Ignore('finditem')
UO.FindType(-1,-1,'ground')
while UO.FindCount()>0
UO.Grab(0,'finditem')
wait(1000)
UO.FindType(-1,-1,'ground')
wend
UO.Ignorereset()
end sub
Posted: 2009-12-06 13:56:03
by Savage
А если начинать ловить с удочкой в паке, берёт и ловит?
Posted: 2009-12-06 14:03:29
by Swint
Savage wrote:А если начинать ловить с удочкой в паке, берёт и ловит?
Угу,а когда ломаеться,то не берет!(
Posted: 2009-12-06 14:08:51
by Savage
А сообщение какое проходит при поломке?
По скрипту вроде всё верно на первый взгляд. Осталось выяснить где начинает залипать скрипт при поломке удочки.
Posted: 2009-12-06 14:23:01
by Swint
Savage wrote:А сообщение какое проходит при поломке?
По скрипту вроде всё верно на первый взгляд. Осталось выяснить где начинает залипать скрипт при поломке удочки.
Your fishing pole may have been destroer!
Вот именно,что скрипт нормальный.А лимнит при поломке!(
Posted: 2009-12-06 14:28:57
by Savage
'The item should'
Это к чему относится? Если не к чему, замени это сообщение на сообщение о поломке. Или добавь сообщение о поломке.
Code: Select all
while not UO.InJournal('You pull out') and not UO.InJournal('but fail to catch') and not UO.InJournal('no fish here') and not UO.InJournal('Try fishing in water') and not UO.InJournal('That is too far away') and not UO.InJournal('You are too quick') and not UO.InJournal('The item should')
сюда.
Posted: 2009-12-06 14:47:11
by Swint
Savage wrote:'The item should'
Это к чему относится? Если не к чему, замени это сообщение на сообщение о поломке. Или добавь сообщение о поломке.
Code: Select all
while not UO.InJournal('You pull out') and not UO.InJournal('but fail to catch') and not UO.InJournal('no fish here') and not UO.InJournal('Try fishing in water') and not UO.InJournal('That is too far away') and not UO.InJournal('You are too quick') and not UO.InJournal('The item should')
сюда.
По-моему не к чему.С пасибо,щас попробуем.
Я вот решил сделать,чтобы он не резал на стейки,а сразу в пак клал выловленную рыбу,ибо стейки весят больше...ды и дольше времени пока порежет и т.п. Вот,пытаюсь,но по-моему у меня такое не понятно сочитание,и не могу доделать ошибки всякие. Пожешь помочь,если не сложно!
Code: Select all
var mX, mY, mZ, i, j
var f
var a=0
var TakeFish=1 ## 1
var MaxFailure=2 # Кол-во фейловых попыток перед переходом к след тайлу
sub main()
dim Fish[6]
Fish[0]=0x09CC
Fish[1]=0x09CD
Fish[2]=0x09CE
Fish[3]=0x09CF
Fish[4]=0x14EB
Fish[5]=0x0DD6
Fish[6]=0x0DD6
Beginning:
uo.Set('finddistance','6')
var iX,iY
for var iStep=0 to 1000
for iX=-6 to 6
for iY=-6 to 6
GetAllFish(UO.GetX()+iX,UO.GetY()+iY)
next
next
next
end sub
Sub GetAllFish(iX,iY)
var counter=0
repeat
counter=counter+1
UO.DeleteJournal()
UO.WaitTargetTile(0,iX,iY,0)
UO.UseType('0x0DBF')
while not UO.InJournal('You pull out') and not UO.InJournal('but fail to catch') and not UO.InJournal('no fish here') and not UO.InJournal('Try fishing in water') and not UO.InJournal('That is too far away') and not UO.InJournal('You are too quick') and not UO.InJournal('The item should')
wait(4000)
wend
if UO.InJournal('no fish here') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') then
return
end if
if UO.InJournal('You pull out') then
counter=0
GetFish()
end if
until UO.Injournal('no fish here') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR counter>MaxFailure
end sub
if TakeFish==1 then
uo.Print('Собираем рыбу.')
uo.FindType(Fish[f],"-1","ground")
if uo.Count(Fish[2])> 0 then
a= a+1
end if
for f=0 to 3
uo.MoveItem("finditem","1","Fishs")
wait(200)
next
end if
wait(200)
next
end if
end sub
На 52-й линии ошибка Fish,что я забыл не пойму!(
Posted: 2009-12-06 14:49:58
by Savage
У тебя 7 элементов массива, а объявлено 6. После таких глюков лучше перезапустить клиента.
Posted: 2009-12-06 14:52:23
by Savage
Тут что то не понятное. Лучше оставь пока как есть. Просто добавь сообщение о поломке удочки.
Posted: 2009-12-06 15:33:52
by Mirage
насчет элементов - так можно. Когда наоборот объявлено больше чем есть - нельзя.
Идет перескок на GetFish() которой нет.
Не указывает for next для рыбы
нет начала процедуры перед if TakeFish==1 then
зачем вы мучаете скрипт?
Code: Select all
sub FishingAround()
VAR X, Y, i, MaxRange = 6, MaxVes = 620
VAR knife = '0x0F51' ; нож
VAR Steak = '0x097A'
VAR Bag = '0x40205DFE'
DIM Fish[4]
Fish[0] = '0x09CC' ; тип рыбы 1
Fish[1] = '0x09CD' ; тип рыбы 2
Fish[2] = '0x09CE' ; тип рыбы 3
Fish[3] = '0x09CF' ; тип рыбы 4
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if FishTiles(UO.GetX()+X, UO.GetY()+Y) then
repeat
UO.DeleteJournal()
UO.Warmode(0)
wait(100)
UO.WaitTargetTile(FishTiles(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
;ToHide()
; ********************************
; Auto Tools
if UO.Count(0x0DBF) || UO.Count(0x0DC0) then
if UO.Count(0x0DBF) then
UO.UseType(0x0DBF); <-- удочка
else
UO.UseType(0x0DC0); <-- удочка
endif
else
return 1
endif
; ********************************
repeat
wait(100)
until UO.InJournal('****|pull out|anything|поймали|You can|не получилось|no fish|нету рыбы|месте|далеко|вытащили удочку')
For i=0 To 3
UO.FindType( Fish[i], -1, 'ground' )
If UO.FindCount() > 0 Then
UO.Grab( 0, 'finditem' )
Wait( 300 )
Endif
Next
If UO.Weight > MaxVes Then
UO.Print('Перегруз!')
return 0
endif
If UO.Life < Uo.Str/10 then
UO.Print('А мы умираем!')
return 0
endif
until UO.InJournal("no fish|нету рыбы|anything|в другом месте|далеко|вытащили удочку") || UO.Dead()
For i=0 To 3
UO.FindType( Fish[i] )
If UO.FindCount() > 0 Then
UO.WaitTargetObject( 'finditem' )
UO.UseType( knife )
Wait( 500 )
UO.FindType( Steak )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0' , Bag )
wait( 500 )
Endif
Endif
Next
endif
next
next
UO.Print(" = Вся рыба в квадрате поймана = ")
UO.Sound(100)
return 0
end sub
Sub FishTiles(X,Y)
var j
if UO.PrivateGetTile(X, Y, -1, 6038, 6066) then
for j=6038 to 6066
if UO.PrivateGetTile(X, Y, -1, j, j) then
return j
end if
next
end if
return 0
end sub
Вот какойто старенький скрипт. вместо **** впиши сообщение при поломке. Проверь фразы - перевод. Я ловлю просто с 2-3 удочками в паке. Ломается одна - берет другую.
Posted: 2009-12-06 15:37:51
by Savage
С каких это пор разрешено выходить за границы объявления массива???
Posted: 2009-12-06 18:14:25
by Swint
Savage,спасибо! Теперь беред из пака удочку!
Mirage,тоже хороший скрипт,но он режет в паке рыбку - это мне тоже не нуно.Просто стейки весят много!) Хотя,я дагер не указал и норм,но из-за этого теряеться чуть время,но это терпимо!(= Спасибо! Хм...Этот крипт почему-то вырубился из-за чего-то!(
А можно чтобы он ещё ходил в верх и вниз и так по циклу?(=
Было-бы велеколепно!(=

Posted: 2009-12-06 18:30:24
by Mirage
Savage wrote:С каких это пор разрешено выходить за границы объявления массива???
Наверное перепутал сори
он не цикличный. Облавливает и встает. При перегрузке встает.
чтобы не резал убери
Code: Select all
For i=0 To 3
UO.FindType( Fish[i] )
If UO.FindCount() > 0 Then
UO.WaitTargetObject( 'finditem' )
UO.UseType( knife )
Wait( 500 )
UO.FindType( Steak )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0' , Bag )
wait( 500 )
Endif
Endif
Next
Но вообще в нем есть скидывалка в сундук или в трюм карабля. Караз после порезки. PS у меня на шарде стейки гораздо легче рыбы

Posted: 2009-12-06 18:44:09
by Swint
Mirage wrote:Savage wrote:С каких это пор разрешено выходить за границы объявления массива???
Наверное перепутал сори

он не цикличный. Облавливает и встает. При перегрузке встает.
чтобы не резал убери
Code: Select all
For i=0 To 3
UO.FindType( Fish[i] )
If UO.FindCount() > 0 Then
UO.WaitTargetObject( 'finditem' )
UO.UseType( knife )
Wait( 500 )
UO.FindType( Steak )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0' , Bag )
wait( 500 )
Endif
Endif
Next
Но вообще в нем есть скидывалка в сундук или в трюм карабля. Караз после порезки. PS у меня на шарде стейки гораздо легче рыбы

А что сделать тобы он не останавливался а безконца ловил?)))

Posted: 2009-12-06 23:37:46
by Miha*
Swint wrote:А что сделать тобы он не останавливался а безконца ловил?)))

хороший вопрос, во ту меня тож есть скрипт, но он не режет рыбу. .а вот тоже, выловил всё в округе и стоит. как задать ему цикличность? можно показать ан пердыдущийх скриптах.. будаит даже лучьше, мне какраз нужен с резом рыбы.. и слива её в трюм )
Posted: 2009-12-07 08:51:12
by Mirage
есть уроки - там есть про циклы
Posted: 2009-12-07 15:26:36
by Swint
Mirage wrote:есть уроки - там есть про циклы
Попотылся я что-то сделать,скрипт залипает,но зато не убираеться совсем.
Что не так,что добавить нуно?
Code: Select all
sub FishingAround()
VAR X, Y, i, MaxRange = 2, MaxVes = 620
VAR knife = '0x0F51' ; нож
VAR Steak = '0x097A'
VAR Bag = '0x400E450B'
DIM Fish[4]
Fish[0] = '0x09CC' ; тип рыбы 1
Fish[1] = '0x09CD' ; тип рыбы 2
Fish[2] = '0x09CE' ; тип рыбы 3
Fish[3] = '0x09CF' ; тип рыбы 4
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if FishTiles(UO.GetX()+X, UO.GetY()+Y) then
repeat
UO.DeleteJournal()
UO.Warmode(0)
wait(100)
UO.WaitTargetTile(FishTiles(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
;ToHide()
; ********************************
; Auto Tools
if UO.Count(0x0DBF) || UO.Count(0x0DC0) then
if UO.Count(0x0DBF) then
UO.UseType(0x0DBF); <-- удочка
else
UO.UseType(0x0DC0); <-- удочка
endif
else
return 1
endif
; ********************************
repeat
wait(4000)
until UO.InJournal('Your fishing pole may have been destroer|pull out|anything|поймали|You can|не получилось|no fish|нету рыбы|месте|далеко|вытащили удочку')
For i=0 To 3
UO.FindType( Fish[i], -1, 'ground' )
If UO.FindCount() > 0 Then
UO.Grab( 0, 'finditem' )
Wait( 300 )
Endif
Next
If UO.Weight > MaxVes Then
UO.Print('Перегруз!')
return 0
endif
If UO.Life < Uo.Str/10 then
UO.Print('А мы умираем!')
return 0
endif
until UO.InJournal("no fish|нету рыбы|anything|в другом месте|далеко|вытащили удочку") || UO.Dead()
endif
next
next
UO.Print(" = Вся рыба в квадрате поймана = ")
repeat
wait(1000)
until i > 3
UO.Sound(100)
return 0
end sub
Posted: 2009-12-08 05:10:03
by CuHTpoH
Swint wrote:Попотылся я что-то сделать,скрипт залипает,но зато не убираеться совсем.
Херово попотылся.
Code: Select all
sub FishingAround()
VAR X, Y, i, MaxRange = 2, MaxVes = 620
VAR knife = '0x0F51' ; нож
VAR Steak = '0x097A'
VAR Bag = '0x400E450B'
DIM Fish[4]
Fish[0] = '0x09CC' ; тип рыбы 1
Fish[1] = '0x09CD' ; тип рыбы 2
Fish[2] = '0x09CE' ; тип рыбы 3
Fish[3] = '0x09CF' ; тип рыбы 4
repeat
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if FishTiles(UO.GetX()+X, UO.GetY()+Y) then
repeat
If UO.Weight > MaxVes Then
UO.Print('Перегруз!')
return 0
endif
If UO.Life < Uo.Str/10 then
UO.Print('А мы умираем!')
return 0
endif
UO.DeleteJournal()
UO.Warmode(0) # вот это надо убрать нахрен и заменить на "если в журнале "я типа занят варкой" то делать uo.press(9) и ждать 500мсек"
wait(100)
UO.WaitTargetTile(FishTiles(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
;ToHide()
; ********************************
; Auto Tools
if UO.Count(0x0DBF) || UO.Count(0x0DC0) then
if UO.Count(0x0DBF) then
UO.UseType(0x0DBF); <-- удочка
else
UO.UseType(0x0DC0); <-- удочка
endif
else
return 1
endif
; ********************************
repeat
wait(300)
until UO.InJournal('Your fishing pole may have been destroer|pull out|anything|поймали|You can|не получилось|no fish|нету рыбы|месте|далеко|вытащили удочку')
For i=0 To 3
UO.FindType( Fish[i], -1, 'ground' )
If UO.FindCount() > 0 Then
UO.Grab( 0, 'finditem' )
Wait( 300 )
Endif
Next
until UO.InJournal("no fish|нету рыбы|anything|в другом месте|далеко|вытащили удочку") || UO.Dead()
endif
next
next
UO.Print(" = Вся рыба в квадрате поймана = ")
UO.Sound(100)
until uo.dead()
return 0
endsub
Sub FishTiles(X,Y)
var j
if UO.PrivateGetTile(X, Y, -1, 6038, 6066) then
for j=6038 to 6066
if UO.PrivateGetTile(X, Y, -1, j, j) then
return j
endif
next
endif
return 0
endsub
Posted: 2009-12-08 05:41:16
by Swint
CuHTpoH wrote:Swint wrote:Попотылся я что-то сделать,скрипт залипает,но зато не убираеться совсем.
Херово попотылся.
Ммм огромной спасибо!(=

Posted: 2009-12-08 21:08:41
by Miha*
пишит, что ошибка: UO.PrivateGetTile который стоит сдеьс:
if UO.PrivateGetTile(X, Y, -1, 6038, 6066) then про второй ничегоен говорил, эта часть в конце скрипта, то что ты сказал анписать вместо вар я написал