• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Various Tradeskill MACS (1 Viewer)

This is a very very simple combining macro I made. Good for semi-AFK macroing. You have to buy the components yourself and find the recipe (or make the first combine manually), then this will simply just hit combine and /autoinv till it's out of items.
Requires you to target yourself to run.. I should probably change that to just any target.
Rich (BB code):
| Combine.mac
#Event Missing  "#*#You are missing a#1#"
Sub Main
    /declare Timeout    timer   local   30s
    :loop
        /if (!${Bool[${Timeout}]}) {
            /echo Stopped! Reason: Timeout.
            /endmacro
        }
        /if (${Bool[${Cursor.ID}]}) /autoinv
        /if (${Window[TradeSkillWnd].Child[CombineButton].Enabled}) {
            /notify TradeSkillWnd CombineButton leftmouseup
            /varset Timeout 30s
        }
        /delay 5
    /if (${Target.ID} == ${Me.ID}) /goto :loop
/return

Sub Event_Missing(string Component)
    /echo Stopped! Reason: Missing ${Component}
    /endmacro
/return
 
i will be updating all macs this weekend...

/target 'forge' or enviro container no longer put the item on your target window..

so moving to it now is fubar.. simple fix is switching those to locs.. instead..

will be easy fix.. just need to do it and run it on one of my toons to ensure its G2G




ELS the autocombine mac is in the list of confirmed macros also
 
armysoldier said:
i will be updating all macs this weekend...

/target 'forge' or enviro container no longer put the item on your target window..

so moving to it now is fubar.. simple fix is switching those to locs.. instead..

will be easy fix.. just need to do it and run it on one of my toons to ensure its G2G




ELS the autocombine mac is in the list of confirmed macros also
I just tested something in Bazaar..

Enviromental combiners are now ground spawns..
Oven in Bazaar is Drop10803/0
/itemtar Drop10803/0
/call MoveSub ${Ground.Y} ${Ground.X} ${Ground.Z}

You should test if these "spawn" names hold true everywhere, then just use that and the Ground TLO.
 
JC.mac

12/28/05: added salvage event

READ THE NOTES!!!

Rich (BB code):
| 
| jc.mac
| Takes you from 1 to 250 in Jewelry Crafting
| Version 2.5
| Date: September 14, 2004
|
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/15/05: by ArmySoldier 
|           removed delay variable
|           minor updates due to Struct changes 
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 250 in Jewelry Crafting.
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantName is which merchant you are at.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be next to the merchant in order for this to work.
| Also, be sure you have a lot of money on you to go from 1 to 250.
|
| Requirements:
| You will need a Jewelry Kit (in the last slot).
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| 


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main 
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantName string Outer
    /declare BarItem item outer
    /declare GemItem item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Jewelry Making]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************

    /varset SkillMaxWanted 250
    /varset MerchantName "Rilwind Sitnai"
    /varset DelayMult 1


| ************************************************
| ************************************************

    :start
    /echo Jewelry Crafting is at ${Me.Skill[Jewelry Making]}

    /if (${Me.Skill[Jewelry Making]}>=${SkillMaxWanted}) {
      /echo Jewelry Making is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Jewelry Making]}>=220 && ${Me.Skill[Jewelry Making]}<=250) {
      /varset BarItem "platinum bar"
      /varset GemItem "jade"
      /varset CombItemName "PJ"
      /varset ItemTo "Jaded Platinum Ring"
    }

    /if (${Me.Skill[Jewelry Making]}>=202 && ${Me.Skill[Jewelry Making]}<220) {
      /varset BarItem "platinum bar"
      /varset GemItem "lapis lazuli"
      /varset CombItemName "PLL"
      /varset ItemTo "Platinum Lapis Lazuli Necklace"
    }

    /if (${Me.Skill[Jewelry Making]}>=191 && ${Me.Skill[Jewelry Making]}<202) {
      /varset BarItem "gold bar"
      /varset GemItem "fire emerald"
      /varset CombItemName "GFE"
      /varset ItemTo "Fire Emerald Golden Bracelet"
    }

    /if (${Me.Skill[Jewelry Making]}>=183 && ${Me.Skill[Jewelry Making]}<191) {
      /varset BarItem "gold bar"
      /varset GemItem "star ruby"
      /varset CombItemName "GSA"
      /varset ItemTo "Golden Star Ruby Ring"
    }

    /if (${Me.Skill[Jewelry Making]}>=183 && ${Me.Skill[Jewelry Making]}<191) {
      /varset BarItem "gold bar"
      /varset GemItem "opal"
      /varset CombItemName "GO"
      /varset ItemTo "Golden Opal Amulet"
    }

    /if (${Me.Skill[Jewelry Making]}>=172 && ${Me.Skill[Jewelry Making]}<183) {
      /varset BarItem "gold bar"
      /varset GemItem "topaz"
      /varset CombItemName "GT"
      /varset ItemTo "Golden Topaz Earring"
    }

    /if (${Me.Skill[Jewelry Making]}>=146 && ${Me.Skill[Jewelry Making]}<172) {
      /varset BarItem "gold bar"
      /varset GemItem "amber"
      /varset CombItemName "GA"
      /varset ItemTo "Golden Amber Earring"
    }

    /if (${Me.Skill[Jewelry Making]}>=100 && ${Me.Skill[Jewelry Making]}<146) {
      /varset BarItem "gold bar"
      /varset GemItem "malachite"
      /varset CombItemName "GM"
      /varset ItemTo "Gold Malachite Bracelet"
    }

    /if (${Me.Skill[Jewelry Making]}>=76 && ${Me.Skill[Jewelry Making]}<100) {
      /varset BarItem "electrum bar"
      /varset GemItem "amber"
      /varset CombItemName "EA"
      /varset ItemTo "Electrum Amber Earring"
    }

    /if (${Me.Skill[Jewelry Making]}<76) {
      /varset BarItem "electrum bar"
      /varset GemItem "lapis lazuli"
      /varset CombItemName "EL"
      /varset ItemTo "Electrum Lapis Lazuli Earring"
    }

    /varset EndingVar 1
    /target ${MerchantName}
    /face
    /nomodkey /click right target
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${BarItem}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${GemItem}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${BarItem} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${GemItem} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /keypress esc

    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s


    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /doevents
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantName}
    /face
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /keypress esc


    /goto :start

    /return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| READ INI
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe, which makes ${ItemTo}.

    /if (${Ini["jc.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
         /echo Recipe ${RecipeName} not found 
         /endmacro 
     } 

    /varset Container ${Ini[jc.ini,${RecipeName},Cont,Enviro]} 
 
    /if (${Container.Equal[Enviro]}) { 
         /varset PackCode Enviro 
    } else { 
         /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
         /if (${PackCode.Equal[NULL]}) { 
            /echo Could not find container ${Container} 
            /varset EndingVar 2
            /return
         } 
         | pack1 = 22, ... , pack8 = 29 
         /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
    }  

    /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[jc.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
    /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Do Combine 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop
      /combine ${PackCode} 
    /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay ${Math.Calc[${DelayMult}*2]}s
      /if (${Me.Skill[Jewelry Making]}>${OldSkill}) {
        /echo Your Jewelry Crafting Went Up!! It's now ${Me.Skill[Jewelry Making]}!
        /varset OldSkill ${Me.Skill[Jewelry Making]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Event Combine Error 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return
 
Last edited:
this is the brewing mac using OLD UI

I suggest maybe running this for your first few minutes until you get a successful combine... then you can use the NEW UI brewing mac

12/28/05: added Salvage Event


Rich (BB code):
| 
| brewing.mac  <------ OLD UI  ***********
| Takes you from 1 to 248 in Brewing
| Version 2.8
| Date: September 14, 2004
|
| KEY NOTE: ensure your mouse cursor is centered on screen... or it will not open TS container
|
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/15/05: by ArmySoldier 
|           minor updates due to Struct changes
|           removed selling of reusable items... casks or supplies etc
|
| 11/15/05: by ArmySoldier
|           removed dalay variable 
|           changed purchase of water to 20 more than needed... so toon always has drink
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 248 in brewing. 
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantNameA is which merchant has the brewing components.
| MerchantNameB is which merchant has the water and short beer components.
| You will need to change the DelayMult to higher if you are laggy, this
|   number will be multiplied to the default delay.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be between both merchants to be able to use this macro.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| This macro may not work any other place then the Abysmal Sea.
| 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc


Sub Main
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare MerchantNameB string Outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CombItemName string outer
    /declare ItemToA string outer
    /declare ItemToB string outer
    /declare ItemToC string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Brewing]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************
  
    /varset MerchantNameA "Yitimis Groglenog"
    /varset MerchantNameB "Dray Cuves"
    /varset SkillMaxWanted 199
    /varset DelayMult 1

    /echo CENTER your MOUSE ... now pls
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s

| ************************************************
| ************************************************

    :start
    /echo Brewing is at ${Me.Skill[Brewing]}

    /if (${Me.Skill[Brewing]}>=${SkillMaxWanted}) {
      /echo Brewing is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Brewing]}<${SkillMaxWanted}) {
      /varset CompA "cask"
      /varset CompB "malt"
      /varset CompC "short beer"
      /varset CompD "water flask"
      /varset CompE "yeast"
      /varset CombItemName "MHB"
      /varset ItemToA "Minotaur Hero's Brew"
      /varset ItemToB "bottle"
      /varset ItemToC "cask"
    }
    /varset EndingVar 1
    /call GoToMerchant
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemToA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${ItemToB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} 240
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompE} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
     /call ClosePacks
    /nomodkey /keypress esc
    /nomodkey /keypress esc
    /keypress esc

    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 160
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompD} 180
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call GoToBarrel
    /itemtarget "Brew Barrel"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /click left item
    /click left item
    /delay ${Math.Calc[${DelayMult}*1]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /nomodkey /keypress esc
    /nomodkey /keypress esc

    /call GoToMerchant
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call OpenPacks
    /call Sell ${ItemToA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${ItemToB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /keypress esc
    /nomodkey /keypress esc
    /call ClosePacks

    /goto :start

/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Read ini
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub readIni(RecipeName) 
   /declare Container string local

   /echo Running ${RecipeName} recipe, which makes ${ItemToA}.

   /if (${Ini["brewing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[brewing.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }

   /call cleanPack "${Container}"

   /for i 1 to 10 
      /varset Component[${i}] ${Ini[brewing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
   /next i 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
    /delay ${Math.Calc[${DelayMult}*2]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /if (${Me.Skill[Brewing]}>${OldSkill}) {
        /echo Your Brewing Went Up!! It's now ${Me.Skill[Brewing]}!
        /varset OldSkill ${Me.Skill[Brewing]}
      }
    /doevents
    /return 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 
   /doevents
   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   } 
   /doevents   
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_CombineError 
    /varset EndingVar 2
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Brew Barrel"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Move Subs
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Sub GoToMerchant
  /echo Going to Merchants.
  :PullMoveLoop
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -145.30,178.83
  /if (${Math.Distance[-145.30,178.83]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-145.30,178.83]}<=2) {
    /nomodkey /keypress forward
    /return
  }
  /goto :PullMoveLoop 
/return 

Sub GoToBarrel 
 /echo Going to Brewing Barrel. 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -209,170 
  /if (${Math.Distance[-209,170]}>2) /keypress forward hold 
  /if (${Math.Distance[-209,170]}<=2) { 
    /keypress forward 
    /itemtarget "Brew Barrel"
    /return 
  } 
  /goto :PullMoveLoop 
  /itemtarget "Brew Barrel"
/return
 
Last edited:
baking.mac uses old UI

12/28/05: added Salvage event

Rich (BB code):
| 
| baking.mac 
| Takes you from 1 to 191 in Baking 
| Version 2.1 
| Date: August 3, 2004
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/15/05: minor updates due to Struct changes by ArmySoldier 
|
| 11/15/05: removed dalay variable by ArmySoldier
| 
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/index.htm 
| 
| Before are the settings you need to change for you. 
| This Macro can take you up to 191 in baking. 
| SkillMaxWanted can be change to what skill you want to stop at. 
| MerchantNameA is which merchant has the cheese. 
| MerchantNameB is which merchant has the loaf of bread and wolf meat. 
| 
| This Macro works best in the Abysmal Sea since all the components are there. 
| You WILL need to be behind Tylida Eraldi to be able to use this macro. 
| 
| Requirements: 
| You will need a spit (in the last slot) and a Non-Stick Frying Pan. 
| 
| Disclaimer: 
| Code was used from other programers also from the MQ Forums. 
| This macro may not work any other place then the Abysmal Sea. 
| 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc 
#include common/buy.inc 
#include common/packs.inc 

Sub Main 
    /declare OldSkill int outer 
    /declare SkillMaxWanted int outer 
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer 
    /declare MerchantNameA string Outer 
    /declare MerchantNameB string Outer 
    /declare CompA item outer 
    /declare CompB item outer 
    /declare CompC item outer 
    /declare CombItemName string outer 
    /declare ItemToA string outer 
    /declare ItemToB string outer 
    /declare ItemToC string outer 
    /declare EndingVar int outer 
    /declare Levelname int outer 
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Baking]} 

| ************************************************ 
| *   Change these settings to what you want.    * 
| ************************************************ 
  
    /varset MerchantNameA "Tylida Eraldi" 
    /varset MerchantNameB "Dray Cuves" 
    /varset SkillMaxWanted 191 
    /varset DelayMult 1

| ************************************************ 
| ************************************************ 

    :start 
    /echo Baking is at ${Me.Skill[Baking]} 

    /if (${Me.Skill[Baking]}>=${SkillMaxWanted}) { 
      /echo Baking is at ${SkillMaxWanted}. Quiting! 
      /endmacro 
    } 

    /if (${Me.Skill[Baking]}<${SkillMaxWanted}) { 
      /varset CompA "cheese" 
      /varset CompB "loaf of bread" 
      /varset CompC "bear meat" 
      /varset CombItemName "PM" 
      /varset ItemToA "Patty Melt" 
    } 

| ************************************************ 
| But Components
| ************************************************ 
    /varset EndingVar 1 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /target ${MerchantNameA} 
    /face 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click right target 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call Buy ${CompB} 40 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call Buy ${CompC} 40 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /keypress esc 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    
    /call GoToMerchantB 
    /delay ${Math.Calc[${DelayMult}*2]}s 
    /target ${MerchantNameB} 
    /face 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click right target 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call Buy ${CompA} 40 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /keypress esc
    /call OpenPacks 
    /delay 3s 
    /notify TradeskillWnd ExperimentButton leftmousehold 
    /notify TradeskillWnd ExperimentButton leftmouseup 
    /delay ${Math.Calc[${DelayMult}*2]}s 

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /doevents
       /if (${EndingVar}==1) /goto :Begin 
  
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /delay ${Math.Calc[${DelayMult}*1]}s 
    /target ${MerchantNameB} 
    /face 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click right target 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call OpenPacks 
    /delay ${Math.Calc[${DelayMult}*2]}s 
    /call Sell ${ItemToA} 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call GoToMerchantA 

    /goto :start 

    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Read the Ini
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe, which makes ${ItemToA}. 

   /if (${Ini["baking.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[baking.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
        
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2 
         /return 
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[baking.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Clear the cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy    
      /delay 5 
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Do the Combines
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
       /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5 
      /if (${Me.Skill[Baking]}>${OldSkill}) { 
        /echo Your Baking Went Up!! It's now ${Me.Skill[Baking]}! 
        /varset OldSkill ${Me.Skill[Baking]} 
      } 
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Add Component
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2 
      /return 
    } 

   :Loop 
      /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]} 
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_CombineError 
    /varset EndingVar 2 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return


Sub GoToMerchantA 
  /echo Going to ${MerchantNameA}. 
  :PullMoveLoopa 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -120.78,181.51 
  /if (${Math.Distance[-120.78,181.51]}>2) /keypress forward hold 
  /if (${Math.Distance[-120.78,181.51]}<=2) { 
    /keypress forward 
    /goto :PullMoveLoopb 
  } 
  /goto :PullMoveLoopa 
  :PullMoveLoopb 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -104.60,192.32 
  /if (${Math.Distance[-104.60,192.32]}>2) /keypress forward hold 
  /if (${Math.Distance[-104.60,192.32]}<=2) { 
    /keypress forward 
    /goto :end 
  } 
  /goto :PullMoveLoopb 
  :end 
/return 

Sub GoToMerchantB 
  /echo Going to ${MerchantNameB}. 
  :PullMoveLoopg 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -120.78,181.51 
  /if (${Math.Distance[-120.78,181.51]}>2) /keypress forward hold 
  /if (${Math.Distance[-120.78,181.51]}<=2) { 
    /keypress forward 
    /goto :PullMoveLooph 
  } 
  /goto :PullMoveLoopg 
  :PullMoveLooph 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -148.99,180.15 
  /if (${Math.Distance[-148.99,180.15]}>2) /keypress forward hold 
  /if (${Math.Distance[-148.99,180.15]}<=2) { 
    /keypress forward 
    /goto :end 
  } 
  /goto :PullMoveLooph 
  :end 
/return
 
Last edited:
Baking.ini

Rich (BB code):
[PM]
Cont=Spit
Comp0=loaf of bread
Comp1=cheese
Comp2=bear meat
Comp3=non-stick frying pan

jc.ini

Rich (BB code):
[EL]
Cont=Jeweler's Kit
Comp0=electrum bar
Comp1=lapis lazuli


[EA]
Cont=Jeweler's Kit
Comp0=electrum bar
Comp1=amber

[GM]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=malachite

[GA]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=amber

[GT]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=topaz

[GO]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=opal

[GSR]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=star ruby

[GFE]
Cont=Jeweler's Kit
Comp0=gold bar
Comp1=fire emerald

[PLL]
Cont=Jeweler's Kit
Comp0=platinum bar
Comp1=lapis lazuli

[PJ]
Cont=Jeweler's Kit
Comp0=platinum bar
Comp1=jade
 
2 MAR 06: COMBW_CombineArea changed to TradeskillWnd


this is that same one from our confirmed macro's thread.. but most people do not use search or look there so here it is again

Rich (BB code):
#event OutOfStuff "Sorry, but you don't have everything you need for this recipe in your general inventory." 
  
Sub Main 
:Loop 
 
:ClearCursor 
/if (${Cursor.ID}) { 
/autoinventory 
/goto :ClearCursor 
} 
 
/notify TradeskillWnd CombineButton leftmouseup 
/doevents 
/goto :Loop 
/return 
 
Sub Event_OutOfStuff 
/endmacro 
/return

used today .. and works fine
 
Last edited:
lol i am gonna do some more tunare dust today or tomorrow.. and should be finished...

I have been prepping for my son's visit for xmas.. so not much EQ time

sorry


if by some chance i do not get it done tomorrow... it will have to wait until after the 26th when my son leaves
 
Its all good, Army. If there's a bit you need help on and think I could be of assistance, don't be afraid to ask! Have fun with your son!
 
I am trying to clean a couple tradeskill macros I use and am finiding the problems seem to be when I have to open something in a slot to do the skill such as baking .... could someone post the line to open you JC bag or item for baking.... most of the forge and brewing macs work for me now...
 
KK thanks Army got them working now to fix why I am CTD ... not the mac's I know that ... do you have a pottery one yet?
 
POTTERY.mac

Don't forget to center your mouse

12/28/05: added salvage event


Rich (BB code):
| 
| pottery.mac
| Takes you from 1 to 188 in pottery
| Version 2.4
| Date: September 14, 2004
|
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/18/05: by Army Soldier
|           Removed Delay variable and made it hard #'s
|           Fixed pottery wheel targeting/ opening issue
|           Removed selling of reusable components
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 188 in pottery. 
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantNameA is which merchant has the water flask.
| MerchantNameB is which merchant has the firing sheets, sketchs, clay and brew.
| The DoKiln can be set to 1 or 0, if it is in 1 it will actually make the final
|    item in the Kiln. This will save you on money, but take more time to skill up.
|    Setting it to 0 will skip the Kiln.
| You will need to change the DelayMult to higher if you are laggy, this
|   number will be multiplied to the default delay.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be in front of Yoen Ormard (near the alchemy guys) for this macro to work.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| This macro may not work any other place then the Abysmal Sea.
| 


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main
    /declare OldSkill int outer
    /declare UsingCont int outer
    /declare DoKiln int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare MerchantNameB string Outer
    /declare WFlask item outer
    /declare CBrew item outer
    /declare BClay item outer
    /declare VialT item outer
    /declare QSheet item outer
    /declare SubComp item outer
    /declare CombItemA string outer
    /declare CombItemB string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Pottery]}
    /declare Location int inner

    /call ReadINIA pottery.ini "Abysmal Sea" 
    /if (!${Defined[LocArray]}) { 
       /echo No Loc Array Created...
       /endmacro 
    } 

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************

    /varset MerchantNameA "Yoen Ormard"
    /varset MerchantNameB "Malkidiv"
    /varset SkillMaxWanted 188
    /varset DoKiln 1
    /varset DelayMult 1

    /echo CENTER your MOUSE ... now pls
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s

| ************************************************
| ************************************************

    :start
    /varset UsingCont 0
    /echo Pottery is at ${Me.Skill[Pottery]}

    /if (${Me.Skill[Pottery]}>=${SkillMaxWanted}) {
      /echo Pottery is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Pottery]}<148) {
      /varset WFlask "water flask"
      /varset CBrew "crows special brew"
      /varset BClay "small block of clay"
      /varset VialT "vial sketch"
      /varset QSheet "high quality firing sheet"
      /varset CombItemA "PVA"
      /varset CombItemB "PVB"
      /varset SubComp "Unfired Poison Vial"
      /varset ItemTo "Poison Vial"
    }
    /if (${Me.Skill[Pottery]}>=148 && ${Me.Skill[Pottery]}<168) {
      /varset WFlask "water flask"
      /varset CBrew "crows special brew"
      /varset BClay "small block of clay"
      /varset VialT "lined vial sketch"
      /varset QSheet "high quality firing sheet"
      /varset CombItemA "LPVA"
      /varset CombItemB "LPVB"
      /varset SubComp "Unfired Lined Poison Vial"
      /varset ItemTo "Lined Poison Vial"
    }
    /if (${Me.Skill[Pottery]}>=168 && ${Me.Skill[Pottery]}<=188) {
      /varset WFlask "water flask"
      /varset CBrew "crows special brew"
      /varset BClay "small block of clay"
      /varset VialT "sealed vial sketch"
      /varset QSheet "high quality firing sheet"
      /varset CombItemA "SPVA"
      /varset CombItemB "SPVB"
      /varset SubComp "Unfired Sealed Poison Vial"
      /varset ItemTo "Sealed Poison Vial"
    }


    /varset EndingVar 1
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CBrew}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${VialT}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${WFlask} 30
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /keypress esc
    /keypress esc

    /look
    /call GoToMerchantB
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CBrew} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${BClay} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${VialT} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /if (${DoKiln}==1) /call Buy ${QSheet} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

    /itemtarget "Pottery Wheel"
   :PullMoveLoopa
    /if (${Me.State.Equal[SIT]}) /stand 
    /face loc -259.18, 193.50
    /if (${Math.Distance[-259.18, 193.50]}>2) /nomodkey /keypress forward hold 
    /if (${Math.Distance[-259.18, 193.50]}<=2) {
    /nomodkey /keypress forward
    /goto :Wheel
    }
    /goto :PullMoveLoopa
    :Wheel
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call readIni "${CombItemA}" 
    :BeginA
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /doevents
       /if (${EndingVar}==1) /goto :BeginA
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /nomodkey /keypress esc

  /if (${DoKiln}==1) {
    /varset UsingCont 1
    /call GoToKiln
    /delay ${Math.Calc[${DelayMult}*1]}s
    /look
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /varset EndingVar 1
    /call readIni "${CombItemB}" 
    :BeginB
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /doevents
       /if (${EndingVar}==1) /goto :BeginB
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /nomodkey /keypress esc
  }

    /call GoToMerchantA
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CBrew}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${VialT}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

    /goto :start

    /return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Read InI
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["pottery.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[pottery.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[pottery.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /if (${DoKiln}==1) {
         /autoinv 
      } else {
         /destroy
      }
      /delay ${Math.Calc[${DelayMult}*2]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DO the Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay ${Math.Calc[${DelayMult}*5]}s
      /if (${Me.Skill[Pottery]}>${OldSkill}) {
        /echo Your Pottery Went Up!! It's now ${Me.Skill[Pottery]}!
        /varset OldSkill ${Me.Skill[Pottery]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being Used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /if (${UsingCont}==0) /itemtarget "Pottery Wheel"
    /if (${UsingCont}==1) /itemtarget "Kiln"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return

Sub GoToMerchantA
  /declare Location int inner
  /echo Going to ${MerchantNameA}.
/if (${DoKiln}==1) {
  /varset Location ${LocArray.Size}
  :starta
  /if (${Location}>0) {   
     :MoveLoopa
     /if (${Location}==9) /goto :Donea
     /face nolook loc ${LocArray[${Location}]}
     /if (${Math.Distance[${LocArray[${Location}]}]}>4) {
        /nomodkey /keypress forward hold
        /face nolook loc ${LocArray[${Location}]}
        /look
        /if (${Location}==11) /keypress USE
     }
     /if (${Math.Distance[${LocArray[${Location}]}]}<=4) {
        /nomodkey /keypress forward
        /goto :nexta
     }
     /goto :MoveLoopa
     :nexta
     /delay ${Math.Calc[${DelayMult}*1]}s
     /varset Location ${Math.Calc[${Location}-1]}
     /goto :starta
  }
  :Donea
  /varset Location 5
  :startb
  /if (${Location}>0) {   
     :MoveLoopb
     /if (${Location}==0) /goto :Doneb
     /face nolook loc ${LocArray[${Location}]}
     /if (${Math.Distance[${LocArray[${Location}]}]}>4) {
        /nomodkey /keypress forward hold
        /face nolook loc ${LocArray[${Location}]}
        /look
        /if (${Location}==2) /keypress USE
     }
     /if (${Math.Distance[${LocArray[${Location}]}]}<=4) {
        /nomodkey /keypress forward
        /goto :nextb
     }
     /goto :MoveLoopb
     :nextb
     /delay ${Math.Calc[${DelayMult}*1]}s
     /varset Location ${Math.Calc[${Location}-1]}
     /goto :startb
  }
  :Doneb
} else {
  /varset Location 8
  :startc
  /if (${Location}>0) {   
     :MoveLoopb
     /if (${Location}==0) /goto :Donec
     /face nolook loc ${LocArray[${Location}]}
     /if (${Math.Distance[${LocArray[${Location}]}]}>4) {
        /nomodkey /keypress forward hold
        /face nolook loc ${LocArray[${Location}]}
        /look
        /if (${Location}==2) /keypress USE
     }
     /if (${Math.Distance[${LocArray[${Location}]}]}<=4) {
        /nomodkey /keypress forward
        /goto :nextc
     }
     /goto :MoveLoopb
     :nextc
     /delay ${Math.Calc[${DelayMult}*1]}s
     /varset Location ${Math.Calc[${Location}-1]}
     /goto :startc
  }
  :Donec
}
/return

Sub GoToMerchantB
  /declare Location int inner
  /echo Going to ${MerchantNameB}.
  /for Location 1 to 8
     :MoveLoop
     /face nolook loc ${LocArray[${Location}]}
     /if (${Math.Distance[${SHArray[${Location}]}]}>4) {
        /nomodkey /keypress forward hold
        /face nolook loc ${LocArray[${Location}]}
        /look
        /if (${Location}==3) /keypress USE
     }
     /if (${Math.Distance[${LocArray[${Location}]}]}<=4) {
        /nomodkey /keypress forward
        /goto :next
     }
     /goto :MoveLoop
     :next
     /delay ${Math.Calc[${DelayMult}*1]}s
  /next Location
/return

Sub GoToKiln
  /declare Location int inner
  /echo Going to Kiln.
  /for Location 8 to 14
     :MoveLoop
     /face nolook loc ${LocArray[${Location}]}
     /if (${Math.Distance[${SHArray[${Location}]}]}>4) {
        /nomodkey /keypress forward hold
        /face nolook loc ${LocArray[${Location}]}
        /look
        /if (${Location}==12) /keypress USE
     }
     /if (${Math.Distance[${LocArray[${Location}]}]}<=4) {
        /nomodkey /keypress forward
        /goto :next
     }
     /goto :MoveLoop
     :next
     /delay ${Math.Calc[${DelayMult}*1]}s
  /next Location
/return 

Sub ReadINIA(FileName,SectionName) 
   /echo Attempting to Read Section "${SectionName}" Zone Information from ${FileName}... 
   /delay ${Math.Calc[${DelayMult}*1]}s
    
   /if (${Ini[${FileName},${SectionName},-1,NO].Equal[NO]}) { 
      /echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro... 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /return
   } 
   /declare nValues     int local  1 
   /declare nArray      int local  0 
   /declare KeySet      string local  ${Ini[${FileName},${SectionName}]} 

| ****************** Locs ****************************
   :CounterLooplo
   /if (${String[${Ini[${FileName},${SectionName},Loc${nValues}]}].Equal[null]}) { 
      /varcalc nValues ${nValues}-1 
      /goto :MakeArraylo 
   } 
   /varcalc nValues ${nValues}+1 
   /goto :CounterLooplo 
   :MakeArraylo 
   /if (!${nValues}) /return
   /if (${nValues}>0) { 
      /echo Declaring Loc Array... 
      /declare LocArray[${nValues}]  string outer
   }
   /for nArray 1 to ${nValues}
      /varset LocArray[${nArray}] ${Ini[${FileName},${SectionName},Loc${nArray}]} 
   /next nArray



   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}... 
   /delay ${Math.Calc[${DelayMult}*1]}s
/return
 
Last edited:
pottery.ini

Rich (BB code):
[PVA]
Cont=Enviro
Comp0=crows special brew
Comp1=small block of clay
Comp2=vial sketch
Comp3=water flask

[LPVA]
Cont=Enviro
Comp0=crows special brew
Comp1=small block of clay
Comp2=lined vial sketch
Comp3=water flask

[SPVA]
Cont=Enviro
Comp0=crows special brew
Comp1=small block of clay
Comp2=sealed vial sketch
Comp3=water flask

[PVB]
Cont=Enviro
Comp0=unfired poison vial
Comp1=high quality firing sheet

[LPVB]
Cont=Enviro
Comp0=unfired lined poison vial
Comp1=high quality firing sheet

[SPVB]
Cont=Enviro
Comp0=unfired sealed poison vial
Comp1=high quality firing sheet

[Abysmal Sea]
Loc1=110.96, 20.36
Loc2=178.05, 50.08
Loc3=178.05, 69.77
Loc4=92.04, 111.11
Loc5=92.67, 260.68
Loc6=-204.01, 261.08
Loc7=-225.75, 204.70
Loc8=-252.69, 202.40
Loc9=-225.75, 204.70
Loc10=-204.01, 261.08
Loc11=-254.69, 259.14
Loc12=-266.52, 258.82
Loc13=-329.85, 260.15
Loc14=-328.94, 241.51
 
Fletching.mac

12/28/05: added salvage event

Rich (BB code):
| 
| fletching.mac
| Takes you from 1 to 250 in Fletching
| Version 3.2
| Date: September 14, 2004
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/18/05: by ArmySoldier
|           Removed Delay Variables and put hard numbers
|           Fixed the closing of merch window
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 250 in fletching. 
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantName is which merchant you are at.
| You will need to change the DelayMult to higher if you are laggy, this
|   number will be multiplied to the default delay.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be next to the merchant in order for this to work.
|
| Requirements:
| You will need a Fletching Kit (in the last slot).
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| Thanks to El for the update to the combines to make it more cost effective.
| Thanks to hytiek for the update to get from 202 to 250.
| Thanks to IceIsFun for the update to the combines to make it more cost effective above 202.
| If you want to go past 202, it gets VERY expensive. Set it to 202 if you don't have much pp.  
| 


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main 
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantName string Outer
    /declare AShafts item outer
    /declare GrooveN item outer
    /declare CFletching item outer
    /declare AHeads item outer
    /declare Twine item outer 
    /declare Staff item outer
    /declare Cam item outer 
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Fletching]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************

    /varset MerchantName "Bansama Nysawi"
    /varset SkillMaxWanted 200
    /varset DelayMult 1


| ************************************************
| ************************************************


    :start
    /echo Fletching is at ${Me.Skill[Fletching]}

    /if (${Me.Skill[Fletching]}>=${SkillMaxWanted}) {
      /echo Fletching is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Fletching]}>=235 && ${Me.Skill[Fletching]}<250) { 
      /varset Staff "shadewood bow staff" 
      /varset Twine "hemp twine" 
      /varset CombItemName "RSRB" 
      /varset ItemTo "Rough Shadewood Recurve Bow" 
    } 

    /if (${Me.Skill[Fletching]}>=215 && ${Me.Skill[Fletching]}<235) { 
      /varset Staff "darkwood bow staff" 
      /varset Twine "hemp twine" 
      /varset Cam "standard bow cam" 
      /varset CombItemName "RDCB" 
      /varset ItemTo "Rough Darkwood Compound Bow" 
    } 

    /if (${Me.Skill[Fletching]}>=202 && ${Me.Skill[Fletching]}<215) { 
      /varset Staff "darkwood bow staff" 
      /varset Twine "hemp twine" 
      /varset CombItemName "RDRB" 
      /varset ItemTo "Rough Darkwood Recurve Bow" 
    } 

    /if (${Me.Skill[Fletching]}>=162 && ${Me.Skill[Fletching]}<202) { 
      /varset AHeads "field point arrowheads" 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset CFletching "set of ceramic arrow vanes" 
      /varset GrooveN "large groove nocks" 
      /varset CombItemName "FWCL" 
      /varset ItemTo "CLASS 6 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=135 && ${Me.Skill[Fletching]}<162) { 
      /varset AHeads "field point arrowheads" 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset CFletching "set of bone arrow vanes" 
      /varset GrooveN "large groove nocks" 
      /varset CombItemName "FWBL" 
      /varset ItemTo "CLASS 5 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=122 && ${Me.Skill[Fletching]}<135) { 
      /varset AShafts "bundled ceramic arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FCRL" 
      /varset ItemTo "CLASS 1 Ceramic Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=102 && ${Me.Skill[Fletching]}<122) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "set of wooden arrow vanes" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWWL" 
      /varset ItemTo "CLASS 4 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=82 && ${Me.Skill[Fletching]}<102) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "hooked arrowheads" 
      /varset CombItemName "HWSL" 
      /varset ItemTo "CLASS 1 Wood Hooked Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=68 && ${Me.Skill[Fletching]}<82) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several shield cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWSL" 
      /varset ItemTo "CLASS 3 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=56 && ${Me.Skill[Fletching]}<68) { 
      /varset AShafts "bundled bone arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FBRL" 
      /varset ItemTo "CLASS 1 Bone Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=46 && ${Me.Skill[Fletching]}<56) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "small groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWRS" 
      /varset ItemTo "CLASS 1 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=36 && ${Me.Skill[Fletching]}<46) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several parabolic cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWPL" 
      /varset ItemTo "CLASS 2 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=16 && ${Me.Skill[Fletching]}<36) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "medium groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWRM" 
      /varset ItemTo "CLASS 1 Wood Point Arrow" 
    } 

    /if (${Me.Skill[Fletching]}>=0 && ${Me.Skill[Fletching]}<16) { 
      /varset AShafts "bundled wooden arrow shafts" 
      /varset GrooveN "large groove nocks" 
      /varset CFletching "several round cut fletchings" 
      /varset AHeads "field point arrowheads" 
      /varset CombItemName "FWRL" 
      /varset ItemTo "CLASS 1 Wood Point Arrow" 
    } 

    /varset EndingVar 1
    /target ${MerchantName}
    /face
    /nomodkey /click right target
    /call OpenPacks
    /if (${Me.Skill[Fletching]}>=215 && ${Me.Skill[Fletching]}<235) { 
       /call Sell ${Staff} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${Twine} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${Cam} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${Staff} 10 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${Twine} 10 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${Cam} 20 
       /delay ${Math.Calc[${DelayMult}*1]}s
    } else /if (${Me.Skill[Fletching]}>=202) { 
       /call Sell ${Staff} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${Twine} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${Staff} 10 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${Twine} 10 
       /delay ${Math.Calc[${DelayMult}*1]}s
    } else { 
       /call Sell ${AShafts} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${GrooveN} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${CFletching} 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Sell ${AHeads} 
       /delay ${Math.Calc[${DelayMult}*1]}s 
       /call Buy ${AShafts} 40 
       /delay ${Math.Calc[${DelayMult}*1]}s 
       /call Buy ${GrooveN} 40 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${CFletching} 40 
       /delay ${Math.Calc[${DelayMult}*1]}s
       /call Buy ${AHeads} 40 
       /delay ${Math.Calc[${DelayMult}*1]}s
    }

    /call ClosePacks
    /keypress esc
    /keypress esc
    /call OpenPacks
       /delay ${Math.Calc[${DelayMult}*2]}s

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine
       /doevents
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantName}
    /face
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /keypress esc


    /goto :start

    /return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub REad Ini file
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub readIni(RecipeName) 
    /declare Container string local

    /echo Running ${RecipeName} recipe, which makes ${ItemTo}. 

    /if (${Ini["fletching.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
         /echo Recipe ${RecipeName} not found 
         /endmacro 
     } 

    /varset Container ${Ini[fletching.ini,${RecipeName},Cont,Enviro]} 

    /if (${Container.Equal[Enviro]}) { 
         /varset PackCode Enviro 
    } else { 
         /varset PackCode ${FindItem[=${Container}].InvSlot}
         /echo ${Container}
        
         /if (${PackCode.Equal[NULL]}) { 
           /echo Could not find container ${Container} 
           /varset EndingVar 2
           /return
         } 
         | pack1 = 22, ... , pack8 = 29 
         /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
    }  

    /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[fletching.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub CLear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s 
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DO Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
       /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay ${Math.Calc[${DelayMult}*5]}s
      /if (${Me.Skill[Fletching]}>${OldSkill}) {
        /echo Your Fletching Went Up!! It's now ${Me.Skill[Fletching]}!
        /varset OldSkill ${Me.Skill[Fletching]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return
 
Last edited:
Fletching.ini

Rich (BB code):
[FWCL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=set of ceramic arrow vanes 

[FWBL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=set of bone arrow vanes 

[HCPL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled ceramic arrow shafts 
Comp2=hooked arrowheads 
Comp3=several parabolic cut fletchings 

[SCPL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled ceramic arrow shafts 
Comp2=silver tipped arrowheads 
Comp3=several parabolic cut fletchings 

[FWBL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=set of bone arrow vanes 

[FCRL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled ceramic arrow shafts 
Comp2=field point arrowheads 
Comp3=several round cut fletchings 

[FWWL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=set of wooden arrow vanes 

[HWSL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=hooked arrowheads 
Comp3=several round cut fletchings 

[FWSL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=several shield cut fletchings 

[FBRL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled bone arrow shafts 
Comp2=field point arrowheads 
Comp3=several round cut fletchings 

[FWRS] 
Cont=Fletching Kit 
Comp0=small groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=several round cut fletchings 

[FWPL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=several parabolic cut fletchings 

[FWRM] 
Cont=Fletching Kit 
Comp0=medium groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=several round cut fletchings 

[FWRL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled wooden arrow shafts 
Comp2=field point arrowheads 
Comp3=several round cut fletchings 

[SSPL] 
Cont=Fletching Kit 
Comp0=large groove nocks 
Comp1=bundled steel arrow shafts 
Comp2=silver tipped arrowheads 
Comp3=several parabolic cut fletchings

[RSRB] 
Cont=Fletching Kit 
Comp0=hemp twine 
Comp1=shadewood bow staff


[RDCB] 
Cont=Fletching Kit 
Comp0=hemp twine 
Comp1=darkwood bow staff 
Comp2=standard bow cam 
Comp3=standard bow cam 

[RDRB] 
Cont=Fletching Kit 
Comp0=hemp twine 
Comp1=darkwood bow staff
 
OK running pottery mac and have a problem ... have saved fav rec and mac will buy everything then walk to the kiln ... at kiln it does a clear enviro from 1 to 10 then locks...
 
pottery doesn't use new UI

it uses old.. it should open the kiln ... new ui will pop.. then when it does /openpacks it changes the new ui container to the old style..

if that is not happening .. then something else is wrong...

I will used it earlier today and worked fine... will try again for ya


also .. it buys the stuff..then should hitpottery wheel right next to last merchant... does it do that?






EDIT: I am running right now... the one posted... in my zip file.. and its working fine...

lemme know how yours is going
 
went to default old ui went to both merchants bought what was needed. turned to pottery wheel opened all bags and looked like it open the wheel the enviro started and got error doevents would not work
 
ok if you got an error that said could not send notification .. blah blah ..

then it did not open the pottery wheel..

ENSURE your mouse is centered (or centered left/right... and can be slightly lower than center on up/down) basically when it moves forward and looks at pottery wheel .. you mouse should be right over it .. ... and that NO windows are in its way ..

the mouse is going to left click .. and if you have a text box or something in the way .. it will click that box.. not the enviro container

8-)
 
First of all, thank you very much Army for all the hard work youve put into this. Im having a slight problem with the fletching micro, it works great up until my AA fires off to save some of the ingredients during a failure. At this point the micro gets into a loop, not allowing it to continue. Any suggestions on what I can do to correct this? Thanks again for all of this, even with the errors, its made my fletching 100% easyer:)
 
Ok what I found out Army ... since my toon tends to look down a little while at the wheel I have to have my cursor near the top of the screen in the middle. Once I did that things seemed to work a little further. I got the combine working but eventually it would start stacking items. I will try adjusting my delays to make sure it is clear before starting a new combine. Thanks for all your help.

Of course my pottery is at 180 because of doing manual combines but have other toons I wish to run it from.

Brewing is flawless also btw.
 
Davaden said:
First of all, thank you very much Army for all the hard work youve put into this. Im having a slight problem with the fletching micro, it works great up until my AA fires off to save some of the ingredients during a failure. At this point the micro gets into a loop, not allowing it to continue. Any suggestions on what I can do to correct this? Thanks again for all of this, even with the errors, its made my fletching 100% easyer:)

i would add a clear cursor or a /autoinventory in the combine code.

i could see this causing problems... lol.. the macros should have checked the cursor .. but sometimes. when my laptop gets laggy i get the same thing where it stacks a few ingredients
 
rawwar said:
Ok what I found out Army ... since my toon tends to look down a little while at the wheel I have to have my cursor near the top of the screen in the middle. Once I did that things seemed to work a little further. I got the combine working but eventually it would start stacking items. I will try adjusting my delays to make sure it is clear before starting a new combine. Thanks for all your help.

Of course my pottery is at 180 because of doing manual combines but have other toons I wish to run it from.

Brewing is flawless also btw.

yeah the problem with enviromental containers now is .. we can not target them. Sooo we have to have the cursor right over them... and the pottery whell well .. it sits low... so i adjusted the code to look down and put you Right over the wheel...

adjusting your delay on you code should fix the stacking problem ... i can put the delay variable back in .. if you want.. its easy ..

and you could adjust the one variable for the lagginess of your system...

lemme know if you want me to .. it shouldn't be a problem
 
i updated the ZIP file ..

Smithing2 has been adjusted for the movement to the forge and opening it..

BUT it is not tested...

so pls PM me if you find an error still

thanks

Army
 
Either teach me how to put the delays in and that would be great and I will test the Smithing one later ... have to get some padding to run it....

Thanks
 
i just got home from the airport with my son.. i will redo the macros with the delay variable back in .. its just a simple find and replace

should be able to hit it in the morn .. if i wake up before the rug rat....

8-)
 
Used Brewing and Pottery Macs last night and only thing I found was I had to make sure my cursor is a little high on the screen and at that point everything worked great..... Thanks am going to test smithing 2 tonight have 100 leather padding to work with
 
Great work Army these are awesome! Is there a mac that will gather stuff in kaladim and run me around to do constitutionals from 248 to 300?
 
anyone got a gnome to test the tinker one out with?[/QUOTE]


Ok downloaded TS but didn't have Tinkering in it
 
i will drop it in there tonight..

i am gonna put the delays back in the other macros..

will take me about an hour to get them all hooked up





As for the Kaladim macro .. or any dealing with ground spawn.. ATM .. until MQ2 posts the fix.. i am unsure how to get them to work

I used the shroom macro to gather.. and it used to work great.. but .. itis broken atm .. due to GROUND SPAWNSnot being targeted...

But it will be fixed.. just not anytime soon

OK gotta fix this stuff up

8-)
 
tinkering.mac

updated to take you to 175... and use up those aqualungs

Rich (BB code):
| Tinkering.mac
|
| Created December 2005
|
| 12/28/05: ADDED Salvage event
|
| 12/25/05: UPDATED to take you to 175 with rebreathers to sue up those aqualungs 8-)
|
| Takes you from 1 to 175 in Tinkering
|
| Written by Armysoldier based on code written by override
|
|
| Before you start, there are the settings you need to change for you.
| 
| SkillMaxWanted can be change to what skill you want to stop at.
|
| MerchantName is which merchant you are at.
|
| You will need to change the DelayMult to higher if you are laggy, this
|   number will be multiplied to the default delay.
|
|
|
| This Macro works best in the Abysmal Sea up to skill 149 since all the components are there.
|
| Skill 123-149 makes aqualung... the end product is NOT SOLD off.. 
| and the macro will end when inventory is full
|
| Just added rebreathers to the mix... once you hit 149 .. it will switch and use up the aqualungs in inventory
| ENSURE you have 30or so slots open on your toon for the NON-Stackable TS components
| 
|
| Requirements:
| Have Toon Standing Tialechaety Orrthemech @ -189,72,96  in Abysmal Sea
| You must have fresh fish on you if you want to go above 123
| You will need a Deluxe Toolbox (in the last slot).
|  ---------------^^^^^^^^^^^^^^----VERY IMPORTANT
|
|
| IF YOU HAVE A COLLAPSABLE OR REGULAR TOOLBOX.... YOU MUST CHANGE INI file
| do a find and replace Deluxe Toolbox with Collapsable Toolbox or Toolbox
|
|
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
|  
| 

 
#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc


Sub Main
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantName string Outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CompF item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /declare Cnt int outer
    /varset OldSkill ${Me.Skill[Tinkering]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************
    /varset MerchantName "Tialechaety Orrthemech" 
    /varset SkillMaxWanted 300
    /varset DelayMult 1


| ************************************************
| Set components for recipies
| ************************************************

    :start
    /echo Tinkering is at ${Me.Skill[Tinkering]}

    /if (${Me.Skill[Tinkering]}>=${SkillMaxWanted}) {
      /echo Tinkering is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }
    /if (${Me.Skill[Tinkering]}>=75 && ${Me.Skill[Tinkering]}<123 && ${FindItemCount[=Firewater]}<10) /call Firewater
       
    /if (${Me.Skill[Tinkering]}<76) { 
      /varset CompA "gears" 
      /varset CompB "gnomish bolts" 
      /varset CompC "grease" 
      /varset CombItemName "SBC" 
      /varset ItemTo "standard bow cam" 
    } 
    /if (${Me.Skill[Tinkering]}>=75 && ${Me.Skill[Tinkering]}<103) { 
      /varset CompA "bottle" 
      /varset CompB "gears" 
      /varset CompC "gears" 
      /varset CompD "metal rod" 
      /varset CombItemName "SP" 
      /varset ItemTo "stalking probe" 
    } 
    /if (${Me.Skill[Tinkering]}>=102 && ${Me.Skill[Tinkering]}<123) { 
      /varset CompA "gears" 
      /varset CompB "metal twine" 
      /varset CompC "sprockets" 
      /varset CompD "steel lined gloves" 
      /varset CombItemName "PG" 
      /varset ItemTo "powered gloves" 
    } 
    /if (${Me.Skill[Tinkering]}>=122 && ${Me.Skill[Tinkering]}<149) { 
       /if (${FindItemCount[=Fresh Fish]}<10) {
       /echo you need to please go buy fresh fish....
       /endMacro
       }
      /varset CompA "Metal Rod" 
      /varset CompB "Metal Twine" 
      /varset CompC "Gnomish Bolts" 
      /varset CompD "Fine Coral Mesh"
      /varset CompE "Silk Lined Steel Helm" 
      /varset CombItemName "AL" 
      /varset ItemTo "Aqualung" 
    } 
    /if (${Me.Skill[Tinkering]}>=148 && ${Me.Skill[Tinkering]}<176) { 
      /varset Cnt ${FindItemCount[=Aqualung]}
      /if (${Cnt}==0) /endmacro
      /if (${Cnt}>10) /varset Cnt 10
    /if (${FindItemCount[=Firewater]}<10) {
      /varset EndingVar 1
      /varset CompA "water flask" 
      /varset CompB "gnomish spirits" 
      /varset CombItemName "FW" 
      /varset ItemTo "Firewater"
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} ${Cnt}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} ${Cnt}
      /call ClosePacks
      /keypress ESC
      /varset EndingVar 1
      /call Combinefunction
      /delay 1s  
      }
      /varset CompA "Metal Fastening" 
      /varset CompB "Lime Coated Meshing" 
      /varset CompC "Sharkskin Tubing" 
      /varset CompD "Platemail Helm"
      /varset CombItemName "RB" 
      /varset ItemTo "Rebreather" 
    } 

| ************************************************
| Buy components
| ************************************************
    /if (${Me.Skill[Tinkering]}<76) {
      /varset EndingVar 1
      /delay ${Math.Calc[${DelayMult}*1]}s
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompC} 10
    }
    /if (${Me.Skill[Tinkering]}>=75 && ${Me.Skill[Tinkering]}<123) {
      /varset EndingVar 1
      /delay ${Math.Calc[${DelayMult}*1]}s
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompC} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompD} 10
    }
    /if (${Me.Skill[Tinkering]}>=122 && ${Me.Skill[Tinkering]}<149) {
      /varset EndingVar 1
      /delay ${Math.Calc[${DelayMult}*1]}s
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompC} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompD} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompE} 10
    }
    /if (${Me.Skill[Tinkering]}>=148 && ${Me.Skill[Tinkering]}<176) { 
      /delay 1s
      /varset EndingVar 1
      /delay ${Math.Calc[${DelayMult}*1]}s
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} ${Cnt}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} ${Cnt}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompC} ${Cnt}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompD} ${Cnt}
    }
    /call ClosePacks
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s


| ************************************************
| Make the Magic Happen
| ************************************************

    /call Combinefunction
    /call Selloff
    /goto :start
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Firewater
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub Firewater  
      /delay 1s
      /varset EndingVar 1
      /varset CompA "water flask" 
      /varset CompB "gnomish spirits" 
      /varset CombItemName "FW" 
      /varset ItemTo "Firewater"
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompA} 10
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Buy ${CompB} 10
      /call ClosePacks
      /keypress ESC
      /varset EndingVar 1
      /call Combinefunction
    /delay 1s
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|The Selloff
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Selloff
    /nomodkey /keypress esc
    /echo sell off to merchant
    /if (${Me.Skill[Tinkering]}<76) {
      /varset EndingVar 1
      /delay ${Math.Calc[${DelayMult}*1]}s
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${ItemTo}      
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompA}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompB}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompC}
    }
   /if (${Me.Skill[Tinkering]}>=75 && ${Me.Skill[Tinkering]}<123) {
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${ItemTo} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompA}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompB}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompC}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompD}
    }
    /if (${Me.Skill[Tinkering]}>=122 && ${Me.Skill[Tinkering]}<149) {
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompA}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompB}
      /call Sell ${CompC}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompD}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompE}
    }
    /if (${Me.Skill[Tinkering]}>=148 && ${Me.Skill[Tinkering]}<176) { 
      /target ${MerchantName}
      /face
      /delay ${Math.Calc[${DelayMult}*1]}s
      /nomodkey /click right target
      /call OpenPacks
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompA}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompB}
      /call Sell ${CompC}
      /delay ${Math.Calc[${DelayMult}*1]}s
      /call Sell ${CompD}
      }
    /call ClosePacks
    /keypress esc
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|The CombineFunction
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Combinefunction

    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
    /doevents
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s

       /if (${EndingVar}==1) /goto :Begin
 
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /doevents
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|READ INI sub
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["Tinkering.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[Tinkering.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[Tinkering.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay 5s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5
      /if (${Me.Skill[Tinkering]}>${OldSkill}) {
        /echo Your Tinkering Went Up!! It's now ${Me.Skill[Tinkering]}!
        /varset OldSkill ${Me.Skill[Tinkering]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /doevents
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Forge"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return
 
Last edited:
Various Tradeskill MACS

Users who are viewing this thread

Back
Top