Code: #===================================================================# # COOKING # #===================================================================# # v.1.05b (с) Edred # #===================================================================# ; ; Встаем рядом среколлкой на базе, рядом с чаром в АМЗ ставим сундук или ; ящик. В него раскладываем много кучек хвороста не больше чем по 500 ; в кучке (иначе чар не сможет взять 1 шт.) и кладем несколько стопок стейков ; (можно по 10к в стопке). Можно туда же добавить меда - уберите комментарий ; с EatChar() и добавьте эту функцию. ; Берем из сундука 1 шт хвороста, кладем в координаты TX, TY и зажигаем ее. ; Потом берем 1 шт. стейков из этого же сундука и жарим ; на костре или углях. При этом перед жаркой проверяем, есть ли в ; вокруг чара огонь или угли. если есть жарим, иначе опять жгем костер. ; Готовый стейк скидывается в этот же сундук. ; ; Перед разжиганием костра проверяем, прошло ли 5 минут с момента последней ; попытки прокачать Spirit Speak, если прошло - качаем. ; sub cooking() VAR Sunduk = '0x40591B82' VAR Hvorost = '0x0DE1' VAR Koster = '0x0DE3' VAR Ugli = '0x0DE9' VAR Fish = '0x097A' VAR FishGot = '0x097B' VAR TX = 1873 VAR TY = 387 VAR i, flag ; VAR SpiritTime = UO.Timer() UO.CancelTarget() UO.Exec( 'set finddistance 3' ) ; UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) UO.UseObject( Sunduk ) While UO.SkillVal( 'Cooking' ) < 1000 ; EatChar( Sunduk, 2, 1, 120 ) ; ---------------------------------- ; блок запуска прокачки Spirit Speak ; If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; ; Прошло 5 минут с момента последней прокачки Spirit Speak ; SpSpeak() ; SpiritTime = UO.Timer() ; Endif ; ---------------------------------- wait(1000) UO.FindType( Hvorost, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'No kindling found. Script terminated' ) return Endif UO.MoveItem( 'finditem', '1', 'ground', str(TX), str(TY), str(UO.GetZ()) ) wait(1000) CheckLag() UO.Findtype( Hvorost, -1, 1 ) If UO.FindCount() > 0 Then repeat UO.UseFromGround( Hvorost ) wait(1000) UO.FindType( Koster, -1, 1 ) until UO.FindCount() > 0 ; костер горит flag = 1 repeat ; взять из сундука 1 стейк If UO.Count( Fish ) == 0 Then UO.FindType( Fish, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'No fish steaks found. Script terminated' ) return Endif UO.Grab( '1', 'finditem' ) wait(1000) CheckLag() Endif ; теперь проверим не погас ли костер, не исчезли ли угли UO.FindType( Koster, -1, 1 ) If UO.FindCount() <> 0 Then ; еще горит костер - жарим на нем стейк If UseSteake( Fish, UO.GetSerial('finditem') ) Then flag = 0 Endif ; стейк готов Else UO.FindType( Ugli, -1, 1 ) If UO.FindCount() <> 0 Then ; есть еще угли! if UseSteake( Fish, UO.GetSerial('finditem') ) then flag = 0 endif Else flag = 0 Endif Endif If UO.Count( FishGot ) > 0 Then UO.FindType( FishGot ) UO.MoveItem( 'finditem', -1, Sunduk ) wait(1000) CheckLag() Endif until flag == 0 Endif Wend endsub
Sub UseSteake( fish, koster ) VAR msg1 = 'You burn the food' ; физл VAR msg2 = 'You put the fish steak' ; успех VAR msg22 = 'You put the fish steaks' ; успех VAR msg3 = 'You must wait' ; ждать VAR msg4 = "You can't see the target" repeat DeleteJournal (msg1 ) DeleteJournal (msg2 ) DeleteJournal (msg22 ) DeleteJournal (msg3 ) DeleteJournal (msg4 ) UO.WaitTargetObject( 'finditem' ) UO.UseType( Fish ) repeat wait(500) until UO.InJournal(msg1) OR UO.InJournal(msg2) OR UO.InJournal(msg22) OR UO.InJournal(msg3) OR UO.InJournal(msg4) if UO.InJournal(msg4) then return 1 endif if UO.InJournal(msg3) then wait(500) endif until UO.InJournal(msg2) OR UO.InJournal(msg22) return 0 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
|