• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Tradeskill Combine Macro

Maskoi

old and salty
Joined
Sep 28, 2005
RedCents
82,796¢
Combine Macro by Siddin Original Thread
  1. Get all the stuff to make your item
  2. Open your tradeskill window
  3. Select the recipe
  4. /mac combine

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
        /delay 2
        /notify TradeskillWnd AutoInvButton leftmouseup
        
    /goto :Loop 
    
/return 
 
Sub Event_OutOfStuff 
/endmacro 
/return
 
Last edited:
I had to comment out

/call delete_item

to get this to work.

Not sure it that was leftover from something else.
 
I had to comment out

/call delete_item

to get this to work.

Not sure it that was leftover from something else.

Yes it was. I was making a non sellable item. I was just destroying it after combine. Macro fixed thanks for catching that.
 
How can I make the auto-destroy on cursor work like the call delete_item? Im skilling up and some junk isnt being catched by autodestroy on cursor and still going into inventory =/
 
How can I make the auto-destroy on cursor work like the call delete_item? Im skilling up and some junk isnt being catched by autodestroy on cursor and still going into inventory =/

Here my version I had originally posited.

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}) { 
/if (${Cursor.ID}==16925) /destroy
/autoinventory 
/goto :ClearCursor 
} 
 
/notify TradeskillWnd CombineButton leftmouseup 
/doevents
/call delete_item
/delay 2
/notify TradeskillWnd AutoInvButton leftmouseup
/goto :Loop 
/return 
 
Sub Event_OutOfStuff 
/endmacro 
/return

Sub delete_item
/delay 1s
/if (${Cursor.ID}==9686) /destroy
/return
 
Thanks, would there be a way for you to add a modification so we could add like /mac combine 150 as to whereas when skill reaches 150 the mac stops, to prevent wasting ingredients while afk'ing etc...?
 
Thanks, would there be a way for you to add a modification so we could add like /mac combine 150 as to whereas when skill reaches 150 the mac stops, to prevent wasting ingredients while afk'ing etc...?

You're killing me. Try

Rich (BB code):
Sub Main 
:Loop 
/if (${Me.Skill[SkillNameHere]}>=150)  /end

:ClearCursor
 
I improved it a little... Open the Jewelry vendor in PoK small bank then click the Jewelry making table next to him... a normal jewelry kit doesn't work unless you fill it with junk...
All bags that will have the Sellable Item in em must be open.
You have to select the recipe from the list up to 272 skill because I'm lazy and was already at 250 when I figured out the names of the tradeskill window pieces.
It buys a stack of components, when it runs out of something it, sells the stuff it made, checks skill to see if it wants a new recipe then buys more components.
(I think I fixed it from leaving you with a bag of the old stuff it made... might have just done it manually was really, really, really stoned at the time.)
If you're afk a long time before 272 skill it'll only ever buy 1 extra stack of components... which are usually the next ones it will want you to select the recipe for anyway.
It tries to keep 20 bars and 20 gems... but it buys a stack so you end up with 100 gems the first time... buys em in 1's if you already have 1 to 19 in inventory... cause i'm to lazy to make it use the slider bar, or type in a number, or teach it to understand stack size.


Rich (BB code):
|Jewelcraft Macro mostly by Wirlin 4/20/15
|Requires at least 22 inventory slots.
|All bags that will have the sellable stuff must be open, as well as the jewelry vendor window.
|Works best at the small bank in PoK, open the vendor window then click the jewelry table next to him...
|Also requires a little bit of attention for
|for setting the combine recipe you shouldn't have to experiment to get them though.
|they pop up as you gain skill.
|might try to automate it the same way I did the vendor lists.
|have to find the names of the tradeskill window pieces.
|
|When you get to 272 you can add these recipes to you favorites list
|Sapphire Platinum Necklace , Platinum Ruby Veil , Platinum Diamond Wedding Ring , Platinum Blue Diamond Tiara ,
|and Velium Blue Diamond Bracelet
|Order them from Low skill to High in Favorites and it will take you to 300 by itself
|
|Might need as many as 200 Velium Bars after 294... shouldn't take that many but it has.
|Easiest in Thurgadin after 294 with a bunch of Blue Diamonds or anywhere with a ton of bag space
|because it only sells when it runs out of components... having an item on the cursor with bags full throws it for a loop.
|It tries to sell the one that's on the cursor and it's in an invalid sell slot, so it can't.
|

#event OutOfStuff "#*#Sorry, but you don't have everything you need for this recipe in your general inventory.#*#"
#event OutOfStuff "There are no open slots for the held item in your inventory."
#event OutOfStuff "You may not make a purchase while you have an item on your cursor."

Sub Main
/declare Jewelry int outer
/declare Component1 string outer
/declare Component1Amt int outer
/declare Component2 string outer
/declare Component2Amt int outer
/declare ItemtoSell1 string outer

|

/varset Jewelry ${Me.Skill[Jewelry Making]}
/echo Initial Declarations Set for ${Jewelry} Skill

|/nomodkey /notify TradeskillWnd COMBW_SearchButton leftmouseup
|/notify TradeskillWnd RecipeList listselect 1

:SkillCheck
/call Recipe
/delay 1
/goto :Loop

/return


:Loop
/autoinv
/notify TradeskillWnd CombineButton leftmouseup 
/doevents
/delay 2
/notify TradeskillWnd AutoInvButton leftmouseup
/goto :SkillCheck

/return



Sub BuyMore(string BuyComponent, int Amount)
/declare i int local
/declare HowMany int local
/declare ListItem int local
/varcalc HowMany ${Amount}-${FindItemCount[${BuyComponent}]}
/delay 3
/if (${FindItemCount[${BuyComponent}]}>=${Amount}) {
	/echo Have enough ${BuyComponent} to continue.
	/return
	}
/varset ListItem ${Window[MerchantWnd].Child[ItemList].List[=${BuyComponent},2]}
/if (!${ListItem}) {
	/echo ${BuyComponent} is not on Vendor.
	/return
	} else {
	/notify MerchantWnd ItemList listselect ${ListItem}
	/delay 5
	}

/echo Buying ${HowMany} ${BuyComponent}
:BuyLoop
   /if (${HowMany}>0) {
        /if (${HowMany}>19) {
            /Shiftkey /notify MerchantWnd MW_Buy_Button leftmouseup
            /delay 5 ${FindItemCount[B${BuyComponent}]}>=${Amount}
            /echo ${FindItemCount[${BuyComponent}]}/${Amount} ${BuyComponent} in inventory
            /varcalc HowMany ${Amount}-${FindItemCount[${BuyComponent}]} 
            /if (${HowMany}<=0) /return
            /delay 5
            /if (${HowMany}>19) /goto :BuyLoop
        }
        /if (${HowMany}>0 && ${HowMany}<20) {
            /for i 1 to ${HowMany} 
                /Ctrlkey /notify MerchantWnd MW_Buy_Button leftmouseup
                /delay 1s ${FindItemCount[${BuyComponent}]}>=${Math.Calc[${FindItemCount[${BuyComponent}]}+${i}]}
                /echo Buying ${BuyComponent} ${i} of ${HowMany}
                /if (${i}>=${HowMany}) {
                    /echo ${FindItemCount[${BuyComponent}]} ${BuyComponent} in inventory
                /return
                }
            /next i           
        }
    }
/return



Sub SellStuff(string StufftoSell)

/echo Selling ${StufftoSell}
/if (${StufftoSell.Equal[NULL]}) /return

:SellLoop
/if (${FindItemCount[=${StufftoSell}]}) {
/nomodkey /itemnotify ${FindItem[=${StufftoSell}].InvSlot} leftmouseup
/if (${SelectedItem.ID}==${FindItem[=${StufftoSell}].ID}) {
/delay 1s
/nomodkey /shift /notify MerchantWnd MW_Sell_Button leftmouseup
}
/delay 1s
/goto :SellLoop
}
/echo Finished Selling ${StufftoSell}
/return

Sub Event_OutOfStuff
/echo Components used... Cleaning Packs
/call SellStuff ${ItemtoSell1}
/delay 1s
/echo Buying Components
/delay 1s
/call BuyMore ${Component1} ${Component1Amt}
/delay 1s
/call BuyMore ${Component2} ${Component2Amt}
/delay 1s
/echo Finished Buying Components
/return

Sub Recipe
/delay 1
/varset Jewelry ${Me.Skill[Jewelry Making]}
/delay 1

:Recipe1
/if (${Jewelry} > 40) /goto :Recipe2
/delay 1
/varset Component1 Topaz
/varset Component1Amt 20
/varset Component2 "Silver Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Topaz Silver Necklace"
/return

:Recipe2
/if (${Jewelry} > 85) /goto :Recipe3
/delay 1
/varset Component1 Onyx
/varset Component1Amt 20
/varset Component2 "Electrum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Electrum Onyx Pendant"
/return

:Recipe3
/if (${Jewelry} > 110) /goto :Recipe4
/delay 1
/varset Component1 Topaz
/varset Component1Amt 20
/varset Component2 "Electrum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Topaz Electrum Earring"
/return

:Recipe4
/if (${Jewelry} > 140) /goto :Recipe5
/delay 1
/varset Component1 Malachite
/varset Component1Amt 20
/varset Component2 "Gold Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Gold Malachite Bracelet"
/return

:Recipe5
/if (${Jewelry} > 160) /goto :Recipe6
/delay 1
/varset Component1 Onyx
/varset Component1Amt 20
/varset Component2 "Gold Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Gold Onyx Pendant"
/return

:Recipe6
/if (${Jewelry} > 180) /goto :Recipe7
/delay 1
/varset Component1 Topaz
/varset Component1Amt 20
/varset Component2 "Gold Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Golden Topaz Earring"
/return

:Recipe7
/if (${Jewelry} > 190) /goto :Recipe8
/delay 1
/varset Component1 Opal
/varset Component1Amt 20
/varset Component2 "Gold Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Golden Opal Amulet"
/return

:Recipe8
/if (${Jewelry} > 215) /goto :Recipe9
/delay 1
/varset Component1 Malachite
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Platinum Malachite Ring"
/return

:Recipe9
/if (${Jewelry} > 239) /goto :Recipe10
/delay 1
/varset Component1 "Star Rose Quartz"
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Rose Platinum Engagement Ring"
/return

:Recipe10
/if (${Jewelry} > 265) /goto :Recipe11
/delay 1
/varset Component1 "Fire Opal"
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Platinum Fire Wedding Ring"
/return

:Recipe11
/if (${Jewelry} > 272) /goto :Recipe12
/delay 1
/varset Component1 Sapphire
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Sapphire Platinum Necklace"
/notify TradeskillWnd RecipeList listselect 1
/delay 1
/return

:Recipe12
/if (${Jewelry} > 277) /goto :Recipe13
/delay 1
/varset Component1 Ruby
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Platinum Ruby Veil"
/delay 1
/notify TradeskillWnd RecipeList listselect 2
/delay 1
/return

:Recipe13
/if (${Jewelry} > 285) /goto :Recipe14
/delay 1
/varset Component1 Diamond
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Platinum Diamond Wedding Ring"
/delay 1
/notify TradeskillWnd RecipeList listselect 3
/delay 1
/return

:Recipe14
/if (${Jewelry} > 294) /goto :Recipe15
/delay 1
/varset Component1 Diamond
/varset Component1Amt 20
/varset Component2 "Platinum Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Platinum Blue Diamond Tiara"
/delay 1
/notify TradeskillWnd RecipeList listselect 4
/delay 1
/return

:Recipe15
/if (${Jewelry} > 299) /goto :Recipe16
/delay 1
/varset Component1 "Blue Diamond"
/varset Component1Amt 20
/varset Component2 "Velium Bar"
/varset Component2Amt 20
/varset ItemtoSell1 "Velium Blue Diamond Bracelet"
/delay 1
/notify TradeskillWnd RecipeList listselect 5
/delay 1
/return

:Recipe16
/echo Jewelry Maxxed.
/end

/return

- - - Updated - - -

You could use parameters if you wanted just do /mac combine 150 and have it stop at 150.
Not sure if you can just use ... /if (${Me.Skill[SkillNameHere]}>=${Param0}) /end ... or if you have to /varset ${Param0} as a declared variable though.

Rich (BB code):
Sub Main
/declare SkillToStopAt int outer
/varset SkillToStopAt ${Param0}
 
:Loop 
/if (${Me.Skill[SkillNameHere]}>=${SkillToStopAt})  /end

:ClearCursor
 
Last edited:
i was trying to use this to make a thing that i didnt learn yet, the greater concentration potion on TLP's, it fails a lot b4 u can make one but its worth it...anyone know how to make one recipe that isnt learned?
 
Try the envcombine macro floating on here somewhere. You'll need to fill out the recipe in the ini but it will try until it learns the recipe then you can move on to combine.mac
 
Tradeskill Combine Macro

Users who are viewing this thread

Back
Top
Cart