Code: ; Рыбачим с корабля. Выловленное перерабатываем и складываем в трюм. ; Если вокруг все выловлено - плывем вперед. Считаем итемы (раздельные) ; в трюме. Если их больше 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
На себя армор, в пак или в руки (скрипт сам разберется) вилку и щит, их типы прописать в начало скрипта. В пак кливер и ножницы. На корабль. Отплыть подальше. В пак, естественно, удочку (хотя можно и в руки, непринципиально). Прописать в скрипт сериал трюма.
скрипт рабочий, но, на шарде Citadel можно ловить только с трапов и таргет только в воду, не могли бы помочь исправить чтобы он только ловил с одоной стороны коробля и чтобы можно было указать просто ящик стоявший рядом, а остальные функции остались какие есть....
Помогите очень прошу...
|