Yoko

All sides of Injection
It is currently 2025-12-03 03:30:02

All times are UTC+02:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 2005-05-03 21:09:34 
Offline

Joined: 2004-12-30 13:18:54
Posts: 22
помогите со скриптом :
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


что удалить , чтоб он не проверял что поймал, а просто все что под ногами, кидал в трюм...
если не сложно помогите плиззз, буду очень благодарен...


Top
   
 Post subject:
PostPosted: 2005-05-03 22:18:13 
Offline

Joined: 2004-12-30 13:18:54
Posts: 22
вот сделал вот так :
Code:
; ver. 1.04b (c) Edred 
;
VAR Trum = '0x400C230D'      ; трюм корабля
VAR Pole = '0x0DBF'         ; удочка
VAR Fork = '0x1404'         ; оружие
VAR Shield = '0x1B76'      ; щит
var TryToHide=1 ## 1 - yes, 0 - no.

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()
    if TryToHide==1 then
   ToHide()
   end if
   VAR x, y
   repeat
      For y = -6 To 6
         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' )
      ToHide()
   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.MoveItem( 'finditem', '0' , Trum )
         Wait( 1500 )
      Endif
   Next
endsub

; ----------------------------
; blank scroll - 0x0E34
; ginseng - 0x0F85
; gold coin - 0x0EED
; nightshade - 0x0F88
; blood moss - 0x0F7B
; mandrake root - 0x0F86

#===================================================================#
#               Процедура контроля за приходом элема              #
#===================================================================#
;
sub Trevoga()
wait(500)
endsub
#===================================================================#
#                                               прячемся                             #
#===================================================================#

sub ToHide()
while not uo.Hidden()
uo.Exec('warmode 0')
uo.Print('prya4emsya...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(4100)
wend
wait(100)
end sub

#===================================================================#
#                                  реконект                                   #
#===================================================================#

sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
;UO.Exec('terminate all')
;UO.Exec('exec autoload')
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
Until false
end sub

sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub


посматрите как скрипт?
если есть ошибки, напишите пожалуйста в чем ошибся...


Top
   
 Post subject:
PostPosted: 2005-05-04 12:19:52 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
Не смотрел насчет ошибок, уж слишком большой код. Но для сбора любой рыбы можно в функции сбора заменить:
Code:
For i=0 To Razmer
      UO.FindType( Fish[i], -1, 'ground' )
      If UO.FindCount() > 0 Then
         UO.MoveItem( 'finditem', '0' , Trum )
         Wait( 1500 )
      Endif
   Next

на:
Code:
      UO.Set('finddistance',0)
      UO.FindType(-1, -1, 'ground' )
      while UO.FindCount() > 0
         UO.MoveItem( 'finditem', '0' , Trum )
         Wait( 1000 )
         UO.FindType(-1, -1, 'ground' )
      wend


Top
   
 Post subject:
PostPosted: 2005-05-05 19:10:04 
Offline

Joined: 2004-12-30 13:18:54
Posts: 22
Beyonder, спасибо


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 4 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited