Code: Select all
; Рыбачим с корабля. Выловленное перерабатываем и складываем в трюм.
; Если вокруг все выловлено - плывем вперед. Считаем итемы (раздельные)
; в трюме. Если их больше 250 - останавливаем скрипт.
;
; ver. 1.04b (c) Edred
;
VAR Trum = '0x400C230D' ; трюм корабля
VAR Pole = '0x0DBF' ; удочка
VAR Fork = '0x1404' ; оружие
VAR Shield = '0x1B76' ; щит
sub Fishing()
UO.Exec( 'exec Trevoga' )
If UO.GetGraphic( UO.ObjAtLayer( 'Lhand' ) ) == Shield Then
UO.UnEquip( 'Lhand' )
wait( 500 )
Endif
If UO.GetGraphic( UO.ObjAtLayer( 'Rhand' ) ) == Fork Then
UO.UnEquip( 'Rhand' )
wait( 500 )
Endif
If UO.GetGraphic( UO.ObjAtLayer( 'Lhand' ) ) <> Pole Then
UO.UseType( Pole )
Endif
UO.WarMode( 0 )
While TRUE
FishForward()
If UO.Dead() Then
; ждем
return
Endif
If CountTrum() > 250 Then
return
Endif
Wend
endsub
sub FishForward()
VAR x, y
repeat
For y = -4 To 4
For x = -4 To 4
UO.Print( 'TEST: ' + str( x ) + ', ' + str( y ) + ' coord' )
FishTile( x, y )
If UO.Dead() Then
return
Endif
Next
Next
; пока смена дислокации по-тупому
UO.Print( 'TEST: forward' )
UO.SayU( 'forward' )
wait( 4000 )
UO.SayU( 'stop' )
until UO.Dead()
endsub
sub FishTile( x, y )
VAR Ms1 = "You can't fish under the ship" ; не можем ловить здесь
VAR Ms2 = "You are too far away" ; далеко
VAR Ms3 = "There are no fish here" ; кончилось тут
VAR Ms4 = "You fish a while, but fail to catch anything" ; физл
VAR Ms5 = "You pull out" ; поймал что-то
; VAR Ms6 = " " ; treasure map level 1 - 5
; VAR Ms7 = " " ; water elemental
; VAR Ms8 = " " ; rare water shell
; VAR Ms9 = " " ; сундук с разбитого корабля
; VAR Ms10 = " " ; морской монстр
VAR k, t
VAR MaxTime = 300
If (x > -3) AND (x < 3) AND (y > -3) AND (y < 3) Then
; это, похоже, считается под лодкой
return
Endif
k = 0
repeat
If UO.Dead() Then
return
Endif
UO.DeleteJournal()
t = UO.Timer()
UO.WaitTargetTile( '0', STR( UO.GetX() + x ), STR( UO.GetY() + y ), '251')
UO.UseObject( UO.GetSerial( UO.ObjAtLayer( 'Lhand' ) ) )
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR ((t + MaxTime) < UO.Timer())
If UO.InJournal(ms4) Then
k = k + 1
Endif
If UO.Dead() Then
return
Endif
If UO.InJournal( ms5 ) Then
Recycle()
If CountTrum() > 250 Then
return
Endif
Endif
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR (k > 9)
endsub
sub CountTrum()
; Считаем кол-во любых итемов (или кучек) в трюме
; и возвращаем результат
UO.FindType( -1, -1, Trum )
return UO.FindCount()
endsub
sub Recycle()
; ------- улов -------
DIM Fish[17]
Fish[0] = '0x170B' ; сапоги
Fish[1] = '0x170F' ; тапки
Fish[2] = '0x170D' ; сандалии
Fish[3] = '0x1711' ; сапоги
Fish[4] = '0x09CC' ; тип рыбы 1
Fish[5] = '0x09CD' ; тип рыбы 2
Fish[6] = '0x09CE' ; тип рыбы 3
Fish[7] = '0x09CF' ; тип рыбы 4
Fish[8] = '0x0FC4' ; ракушка, тип 1
Fish[9] = '0x0FC5' ; ракушка, тип 2
Fish[10] = '0x0FC6' ; ракушка, тип 3
Fish[11] = '0x0FC7' ; ракушка, тип 4
Fish[12] = '0x0FC8' ; ракушка, тип 5
Fish[13] = '0x0FC9' ; ракушка, тип 6
Fish[14] = '0x0FCA' ; ракушка, тип 7
Fish[15] = '0x0FCB' ; ракушка, тип 8
Fish[16] = '0x0FCC' ; ракушка, тип 9
VAR Razmer = 16 ; размер массива - 1
; ------- инструмент -------
VAR Scissor = '0x0F9E' ; тип ножниц
VAR Cleaver = '0x0EC2' ; кливер
; ------- конечный продукт -------
VAR Bandag = '0x0E21' ; тип бинтов
VAR Pearl = '0x0F7A' ; жемчуг
VAR Steak = '0x097A' ; рыбное филе
VAR i
; Ищем что у нас валяется под ногами, если надо перерабатываем
; и складируем в трюм. Потом введем всякие мешочки разные и ящички.
For i=0 To Razmer
UO.FindType( Fish[i], -1, 'ground' )
If UO.FindCount() > 0 Then
UO.Grab( 0, 'finditem' )
Wait( 1500 )
; Взяли в пак. Теперь разберемся что это
If i < 4 Then
; сапоги и тапки
; режем ножницами на бинты и скидываем бинты
UO.WaitTargetObject( 'finditem' )
UO.UseType( Scissor )
Wait( 3000 )
; Скинем бинты в трюм
UO.FindType( Bandag )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0' , Trum )
wait( 2000 )
Endif
Endif
If i > 3 AND i < 8 Then
; рыба
; режем кливером в филе и сбрасываем филе
; кливер берется в руки, поэтому потом
; снова берем удочку
UO.WaitTargetObject( 'finditem' )
UO.UseType( Cleaver )
Wait( 3000 )
UO.FindType( Steak )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0' , Trum )
wait( 2000 )
Endif
UO.UseType( Pole )
Endif
If i > 7 Then
; ракушки
; дабл клик на них, если появился жемчуг
; сбросим его, если ракушка не исчезла
; значит рар - сбросим ее
UO.UseType( 'finditem' )
wait( 1000 )
If NOT UO.InJournal( 'This shell is empty' ) Then
; UO.FindType( Pearl )
; If UO.FindCount() > 0 Then
; UO.MoveItem( 'finditem', '0' , Trum )
; wait( 2000 )
; Else
UO.MoveItem( 'finditem', '0' , Trum )
wait( 2000 )
; Endif
Endif
Endif
Endif
Next
endsub
; ----------------------------
; blank scroll - 0x0E34
; ginseng - 0x0F85
; gold coin - 0x0EED
; nightshade - 0x0F88
; blood moss - 0x0F7B
; mandrake root - 0x0F86
#===================================================================#
# Процедура контроля за приходом элема #
#===================================================================#
;
sub Trevoga()
repeat
Wait(100)
until UO.Life < 150
UO.Exec( 'terminate Fishing' )
UO.UnEquip( 'Lhand' )
wait( 500 )
UO.UseType( Fork )
wait( 500 )
UO.UseType( Shield )
wait( 500 )
UO.WarMode( 1 )
endsub
что удалить , чтоб он не проверял что поймал, а просто все что под ногами, кидал в трюм...
если не сложно помогите плиззз, буду очень благодарен...