помогите, если не сложно...

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Kashita
Posts: 22
Joined: 2004-12-30 13:18:54

помогите, если не сложно...

Post by Kashita »

помогите со скриптом :

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

что удалить , чтоб он не проверял что поймал, а просто все что под ногами, кидал в трюм...
если не сложно помогите плиззз, буду очень благодарен...
Kashita
Posts: 22
Joined: 2004-12-30 13:18:54

Post by Kashita »

вот сделал вот так :

Code: Select all

; 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
посматрите как скрипт?
если есть ошибки, напишите пожалуйста в чем ошибся...
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Не смотрел насчет ошибок, уж слишком большой код. Но для сбора любой рыбы можно в функции сбора заменить:

Code: Select all

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: Select all

      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
Kashita
Posts: 22
Joined: 2004-12-30 13:18:54

Post by Kashita »

Beyonder, спасибо
Post Reply