Skip to content
Outlands Hub

Razor script

Lurch Ultimate Bulter Bot

by Mags (Avron) · 693 lines
Download

Compatibility unverified

This community Razor script has not been tested in game by the Hub. Read its setup and client requirements before use.

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…

Housing
Lurch Ultimate Bulter Bot.razor
1# This is an automated backup - check out https://outlands.uorazorscripts.com/script/21f16203-0ec1-4538-ae72-1a4d42846a79 for latest2# Automation by Jaseowns3## Script: Lurch Ultimate Bulter Bot4## Created by: Mags (Avron)#11755#############################################6 7# LURCH HOUSE BUTLER BOT COMPILED AND TWEAKED BY MAGS(AVRON)#11758# 100% of the credit goes to Jaseowns and AreYouKidden. 9# I have learned so much from them and the code is theirs with just some of my own person tweaks and modifications.10# THEY ARE THE REAL MVP'S11# GO OUT AND SUPPORT THEM BOTH!!!12///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////13## OVERVIEW14## What can the script do?15## - DETECH HIDDEN AND BAN GREYS/REDS16## - MAKE DISTILLS FROM EXTRACTS IN BOX17## - UNLOCK PARAGON CHESTS THAT ARE PUT IN THE BOX18## - IF THE PARAGON CHEST HAS EXTRACTS OR MAPS IN IT IT WILL MAKE THEM INTO A DISTILL OR DECODE THEM19## - CHIV GATE TO TOWNS/DUNGEONS/FRND GUILD HOUSE20## - DECODE ALL MAPS THAT ARE IN THE BOX21## - ID ALL ITEMS IN MAGIC RECYCLER22///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////23## BEST USE TIPS FOR THE SCRIPT24## - 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)25## - DOES NOT WORK WITH TOMES YET FOR PULLING OUT MAPS OR EXTRACTS26## - 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 YET27## - 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 CHECK28///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////29## AGENTS NEED AND OTHER SETUP REQUIREMENTS30## Restock 1 for Bottles/Extracts31## Restock 2 for Maps32## Organize 12 for all paragon chests33## Shelf with Lockpicks, Remove Traps and Spyglasses in and the loadout set with them34## 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 OVER35## YOU WILL NEED TO CHANGE THE MENU ID'S TO "YOUR" RESTOCK SHELF ANYPLACE YOU SEE "menu 0x41BF29F7 1"36///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////37## LURCH'S RECOMMENDED CHARACTER TEMPLATE38## - 120 Remove Traps39## - 120 Item Identification40## - 100 Lock Picking41## - 100 Cartography42## - 100 Alchemy43## - 90 Chiv44## - 90 Tactics45## - 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 tool46## - I recommend rocking fortune aspect if you have it as while slow it you will gain some points with opening Paragon chests.47## - 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 Traps48///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////49 50////////////////////////////////// SETTING VARIABLES /////////////////////////////////////////////////////////////////////////////////51// Pargon Chest Lockpicking52if not varexist haveParagonToOpen53    @setvar! haveParagonToOpen 054endif55///////////////////////////////////////////////////////////////////////////56## STIL WORKING ON SOME CODE FOR THIS ONE BUT MY HOPES IS TO DO MORE THAN 1 PARAGON AT A TIME57if not varexist paragonInPack58    @setvar! paragonInPack 159endif60////////////////////////////////////////////////////////////////////61// GLOBAL WAIT TIME.... Example 'wait globalTimeout' instead of 'wait 1000'62@setvar! globalTimeout 65063 64// CHIV BOT HUE SETUP65## Custom - (lantern /w ossuary hue)66@setvar! jase_chiv_custom_trigger 259467@setvar! jase_chiv_custom_trigger_hue 118268 69## City (Store bought Lantern)70@setvar! jase_chiv_city_trigger 259471@setvar! jase_chiv_city_trigger_hue 072 73## Dungeon (Store bought Torch)74@setvar! jase_chiv_dung_trigger 257875@setvar! jase_chiv_dung_trigger_hue 076 77## Shrine (Store bought Candle)78@setvar! jase_chiv_shrine_trigger 257579@setvar! jase_chiv_shrine_trigger_hue 080 81// Select Storage Shelf82if not varexist storageShelf83    overhead 'Select your storage shelf'84    setvar storageShelf85endif86// Select your Resource Stock Pile87if not varexist resourceSP88    overhead 'Select your resource stock pile (some call it the ingot pile)'89    setvar resourceSP90endif    91// Select the drop bag/chest where people will place extracts for the bot to use. 92// I set it as the same box as where they will drop the maps and paragon chests93// 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 into94 95// SETTING UP CONTAINERS96## Container for all extracts, maps, and paragon chests to go in given by a player97if not varexist playerContainer98    overhead 'Select the container to watch for items in.(Players Chest)'99    setvar playerContainer100endif101 102## Container for Lurch to drop all extracts, maps, and paragon chest in to when they are done with them103// Select your bot's container104if not varexist botContainer105    overhead 'Select the container for bot to drop items in to when done with them'106    setvar botContainer107endif    108## Magic Recycler for all unidentified items to go in to be ID'ed109// Select your magic recycler110if not varexist recycleChest111    overhead 'Select your Magic Recycler Chest!'112    setvar recycleChest    113endif114 115 116// Resuply all Tools from Shelf117 118////////////////////////////////////////////////////////119///// THIS IS WHERE THE BOT ACTUALLY BEGGINS!! ////////120///////////////////////////////////////////////////////121while not dead 122@setvar! foundExtract 0    123if insysmsg "Detect Off"124    script '_ButlerDetectOff'125endif126//// LET PEOPLE KNOW THE BOT IS ONLINE BUT DON'T WANT TO SPAM127if not timerexists "lurchTimer"128    createtimer "lurchTimer"129    settimer "lurchTimer" 0130endif131if timer lurchTimer >= 60000132    wait 1000133    say "Master... Lurch Bot is online!" 88134    wait 500135    settimer "lurchTimer" 0136endif137/////////////////////////////////////////////////138 139////////////////////////////////////////////////140//// BEG FOR TIPS AND TELL THEM WHERE TO STICK IT141 142if not varexist tipJar143    overhead 'Select the container you want to use as a tip jar!'144    setvar tipJar145endif146 147if not timerexists  "tipTimer"148    createtimer "tipTimer"149    settimer "tipTimer" 0150endif151 152if not varexist tipPouch153    overhead 'Select your secure for other "tipped" items'154    setvar tipPouch155endif156 157if timer tipTimer > 120000158     menu resourceSP 0159     waitfortarget160     target tipJar161     menu storageShelf 0162     waitfortarget163     target tipJar164     waitforgump 3232825965165     wait 500166     gumpclose 3232825965167     settimer "tipTimer" 0168endif169 170while findtype 12686 tipJar as item171     wait 650    172     lift item 100173     wait 650174     drop backpack -1 -1 -1175     wait 650176endwhile177while findtype 'map' tipJar as map178     restock 2179     wft180     wait 500181     target tipJar182     wait 5000183     say "Master Thank you for the TMap Tip!" 66184     wait 650185     organize 13186     wait 2000187endwhile188while findtype 3821 tipJar as goldpile189     lift goldpile 10000190     wait 650191     drop backpack -1 -1 -1192     wait 650193     organize 11194     wait 2000195     say "Thank you Master for the Gold Tip!" 66196endwhile197 198///////////////////////////////////////////////////199///////////////////////////////////200// Magic Recycle and ITEM ID by Mags(Avron)#1175201// Will check that you have an unidentied item in the magic recycler and then countdown and recycle it.202// You can remove all the say and wait commands if you want it to happen faster203// Script will loop till items have then either been recycled or removed from the chest.204 205 206if skill 'Item Identification'>= 120207 208 209      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 unidentifiedItem210                getlabel unidentifiedItem desc211        if "unidentified" in desc212               overhead "Recycle Bot Triggered"213               wait 500214               say "Master, I see you have an item for me to ID and recycle" 77215               wait 1000216               say "In 5 seconds I will ID all items in the Magic Recycler!" 77217               wait 1000218               say "Countdown Begins Now" 77219               wait 1000220               say "5" 77221               wait 1000222               say "4" 77223               wait 1000224               say "3" 77225               wait 1000226               say "2" 77227               wait 1000228               say "1" 77229               wait 500230               useskill "itemId"231               wft232               wait 500233               target recycleChest234               wait 1000235               say "Master, Your items have now been identified!" 77236               wait 1000237               say "Please remove ALL tiems from the magic recycler or recycle them now and then remove them" 77238               wait 1000 239        endif240        endwhile         241              242 endif           243        244///// END OF MAGIC RECYCLER AND ID BOT /////////////////245 246 247 248////////////////////////////////////////////////////////////////249/////////////////////////////////////250// Paragon Chest Lockpicking by Jaseowns251// Snipped from Amish House Butler Script.252 253if not timerexists "unlockChestTimer"254    createtimer "unlockChestTimer"255    settimer "unlockChestTimer" 2000256endif257 258if skill "Lockpicking" >= 50259    if findtype "lockpicks" backpack and findtype "drill" backpack260        @clearignore261        if not find playerContainer ground -1 -1 2262            unsetvar playerContainer263            replay264        endif265 266        if haveParagonToOpen = 0267            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 container268                getlabel container desc269                if "sealed" in desc270                    overhead "paragon found"271                    lift container272                    drop backpack -1 -1 -1273                    wait globalTimeout274                    say "Master, I have your paragon chest. Please give me a moment" 55275                endif276                277                if find container backpack278                    @setvar! haveParagonToOpen container279                else280                    @ignore! container281                endif282            endwhile283        elseif timer unlockChestTimer >= 3500   284              if gumpexists 736038070285                if ingump "Cleared of Traps" 736038070286                    gumpresponse 4 736038070287                    wait 1000288                    if not timerexists "RTT"289                       createtimer "RTT"290                       settimer "RTT" 0291                    endif292                    if timer RTT >= 15000293                        say "Master I have removed the trap and working on the lock now" 55294                    wait 1000295                    endif296                    if insysmsg 'not have any lockpicks' or insysmsg 'no chance'297                            gumpresponse 2298                            wait 1000299                            menu 0x41BF29F7 1300                            wait 1000301                            loop302                        endif  303                else304                    overhead "Remove Trap"305                    gumpresponse 7 736038070306                     wait 1000307                     if insysmsg 'any trap tools'308                       gumpresponse 5309                     wait 1000310                     menu storageShelf 1311                      wait 1000312                      loop313                    endif        314                endif315                settimer unlockChestTimer 0316            else317                getlabel haveParagonToOpen sealedDesc318                if "sealed" in sealedDesc319                    dclick haveParagonToOpen320                else321                     lift haveParagonToOpen322                     drop botContainer -1 -1 -1323                    wait globalTimeout324                    organizer 12325                    wait 5000326                    say "Master.... The paragon chest is unlocked! Please check the BLACK chest!" 55327                    wait 1000328                    if not find haveParagonToOpen backpack329                        @setvar! haveParagonToOpen 0330                    endif331                endif332            endif333        endif334    else335        overhead "No more lockpicks or drills bro" 34336    endif337 338endif339////////// END IF PARAGON LOCKPICKING BOT//////////////////////////340///////////////////////////////////////////////////////////////////341// Chiv Gate Bot by Jaseowns342// UO Outlands343// youtube.com/jaseowns344 345 346if not gumpexists 1387930325347    say "[ChivalryHotbar"348endif349if not timerexists jase_chiv_gate_ready350    createtimer jase_chiv_gate_ready351    settimer jase_chiv_gate_ready 35000352endif353 354if timer jase_chiv_gate_ready >= 60000355 356    settimer jase_chiv_gate_ready 35000357endif358 359@setvar! jase_chiv_has_enough_symbols 0360 361if ingump "12/" 1387930325362    @setvar! jase_chiv_has_enough_symbols 1363elseif ingump "11/" 1387930325364    @setvar! jase_chiv_has_enough_symbols 1365elseif ingump "10/" 1387930325366    @setvar! jase_chiv_has_enough_symbols 1367elseif ingump "9/" 1387930325368    @setvar! jase_chiv_has_enough_symbols 1369elseif ingump "8/" 1387930325370    @setvar! jase_chiv_has_enough_symbols 1371elseif ingump "7/" 1387930325372    @setvar! jase_chiv_has_enough_symbols 1373elseif ingump "6/" 1387930325374    @setvar! jase_chiv_has_enough_symbols 1375elseif ingump "5/" 1387930325376    @setvar! jase_chiv_has_enough_symbols 1377elseif ingump "4/" 1387930325378    @setvar! jase_chiv_has_enough_symbols 0379elseif ingump "3/" 1387930325380    @setvar! jase_chiv_has_enough_symbols 0381elseif ingump "2/" 1387930325382    @setvar! jase_chiv_has_enough_symbols 0383elseif ingump "1/" 1387930325384    @setvar! jase_chiv_has_enough_symbols 0385elseif ingump "0/" 1387930325386    @setvar! jase_chiv_has_enough_symbols 0387endif388 389if jase_chiv_has_enough_symbols = 1390 391    if findtype jase_chiv_custom_trigger ground jase_chiv_custom_trigger_hue -1 2 as trigger392        if timer jase_chiv_gate_ready > 35000 393        say "Master... Great News!! I Can Send You Home Now! Please come back soon!" 88394            say '[SacredJourney'395            waitforgump 1482653814 5000396            gumpresponse 4 1482653814397            wait 500398            dclick trigger399            settimer jase_chiv_gate_ready 0400        else401            say "Master... My apologies.. My gate is down till I rest a little!" 88402            wait 4000403        endif404    endif405 406    if findtype jase_chiv_city_trigger ground jase_chiv_city_trigger_hue -1 2 as trigger407        if timer jase_chiv_gate_ready > 35000 408            say "Master... Great News!! I can send you to the city of your choice now!" 88409            say '[SacredJourney'410            waitforgump 1482653814 5000411            gumpresponse 1 1482653814412            wait 500413            dclick trigger414            settimer jase_chiv_gate_ready 0415        else416            say "Master... My apologies.. My gate is down till I rest a little!" 88417            wait 4000418        endif419    endif420    wait 100421    422    if findtype jase_chiv_dung_trigger ground jase_chiv_dung_trigger_hue -1 2 as trigger423        if timer jase_chiv_gate_ready > 35000 424            say "Master.... Please becareful in the Dungeons. There dangerous!" 88425            say '[SacredJourney'426            waitforgump 1482653814 5000427            gumpresponse 2 1482653814428            wait 500429            dclick trigger430            settimer jase_chiv_gate_ready 0431        else432            say "Master... My apologies.. My gate is down till I rest a little!" 88433            wait 4000434        endif435    endif436    wait 100437    438    if findtype jase_chiv_shrine_trigger ground jase_chiv_shrine_trigger_hue -1 2 as trigger439        if timer jase_chiv_gate_ready > 35000 440            say "Master... Enjoy the Shrines! Wish I could come with you... " 88441            say '[SacredJourney'442            waitforgump 1482653814 5000443            gumpresponse 3 1482653814444            wait 500445            dclick trigger446            settimer jase_chiv_gate_ready 0447        else448            say "Master... My apologies.. My gate is down till I rest a little!" 88449            wait 4000450        endif451    endif452    wait 100453 454else455    wait 2000456endif457wait 1000458 459/////////////////////////////////// END OF CHIV GATE BOT /////////////////////460//////////////////////////////////////////////////////////////////////////////461 462///////////////////////////////////////////////////////////////////463// DETECT HIDDEN BOT464// BAN REDS AND GREYS!!465clearsysmsg 466 467if not listexists "friendsofthehouse"468    createlist "friendsofthehouse"469endif470 471if not timerexists "detectHidingPlayersTimer"472    createtimer "detectHidingPlayersTimer"473    settimer "detectHidingPlayersTimer" 11000474endif475 476if not timerexists "sayBanTimer"477    createtimer "sayBanTimer"478    settimer "sayBanTimer" 2000479endif480 481if timer "detectHidingPlayersTimer" >= 11000482    useskill 'detectinghidden'483    wft 500484    target 'self'485    settimer "detectHidingPlayersTimer" 0486endif487 488hotkey 'Next non-friendly player target'489wait 200490if insysmsg "no one matching"491    // do nothing492else 493    say "Master.... I have spoted the intruder!!" 33494    wait 500495    @setvar! removeTarget lasttarget496    if inlist "friendsofthehouse" removeTarget 497        // do nothing498    elseif timer sayBanTimer >= 2000499        say "Don't worry Master!! I'll remove them for you!"500        wait 500501        say "I ban thee" 502        wft 1000503        target removeTarget 504        wait 200505        if insysmsg 'You cannot eject a friend of the house!'506        wait 500507            pushlist "friendsofthehouse" removeTarget 508        endif  509        settimer "sayBanTimer" 0510    endif511endif512 513/////////////////////////////////////////////// END OF DETECT HIDING BOT ///////////////////////////514////////////////////////////////////////////////////////////////////////////////////////////////////515 516///////////////////////////////////////////////517// GRAB TMAPS AND DECODE518// Map Decoder by AreYouKidden519 520while findtype 'map' playerContainer as map521    restock 2522    wft523    wait 500524    target playerContainer525    wait 5000526    say "Master I have your maps and soon will begin decoding them" 88527@removelist 'ToolHues'528@createlist 'ToolHues'529@removelist 'MapHues'530@createlist 'MapHues'531@removelist 'MapGumps'532@createlist 'MapGumps'533 534pushlist 'ToolHues' 0535pushlist 'ToolHues' 2419536pushlist 'ToolHues' 2406537pushlist 'ToolHues' 2413538pushlist 'ToolHues' 2418539pushlist 'ToolHues' 2213540pushlist 'ToolHues' 2425541pushlist 'ToolHues' 2207542pushlist 'ToolHues' 2219543pushlist 'ToolHues' 1763544 545pushlist 'MapHues' 0546pushlist 'MapHues' 2091547pushlist 'MapHues' 2904548pushlist 'MapHues' 2651549pushlist 'MapHues' 2799550pushlist 'MapHues' 2796551 552pushlist 'MapGumps' 1520869851 'front'553pushlist 'MapGumps' 1520869851 'front'554pushlist 'MapGumps' 2589357942 'front'555pushlist 'MapGumps' 3473029237 'front'556pushlist 'MapGumps' 1332805401 'front'557pushlist 'MapGumps' 3367641484 'front'558 559foreach 'Color' in 'MapHues'560    foreach 'x' in 'MapGumps'561         @setvar 'Gump' 'x' 562    endfor563    poplist 'MapGumps' 'back'564 565    while findtype '5356' 'backpack' 'Color' as 'Map'566        while find 'Map' 'backpack'567        wait 500568    wait 500569        if not find 'Tool1' 'backpack'570            foreach 'y' in 'ToolHues'571                if @findtype '5365' 'backpack' 'y' as 'found' and not find 'Tool1' 'backpack'572                    @setvar 'Tool1' 'found'573                    @setvar 'Hue1' 'y'574                endif575            endfor576        endif577        if not find 'Tool1' 'backpack'578            overhead 'Low End Tool not found' 33579            stop580        endif581        if not find 'Tool2' 'backpack'582            foreach 'y' in 'ToolHues'583                if @findtype '5365' 'backpack' 'y' as 'found'584                    @setvar 'Tool2' 'found'585                    @setvar 'Hue2' 'y'586                endif587            endfor588        endif589        if not find 'Tool2' 'backpack'590            overhead 'High End Tool not found' 33591            stop592        endif593 594        overhead 'Using Low End Tool' 'Hue1'595        clearsysmsg 596        dclick 'Tool1'597        pause 100598        wft 5000599        target 'Map'600        pause 100601        waitforgump 'Gump'602        gumpresponse 4603        pause 1500604        if insysmsg "no chance"605            lift 'Map' 9999606        drop 'botContainer' -1 -1 -1607        pause 500608        endif609        610        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"611              menu storageShelf 1612               wait 500613           endif614            clearsysmsg 615            pause 1000616            while find 'Map' 'backpack' and find 'Tool2' 'backpack'617                overhead 'Using High End Tool' 'Hue2'618                clearsysmsg 619                dclick 'Tool2'620                pause 100621                wft 5000622                target 'Map'623                pause 100624                waitforgump 'Gump'625                gumpresponse 4626                pause 1500627                if insysmsg "no chance"628                lift 'Map' 9999629                drop 'botContainer' -1 -1 -1630                pause 500631                endif632 633                if insysmsg 'You have reached the maximum accuracy'634                    overhead 'Map Decoded!' 88635                    pause 200636                    wait 500637                    say "Master I completed a map and will put it in the BLACK chest now for you!"638                    wait 1000639                    lift 'Map' 9999640                    drop 'botContainer' -1 -1 -1641                    pause 500642                endif643            endwhile644        endif645        endwhile646    endwhile647endfor648endwhile649 650////////////////////////////// END OF MAP DECODING BOT ////////////////////////////////////////////////////////651//////////////////////////////////////////////////////////////////////////////////////////////////////////////652 653///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 654/////// Make Distills from extracts found in the Player Conatainer655//////656while findtype 'bottle' playerContainer as extract657    @setvar! foundExtract 1658    getlabel extract extractName659    say 'Ah ha! I see you have an extract for me to distill!' 66660    wait 2000661    restock 1662    wft 663    target playerContainer664    wait 10000665    say "I have your extracts Master... Making Distills Now!" 66666    wait 1000667    menu resourceSP 0668    waitfortarget669    target 'self'670     say [CraftingQueue671     wait 1000672     waitforgump 453554062673     gumpresponse 7674  for 60000 675       wait 1000676        if insysmsg 'Crafting queue complete'677            wait 500678        say "Your Distills are ready Master!" 66679            wait 1000680            say "If you like my services master, Please consider giving me a tip at my tip vendor"681            wait 500682            loop683   else 684       say "Master... Mixing is in progress please wait!" 66685    wait 10000686    endif687    endfor688endwhile689 690wait 1000691replay692endwhile693////////////////////////////////////////////////////END OF DISTILL MAKING BOT //////////////////////////////////