AlternateDefault
From CLUMP
Jump to navigationJump to search
Description
- An alternate default which incorporates global variables so main items are set in this area vice being set in individual macro files - e.g. Sunstone.
Dependencies
- Abbreviations.mac, Dances.mac, Directions.mac, Funactions.mac, Keys.mac, Omega_zu.mac, Quickchain.mac, Shares.mac, Readtext.mac, Sunstone.mac, Scanner.txt
Usage
- Save code section into file called Default in your clanlord/data/macros folder.
Noteworthy techniques
- Usage of SET function to set variables, on the fly while clanning without having to reload macros.
- Usage of Global Variables to allow define once, use everywhere.
- Avoids the hassle of editing macros to change an item to it's upgraded variant everywhere that item is referrred to.
- All key/mouse actions defined centrally.
- Requires called macro be defined in an included file.
- Requires that no key/mouse actions be defined in any other file.
- Makes it simple to figure out which keys you have not assigned yet.
- Single scan/loop - to prevent conflicting never ending loops.
- NOW INCLUDES: Raul's readtext trainer messages to prevent overlap.
- Automatic idle startup.
- Some things will still kill it, so to restart, reload macros (CTRL+R).
- Moved all but global procedures out of default into dedicated files to clean up default and avoid the feeling that you are swimming through an encyclopedia.
Credits
- DragonHawk - AwakeAFK
- Gorvin - Shares
- Inu - Random thank, single instance definitions, integration of various other macros into this Alternate Default, moving stuff not required for scanner/set global into their own dedicated file.
- Kiriel D'Sol - Directions
- Noivad - Moneycount, Omega_Zu, Quickchain, Sunstone, tc_macro,
- Phineas - idle
- Raul - Readtext (trainer messages)
- Torin - Exilepicker
Code
//------------------------------------------------ // default //------------------------------------------------ // This macro file is included for every character by default. // Use it for general macros that you want available to all characters. include "abbreviations.mac" include "dances.mac" include "directions.mac" include "funactions.mac" include "omega_zu.mac" include "readtext.mac" include "shares.mac" include "sunstone.mac" include "tc_macro.mac" include "quickchain.mac" include "manticore.mac" include "keys.mac" include "moneycount.mac" @login { //:::::::::::::::::::::::::::::::::::::::::::::::: // Global Variables Defined //:::::::::::::::::::::::::::::::::::::::::::::::: // 20071229-inu: Moved out of abbreviations.mac & tc_macro.mac setglobal NumZuBags 2 // the number of kudzu bags you carry, for some reason that scanner is in here setglobal ThankRandom 1 // turns on thank random routine at startup for use with idle routine setglobal scanBreak 0 // Enables scanner to run continuously. setglobal InfoExile 0 // Turns off exile info by default in AFK macro called on login, set can change it. setglobal MySunStone sungem // Set this to your sunstone, used in sunstone and tc_macro. setglobal IdleTime 100 // Set this to the desired pause time for idle macro (every 4 = 1 second approximately) setglobal default_pie_target "DragonHawk" //Used by Pie-O-Matic in funactions.mac setglobal weapon_of_choice "moonstone" //Used by Quickchain.mac to re-equip default right hand item. call MoneyCount call GoScan } //:::::::::::::::::::::::::::::::::::::::::::::::: // Function key macros //:::::::::::::::::::::::::::::::::::::::::::::::: // This allow all key based macros to be called from here. // Makes it easier to track which keys are used for which macros. // // F1 - embedded pull // F2 - embedded push // F3 - to moonstone.mac // F4 - to moonstone.mac // F5 - to quickchain.mac // F6 - to omega_zu.mac f1 "/pull " @splayer "\r" f2 "/push " @splayer "\r" f3 call itemswap //f3 switches between an item and your moonstone, shift-f3 call itemswap2 //When switching to the moonstone, you get a quick burst control-F3 call ultcad control-shift-F3 call ultcad2 f4 call cadswap f5 call flybychain f6 call zu-stuff shift-f6 call zu-add ctrl-f6 call zu-remove // Other keys control-click2 call click-action // Quickchain.mac -- Needs to be reviewed, problematic. click3 "/thank " @selplayer.simple_name "\r" control-click "/pull " @click.name "\r" control-shift-click "/push " @click.name "\r" control-tab setglobal mStop 1 // wheelup call flybychain // highly recommend against assigned anything to wheel up nor down // wheeldown call DHAwakeAFK // unless you have a clicky wheel. Using this with a smooth // scrolling mouse is not something to try, // use as you will have multiple calls to same macro. chain break! click4 message ==> TESTING // New mice have more than 3 buttons. //:::::::::::::::::::::::::::::::::::::::::::::::: // Macros called from login are defined here //:::::::::::::::::::::::::::::::::::::::::::::::: // //------------------------------------------------ // Torin's Exile Picker Macro //------------------------------------------------ // Picks a random exile // 20080129-inu: Fixed to stop picking myself. "/pick" call ExilePicker // ExilePicker { set numPlayers 0 "/select " @last "\r" set lastExile @selplayer.simple_name "/select " @first "\r" set Exile[1] @selplayer.simple_name if @selplayer.simple_name == lastExile set numPlayers 1 goto ranPicker end if set exileCounter 1 label exileCountLoop "/select " @next "\r" set exileCounter + 1 set Exile[exileCounter] @selplayer.simple_name if @selplayer.simple_name == lastExile set numPlayers exileCounter goto ranPicker end if goto exileCountLoop label ranPicker set ranPick @random set ranPick % numPlayers set ranPick + 1 set testexile Exile[ranPick] if testexile == @my.simple_name set ranPick +1 end if setglobal randomExileClanning Exile[ranPick] "/select " randomExileClanning "\r" label endexilepicker } //------------------------------------------------ // GoScan and Scanner macros (Noivad's + ?) //------------------------------------------------ "goscan" call GoScan GoScan { set @env.key_interrupts false //when you start you want it to loop set @env.click_interrupts false //these two lines makes sure it doesn't shut off if messageStatus == 1 message "Scanner On:" pause 8 end if if @text == "?" message "Type \"/t?\" to find the target." pause 8 message "Type \"/ts <name> [text]\" sets the target and sends them a message if you include one." pause 8 message "Type \"/set feedback [1|0|on|off]\" to toggle feedback on|off." pause 8 message "Type \"noscan\" to stop GoScan and DHAwakeAFK." end if "/pose lie\r" if @my.name == "Inu Teisei" "/action naps like DH \r" else "/action is sleeping \r" end if message **Idling with anti time-out active. call Scanner } //------------------------------------------------ // Scanner Macro (Noivad's + ?) //------------------------------------------------ Scanner { // Rev 2.0 // RevLog: // 20071231-inu: Integrated DH's AwakeAFK macro with this scanner to avoid problems and auto call on login // 20080128-inu: Removed excessive pause in integrated DHAwakeAFK integrated counter instead. // Integrated Raul's trainer message reader. set IdleCount 0 label scanTop pause 1 if scanBreak == 1 goto scanEnder else //------------------------------------------------ // BEGIN: Scan for Text Section //------------------------------------------------ set scanText @env.textLog if scanText.word[0] < "/" setglobal timeStamps 3 setglobal playerName 2 setglobal me 6 else setglobal timeStamps 1 setglobal playerName 0 setglobal me 3 end if if scanText.word[timeStamps] == "thinks" //with timestamps[3] w/o [1] if scanText < "thinks to you, \"" if ssTarget != scanText.word[playerName] //w/timestamps[2] w/o[0] if scanText.word[playerName] != @my.name setglobal ssTarget scanText.word[playerName] setglobal feedback 1 //turn on feedback for new target pause 4 set IdleCount + 4 end if end if if messageStatus == 1 //this controls overall feedback //This if block turns off feedback when the target hasn't changed if feedback == 1 message "/tl target: " ssTarget setglobal feedback 0 end if end if end if else if scanText < "Captain Barnac asks, \"Ah, " set namePer @my.name set namePer + "." if scanText.word[me] == namePer pause 1 set IdleCount + 1 "yes\r" end if else if scanText < "Paul Deckand asks, \"Ah, " set namePer @my.name set namePer + "." if scanText.word[me] == namePer pause 1 set IdleCount + 1 "yes\r" end if else if scanText < "Fird Lirden asks, \"Ah, " set namePer @my.name set namePer + "." if scanText.word[me] == namePer pause 1 set IdleCount + 1 "yes\r" end if else if scanText < "* You don't have anything like that" if bag_number < NumZuBags setglobal bag_number + 1 message "*bag set to " bag_number "/equip bag of kudzu seedlings " bag_number "\r" else if bag_number > NumZuBags setglobal bag_number 1 "/equip bag of kudzu seedlings " bag_number "\r" end if pause 8 set IdleCount + 8 else if scanText < "You have no 'bag of kudzu seedlings" setglobal bag_number 1 "/equip bag of kudzu seedlings " bag_number "\r" else pause 1 set IdleCount + 1 end if //------------------------------------------------ // END: Scan for Text Section //------------------------------------------------ // START: DHAwakeAFK integration //------------------------------------------------ // Credits: Idle and awakeafk macros by DragonHawk // Adding Idle macro to this one big loop to stop possible conflicts between the two if IdleCount > IdleTime // Only execute this part one time per IdleTime period random message ::** ThankRandomExile **:: if ThankRandom == 1 call ExilePicker "/karma " randomExileClanning " \r" "/thank " randomExileClanning " **Yay! You won the thank lottery! ;p \r" end if "/pose stand se \r" or message ::** CheckMoney **:: "/money \r" if InfoExile == 1 "/info " randomExileClanning " \r" end if "/pose thoughtful \r" or message ::** InfoRandomExile **:: "/pose stand \r" "/pose sit " if InfoExile == 1 "/info " randomExileClanning " \r" end if end random "/karma \r" set IdleCount 0 end if set IdleCount + 1 //------------------------------------------------ // END: DHAwakeAFK integration //------------------------------------------------ // START: Readtext.mac by Raul integration //------------------------------------------------ setglobal gtrainerPhrase scanText call rankcount //------------------------------------------------ // END: Readtext.mac - trainer message by Raul integration //------------------------------------------------ goto scanTop end if // Scanner Loop label buggy //After time some infinite loops run away Message "Bug Detected:" //on you. So, I place these messages pause 2 //in to let you know if the macro Message "**Use <CTRL>-TAB to halt***" //has jumped out of the regular loop pause 120 //<--gives you time to escape the loop. label scanEnder if messageStatus == 1 message "Scanner Off" end if set @env.key_interrupts true //Kludges to try to stop a run away macro set @env.click_interrupts true //Kludges pause 300 //Kludges } //------------------------------------------------ // Global SET macro (Noivad's + ?) //------------------------------------------------ "/set" //non-optimized to add: messageVariable and call InstructionMessages { if @text.word[0] == "verbose" if @text.word[1] == "?" message "* This variable sets whether or not to associate an \"/action\" or \"/narrate\" with a macro." pause 16 message "\"1\" is on, \"0\" is off." if modeVerbose == 0 message "*Verbose mode is off." else message "*Verbose mode is on." end if else if @text.word[1] == 1 setglobal modeVerbose @text.word[1] else if @text.word[1] == 0 setglobal modeVerbose @text.word[1] else message "Error: Verbose Mode must be set to 0 or 1." goto end end if if modeVerbose == "1" message "*Verbose mode: On." else if modeVerbose == "0" message "*Verbose mode: Off." end if end if else if @text.word[0] == "debug" if @text.word[1] == "?" message "*This variable sets whether debugger messages are displayed when testing a macro." pause 12 if debug == 0 message "*debug is off." else message "*debug mode is on." end if else if @text.word[1] == 1 setglobal debug @text.word[1] else if @text.word[1] == 0 setglobal debug @text.word[1] else if @text.word[1] == "on" setglobal debug 1 else if @text.word[1] == "off" setglobal debug 0 else message "Error: Debug Mode must be set to 0 or 1, or off and on." goto end end if message "debug is set to: " debug else if @text.word[0] == "longsleep" if @text.word[1] == "?" message "*This variable is used to toggle the long sleep macro \"on\" and \"off\"." if longsleep == 0 message "*longsleep is off." else message "*longsleep is on." end if else if @text.word[1] == "off" setglobal longsleep 0 message "*longsleep is off." else if @text.word[1] == "on" setglobal longsleep 1 message "*longsleep is on." end if else if @text.word[0] == "bag" if @text.word[1] == "?" message "*This variable is used to select a bag number to use for kudzu planting." message "the current bag is " bag_number "." end if if @text.word[1] > 0 setglobal bag_number @text.word[1] "/selectitem \"bag of kudzu seedlings <#" bag_number "\"\r" message "the current bag is " bag_number "." end if else if @text.word[0] == "maxbag" if @text.word[1] == "?" message "*This variable is used to set how many kudzu bags you have on you." message "the number of kudzu bags is " max_bag "." end if if @text.word[1] > 0 setglobal max_bag @text.word[1] message "you number of kudzu bags is set at " max_bag "." end if else if @text.word[0] == "loc" if @text.word[1] == "" setglobal FallingAt "" setglobal FallingLocSet 0 message fallingAt set with \"set loc\" to NADA else if @text.word[1] == "list" message fallingAt set with \"set loc\" to FallingAt else setglobal FallingAt "" setglobal FallingAt @text setglobal FallingLocSet 1 message fallingAt set with \"set loc\" to FallingAt end if else if @text.word[0] == "thankrandom" if @text.word[1] == "" setglobal ThankRandom 0 message "ThankRandom turned off" else if @text.word[1] == "?" if ThankRandom == 1 message "ThankRandom is currently on" else message "ThankRandom is currently OFF" end if else if @text.word[1] == "on" setglobal ThankRandom 1 message "ThankRandom is currently on" else if @text.word[1] == "off" setglobal ThankRandom 0 message "ThankRandom is currently OFF" else // default without params is to turn ThankRandom ON setglobal ThankRandom 1 message "ThankRandom is currently on" end if else if @text.word[0] == "infoexile" if @text.word[1] == "" setglobal InfoExile 0 message "InfoExile turned off" else if @text.word[1] == "?" if InfoExile == 1 message "InfoExile is currently on" else message "InfoExile is currently OFF" end if else if @text.word[1] == "on" setglobal InfoExile 1 message "InfoExile is currently on" else // default without params is to turn InfoExile OFF setglobal InfoExile 0 message "InfoExile is currently OFF" end if else if @text.word[0] == "feedback" if @text.word[1] == "?" message "Set feedback off macros to be <on|1> or <off|0>" if messageStatus == 0 set feedback "off" else if messageStatus == 1 set feedback "on" end if message "feedback is " feedback else if @text.word[1] == "on" setglobal messageStatus 1 message "feedback is on" else if @text.word[1] == "off" setglobal messageStatus 0 else if @text.word[1] == "1" setglobal messageStatus @text.word[1] message "feedback is on" else if @text.word[1] == "0" setglobal messageStatus @text.word[1] end if else if @text.word[0] == "pie" if @text.word[1] == "?" message "Set the default pie target used by /pie, /pom" message "Current target is " default_pie_target else if @text.word[1] == "" setglobal default_pie_target @selplayer.simple_name message "New default pie target is: " default_pie_target else setglobal default_pie_target @text.word[1] message "New default pie target is: " default_pie_target end if else message "*The following variables are available to set using this command:" pause 4 message "*verbose [0|1|?], longsleep [on|off|?]" pause 4 message "feedback [1|0|on|off]" pause 4 message "*clock, bag [(number)], maxbag (number), wh(isper) [on|off], debug [on|1|off|0]" pause 4 message "loc [areaname], "thankrandom [on|off|?], infoexile [off|on|?]" pause 4 message "pie [targetname or selected in playerlist|?]" end if label end } "noscan" { setglobal scanBreak 1 //This alows you to stop this macro without stopping other macros } // Wait or sleep, by Phineas setglobal zzToggle 0 "zz" { if zzToggle == 1 message "zz - zzToggle=1" setglobal zzToggle 0 else if zzToggle == 0 message "zz - zzToggle=0" setglobal zzToggle 1 setglobal sleepToggle 1 end if call wait_routine } "zzz" { if zzToggle == 1 message "zzz - zzToggle=1" setglobal zzToggle 0 else if zzToggle == 0 message "zzz - zzToggle=0" setglobal zzToggle 1 "\pose lie\r" "\sleep\r" setglobal sleepToggle 1 end if call wait_routine } wait_routine { label wr_01 //message "wait routine - top" if zzToggle == 1 pause 400 random { message "wr - random -1- karma" "\karma\r" pause 100 or message "wr - random -1- money" "\money\r" pause 100 or message "wr - random -1- dreaming" "\sleep \r" pause 100 end random } goto wr_01 end if message "*zz is Off" }
Revisions
- v1.0 2008012x-inu: posted.
- v1.1 20080128-inu: Fixed errors
- v2.0 20080128-inu: Revamped to remove excessive idle pause and integrate Raul's Trainer messages. Also by removing excessive pause in integrated DHAwakeAFK part of scanner, eliminated one way fogginess (where everything keeps moving except you).
- v2.1 20080129-inu: Added recommended movement of Raul's readtext.mac back to separate file while still integrating into the main scanner loop via a call as recommended by ?.
- v2.1.1 20080129-inu: Added pie-o-matic global default pie target variable. Fixed ExilePicker to exclude currently clanning character.
Links
- Macros
- Macros_Contributed
- Troubleshooting_macros
- Github CL-LA/macros -- Use Right Click/New Tab to open in another tab