Lurch Ultimate Bulter Bot by Mags (Avron)

Description: ## What can the script do?

## - DETECT HIDDEN AND BAN GREY'S/REDS

## - MAKE DISTILLS FROM EXTRACTS IN BOX

## - UNLOCK PARAGON CHESTS THAT ARE PUT IN THE BOX

## - IF THE PARAGON CHEST HAS EXTRACTS OR MAPS IN IT IT WILL MAKE THEM INTO A DISTILL OR DECODE THEM

## - CHIV GATE TO TOWNS/DUNGEONS/FRND GUILD HOUSE

## - DECODE ALL MAPS THAT ARE IN THE BOX

## - ID all Unidentified items at once

*** DISCLAIMER THERE IS A LITTLE BIT OF A LEARNING CURVE ON THE SETUP*****

*********************** 10/17 Update ************

- Lock picks faster now and will change lockpick type if you don't have anymore of a specific until it has at least 10%. Grabs more from restock shelf if you out of tools

- Grabs all Paragon Chests. It's a little wonky but he will now pick up all and put the 1 hey lock picks in the drop chest(botChest) and then puts them all back in the pickup check (playerChest) and then grabs them all again and does 1 and repeats till there is no more. Still trying to find a better way to lock pick all checks in bag but for now this does work.

***************************************************************************************************

*** ************** 9/30 Update ********************************

- Added the ability to ID all items in a magic recycler. (Must have 120 Item ID and a magic recycler)

- Updated a lot of the comments to be more helpful and explain the a little better the setup as well as added a lot of recommendations throughout to help with the setup, as this script does have a learning curve.

- Added a pouch that people can throw items in as a tip. Lurch will check that pouch every 1min or so for items and then move them to the resources shelf and stockpile first; then, anything left over is put in a secure container

************************************************************************

****************** NEXT ON THE ROADMAP *************************

- Ability to restock the tip jar vendor

- Add a check at each bot stage that, if the bot is triggered, will add a "while" statement check to keep the bot focused on that one task to increase the speed and stability of the bot. (Not sure if this will be possible without doing separate scripts, but we will see)

# LURCH HOUSE BUTLER BOT COMPILED AND TWEAKED BY MAGS(AVRON)#1175 # 100% of the credit goes to Jaseowns and AreYouKidden. # I have learned so much from them and the code is theirs with just some of my own person tweaks and modifications. # THEY ARE THE REAL MVP'S # GO OUT AND SUPPORT THEM BOTH!!! /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ## OVERVIEW ## What can the script do? ## - DETECH HIDDEN AND BAN GREYS/REDS ## - MAKE DISTILLS FROM EXTRACTS IN BOX ## - UNLOCK PARAGON CHESTS THAT ARE PUT IN THE BOX ## - IF THE PARAGON CHEST HAS EXTRACTS OR MAPS IN IT IT WILL MAKE THEM INTO A DISTILL OR DECODE THEM ## - CHIV GATE TO TOWNS/DUNGEONS/FRND GUILD HOUSE ## - DECODE ALL MAPS THAT ARE IN THE BOX ## - ID ALL ITEMS IN MAGIC RECYCLER /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ## BEST USE TIPS FOR THE SCRIPT ## - FOR BEST USE ONLY PUT 1 PARAGON CHEST IN THE BOX AT A TIME (I am working on trying to update this to recongize more paragons and handle more) ## - DOES NOT WORK WITH TOMES YET FOR PULLING OUT MAPS OR EXTRACTS ## - YOU CAN PUT MULTIPLE EXTRACTS IN THE CHEST AT ONCE THOUGH AND EVEN PUT THEM IN A BAG OR POUCH FOR EASY DUMPING.... SAME WITH TMAPS JUST DON'T PLACE A TOMB YET ## - I ADDED THE RESUPLY STEP ALL THROUGHOUT THE SCRIPT TOO SO THAT YOU ALWAYS HAVE ENOUGH TOOLS AS LONG AS YOUR SHELF HAS ENOUGH TOOLS AND YOU CAN AVOID THAT CHECK /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ## AGENTS NEED AND OTHER SETUP REQUIREMENTS ## Restock 1 for Bottles/Extracts ## Restock 2 for Maps ## Organize 12 for all paragon chests ## Shelf with Lockpicks, Remove Traps and Spyglasses in and the loadout set with them ## YOU WILL WANT A SECOND BOX OR POUCH TO PUT THE COMPLETED MAPS IN AND YOU SHOULD NOT USE THE MAIN BOX FOR THAT OR THE SCRIPT WILL JUST REPEAT PULLING AND PLACE THE COMPLETED MAPS OVER AND OVER ## YOU WILL NEED TO CHANGE THE MENU ID'S TO "YOUR" RESTOCK SHELF ANYPLACE YOU SEE "menu 0x41BF29F7 1" /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ## LURCH'S RECOMMENDED CHARACTER TEMPLATE ## - 120 Remove Traps ## - 120 Item Identification ## - 100 Lock Picking ## - 100 Cartography ## - 100 Alchemy ## - 90 Chiv ## - 90 Tactics ## - You won't be able to decode T8s with this build and LARGER paragon chests will be hard to lock pick without a higher end tool ## - I recommend rocking fortune aspect if you have it as while slow it you will gain some points with opening Paragon chests. ## - You could also go 110 Remove Traps and 110 Lockpicking but Lurch doesn't like getting blown up so we go with the 120 Remove Traps /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// SETTING VARIABLES ///////////////////////////////////////////////////////////////////////////////// // Pargon Chest Lockpicking if not varexist haveParagonToOpen @setvar! haveParagonToOpen 0 endif /////////////////////////////////////////////////////////////////////////// ## STIL WORKING ON SOME CODE FOR THIS ONE BUT MY HOPES IS TO DO MORE THAN 1 PARAGON AT A TIME if not varexist paragonInPack @setvar! paragonInPack 1 endif //////////////////////////////////////////////////////////////////// // GLOBAL WAIT TIME.... Example 'wait globalTimeout' instead of 'wait 1000' @setvar! globalTimeout 650 // CHIV BOT HUE SETUP ## Custom - (lantern /w ossuary hue) @setvar! jase_chiv_custom_trigger 2594 @setvar! jase_chiv_custom_trigger_hue 1182 ## City (Store bought Lantern) @setvar! jase_chiv_city_trigger 2594 @setvar! jase_chiv_city_trigger_hue 0 ## Dungeon (Store bought Torch) @setvar! jase_chiv_dung_trigger 2578 @setvar! jase_chiv_dung_trigger_hue 0 ## Shrine (Store bought Candle) @setvar! jase_chiv_shrine_trigger 2575 @setvar! jase_chiv_shrine_trigger_hue 0 // Select Storage Shelf if not varexist storageShelf overhead 'Select your storage shelf' setvar storageShelf endif // Select your Resource Stock Pile if not varexist resourceSP overhead 'Select your resource stock pile (some call it the ingot pile)' setvar resourceSP endif // Select the drop bag/chest where people will place extracts for the bot to use. // I set it as the same box as where they will drop the maps and paragon chests // I recommend using a chest for players to drop items into (other then the unidentified items) and one chest for the bot to drop them into // SETTING UP CONTAINERS ## Container for all extracts, maps, and paragon chests to go in given by a player if not varexist playerContainer overhead 'Select the container to watch for items in.(Players Chest)' setvar playerContainer endif ## Container for Lurch to drop all extracts, maps, and paragon chest in to when they are done with them // Select your bot's container if not varexist botContainer overhead 'Select the container for bot to drop items in to when done with them' setvar botContainer endif ## Magic Recycler for all unidentified items to go in to be ID'ed // Select your magic recycler if not varexist recycleChest overhead 'Select your Magic Recycler Chest!' setvar recycleChest endif // Resuply all Tools from Shelf //////////////////////////////////////////////////////// ///// THIS IS WHERE THE BOT ACTUALLY BEGGINS!! //////// /////////////////////////////////////////////////////// while not dead @setvar! foundExtract 0 if insysmsg "Detect Off" script '_ButlerDetectOff' endif //// LET PEOPLE KNOW THE BOT IS ONLINE BUT DON'T WANT TO SPAM if not timerexists "lurchTimer" createtimer "lurchTimer" settimer "lurchTimer" 0 endif if timer lurchTimer >= 60000 wait 1000 say "Master... Lurch Bot is online!" 88 wait 500 settimer "lurchTimer" 0 endif ///////////////////////////////////////////////// //////////////////////////////////////////////// //// BEG FOR TIPS AND TELL THEM WHERE TO STICK IT if not varexist tipJar overhead 'Select the container you want to use as a tip jar!' setvar tipJar endif if not timerexists "tipTimer" createtimer "tipTimer" settimer "tipTimer" 0 endif if not varexist tipPouch overhead 'Select your secure for other "tipped" items' setvar tipPouch endif if timer tipTimer > 120000 menu resourceSP 0 waitfortarget target tipJar menu storageShelf 0 waitfortarget target tipJar waitforgump 3232825965 wait 500 gumpclose 3232825965 settimer "tipTimer" 0 endif while findtype 12686 tipJar as item wait 650 lift item 100 wait 650 drop backpack -1 -1 -1 wait 650 endwhile while findtype 'map' tipJar as map restock 2 wft wait 500 target tipJar wait 5000 say "Master Thank you for the TMap Tip!" 66 wait 650 organize 13 wait 2000 endwhile while findtype 3821 tipJar as goldpile lift goldpile 10000 wait 650 drop backpack -1 -1 -1 wait 650 organize 11 wait 2000 say "Thank you Master for the Gold Tip!" 66 endwhile /////////////////////////////////////////////////// /////////////////////////////////// // Magic Recycle and ITEM ID by Mags(Avron)#1175 // Will check that you have an unidentied item in the magic recycler and then countdown and recycle it. // You can remove all the say and wait commands if you want it to happen faster // Script will loop till items have then either been recycled or removed from the chest. if skill 'Item Identification'>= 120 while findtype 5117|3920|3721|5042|5089|7031|3719|5046|7610|3568|5207|5129|5103|3713|5125|5139|7177|5063|5205|3570|5056|3573|5123|5143|5204|5101|5135|5203|5090|5078|5061|5059|3937|3932|5121|3909|3938|5106|7035|7026|5142|5138|5201|7169|7173|5112|3571|7181|7170|3913|5127|5132|3742|5044|5144|5187|5185|5085|5177|5181|5131|3763|7029|7027|5074|5070|9917|7034|7033|5075|10245|7175|3915|3911|5105|3934|5060|3917|5049|5182|5146|5040|3572|5179|7179|5119|5115|5076|3762|3740|22187|3834 recycleChest as unidentifiedItem getlabel unidentifiedItem desc if "unidentified" in desc overhead "Recycle Bot Triggered" wait 500 say "Master, I see you have an item for me to ID and recycle" 77 wait 1000 say "In 5 seconds I will ID all items in the Magic Recycler!" 77 wait 1000 say "Countdown Begins Now" 77 wait 1000 say "5" 77 wait 1000 say "4" 77 wait 1000 say "3" 77 wait 1000 say "2" 77 wait 1000 say "1" 77 wait 500 useskill "itemId" wft wait 500 target recycleChest wait 1000 say "Master, Your items have now been identified!" 77 wait 1000 say "Please remove ALL tiems from the magic recycler or recycle them now and then remove them" 77 wait 1000 endif endwhile endif ///// END OF MAGIC RECYCLER AND ID BOT ///////////////// //////////////////////////////////////////////////////////////// ///////////////////////////////////// // Paragon Chest Lockpicking by Jaseowns // Snipped from Amish House Butler Script. if not timerexists "unlockChestTimer" createtimer "unlockChestTimer" settimer "unlockChestTimer" 2000 endif if skill "Lockpicking" >= 50 if findtype "lockpicks" backpack and findtype "drill" backpack @clearignore if not find playerContainer ground -1 -1 2 unsetvar playerContainer replay endif if haveParagonToOpen = 0 while findtype 2473|3644|3645|3646|3647|3710|3701|3702|29832|29833|2472|2475|3648|3649|3708|29078|41449|41450|3705|3712|2474|3709|3650|3651|29077 playerContainer as container getlabel container desc if "sealed" in desc overhead "paragon found" lift container drop backpack -1 -1 -1 wait globalTimeout say "Master, I have your paragon chest. Please give me a moment" 55 endif if find container backpack @setvar! haveParagonToOpen container else @ignore! container endif endwhile elseif timer unlockChestTimer >= 3500 if gumpexists 736038070 if ingump "Cleared of Traps" 736038070 gumpresponse 4 736038070 wait 1000 if not timerexists "RTT" createtimer "RTT" settimer "RTT" 0 endif if timer RTT >= 15000 say "Master I have removed the trap and working on the lock now" 55 wait 1000 endif if insysmsg 'not have any lockpicks' or insysmsg 'no chance' gumpresponse 2 wait 1000 menu 0x41BF29F7 1 wait 1000 loop endif else overhead "Remove Trap" gumpresponse 7 736038070 wait 1000 if insysmsg 'any trap tools' gumpresponse 5 wait 1000 menu storageShelf 1 wait 1000 loop endif endif settimer unlockChestTimer 0 else getlabel haveParagonToOpen sealedDesc if "sealed" in sealedDesc dclick haveParagonToOpen else lift haveParagonToOpen drop botContainer -1 -1 -1 wait globalTimeout organizer 12 wait 5000 say "Master.... The paragon chest is unlocked! Please check the BLACK chest!" 55 wait 1000 if not find haveParagonToOpen backpack @setvar! haveParagonToOpen 0 endif endif endif endif else overhead "No more lockpicks or drills bro" 34 endif endif ////////// END IF PARAGON LOCKPICKING BOT////////////////////////// /////////////////////////////////////////////////////////////////// // Chiv Gate Bot by Jaseowns // UO Outlands // youtube.com/jaseowns if not gumpexists 1387930325 say "[ChivalryHotbar" endif if not timerexists jase_chiv_gate_ready createtimer jase_chiv_gate_ready settimer jase_chiv_gate_ready 35000 endif if timer jase_chiv_gate_ready >= 60000 settimer jase_chiv_gate_ready 35000 endif @setvar! jase_chiv_has_enough_symbols 0 if ingump "12/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "11/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "10/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "9/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "8/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "7/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "6/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "5/" 1387930325 @setvar! jase_chiv_has_enough_symbols 1 elseif ingump "4/" 1387930325 @setvar! jase_chiv_has_enough_symbols 0 elseif ingump "3/" 1387930325 @setvar! jase_chiv_has_enough_symbols 0 elseif ingump "2/" 1387930325 @setvar! jase_chiv_has_enough_symbols 0 elseif ingump "1/" 1387930325 @setvar! jase_chiv_has_enough_symbols 0 elseif ingump "0/" 1387930325 @setvar! jase_chiv_has_enough_symbols 0 endif if jase_chiv_has_enough_symbols = 1 if findtype jase_chiv_custom_trigger ground jase_chiv_custom_trigger_hue -1 2 as trigger if timer jase_chiv_gate_ready > 35000 say "Master... Great News!! I Can Send You Home Now! Please come back soon!" 88 say '[SacredJourney' waitforgump 1482653814 5000 gumpresponse 4 1482653814 wait 500 dclick trigger settimer jase_chiv_gate_ready 0 else say "Master... My apologies.. My gate is down till I rest a little!" 88 wait 4000 endif endif if findtype jase_chiv_city_trigger ground jase_chiv_city_trigger_hue -1 2 as trigger if timer jase_chiv_gate_ready > 35000 say "Master... Great News!! I can send you to the city of your choice now!" 88 say '[SacredJourney' waitforgump 1482653814 5000 gumpresponse 1 1482653814 wait 500 dclick trigger settimer jase_chiv_gate_ready 0 else say "Master... My apologies.. My gate is down till I rest a little!" 88 wait 4000 endif endif wait 100 if findtype jase_chiv_dung_trigger ground jase_chiv_dung_trigger_hue -1 2 as trigger if timer jase_chiv_gate_ready > 35000 say "Master.... Please becareful in the Dungeons. There dangerous!" 88 say '[SacredJourney' waitforgump 1482653814 5000 gumpresponse 2 1482653814 wait 500 dclick trigger settimer jase_chiv_gate_ready 0 else say "Master... My apologies.. My gate is down till I rest a little!" 88 wait 4000 endif endif wait 100 if findtype jase_chiv_shrine_trigger ground jase_chiv_shrine_trigger_hue -1 2 as trigger if timer jase_chiv_gate_ready > 35000 say "Master... Enjoy the Shrines! Wish I could come with you... " 88 say '[SacredJourney' waitforgump 1482653814 5000 gumpresponse 3 1482653814 wait 500 dclick trigger settimer jase_chiv_gate_ready 0 else say "Master... My apologies.. My gate is down till I rest a little!" 88 wait 4000 endif endif wait 100 else wait 2000 endif wait 1000 /////////////////////////////////// END OF CHIV GATE BOT ///////////////////// ////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // DETECT HIDDEN BOT // BAN REDS AND GREYS!! clearsysmsg if not listexists "friendsofthehouse" createlist "friendsofthehouse" endif if not timerexists "detectHidingPlayersTimer" createtimer "detectHidingPlayersTimer" settimer "detectHidingPlayersTimer" 11000 endif if not timerexists "sayBanTimer" createtimer "sayBanTimer" settimer "sayBanTimer" 2000 endif if timer "detectHidingPlayersTimer" >= 11000 useskill 'detectinghidden' wft 500 target 'self' settimer "detectHidingPlayersTimer" 0 endif hotkey 'Next non-friendly player target' wait 200 if insysmsg "no one matching" // do nothing else say "Master.... I have spoted the intruder!!" 33 wait 500 @setvar! removeTarget lasttarget if inlist "friendsofthehouse" removeTarget // do nothing elseif timer sayBanTimer >= 2000 say "Don't worry Master!! I'll remove them for you!" wait 500 say "I ban thee" wft 1000 target removeTarget wait 200 if insysmsg 'You cannot eject a friend of the house!' wait 500 pushlist "friendsofthehouse" removeTarget endif settimer "sayBanTimer" 0 endif endif /////////////////////////////////////////////// END OF DETECT HIDING BOT /////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////// // GRAB TMAPS AND DECODE // Map Decoder by AreYouKidden while findtype 'map' playerContainer as map restock 2 wft wait 500 target playerContainer wait 5000 say "Master I have your maps and soon will begin decoding them" 88 @removelist 'ToolHues' @createlist 'ToolHues' @removelist 'MapHues' @createlist 'MapHues' @removelist 'MapGumps' @createlist 'MapGumps' pushlist 'ToolHues' 0 pushlist 'ToolHues' 2419 pushlist 'ToolHues' 2406 pushlist 'ToolHues' 2413 pushlist 'ToolHues' 2418 pushlist 'ToolHues' 2213 pushlist 'ToolHues' 2425 pushlist 'ToolHues' 2207 pushlist 'ToolHues' 2219 pushlist 'ToolHues' 1763 pushlist 'MapHues' 0 pushlist 'MapHues' 2091 pushlist 'MapHues' 2904 pushlist 'MapHues' 2651 pushlist 'MapHues' 2799 pushlist 'MapHues' 2796 pushlist 'MapGumps' 1520869851 'front' pushlist 'MapGumps' 1520869851 'front' pushlist 'MapGumps' 2589357942 'front' pushlist 'MapGumps' 3473029237 'front' pushlist 'MapGumps' 1332805401 'front' pushlist 'MapGumps' 3367641484 'front' foreach 'Color' in 'MapHues' foreach 'x' in 'MapGumps' @setvar 'Gump' 'x' endfor poplist 'MapGumps' 'back' while findtype '5356' 'backpack' 'Color' as 'Map' while find 'Map' 'backpack' wait 500 wait 500 if not find 'Tool1' 'backpack' foreach 'y' in 'ToolHues' if @findtype '5365' 'backpack' 'y' as 'found' and not find 'Tool1' 'backpack' @setvar 'Tool1' 'found' @setvar 'Hue1' 'y' endif endfor endif if not find 'Tool1' 'backpack' overhead 'Low End Tool not found' 33 stop endif if not find 'Tool2' 'backpack' foreach 'y' in 'ToolHues' if @findtype '5365' 'backpack' 'y' as 'found' @setvar 'Tool2' 'found' @setvar 'Hue2' 'y' endif endfor endif if not find 'Tool2' 'backpack' overhead 'High End Tool not found' 33 stop endif overhead 'Using Low End Tool' 'Hue1' clearsysmsg dclick 'Tool1' pause 100 wft 5000 target 'Map' pause 100 waitforgump 'Gump' gumpresponse 4 pause 1500 if insysmsg "no chance" lift 'Map' 9999 drop 'botContainer' -1 -1 -1 pause 500 endif if not findtype "lockpicks" backpack or not findtype "drill" backpack or not findtype "spyglass" backpack or insysmsg 'You have reached the maximum' or insysmsg "worn out" menu storageShelf 1 wait 500 endif clearsysmsg pause 1000 while find 'Map' 'backpack' and find 'Tool2' 'backpack' overhead 'Using High End Tool' 'Hue2' clearsysmsg dclick 'Tool2' pause 100 wft 5000 target 'Map' pause 100 waitforgump 'Gump' gumpresponse 4 pause 1500 if insysmsg "no chance" lift 'Map' 9999 drop 'botContainer' -1 -1 -1 pause 500 endif if insysmsg 'You have reached the maximum accuracy' overhead 'Map Decoded!' 88 pause 200 wait 500 say "Master I completed a map and will put it in the BLACK chest now for you!" wait 1000 lift 'Map' 9999 drop 'botContainer' -1 -1 -1 pause 500 endif endwhile endif endwhile endwhile endfor endwhile ////////////////////////////// END OF MAP DECODING BOT //////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////// Make Distills from extracts found in the Player Conatainer ////// while findtype 'bottle' playerContainer as extract @setvar! foundExtract 1 getlabel extract extractName say 'Ah ha! I see you have an extract for me to distill!' 66 wait 2000 restock 1 wft target playerContainer wait 10000 say "I have your extracts Master... Making Distills Now!" 66 wait 1000 menu resourceSP 0 waitfortarget target 'self' say [CraftingQueue wait 1000 waitforgump 453554062 gumpresponse 7 for 60000 wait 1000 if insysmsg 'Crafting queue complete' wait 500 say "Your Distills are ready Master!" 66 wait 1000 say "If you like my services master, Please consider giving me a tip at my tip vendor" wait 500 loop else say "Master... Mixing is in progress please wait!" 66 wait 10000 endif endfor endwhile wait 1000 replay endwhile ////////////////////////////////////////////////////END OF DISTILL MAKING BOT //////////////////////////////////