Yoko

All sides of Injection
It is currently 2025-11-06 10:23:43

All times are UTC+02:00




Post new topic  Reply to topic  [ 3 posts ] 
Author Message
 Post subject: Lockpicking
PostPosted: 2005-02-23 00:31:37 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Опять же, настроено под Цитадель. Два сундука, в одном отмычки, другой бум ломать. В пак ключ от второго сундука. В первый сундук мед. В элементах массивов установить уровни скилла для разных типов отмычек. Работаем.

Code:
#####################################################################
; Lockpicking v.1.01b (c) Edred
;
sub Lockpicking()
   VAR SundukFrom = '0x404CF9CF'
   VAR SundukTarg = '0x401EA0CA'
   VAR KeyTarg = '0x401EA0C9'
   VAR LockType = '0x14FB'
      UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
   DIM LockColor[3], SkUp[3]
   LockColor[0] = '0x0000'      ; айрон
   LockColor[1] = '0x060A'      ; дулл купер
   LockColor[2] = '0x0488'      ; бронза
   LockColor[3] = '0x08A5'      ; золото
   SkUp[0] = 299            ; уровень скилла выше которого качать железными отмычками
   SkUp[1] = 499            ; уровень скилла выше которого качать медными отмычками   
   SkUp[2] = 499            ; уровень скилла выше которого качать бронзовыми отмычками
   SkUp[3] = 599            ; уровень скилла выше которого качать золотыми отмычками   
   VAR fizzle = "You can't open this."
   VAR success = "You open this."
   VAR locked = "You close this chest."
   VAR TimeLimit = 3000
   VAR trycount = 0, succount = 0
   VAR i, j, needcolor, k, end
   VAR SpiritTime = UO.Timer()
   UO.UseObject( SundukFrom )
   wait(1000)
   CheckLag()
   while UO.SkillVal( 'Lockpicking' ) < 1000
      If UO.Count( LockType ) == 0 Then
         EatChar( SundukFrom, 6, 2, 120 )
         j = 0
         For i = 0 To 3
            If SkUp[i] < UO.SkillVal( 'Lockpicking' ) Then
               j = i
            Endif
         Next
         needcolor = LockColor[j]
         UO.FindType( LockType, needcolor, SundukFrom )
         If UO.FindCount() == 0 Then
            UO.Print( 'Lockpicks not found. Script terminated' )
            return
         Endif
         If UO.GetQuantity( 'finditem' ) > 100 Then
            UO.Grab( '100', 'finditem' )
         Else
            UO.Grab( 'finditem' )
         Endif
         wait(1000)
         CheckLag()
      Endif
      While UO.Count( LockType ) > 0
         If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
            ; Прошло 5 минут с момента последней прокачки Spirit Speak
            SpSpeak()
            SpiritTime = UO.Timer()
         Endif
         trycount = trycount + 1
         UO.Print( 'You have ' + str( UO.Count( LockType ) ) + ' lockpicks.' )
         UO.Print( 'You have ' + str( succount ) + ' success attempt' )
         UO.Print( 'You get ' + str( trycount ) + ' attempt'  )
         DeleteJournal( fizzle )
         DeleteJournal( success )
         UO.WaitTargetObject( SundukTarg )
         UO.UseType( LockType )
         k = 0
         repeat
            wait(100)
            k = k + 1
         until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR k > TimeLimit
         If UO.InJournal( success ) Then
            DeleteJournal( locked )
            succount = succount + 1
            UO.WaitTargetObject( SundukTarg )
            UO.UseObject( KeyTarg )
            repeat
               wait(100)
            until UO.InJournal( locked )
         Endif
      Wend
   Wend
endsub

#####################################################################
; ================================================================
; Процедура подкормки чара. Параметры: сериал контейнера с медом, номер
; сообщения до которого кормить, сколько съесть меда после сообщения,
; как часто кормить чара.
; Прохождение последнего периода контролируется через глобальную переменную
; TimeProcess.
;
; ver. 1.07 (c) Edred
;
Sub EatChar( Sunduk, Nom, Add, TimeWait )
   ; сообщения при кормежке
   UO.Print( 'TEST: eat to ' + str( Nom ) + ' message and ' + str( Add ) + ' more each ' + str( TimeWait ) + ' minutes' )
   DIM Eat[8]
   Eat[0] = ''
   Eat[1] = 'You eat the food, but are still extremely hungry'
   Eat[2] = 'After eating the food, you fell much less hungry'
   Eat[3] = 'You eat the food, and begin to feel more satiated'
   Eat[4] = 'You are nearly stuffed, but manage to eat the food'
   Eat[5] = 'You fell quite full after consuming the food'
   Eat[6] = 'You are stuffed!'
   Eat[7] = 'You are simply too full to eat any more!'
   VAR Med = '0x09EC'         ; тип меда для подкормки
   VAR i, EatC, j, k, flag
   ; проверим, пора ли кормиться
   i = Val( UO.GetGlobal( 'TimeProcess' ) )
   i = ( UO.Timer() - i ) / 600
   If i < TimeWait Then
      ; рано кормиться
      UO.Print( 'Eat early! ' + str( i ) + ' from ' + str( TimeWait ) )
      return
   Endif
   If Nom > 0 AND Nom < 8 Then
      EatC = Eat[Nom]
   Else
      EatC = Eat[7]
   Endif
   UO.FindType( Med, '-1', Sunduk )
   If UO.FindCount() == 0 Then
      ; мед кончился
      UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
      return
   Endif
   UO.Grab( '60', 'finditem' )
   Wait( 1000 )
   CheckLag()
   For k = 1 To 7
      DeleteJournal( Eat[k] )
   Next
   flag = 0
   If Nom < 7 Then
      UO.UseType( Med )
      Wait( 1000 )
      CheckLag()
      For k = Nom + 1 To 7
         If UO.InJournal( Eat[k] ) Then
            flag = 1
         Endif
      Next
   Endif
   If flag == 0 Then
      repeat
         DeleteJournal( EatC )
         UO.UseType( Med )
         Wait( 1000 )
         CheckLag()
      until NOT UO.InJournal( EatC )
      If Add > 0 Then
         For j = 1 To Add
            UO.UseType( Med )
            Wait( 1000 )
            CheckLag()
         Next
      Endif
   Endif
   ; хватит кормиться
   ; выгрузим остатки меда обратно
   UO.Findtype( Med, '-1', 'backpack' )
   UO.MoveItem( 'finditem', 0, Sunduk )
   Wait( 1000 )
   CheckLag()
   ; Сбросим счетчик
   UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
endsub

#####################################################################
Sub CheckLag()
   DeleteJournal( 'backpack' )
   UO.Click( 'backpack' )
   repeat
      wait(100)
   until UO.InJournal( 'backpack' )
   return
end sub

#####################################################################
Sub DeleteJournal( string1 )
   VAR nom = UO.InJournal( string1 )
   If nom > 0 Then
      UO.SetJournalLine( Nom - 1, 'string replaced' )
      DeleteJournal( string1 )
   Endif
endsub

#####################################################################
; Spirit Speak v.1.00b (c) Edred
;
; Разовая прокачка спирит спика. Предназначена для вызова из других скриптов.
;
sub SpSpeak()
   VAR mod = UO.WarMode(), num
   VAR fizzle = 'You fail your attempt'
   VAR success = 'You establish a connection'
   UO.WarMode( 0 )
   DeleteJournal( success )
   repeat
      DeleteJournal( fizzle )
      UO.UseSkill( 'Spirit Speak' )
      num = 1
      repeat
         wait(100)
         num = num + 1
      until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR num > 600
   until UO.InJournal( success )
   UO.WarMode( mod )
endsub


Top
   
 Post subject:
PostPosted: 2005-07-11 10:31:05 
Offline

Joined: 2004-10-27 16:13:14
Posts: 1
Location: 1111
ПРивет , а для ДРВ шарда у вас нету скрипта на ЛЮК ПИКИНГ?

_________________
RAMBO -3


Top
   
 Post subject:
PostPosted: 2005-07-11 10:35:07 
Offline
User avatar

Joined: 2005-06-19 19:21:28
Posts: 159
rambos wrote:
ПРивет , а для ДРВ шарда у вас нету скрипта на ЛЮК ПИКИНГ?



У нас он не работает!!!!


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

All times are UTC+02:00


Who is online

Users browsing this forum: Google [Bot] and 2 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:  
Powered by phpBB® Forum Software © phpBB Limited