SkillUp.sc
Code: #===================================================================# # SkillUp, v.502.23 # # Скрипты для прокачки скиллов # #===================================================================# # # # 1. Прокачка крафтов # # ------------------- # # 1. Bowcraft. Крафтим шафты # # 2. Bowcraft. Крафтим стрелы # # 3. Poison # # 4. Mining. Плавим руду # # 5. Tailoring # # 6. Tailoring2 # # 7. Tinker # # 8. TinkerWood # # 9. Carpentry # # 10. CarpentryD # # 11. Cartograph # # 12. Inscript. Крафтим скроллы стрелок # # 13. Inscript. Крафтим скроллы реколлов # # 14. Veterinary (для двух чаров) # # 15. Veterinary (для одного чара) # # # # 2. Прокачка других скиллов # # -------------------------- # # 1. Magery # # 2. Music # # 3. Provocation # # 4. Enticment # # 5. Forensic # # 6. Hiding # # 7. Hiding & Stealth # # 8. MaceFighting (на кукле) # # 9. Fencing (на кукле) # # 10. Swordsmanship (на кукле) # # 11. Anatomy, Animal lore, Evalution Int # # 12. Camping # # 13. Cooking # # 14. Spirit Speak # # 15. Herding # # 16. Lockpicking # # 17. Begging # # 18. Snooping # # 19. Stealing # # # # 3. Процедуры # # ------------ # # # #===================================================================#
#===================================================================# # # I. Прокачка Крафтов # ##################################################################### ; Bowcraft. v.1.03b (c) Edred ; ; Чар берет из сундука логи, крафтит из них шафты ; и складывает эти шафты в этот же сундук. ; Если логи закончились - выход. ; Если даггер (или что вы там используете) сломался - ; скрипт найдет аналогичный по типу в бэкпаке и возьмет ; в руки. ; ; 1.03b: Проверка, если Kolvo = 1, то берем три и кладем обратно два ; лога. ; sub bowcraft() VAR Sunduk = '0x405210C8' ; Сериал сундука VAR Logi = '0x1BDD' ; Тип логов VAR Shafts = '0x1BD4' ; Тип шафтов VAR Kolvo = 10 ; Брать логов для одного крафта VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) While TRUE UO.FindType( Logi, -1, Sunduk ) ; Ищем логи в сундуке If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return else j = UO.GetQuantity( 'finditem' ) If j > Kolvo Then UO.Print( 'I can use ' + str( j ) + ' logs' ) else UO.Print( "I can't use " + str( j ) + " logs" ) return Endif Endif If Kolvo == 1 Then ; v. 1.03 UO.Grab( '3', 'finditem' ) wait(500) UO.FindType( Logi ) UO.MoveItem( 'finditem', '2', Sunduk ) wait(500) Else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) Endif ; А это - динамическая пауза на мув while UO.Count( Logi ) < Kolvo wait(100) wend ; проверка на то, что в руках по-прежнему даггер If CheckInstr() == 0 Then UO.Print("You don't have daggers!" ) return Endif UO.DeleteJournal() UO.CancelMenu() UO.WaitMenu ('What do you want to carve', 'shaft' ) UO.WaitTargetType( Logi ) UO.UseObject( dagger ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Shafts ) > 0 then UO.FindType( Shafts, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait(500) while UO.Count( Shafts ) > 0 wait(100) wend UO.Print( 'Shafts moved' ) Endif Wend end sub
##################################################################### ; Bowcraft2. v.1.04b (c) Edred ; ; Чар берет из сундука шафты и перья, крафтит из них стрелы и ; складывает эти стрелы в этот же сундук. ; Если шафты или перья закончились - выход. ; sub bowcraft2() VAR Sunduk = '0x405210C8' ; Сериал сундука VAR Shafts = '0x1BD4' ; Тип шафтов VAR Feather = '0x1BD1' ; Тип перьев VAR Arrows = '0x0F3F' ; Тип стрел VAR Kolvo = 1 ; Брать шафтов для одного крафта VAR k = 0, j UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) UO.CancelMenu() UO.AutoMenu ('Select arrow type', 'arrow' ) While TRUE EatChar( Sunduk, 2, 1, 120 ) If UO.Count( Shafts ) == 0 Then UO.FindType( Shafts, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Shafts not found, script terminated") return Endif UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Shafts ) < Kolvo wait(100) wend CheckLag() Endif If UO.Count( Feather ) == 0 Then UO.FindType( Feather, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Feather not found, script terminated") return Endif UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Feather ) < Kolvo wait(100) wend CheckLag() Endif UO.DeleteJournal() UO.UseType( Shafts ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Arrows ) > 0 then UO.FindType( Arrows, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait(500) while UO.Count( Arrows ) > 0 wait(100) wend UO.Print( 'Arrows moved' ) Endif Wend end sub
##################################################################### sub poison() ; v. 1.02 (c) Edred ; Положите рядом с чаром на пол побольше меду и lesser poison, ; поставьте рядом сундук, занесите его сериал в переменную ; Sunduk (туда будут сбрасываться пустые бутылки и отравленный мед) ; Если что-то не берет - значит положили далеко от чара, ; поправьте цифру в команде set finddistance ; VAR Sunduk = '0x404331B7' VAR Med = '0x09EC' VAR LesPois = '0x0F0A' VAR EmpBot = '0x0F0E' VAR MedSer, k UO.Exec('set finddistance 2') While TRUE UO.FindType( Med, -1, 1 ) If UO.FindCount() == 0 Then UO.Print("Jars not found, script terminated") return Endif UO.Grab( '1', 'finditem' ) wait( 2000 ) UO.FindType( LesPois, -1, 1 ) If UO.FindCount() == 0 Then UO.Print("Bottle of Poison not found, script terminated") return Endif UO.Grab( '1', 'finditem' ) wait( 2000 ) UO.DeleteJournal() UO.WaitTargetType( Med ) UO.UseObject( 'finditem' ) k = 0 while NOT UO.InJournal('You apply lesser poison') AND NOT UO.InJournal('You fail to apply lesser poison') AND ( k < 30 ) k = k + 1 wait(500) wend UO.Print( 'meda v pake ' + str( UO.Count( Med ) ) ) if UO.Count( Med ) > 0 then UO.FindType( Med, -1, 'backpack' ) UO.MoveItem( 'finditem', 0, Sunduk ) wait( 2000 ) UO.Print( 'Jar dropped' ) end if if UO.Count( EmpBot ) > 0 then UO.FindType( EmpBot, -1, 'backpack' ) UO.MoveItem( 'finditem', 0, Sunduk ) wait( 2000 ) UO.Print( 'Empty bottle dropped' ) end if Wend end sub
##################################################################### ; Training of Mining, ver 2.00b, (c) Edred ; 2.00b - добавляем сундук, откуда берется руда по 100 шт. и кидается ; под ногм. Дальше как было. Заодно все правлю и переписываю ; более правильно :) sub Smelt() VAR Sunduk = '0x40437910' ; Сериал сундука с рудой VAR Ruda1 = '0x19B9' ; Тип руды VAR Ruda2 = '0x19B8' ; Тип руды - 3 шт. VAR Ruda3 = '0x19BA' ; Тип руды - 2 шт. VAR Ruda4 = '0x19B7' ; Тип руды - 1 шт. VAR Ing1 = '0x1BEF' ; Тип ингов металлов VAR Ing2 = '0x1BF2' ; Тип ингов строймата VAR MaxVes = 200 ; Максимальный вес пака While UO.SkillVal( 'Mining' ) < 1000 repeat UO.Findtype( Ruda1, '-1', '1' ) ; Ищем руду на земле If UO.Findcount() == 0 Then UO.Findtype( Ruda2, '-1', '1' ) If UO.Findcount() == 0 Then UO.Findtype( Ruda3, '-1', '1' ) If UO.Findcount() == 0 Then UO.Findtype( Ruda4, '-1', '1' ) If UO.Findcount() == 0 Then If GetOre( Sunduk, Ruda1 ) == 0 Then UO.Print( "No more ore for smelt..." ) Return Endif Endif Endif Endif Endif until UO.FindCount() > 0 UO.Grab( '1', 'finditem' ) Wait(500) CheckLag() UO.UseType( Ruda4 ) ; переплавляем Wait(500) CheckLag() If UO.Weight > MaxVes Then ; Максимальный вес пака превышен - разгружаемся UO.Findtype( Ing1 ) If UO.Findcount() > 0 Then UO.MoveItem( 'finditem', '0', Sunduk ) Wait(500) CheckLag() Endif UO.Findtype( Ing2 ) If UO.Findcount() > 0 Then UO.MoveItem( 'finditem', '0', Sunduk ) Wait(500) CheckLag() Endif Endif Wend endsub
Sub GetOre( cont, typ ) ; Взять из сундука 100 руды и бросить под ноги. ; Если руды нет - возвращаем 0, если есть 1 UO.FindType( typ, '-1', cont ) If UO.FindCount() == 0 Then return 0 Else UO.Grab( '100', 'finditem' ) wait(500) CheckLag() UO.FindType( typ ) If UO.FindCount() == 0 Then UO.Print( 'Idiot! Your script is fuck!' ) Else UO.Drophere( 'finditem' ) wait(500) CheckLag() Endif Endif return 1 endsub
##################################################################### ; Tailoring. v.1.04b (c) Edred ; ; Два сундука: в одном много кожи и воска, а также лежит много пустых мешков. ; В другой чар будет класть мешки и наполнять их картами (по 200 штук в ; каждый). ; ; (1.04b) - переделываю. Все берется из одного сундука, и мат, и мешки. ; Переходим заодно на AutoMenu, вводим чеклаг и всякие доп проверки. ; sub tailoring() VAR Sunduk1 = '0x4043310C' ; Сериал сундука с пустыми мешками VAR Sunduk2 = '0x40403350' ; Сериал пустого сундука VAR Meshok = '0x0E76' ; Тип мешка VAR Shkur = '0x1067' ; Тип шкур VAR Vosk = '0x1423' ; Тип воска VAR Kit = '0x0F9D' ; Тип инструмента тейлора VAR Map = '0x14EB' ; Тип карты VAR Kolvo = 200 ; Брать шкур и воска VAR MeshSer, j, ShkurSer, k, i VAR Med = '0x09EC' ; Тип меда VAR success = 'You put' VAR fizzle = 'fail' UO.CancelMenu() UO.AutoMenu( "Leather", "Blank's" ) UO.AutoMenu("Blank's", "blank map" ) While TRUE # Перекладываем один мешок в сундук 2 UO.FindType( Meshok, '-1', Sunduk1 ) ; Ищем мешок в сундуке 1 MeshSer = UO.GetSerial( 'finditem' ) UO.MoveItem( MeshSer, '0', Sunduk2 ) wait(500) CheckLag() i = 0 repeat If UO.Count( Shkur ) < 10 Then If GetResource( Shkur, 200 - UO.Count( Shkur ), Sunduk1 ) == 0 Then return Endif Endif If UO.Count( Vosk ) < 10 Then If GetResource( Vosk, 200 - UO.Count( Vosk ), Sunduk1 ) == 0 Then return Endif Endif UO.Print('Ostalos ' + Str( UO.Count( Shkur ) ) + ' shkur' ) DeleteJournal( success ) DeleteJournal( fizzle ) UO.FindType( Shkur ) UO.WaitTargetObject( 'finditem' ) UO.UseType( Kit ) k = 0 repeat k = k + 1 wait(500) until UO.InJournal( success ) OR UO.InJournal( fizzle ) OR ( k > 30 ) If UO.Count( Map ) > 0 Then i = i + 1 UO.FindType( Map ) UO.MoveItem( 'finditem', '0', MeshSer ) wait(500) CheckLag() UO.Print( str(i) + ' maps moved' ) Endif Until i > 199 Wend endsub
##################################################################### ; Tailor2. v.1.05b (c) Edred ; sub tailoring2() VAR Sunduk = "0x4043310C" VAR Kozha = "0x1067" VAR Vosk = "0x1423" VAR Kit = "0x0F9D" VAR Scrol = "0x0E34" VAR k UO.CancelMenu() wait(500) UO.AutoMenu( "Leather", "Blank's" ) UO.AutoMenu( "Blank's", "blank scroll" ) While TRUE If UO.Count( Kozha ) == 0 Then UO.FindType( Kozha, '-1', Sunduk ) If UO.FindCount() == 0 Then UO.Print("Leathers not found, script terminated") return Endif UO.Grab( '1', 'finditem' ) wait(500) while UO.Count( Kozha ) == 0 wait(100) wend Endif If UO.Count( Vosk ) == 0 Then UO.FindType( Vosk, '-1', Sunduk ) If UO.FindCount() == 0 Then UO.Print("Beeswaxs not found, script terminated") return Endif UO.Grab( '1', 'finditem' ) wait(500) while UO.Count( Vosk ) == 0 wait(100) wend Endif UO.DeleteJournal() UO.WaitTargetType( Kozha ) UO.UseType( Kit ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend if UO.Count( Scrol ) > 0 then UO.FindType( Scrol ) UO.MoveItem( 'finditem', '0', Sunduk ) wait( 500 ) while UO.Count( Scrol ) > 0 wait(100) wend endif Wend UO.CancelMenu() end sub
##################################################################### ; Tinker. v.1.03b (c) Edred ; ; Чар берет из сундука инготы, крафтит из них бутылки ; и складывает эти бутылки в этот же сундук. ; Если инги закончились - выход. ; sub tinker() VAR Sunduk = '0x4052561D' ; Сериал сундука VAR Ingi = '0x1BEF' ; Тип ингов VAR Instrum = '0x1EBC' ; Тип инструмента тинкера VAR Bottle = '0x0F0E' ; Тип бутылки VAR Kolvo = 200 ; Брать ингов VAR k = 0 UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) ; Начало отсчета скрипта While TRUE EatChar( Sunduk, 2, 2, 60 ) UO.FindType( Ingi, -1, Sunduk ) ; Ищем инги в сундуке If UO.FindCount() == 0 Then UO.Print("Iron Ingots not found, script terminated") return Endif UO.Grab( Str( Kolvo ), 'finditem' ) wait( 2000 ) While UO.Count( Ingi ) > 0 ; Пока в паке есть инги ; UO.CancelMenu() UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' ) UO.DeleteJournal() UO.WaitMenu ('Tinkering', 'Tools', 'Tools', 'empty bottle' ) UO.UseType( Instrum ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) k = k + 1 wait(500) wend if UO.Count( Bottle ) > 0 then UO.FindType( Bottle, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait( 1000 ) UO.Print( 'Bottle moved' ) end if Wend Wend end sub
##################################################################### ; TinkerWood. v.1.02b (c) Edred ; ; Чар берет с пола логи, крафтит из них игровые доски ; и скидывает их в трэш. ; Если логи на полу закончились - выход. ; sub tinkerwood() VAR MyTrash = '0x4042F38E' ; Сериал мусорки VAR Logi = '0x1BDD' ; Тип логов (logs type) VAR Instrum = '0x1EBC' ; Тип инструмента тинкера VAR Chess = '0x0E1C' ; Тип игровой доски VAR Kolvo = 300 ; Брать логов (Count of logs for a one grab) VAR j, k While TRUE UO.FindType( Logi, -1, 1 ) ; Ищем логи на полу UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак wait( 1000 ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return Endif While UO.Count( Logi ) > 4 ; Пока в паке есть логи UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' ) UO.DeleteJournal() UO.CancelMenu() UO.WaitMenu ('Tinkering', 'Tavern Types', 'Tavern Types', 'backgammon board' ) UO.UseType( Instrum ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) k = k + 1 wait(500) wend ; Wait( 14000 ) ; Скрафтили доску ; Сразу переложим ее в трэш while UO.Count( Chess ) > 0 UO.FindType( Chess ) UO.MoveItem( 'finditem', 0, MyTrash ) wait( 1000 ) UO.Print( 'Backgammon board trashed' ) wend Wend Wend end sub
##################################################################### ; TinkerLockPick. v.1.00b (c) Edred ; ; Чар берет из сундука инготы, крафтит из них отмычки ; и складывает эти отмычки в этот же сундук. ; Если инги закончились - выход. ; sub tinker() VAR Sunduk = '0x4052561D' ; Сериал сундука VAR Ingi = '0x1BEF' ; Тип ингов VAR Instrum = '0x1EBC' ; Тип инструмента тинкера VAR LPick = '0x14FB' ; Тип отмычки VAR Kolvo = 200 ; Брать ингов VAR k = 0 UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) ; Начало отсчета скрипта While TRUE EatChar( Sunduk, 2, 2, 60 ) UO.FindType( Ingi, -1, Sunduk ) ; Ищем инги в сундуке If UO.FindCount() == 0 Then UO.Print("Iron Ingots not found, script terminated") return Endif UO.Grab( Str( Kolvo ), 'finditem' ) wait( 2000 ) While UO.Count( Ingi ) > 0 ; Пока в паке есть инги ; UO.CancelMenu() UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' ) UO.DeleteJournal() UO.WaitMenu ('Tinkering', 'Keys', 'Keys and Lockpicks', 'Iron lockpick' ) UO.UseType( Instrum ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) k = k + 1 wait(500) wend if UO.Count( LPick ) > 0 then UO.FindType( LPick, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait( 1000 ) UO.Print( 'Lockpicks moved' ) end if Wend Wend end sub
##################################################################### ; Carpentry. v.1.13b (c) Edred ; ; Чар берет из сундука 1 пустой мешок, кладет этот мешок в сундук 2, ; берет с пола логи, крафтит из них удочки и складывает эти удочки ; в этот мешок в сундуке 2. Если логи на полу или пустые мешки ; кончились - выход ; sub carpentry() VAR Sunduk1 = '0x4017439B' ; Сериал сундука с пустыми мешками VAR Sunduk2 = '0x4000F46C' ; Сериал пустого сундука VAR Meshok = '0x0E76' ; Тип мешка VAR Logi = '0x1BDD' ; Тип логов VAR Rubanok = '0x1031' ; Тип инструмента карпентера VAR Udochka = '0xDBF' ; Тип удочки VAR Kolvo = 460 ; Брать логов (2 лога = 1 удочка) VAR MeshSer, j, k While TRUE UO.FindType( Logi, -1, 1 ) ; Ищем логи на полу UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак wait( 2000 ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return Endif UO.FindType( Meshok, -1, Sunduk1 ) ; Ищем мешок в сундуке 1 MeshSer = UO.GetSerial( 'finditem' ) UO.Grab( '1', 'finditem' ) ; Кладем его в бэкпак wait( 2000 ) UO.MoveItem( MeshSer, 0, Sunduk2 ) wait( 2000 ) While UO.Count( Logi ) > 0 ; Пока в паке есть логи UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' ) UO.DeleteJournal() UO.CancelMenu() UO.WaitMenu ('Carpentry', 'Fishing Poles', 'Fishing Poles', 'fishing pole' ) UO.UseType( Rubanok ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) k = k + 1 wait(500) wend ; Wait( 14000 ) ; Скрафтили удочку ; Сразу переложим ее в мешок if UO.Count( Udochka ) > 0 then UO.FindType( Udochka, -1, 'backpack' ) UO.MoveItem( 'finditem', 0, MeshSer ) wait( 2000 ) UO.Print( 'Udochka perelozhena' ) end if Wend Wend end sub
##################################################################### ; Carpentry. v.1.14D (c) Edred ; ; Чар берет берет с пола логи, крафтит из них удочки и скидывает удочки ; в трэш. Если логи на полу кончились - выход. ; (Get logs from ground and craft fishing pole. Move fishing pole trash) ; ; v. 1.13D Special Edition (for Democratic) ; v. 1.14D Special Edition (for Chyzzzz): берем логи из сундука. Заодно ; немного причесываю скрипт и переходим на Automenu. ; sub carpentryD() VAR MyTrash = '0x4017439B' ; Сериал мусорки (ID of trash) VAR Sunduk = '0x4017439B' ; Сериал сундука с логами VAR Logi = '0x1BDD' ; Тип логов (logs type) VAR Rubanok = '0x1031' ; Тип инструмента (carpentry tools type) VAR Udochka = '0xDBF' ; Тип удочки (fishing pole type) VAR Kolvo = 200 ; Брать логов (Count of logs for a one grab) VAR j, k, sum = 0 UO.CancelMenu() UO.AutoMenu ('Carpentry', 'Fishing Poles' ) UO.AutoMenu ('Fishing Poles', 'fishing pole' ) UO.UseObject( Sunduk ) wait(1000) CheckLag() While UO.SkillVal( 'Carpentry' ) < 1000 UO.FindType( Logi, '-1', Sunduk ) ; Ищем логи в сундуке UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак wait( 1000 ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return Endif While UO.Count( Logi ) > 0 ; Пока в паке есть логи UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' ) UO.DeleteJournal() UO.UseType( Rubanok ) k = 0 repeat k = k + 1 wait(500) until UO.InJournal('You put') OR UO.InJournal('fail') OR ( k > 30 ) If UO.InJournal('You put') Then sum = sum + 1 UO.Print( 'Crafted ' + str(sum) + ' fishing poles' ) Endif while UO.Count( Udochka ) > 0 UO.FindType( Udochka ) UO.MoveItem( 'finditem', '0', MyTrash ) wait( 500 ) CheckLag() Wend Wend Wend endsub
##################################################################### ; Cartography. v.1.02b (c) Edred ; ; Ищем в сундуке 1 мешок с картами, берем по очереди из него карты, ; качаем на них картографию (с повторами в случае физлов), потом скидываем ; карты в трэш. Если мешки кончились - выход. ; ; 1.02 - добавил кормежку и прокачку спирит спика. Убрал заодно "ересь". ; По-хорошему, скрипт надо переписать, структура рыхлая, но лень ; sub cartograph() VAR Sunduk1 = '0x40403350' ; Сериал сундука с мешками с картами VAR Trash = '0x403D6BCA' ; Сериал мусорного ведра VAR Meshok = '0x0E76' ; Тип мешка VAR Map = '0x14EB' ; Тип карты VAR Fizzle = 'Thy trembling hand results' VAR Success = 'You put the map in your pack' VAR MeshSer, j, k, MapSer, flag UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) VAR SpiritTime = UO.Timer() UO.CancelMenu() UO.IgnoreReset() UO.AutoMenu( 'What sort of map', 'Sea Chart' ) UO.FindType( Meshok, '-1', Sunduk1 ) While UO.FindCount() > 0 EatChar( Sunduk1, 2, 1, 120 ) MeshSer = UO.GetSerial( 'finditem' ) UO.UseObject( MeshSer ) wait(500) CheckLag() UO.FindType( Map, '-1', MeshSer ) While UO.FindCount() > 0 MapSer = UO.GetSerial( 'finditem' ) UO.Grab( '1', 'finditem' ) repeat wait(100) until UO.Count( Map ) == 1 flag = 0 While flag == 0 DeleteJournal( Fizzle ) DeleteJournal( Success ) UO.UseObject( MapSer ) k = 0 repeat k = k + 1 wait(100) until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR k > 1200 If UO.InJournal( Success ) OR k > 1200 Then flag = 1 Endif Wend UO.FindType( Map ) While UO.FindCount() > 0 UO.MoveItem( 'finditem', '0', Trash ) wait(1000) CheckLag() UO.FindType( Map ) Wend If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; Прошло 5 минут с момента последней прокачки Spirit Speak SpSpeak() SpiritTime = UO.Timer() Endif UO.FindType( Map, '-1', MeshSer ) Wend UO.Ignore( MeshSer ) UO.FindType( Meshok, '-1', Sunduk1 ) Wend UO.IgnoreReset() UO.CancelMenu() endsub
##################################################################### ; Inscription. v.1.04b (c) Edred ; ; Берем из сундука blank scroll, nightshade, black pearl, ; крафтим из них скролл Magic Arrow (с повторами в случае физлов), ; потом скидываем готовый скролл в тот же сундук. ; Если что-либо кончилось - выход.
sub inscript1() VAR Sunduk = '0x404CFAA3' ; Сериал сундука с бланкскроллами и регами VAR Blank = '0x0E34' ; Тип бланк скролла VAR Arrow = '0x1F5F' ; Тип скроллов Flame Strike VAR Reg1 = '0x0F8C' ; SA VAR Reg2 = '0x0F8D' ; SS VAR Fizzle = 'You fail to inscribe the scroll' VAR Success = 'You put the' VAR k UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) VAR SpiritTime = UO.Timer() UO.CancelMenu() UO.AutoMenu( 'Spell Circles', 'Seventh Circle' ) UO.AutoMenu( 'Spell Circle 7', 'Flamestrike' ) UO.UseObject( Sunduk ) wait(1000) While UO.SkillVal( 'Inscription' ) < 1000 ; берем бланк скроллы EatChar( Sunduk, 2, 1, 120 ) If UO.Count( Blank ) == 0 Then UO.FindType( Blank, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Blank Scroll not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Blank ) > 0 CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Blank ) == 100 CheckLag() Endif Endif ; берем найтшэд If UO.Count( Reg1 ) == 0 Then UO.FindType( Reg1, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Nightshade not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Reg1 ) > 0 CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Reg1 ) == 100 CheckLag() Endif Endif ; берем блэкперл If UO.Count( Reg2 ) == 0 Then UO.FindType( Reg2, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Black Pearls not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Reg2 ) > 0 CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Reg2 ) == 100 CheckLag() Endif Endif repeat DeleteJournal( Fizzle ) DeleteJournal( Success ) UO.UseType( Blank ) k = 0 repeat k = k + 1 wait(100) until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0 OR k > 600 If UO.Mana < 50 Then repeat UO.UseSkill( 'Meditation' ) wait(2000) until UO.Mana == UO.Int Endif If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; Прошло 5 минут с момента последней прокачки Spirit Speak SpSpeak() SpiritTime = UO.Timer() Endif Until UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0 While UO.Count( Arrow ) > 0 UO.FindType( Arrow ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', 0, Sunduk ) wait(1000) CheckLag() Endif Wend Wend UO.CancelMenu() endsub
##################################################################### ; Inscription2. v.1.05b (c) Edred ; ; Берем из сундука blank scroll, blood pearl, black moss, mandrake root ; крафтим из них скролл Recall (с повторами в случае физлов), ; потом скидываем готовый скролл в тот же сундук. ; Если что-либо кончилось - выход.
sub inscript2() VAR Sunduk = '0x40140DD1' ; Сериал сундука с бланкскроллами и регами VAR Blank = '0x0E34' ; Тип бланк скролла VAR Arrow = '0x1F4C' ; Тип скроллов Recall VAR Reg1 = '0x0F86' ; mandrake root VAR Reg2 = '0x0F7A' ; black pearl VAR Reg3 = '0x0F7B' ; blood moss VAR Fizzle = 'You fail to inscribe the scroll' VAR Success = 'You put the' VAR k UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) VAR SpiritTime = UO.Timer() UO.CancelMenu() UO.AutoMenu( 'Spell Circles', 'Fourth Circle' ) UO.AutoMenu( 'Spell Circle 4', 'Recall' ) UO.UseObject( Sunduk ) wait(1000) While UO.SkillVal( 'Inscription' ) < 1000 ; берем бланк скроллы EatChar( Sunduk, 2, 1, 120 ) UO.Print( 'test2' ) If UO.Count( Blank ) == 0 Then UO.FindType( Blank, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Blank Scroll not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Blank ) > 0 wait(100) CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Blank ) == 100 wait(100) CheckLag() Endif Endif ; берем mandrake root If UO.Count( Reg1 ) == 0 Then UO.FindType( Reg1, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Mandrake Root not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Reg1 ) > 0 wait(100) CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Reg1 ) == 100 wait(100) CheckLag() Endif Endif ; берем black pearl If UO.Count( Reg2 ) == 0 Then UO.FindType( Reg2, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Black Pearls not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Reg2 ) > 0 wait(100) CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Reg2 ) == 100 wait(100) CheckLag() Endif Endif ; берем blood moss If UO.Count( Reg3 ) == 0 Then UO.FindType( Reg3, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print( 'Blood Moss not found. Script terminated' ) return Endif If UO.GetQuantity( 'finditem' ) < 100 Then UO.Grab( '0', 'finditem' ) repeat wait(100) until UO.Count( Reg3 ) > 0 CheckLag() Else UO.Grab( '100', 'finditem' ) repeat wait(100) until UO.Count( Reg3 ) == 100 CheckLag() Endif Endif repeat ; If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; ; Прошло 5 минут с момента последней прокачки Spirit Speak ; SpSpeak() ; SpiritTime = UO.Timer() ; Endif DeleteJournal( Fizzle ) DeleteJournal( Success ) UO.UseType( Blank ) k = 0 repeat k = k + 1 wait(100) until UO.InJournal(Fizzle) OR UO.InJournal(Success) OR UO.Count(Blank)==0 OR UO.Count(Reg1)==0 OR UO.Count(Reg2)==0 OR UO.Count(Reg3)==0 OR k > 600 If UO.Mana < 10 Then repeat UO.UseSkill( 'Meditation' ) wait(2000) until UO.Mana == UO.Int Endif Until UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0 OR UO.Count( Reg3 ) == 0 UO.Print( 'test1' ) While UO.Count( Arrow ) > 0 UO.FindType( Arrow ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', 0, Sunduk ) wait(1000) CheckLag() Endif Wend Wend UO.CancelMenu() endsub
##################################################################### ; Veterinar. v.1.08 (c) Edred ; ; Ставим рядом двух чаров, у каждого по лошади. Рядом с чарами ; сундук. В сундук чистые бинты. Сериалы лошадей каждому в скрипт. ; Стравливаем лошадей (можно использовать скрипт provocat2.sc) и ; качаемся. Внимание! При низком скилле за работой скрипта надо ; следить (одним чаром, вытащив на экран статусы обоих лошадей) и ; периодически садиться на лошадь и отъезжать в сторону, слезать с нее ; и давать обоим чарам вылечить лошадей полностью. После 40-45 скилла ; нужда в этом отпадает (скилл растет быстро). ; sub Veterinar() VAR Sunduk = '0x4048E250' ; Сериал сундука с бинтами и медом VAR Bandag = '0x0E21' ; Тип бинтов VAR BlBandag = '0x0E20' ; Тип грязных бинтов VAR Horse1 = '0x0040F759' ; Сериал лошади ЭТОГО чара VAR fizzle = 'You apply bandages to a horse but fail' VAR Success = 'You apply the bandages to a horse' VAR mustwait = 'You must wait to use bandages again' VAR k UO.UseObject( Sunduk ) wait(1000) While UO.SkillVal( 'Veterinary' ) < 1000 If UO.Count( Bandag ) < 10 Then UO.FindType( Bandag, '-1', Sunduk ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', '200' ) wait(500) CheckLag() Else UO.Print( 'Bandage not found! Script terminated!' ) return Endif UO.FindType( BlBandag ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', '0', sunduk ) wait(500) CheckLag() Endif Endif If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then DeleteJournal( fizzle ) DeleteJournal( success ) DeleteJournal( mustwait ) UO.Print( 'Veterinary!' ) UO.WaitTargetObject( Horse1 ) UO.UseType( Bandag ) k = 0 repeat wait(100) k = k + 1 until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30 If UO.InJournal( success ) Then wait(2500) Endif If UO.InJournal( mustwait ) Then wait(500) Endif wait(1500) Else wait(500) Endif Wend endsub ; Sub Provocat2() ; Для провокации вам в паке необходим муз.инструмент! ; VAR ser1, ser2 VAR Horse1 = '0x00C8', Horse2 = '0x00E2' UO.Set( 'finddistance', '2' ) UO.FindType( Horse1, '-1', '1' ) If UO.FindCount() == 0 Then UO.FindType( Horse2, '-1', '1' ) If UO.FindCount() == 0 Then UO.Print( 'Horse 1 not found!' ) return Endif Endif ser1 = UO.GetSerial( 'finditem' ) UO.Print( ser1 ) UO.Ignore( 'finditem' ) UO.FindType( Horse1, '-1', '1' ) If UO.FindCount() == 0 Then UO.FindType( Horse2, '-1', '1' ) If UO.FindCount() == 0 Then UO.Print( 'Horse 2 not found!' ) UO.IgnoreReset() return Endif Endif ser2 = UO.GetSerial( 'finditem' ) UO.Print( ser2 ) UO.IgnoreReset() UO.WaitTargetObject( ser1, ser2 ) UO.UseSkill( 'Provocation' ) endsub
##################################################################### ; Veterinar2. v.1.03 (c) Edred ; ; Ставим две лошади напротив друг друга, кладем в сундук рядом с чаром ; чистые бинты, мед. Натравливаем при помощи провокации одну лошадь на ; другую и запускаем скрипт. Скрипт контролирует здоровье обеих лошадей ; и, если необходимо, подлечивает их с бинтов. Бинты он берет из сундука ; и туда же скидывает грязные. Скрипт с подкормкой чара и прокачкой ; спирит спик. Скрипт сам определяет сериалы лошадей и сам их провоцирует ; на атаку (если у вас не прокачан скилл Провокация, отключите этот блок - ; он отмечен в коде). Для провоцирования вы должны иметь муз. инструмент ; в паке. ; sub veterinar2() VAR Sunduk = '0x4048E250' ; Сериал сундука с бинтами и медом VAR Bandag = '0x0E21' ; Тип бинтов VAR BlBandag = '0x0E20' ; Тип грязных бинтов VAR Horse1, Horse2, k VAR HorTyp1 = '0x00C8', HorTyp2 = '0x00E4' VAR fizzle = 'You apply bandages to a horse but fail' VAR Success = 'You apply the bandages to a horse' VAR mustwait = 'You must wait to use bandages again' UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) VAR SpiritTime = UO.Timer() UO.UseObject( Sunduk ) wait(1000) ### Блок определения сериалов лошадей UO.Set( 'finddistance', '3' ) UO.FindType( HorTyp1, '-1', '1' ) If UO.FindCount() == 0 Then UO.FindType( HorTyp2, '-1', '1' ) If UO.FindCount() == 0 Then UO.Print( 'Horse 1 not found!' ) return Endif Endif Horse1 = UO.GetSerial( 'finditem' ) UO.Print( Horse1 ) UO.Ignore( 'finditem' ) UO.FindType( HorTyp1, '-1', '1' ) If UO.FindCount() == 0 Then UO.FindType( HorTyp2, '-1', '1' ) If UO.FindCount() == 0 Then UO.Print( 'Horse 2 not found!' ) UO.IgnoreReset() return Endif Endif Horse2 = UO.GetSerial( 'finditem' ) UO.Print( Horse2 ) UO.IgnoreReset() ### Блок провоцирования одной лошади на другую. Без ретрейнов - у меня ГМ. UO.WaitTargetObject( Horse1, Horse2 ) UO.UseSkill( 'Provocation' ) wait(1000) ### Блок прокачки While UO.SkillVal( 'Veterinary' ) < 1000 If UO.Count( Bandag ) < 10 Then UO.FindType( Bandag, '-1', Sunduk ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', '200' ) wait(500) CheckLag() Else UO.Print( 'Bandage not found! Script terminated!' ) return Endif UO.FindType( BlBandag ) If UO.FindCount() > 0 Then UO.MoveItem( 'finditem', '0', sunduk ) wait(500) CheckLag() Endif Endif EatChar( Sunduk, 2, 1, 60 ) If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; Прошло 5 минут с момента последней прокачки Spirit Speak SpSpeak() SpiritTime = UO.Timer() Endif If ( UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) ) OR ( UO.GetHP( Horse2 ) < UO.GetMaxHP( Horse2 ) ) Then # Здесь я решил организовать так: чар лечит сначала ту лошадь, здоровья у которой меньше. Естественно, # если одна из лошадей здорова - то у второй меньше здоровья, иначе бы мы в If не вошли. If UO.GetHP( Horse1 ) < UO.GetHP( Horse2 ) Then ; лечим первую лошадь DeleteJournal( fizzle ) DeleteJournal( success ) DeleteJournal( mustwait ) UO.Print( 'Veterinary!' ) UO.WaitTargetObject( Horse1 ) UO.UseType( Bandag ) k = 0 repeat wait(100) k = k + 1 until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30 If UO.InJournal( success ) Then wait(2500) Endif If UO.InJournal( mustwait ) Then wait(500) Endif wait(1500) Else wait(500) Endif If UO.GetHP( Horse1 ) > = UO.GetHP( Horse2 ) Then ; лечим вторую лошадь DeleteJournal( fizzle ) DeleteJournal( success ) DeleteJournal( mustwait ) UO.Print( 'Veterinary!' ) UO.WaitTargetObject( Horse2 ) UO.UseType( Bandag ) k = 0 repeat wait(100) k = k + 1 until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30 If UO.InJournal( success ) Then wait(2500) Endif If UO.InJournal( mustwait ) Then wait(500) Endif wait(1500) Else wait(500) Endif Else wait(300) Endif Wend endsub #===================================================================# # # I. Прокачка других скиллов # ##################################################################### sub Magery() ; ver. 2.01 (c) Edred ; ; Вводим сундук (пак) с найтшэдом, вводим подкормку чара. ; VAR sunduk = '0x40531245' VAR targ = '0x4041C420' VAR mir = 'You are at peace' VAR NS = '0x0F88' UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) UO.UseObject( sunduk ) wait(1000) CheckLag() While UO.SkillVal( 'Magery' ) < 1000 If UO.Count( NS ) == 0 Then UO.Findtype( NS, '-1', sunduk ) If UO.FindCount() == 0 Then UO.Print( 'NightShade not found, script terminated' ) return Endif UO.MoveItem( 'finditem', '100' ) wait(500) CheckLag() Endif If UO.Mana < 20 Then DeleteJournal( mir ) repeat UO.UseSkill( 'Meditation' ) wait(2000) until UO.InJournal( mir ) EatChar( sunduk, 2, 1, 60 ) Endif UO.WaitTargetObject( targ ) UO.Cast( 'Poison' ) wait(3000) Wend endsub
##################################################################### sub music() VAR Gitara = '0x0EB4' ; тип балалайки repeat UO.UseType( Gitara ) wait(2000) until UO.Dead() endsub
##################################################################### sub provocat() ; Provocation VAR Horse1 = '0x004033E5' ; лошадь 1 VAR Horse2 = '0x0040349F' ; лошадь 2 repeat UO.WaitTargetObject( Horse1, Horse2 ) UO.UseSkill( 'Provocation' ) wait(2000) until UO.Dead() endsub
##################################################################### sub entic() ; Enticement VAR Horse1 = '0x004033E5' ; лошадь 1 repeat UO.WaitTargetObject( Horse1 ) UO.UseSkill( 'Enticement' ) wait(1000) until UO.Dead() endsub
##################################################################### ; Forensic. v.1.00b (c) Edred ; sub forensic() UO.WarMode( 0 ) repeat UO.DeleteJournal() UO.WaitTargetObject( 'lastcorpse' ) UO.UseSkill( 'Forensic' ) repeat wait(100) until UO.InJournal( "This is the corpse" ) OR UO.InJournal( "This is Body" ) OR UO.InJournal( "You can tell nothing" ) OR UO.InJournal( "You can't see the target" ) until UO.InJournal( "You can't see the target" ) UO.WarMode( 1 ) endsub
##################################################################### sub Hidonly() while UO.SkillVal( 'Hiding' ) < 1000 UO.UseSkill('Hiding') Wait(4000) wend endsub
##################################################################### sub HidStealth() ; while UO.SkillVal( 'Hiding' ) < 1000 AND UO.SkillVal( 'Stealth' ) < 1000 while UO.DEX < 100 while (UO.GetX() <> 1852) GoHide() UO.Press( 36 ) wait(1000) wend while (UO.GetX() <> 1864) GoHide() UO.Press( 34 ) wait(1000) wend wend endsub
##################################################################### sub macef() VAR Kukla = '0x40429852', flag = 1 VAR maul = '0x143A' while UO.SkillVal( 'Mace Fighting' ) < 600 flag = GetDagger( maul ) If flag == 0 Then UO.Print( 'Maul not found!' ) return Endif UO.UseObject( Kukla ) wait(4000) If UO.Life < 100 Then UO.SayU( 'Guards!' ) Endif wend endsub
##################################################################### sub fencing() VAR Kukla = '0x40429852', flag = 1 VAR Dagger = '0x0F51' while UO.SkillVal( 'Fencing' ) < 600 flag = GetDagger( Dagger ) If flag == 0 Then UO.Print( 'Dagger not found!' ) return Endif UO.UseObject( Kukla ) wait(4000) If UO.Life < 50 Then UO.SayU( 'Guards!' ) Endif wend endsub
##################################################################### sub swordsman() VAR Kukla = '0x40429852', flag = 1 VAR sword = '0x13FE' while UO.SkillVal( 'Swordsmanship' ) < 600 OR UO.Str < 150 flag = GetDagger( sword ) If flag == 0 Then UO.Print( 'Katana not found!' ) return Endif UO.UseObject( Kukla ) wait(4000) If UO.Life < 50 Then UO.SayU( 'Guards!' ) Endif wend endsub
##################################################################### sub Intell() VAR Anima = '0x005F631D' VAR ms1 = "a horse looks superhumanly strong" VAR ms2 = "think of anything" VAR ms3 = "it is loyal" VAR ms4 = "a horse looks dumb as a rock" VAR ms5 = "You cannot seem to judge" VAR k while UO.SkillVal( 'Evaluating Intelligence' ) < 1000 DeleteJournal( ms1 ) DeleteJournal( ms2 ) UO.WaitTargetObject( Anima ) UO.UseSkill( 'Anatomy' ) CheckLag() k = 0 repeat wait(100) k = k + 1 until UO.InJournal( ms1 ) OR UO.InJournal( ms2 ) OR k > 30 DeleteJournal( ms3 ) DeleteJournal( ms2 ) UO.WaitTargetObject( Anima ) UO.UseSkill( 'Animal Lore' ) CheckLag() k = 0 repeat wait(100) k = k + 1 until UO.InJournal( ms3 ) OR UO.InJournal( ms2 ) OR k > 30 DeleteJournal( ms4 ) DeleteJournal( ms5 ) DeleteJournal( ms2 ) UO.WaitTargetObject( Anima ) UO.UseSkill( 'Evaluating Intelligence' ) CheckLag() k = 0 repeat wait(100) k = k + 1 until UO.InJournal( ms4 ) OR UO.InJournal( ms5 ) OR UO.InJournal( ms2 ) OR k > 30 wend endsub
#===================================================================# # CAMPING # #===================================================================# # v.1.04b (с) Edred # #===================================================================# ; Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно ; жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их ; вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста ; для их разжигания (с повторами в случае физлов). Отходим назад ; (направление на правый нижний угол - клавиша "3" на нумпаде). ; Повторям последнюю операцию пока чар не придет в точку FinalX. ; Реколлимся на базу, добираем из ящика хворост и реги. И по кругу. ; ; Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов ; на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите ; координату X этой точки в FinalX (для надежности и защиты от лагов ; будет лучше если в этой точке чар упрется в стенку). На базе рядом ; с реколлкой поставьте сундук и в него положите много хвороста (можно ; одной "неподьъемной" кучкой и побольше регов для реколла. ; Занесите руну в этот город в ту же рунбуку, где и руна на базу. ; sub camping() DIM Regs[3] Regs[0] = '0x0F7A' ; Black Pearl Regs[1] = '0x0F7B' ; Bood Moss Regs[2] = '0x0F86' ; Mandrake Root VAR Hvorost = '0x0DE1' VAR flag, myx, myy, myz, fin, i VAR FinalX = 1350 VAR Sunduk = '0x40591B82' VAR RuneToBase = '20' VAR RuneToFire = '30' ; ; Стартуем стоя в начале пути. UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) UO.Exec( 'set finddistance 3' ) While UO.SkillVal( 'Camping' ) < 1000 fin = 0 UO.UseSkill( 'Meditation' ) UO.FindType ( Hvorost ) While ( UO.FindCount() > 0 ) AND ( fin == 0 ) myx = UO.GetX() myy = UO.GetY() myz = UO.GetZ() UO.MoveItem('finditem', '1', 'ground', str(myx-1), str(myy), str(myz)) wait(1000) CheckLag() UO.FindType ( Hvorost ) UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy+1), str(myz)) wait(1000) CheckLag() UO.FindType ( Hvorost ) UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy-1), str(myz)) wait(1000) CheckLag() UO.Findtype( Hvorost, -1, 1 ) While UO.FindCount() > 0 AND NOT UO.InJournal( "You can't ignite several" ) repeat flag = 1 DeleteJournal( "You fail to ignite" ) DeleteJournal( "You can't ignite several" ) DeleteJournal( "You must wait" ) UO.UseFromGround( Hvorost ) wait(1000) CheckLag() If UO.InJournal( "You must wait" ) OR UO.InJournal( "You fail to ignite" ) Then flag = 0 wait(1000) Endif If UO.InJournal( "You can't ignite several" ) Then UO.FindType( Hvorost, -1, 1 ) While UO.FindCount() > 0 If UO.GetQuantity( 'finditem' ) > 1 Then UO.Grab( str( UO.GetQuantity( 'finditem' ) - 1 ), 'finditem' ) wait(1000) CheckLag() Endif UO.Ignore( 'finditem' ) UO.FindType( Hvorost, -1, 1 ) Wend UO.IgnoreReset() Endif until flag UO.Findtype( Hvorost, -1, 1 ) Wend While ( UO.GetX() < myx + 1 ) AND ( fin == 0 ) UO.Press( 34 ) wait(300) CheckLag() If UO.GetX() == FinalX Then fin = 1 Endif Wend UO.FindType ( Hvorost ) Wend ; достигли конца маршрута или кончился хворост Recalling( 'CommonRunbook', RuneToBase ) UO.UseObject( Sunduk ) wait(1000) CheckLag() for i = 0 To 2 If UO.Count( Regs[i] ) < 6 Then ; этого рега меньше 6 UO.FindType( Regs[i], '-1', Sunduk ) UO.Grab( str( 6 - UO.Count( Regs[i] ) ), 'finditem' ) Wait( 1000 ) CheckLag() Endif next If UO.Count( Hvorost ) < 200 Then ; хвороста меньше 200 UO.FindType( Hvorost, '-1', Sunduk ) UO.Grab( str( 200 - UO.Count( Hvorost ) ), 'finditem' ) Wait( 1000 ) CheckLag() Endif EatChar( Sunduk, 2, 1, 60 ) Recalling( 'CommonRunbook', RuneToFire ) Wend endsub
#===================================================================# # 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 ) ; wait(1000) 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' ) ; repeat ; wait(100) ; until UO.Count( Fish ) > 0 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 ) ; repeat ; wait(100) ; until UO.Count( FishGot ) == 0 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 NechegoDelat() SpSpeak() VAR SpiritTime = UO.Timer() repeat If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; Прошло 5 минут с момента последней прокачки Spirit Speak SpSpeak() SpiritTime = UO.Timer() Else wait(500) Endif until UO.Dead() endsub
##################################################################### ; Herding v.1.02b (c) Edred ; ; Для прокачки потребуются две лошади (ламы или другие животные) ; и два щита (или какие-то другие объекты). Кладем щиты на пол в доме ; в паре шагов от чара (не стопкой, в соседние тайлы) и ставим обеих ; лошадей рядом с чаром. Чару в руку посох (одного посоха хватит на всю ; прокачку). Вносим серийники лошадей и щитов в соответствующие переменные. ; Поехали. Блоки, отвечающие за подкормку чара и прокачку ; Spirit Speak закомментарены. ; sub Herding() VAR Horse = '0x0040D2A1' VAR Horse2 = '0x005AF4B1' VAR Targ = '0x404215E8' VAR Targ2 = '0x404214EF' VAR Sunduk = '0x404E5494' UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) ) VAR success = "The animal goes where it is instructed" VAR fizzle = "You don't seem" VAR SpiritTime = UO.Timer() UO.UseObject( Sunduk ) wait(1000) CheckLag() While UO.SkillVal( 'Herding' ) < 1000 EatChar( Sunduk, 2, 1, 120 ) If ( UO.Timer() - SpiritTime ) / 600 > 5 Then ; Прошло 5 минут с момента последней прокачки Spirit Speak SpSpeak() SpiritTime = UO.Timer() Endif DeleteJournal( success ) DeleteJournal( fizzle ) UO.WaitTargetObject( Horse, Targ ) UO.UseObject( UO.ObjAtLayer( 'Lhand' ) ) repeat wait(100) until UO.InJournal( fizzle ) OR UO.InJournal( success ) If UO.InJournal( success ) Then ; вторая животина DeleteJournal( success ) UO.WaitTargetObject( Horse2, Targ2 ) UO.UseObject( UO.ObjAtLayer( 'Lhand' ) ) repeat wait(100) until UO.InJournal( fizzle ) OR UO.InJournal( success ) Endif Wend endsub
|