• 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

plat making macro's where are they !

Mal

New member
Joined
Jan 6, 2005
RedCents
cant find them no where looked and looked for days cant find any..
 
Plat macros = hunting macros these days. The last pure plat making macro died earlier this year when SOE nerfed tradeskill profits. I'd bring in 100k/day before that.

But now the best way to macro plat is to farm tradeskill crap and sell it. Hunter macro works wonders.

Usage: Configure the hunter macro to your character. Clear out ALL of your bags. Go to East Karana and start it up. Go to bed. Wake up the next morning and corner the market on spider silk. 2k a night, not too shabby.

http://macroquest2.com/phpBB2/viewtopic.php?t=7135

Here's a slightly modified version of the hunter mac:



Rich (BB code):
| Hunter Macro
| Hunter.mac
| Author : robdawg
| Edit: Averad 
| Version : v1.2.1 2004-07-29
| Useage : : /macro Hunter <forage?> <pet class?> <cast?> <attack spell> <heal?> <heal spell>
| Example : : /macro Hunter 0 1 1 Splurt 0 - Will not forage will attack with a pet and cast splut during fight will not cast heal spell
| Description : This macro will run your character around killing any mobs in your
| RV_MobArray. Then it will attempt to loot all items in your
| RV_LootArray. This is definitely a work in progress and I am sure
| someone can think of plenty of upgrades for this.
|------------------------------------------------------------------------------------

#turbo 10

Sub Main

|------------------------------------------------------------
|How many times should aquire target fail before delaying?
|------------------------------------------------------------
/declare RV_FailMax int outer 3
|------------------------------------------------------------
|How far would you like to target a mob?
|------------------------------------------------------------
/declare RV_MaxRadius int outer 3000
|------------------------------------------------------------
|How far is the combat range?
|------------------------------------------------------------
/declare RV_Range int outer 10
|------------------------------------------------------------
|What is the minimum Z Value of mobs I should target?
|------------------------------------------------------------
/declare RV_MinZRange int outer -1000
|------------------------------------------------------------
|What is the maximum Z Value of mobs I should target?
|------------------------------------------------------------
/declare RV_MaxZRange int outer 1000
|------------------------------------------------------------
|Should I loot all items?
|------------------------------------------------------------
/declare RV_LootAllItems int outer 0
|------------------------------------------------------------
|Should I display stats?
|------------------------------------------------------------
/declare RV_DisplayStats int outer 1
|------------------------------------------------------------
|Home Location X (Set if you want location other then were you start the macro)
|------------------------------------------------------------
/declare AnchorX int outer ${Me.X}
|------------------------------------------------------------
|Home Location Y (Set if you want location other then were you start the macro)
|------------------------------------------------------------
/declare AnchorY int outer ${Me.Y}

|------------------------------------------------------------
|Loot Array Information.
|------------------------------------------------------------
/call ReadINI HunterMob.ini "${Zone.Name}" Mob
/if (!${Defined[RV_MobArray]}) {
/echo Mob Array Creation Error, ending macro...
/endmacro
}

|------------------------------------------------------------
|Mob Array Information.
|------------------------------------------------------------
/call ReadINI HunterLoot.ini "${Zone.Name}" Loot
/if (!${Defined[RV_LootArray]}) {
/echo No Loot Array Created...
}

|------------------------------------------------------------
|Variables that you don't need to worry about.
|------------------------------------------------------------
/declare RV_FailCounter int outer 0
/declare RV_MyTargetID int outer 0
/declare RV_MyTargetName string outer
/declare RV_MyTargetDead int outer 0
/declare RV_InvalidTargetID int outer 0
/declare RV_HasTarget int outer 0
/declare RV_RandomWait int outer 0
/declare RV_LootSlot int outer 0
/declare RV_CheckLook int outer 0
/declare RV_Fighting int outer 0
/declare RV_TargetDead int outer 0
/declare RV_MyXLOC int outer 0
/declare RV_MyYLOC int outer 0

/declare RV_FastRange int outer
/declare RV_RangeMax int outer
/declare RV_RangeMin int outer
/varcalc RV_FastRange ${RV_Range}+3
/varcalc RV_RangeMax ${RV_Range}+1
/varcalc RV_RangeMin ${RV_Range}-1

/declare MyXLOCA int outer 0
/declare MyYLOCA int outer 0
/declare BreakLoop int outer 0 
/declare xDistance int outer 0

:Start
/doevents
/if (${Param0.equal[1]}) {
/call Forage
}
/call GMCheck
/call GetTarget

:KillAdds
/if (${RV_HasTarget}) /call MoveToMob
/if (${RV_HasTarget}) /call CombatSub
/if (${RV_HasTarget}) /call MoveToMob
/if (${RV_HasTarget} && (${Defined[RV_LootArray]} || ${RV_LootAllItems})) /call LootMob
/if (${RV_DisplayStats}) /call DisplayStats
/call ResetSub

/varset RV_RandomWait ${Math.Rand[5]}
/varcalc RV_RandomWait ${RV_RandomWait}+1
/echo Paranoia - Waiting ${RV_RandomWait} seconds before resuming
/delay ${RV_RandomWait}s

/if (${Target.ID}) {
/echo Looks like something is attacking us, killing it...
/delay 1s
/varset RV_HasTarget 1
/varset RV_Fighting 1
/goto :KillAdds
}

/goto :Start

/return

|--------------------------------------------------------------------------------
|SUB: Aquire Target
|--------------------------------------------------------------------------------
Sub GetTarget

/declare RV_CurrentRadius int local
/declare RV_TargetSub int local
:Acquire
/for RV_CurrentRadius 100 to ${RV_MaxRadius} step 100
/for RV_TargetSub 1 to ${RV_MobArray.Size}
/squelch /target radius ${RV_CurrentRadius} nopcnear notid ${RV_InvalidTargetID} npc "${RV_MobArray[${RV_TargetSub}]}"
/varset RV_MyTargetID ${Target.ID}
/varset RV_MyTargetDead 0
/if (${Target.ID}) {
/if (${Int[${Target.PctHPs}]}<100) {
/echo Mob NOT a Full Health, picking another...
/varset RV_InvalidTargetID ${Target.ID}
/call ResetSub
/goto :Acquire
}
/if (${Int[${Target.Z}]}<${RV_MinZRange}) {
/echo Mob is BELOW Min Z Range, picking another...
/varset RV_InvalidTargetID ${Target.ID}
/call ResetSub
/goto :Acquire
}
/if (${Int[${Target.Z}]}>${RV_MaxZRange}) {
/echo Mob is ABOVE Max Z Range, picking another...
/varset RV_InvalidTargetID ${Target.ID}
/call ResetSub
/goto :Acquire
}
/varset RV_HasTarget 1
/varset RV_MyTargetName ${Target.CleanName}
/echo Acquired ${Target.CleanName} at range ${Int[${Target.Distance}]}
/return
}
/next RV_TargetSub
/delay 2
/next RV_CurrentRadius

/if (!${Target.ID}) {
/delay 2s
/varcalc RV_FailCounter ${RV_FailCounter}+1
/echo Failed to Acquire Target in Range ${RV_MaxRadius} ${RV_FailCounter} Time(s)
/if (${RV_FailCounter}>=${RV_FailMax}) {
/echo Waiting for Respawns, Resetting Failure Counter...
/call CheckAnchor
/delay 60s
 
/varset RV_FailCounter 0
}
/goto :Acquire
}
/return

|--------------------------------------------------------------------------------
|SUB: Moving
|--------------------------------------------------------------------------------
Sub MoveToMob

/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/declare RV_DistanceTimer timer 15

/doevents

:MovementLoop

/if ((!${RV_Fighting})&&(!${RV_TargetDead})&&(${Target.PctHPs}>100)) {
/echo Mob not at full health, picking another...
/varset RV_InvalidTargetID ${Target.ID}
/varset RV_HasTarget 0
/call ResetSub
/return
}

/if (${Target.ID}) {
/face fast
}
/if (${Int[${Target.Distance}]}>${RV_FastRange}) {
/keypress forward hold
}
/if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) {
/keypress forward
}
/if (${Int[${Target.Distance}]}<${RV_RangeMin}) {
/keypress back
}
/if (!${RV_DistanceTimer}) {
/if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/varset RV_DistanceTimer 15
/goto :Movementloop
}
/if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop

/return

|--------------------------------------------------------------------------------
|SUB: Combat
|--------------------------------------------------------------------------------
Sub CombatSub

/echo Attacking Mob NOW!
/varset RV_Fighting 1
/varset RV_TargetDead 0

:CombatLoop
/doevents

/if (${Param1.equal[1]}) {
/pet attack
}
 
/attack on

/if (${Param4.equal[1]}) {
/call Heal
}

/call MoveToMob
/call SpecialIT

/if (!${Target.ID}) {
/attack off
/keypress forward
/keypress back

/varset RV_TargetDead 1
/varset RV_Fighting 0
/delay 1s
/target radius 30 corpse
/delay 1s
/if (!${Target.ID}) {
/call ResetSub
/return
}
/face fast
}
/if (!${RV_TargetDead}) {
/goto :CombatLoop
}

/return

|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIt

/declare TempID int inner 0

/if (${Param2.equal[1]}) {
/cast $(Param3)
}

/if (${Param4.equal[1]}) {
/call Heal
}

/return

|--------------------------------------------------------------------------------
|SUB: Looting
|--------------------------------------------------------------------------------
Sub LootMob

/declare LootSlot int inner 0
/declare LootCheck int inner 0
/declare LootTotal int inner 0

/face fast

/keypress forward
/keypress back

/fastdrop on
/lootn never
/delay 2s
/loot
/delay 2s
/if (!${Corpse.Items}) {
/echo NO LOOT! Cheap Bastard!
/return
}

/varset LootTotal ${Corpse.Items}
/for LootSlot 1 to ${LootTotal}
/itemnotify loot${LootSlot} leftmouseup
/delay 1s
/if (${RV_LootAllItems}) {
/echo Keeping a ${Cursor.Name}... WOOT!
/autoinventory
/delay 1s
} else {
/for LootCheck 1 to ${RV_LootArray.Size}
/if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
/echo Keeping a ${Cursor.Name}... WOOT!
/varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1
/autoinventory
/delay 1s
}
/next LootCheck
}
/if (${Cursor.ID}) {
/echo Destroying a ${Cursor.Name}...
/destroy
/delay 1s
}
/next LootSlot

/notify LootWnd DoneButton leftmouseup
/delay 2

/return

|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub

/keypress esc
/keypress esc
/keypress esc
/keypress esc

/varset RV_HasTarget 0
/varset RV_TargetDead 0
/varset RV_Fighting 0

/return

|--------------------------------------------------------------------------------
|SUB: Obstacle Avoidance
|--------------------------------------------------------------------------------
Sub HitObstacle

/echo Obstacle hit, moving around it...
/keypress forward
/keypress back hold
/delay 3
/keypress back
/if (${Math.Rand[100]}+1>50) {
/keypress strafe_right hold
} else {
/keypress strafe_left hold
}
/delay 5
/keypress strafe_right
/keypress strafe_left
/keypress forward hold

/return

|--------------------------------------------------------------------------------
|SUB: GM Check
|--------------------------------------------------------------------------------
Sub GMCheck

/if (${Spawn[gm].ID}) {
/beep
/beep
/beep

/echo GM has entered the zone!
/echo $&#* HIM but ending the macro...

/keypress forward
/keypress back

/quit
/endmacro
}

/return

|--------------------------------------------------------------------------------
|SUB: Reading from an INI File
|--------------------------------------------------------------------------------
Sub ReadINI(FileName,SectionName,ArrayType)

/echo Attempting to Read Section "${SectionName}" Zone Information from ${FileName}...
/delay 1s

/if (${Ini[${FileName},${SectionName},-1,NO].Equal[NO]}) {
/echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro...
/delay 1s
/return
}
/declare nValues int local 1
/declare nArray int local 0
/declare KeySet string local ${Ini[${FileName},${SectionName}]}

:CounterLoop
/if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
/varcalc nValues ${nValues}-1
/goto :MakeArray
}
/varcalc nValues ${nValues}+1
/goto :CounterLoop

:MakeArray
/if (!${nValues}) /return
/if (${FileName.Equal["HunterMob.ini"]}&&${nValues}>0) {
/echo Declaring Mob Array...
/declare RV_MobArray[${nValues}] string outer
/declare RV_MobStats[${nValues}] string outer
}
/if (${FileName.Equal["HunterLoot.ini"]}&&${nValues}>0) {
/echo Declaring Loot Array...
/declare RV_LootArray[${nValues}] string outer
/declare RV_LootStats[${nValues}] string outer
}
/for nArray 1 to ${nValues}
/if (${FileName.Equal["HunterMob.ini"]}) {
/varset RV_MobArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
/varset RV_MobStats[${nArray}] 0
}
/if (${FileName.Equal["HunterLoot.ini"]}) {
/varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
/varset RV_LootStats[${nArray}] 0
}
/next nArray

/echo "${SectionName}" Zone Information Read Successfully from ${FileName}...
/delay 1s

/return

|--------------------------------------------------------------------------------
|SUB: Display Stats
|--------------------------------------------------------------------------------
Sub DisplayStats

/declare nArray int local

/if (${Defined[RV_LootArray]}) {
/for nArray 1 to ${RV_LootArray.Size}
/echo ${Int[${RV_LootStats[${nArray}]}]} ${RV_LootArray[${nArray}]}'s
/next nArray
}

/return

|--------------------------------------------------------------------------------
|SUB: Forage
|--------------------------------------------------------------------------------
Sub Forage

/cleanup

| Verify that we have the ability to forage.
/if (${Me.Skill[Forage]}==0) {
/echo You cannot forage, silly person!
/goto :Exit
}

| Stand up. Can't forage while sitting.
/if (${Me.State.NotEqual[STAND]}) {
/stand
/delay 5
} 

| If we can forage then do so.
/if (${Me.AbilityReady[Forage]}) {
/doability forage
}

| If we successfully foraged something then take care of it.
/if (${Cursor.ID}) {
/call HandleItem
} 

:Exit

/return

|--------------------------------------------------------------------------------
|SUB: HandleItem
|--------------------------------------------------------------------------------
sub HandleItem

/declare ItemSetting int local
/declare NotFound int local

/varset NotFound -1

| Look up this item in yafm.ini
/varset ItemSetting ${Ini[yafm.ini,ForageList,${Cursor.Name},${NotFound}]}

/delay 5

| If the item isn't in the .ini file then add it.
/if (${ItemSetting}==${NotFound}) {

/ini "yafm.ini" "ForageList" "${Cursor.Name}" "1"

/varset ItemSetting 1

}

| If we're keeping this item then stash it in our bags.
| Otherwise, just destroy it.
/if (${ItemSetting}==1) {

:LootIt
/autoinventory
/delay 5
/if (${Cursor.ID}) /goto :LootIt

} else {

/destroy

}

/return


|--------------------------------------------------------------------------------
|SUB: MoveToAnchor
|--------------------------------------------------------------------------------
Sub MoveToAnchor
/declare iCount int local
/varset iCount 0

/echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}.

:AnchorMoveLoop
/delay 1
/doevents
/face nolook loc ${AnchorY},${AnchorX}

/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) {
/keypress forward hold
} else {
/keypress forward
/face away loc ${AnchorY},${AnchorX}
/return
}

/if (${iCount}>2) {
/call Detectobst
/face nolook loc ${AnchorY},${AnchorX}
/varset iCount 0
}

/varcalc iCount ${iCount}+1
/goto :AnchorMoveLoop
/return

|--------------------------------------------------------------------------------
|SUB: CheckAnchor
|--------------------------------------------------------------------------------
Sub CheckAnchor
/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) /call MoveToAnchor
/return

|--------------------------------------------------------------------------------
|SUB: MoveToAnchor
|--------------------------------------------------------------------------------
Sub MoveToAnchor
/declare iCount int local
/varset iCount 0

/echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}.

:AnchorMoveLoop
/delay 1
/doevents
/face nolook loc ${AnchorY},${AnchorX}

/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) {
/keypress forward hold
} else {
/keypress forward
/face away loc ${AnchorY},${AnchorX}
/return
}

/if (${iCount}>2) {
/call CheckObstacle
/face nolook loc ${AnchorY},${AnchorX}
/varset iCount 0
}

/varcalc iCount ${iCount}+1
/goto :AnchorMoveLoop
/return

|--------------------------------------------------------------------------------
|SUB: CheckObstacle
|--------------------------------------------------------------------------------
|# Checks to see if we may have bumped into something that is stopping us
sub CheckObstacle
|# Record our current position, wait a moment and then check if its the same
/varset MyXLOCA ${Me.X}
/varset MyYLOCA ${Me.Y}
/delay 2
/if (${MyXLOCA}==${Me.X} && ${MyYLOCA}==${Me.Y}) /call Obstacle
/return

|--------------------------------------------------------------------------------
|SUB: Obstacle
|--------------------------------------------------------------------------------
|# Uses strafe and randomness to try and get around things
sub Obstacle
/keypress forward
/keypress back hold
/delay 5
/keypress back
/if (${Math.Rand[2]}) {
/keypress strafe_right hold
/delay 3
/keypress strafe_right
} else {
/keypress strafe_left hold
/delay 3
/keypress strafe_left
}
/keypress forward hold
/return

|--------------------------------------------------------------------------------
|SUB: CheckAnchor
|--------------------------------------------------------------------------------
Sub CheckAnchor
/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) /call MoveToAnchor
/return

|--------------------------------------------------------------------------------
|SUB: CheckAnchor
|--------------------------------------------------------------------------------
Sub Heal
/if ((${Int[${Me.PctHPs}]}<50)&&(${Me.Gem[$(Param5)]})&&(${Me.SpellReady[$(Param5)]})) {
/varset TempID ${Target.ID}
/keypress forward
/keypress back
/keypress F1
/echo Casting Heal Spell because of low health...
/cast $(Param5)
/delay 3s
/target id ${TempID}
}
/return

HunterLoot.ini
Rich (BB code):
[Eastern Plains of Karana]
Loot1=Silk
Loot2=High Quality
Loot3=Medium Quality
Loot4=Feather

HunterMob.ini
Rich (BB code):
[Eastern Plains of Karana]
Mob1=Spider
Mob2=Lion
Mob3=Griffawn
 
There also used to be a macro that would search the bazaar for items worth more to merchants than players were selling them for. However plat-selling companies like IGE have those running on every server 24/7 just about, so you'd be lucky to make 10p a day with those.

However it gave me an idea...
since they're always running those macros, is there some way we could fool the macro? Like sell a diamond for 5 plat - and when a macro'ed player comes up to buy it, change the the price to 5k real quick. hehe
 
iam new to macros how would i change the marcro to work with a bst..and the 2 ini files needed to a paste those to note pad also and put in macro folder?so i would have hunter.mac and the 2 ini files in the folder?

got it working..ty Mach
 
Last edited by a moderator:
When I use this macro now I get a message that says this...........
Due to complete misuse of the String Top-Level Object, it has been removed.

Any Idea's or solutions would be appreciated....

As far as I can see I have the exact same macro I just made my INI files include alot more zones/mobs/loot...

I love this one I wish I could make it work again for me...
 
Learn how to use strings correctly and you won't have that problem I had to rewrite all of my stuff for it. But you can remove that error from going into mq2data.cpp and uncommenting out that TLO and deleting the false / write color shit.
 
I'm trying to use this macro for tradeskill supplies in a very empty zone. My trouble is that a couple of the mobs I am targetting are up a few twisting stairs and my character stands at the bottom of the stairs and I get the message 'you cannot hit from here' and 'you cannot see your target' how could I include a /warp target for these few stairs that I cant negotiate please? just for those couple that are up the few stairs
 
either use advpath to the mobs, or /warp to them. those are the only ways i know of doing it.
 
Sorry for bumping this thread.... now to my main question;

Im using the hunter.mac also with both .ini's , everything works fine..

EXCEPT, sometimes (randomly it seems...) I lock up and immediatly get booted to server select, any idea what this is from and how to fix it?.. It's annoying trying to keep track of all your loots when youve gotta reset them and you can't AFK for a little bit without worrying of being booted... thanks
 
I wrote a macro before my hard drive dropped and what it would do is utilize the mq2cgank plugin setup with the bazaar shopper one. I would setup my trader and constantly /itemtarget generic /itemtarget drop /itemtarget mace sword staff blah blah blah (had to drop alot of items on the ground and watch their names appear on the maps to see what they were tag'd as) then it would pick them up and auto iunventory them. every 10 mins or so my trader would search the baz find my items and put the lowest price. You wouldnt believe the amount of crap people still drop.
 
I'm trying to use this in the mountains of rathe and I keep getting a mob array creation error. I put [Mountains Of Rathe] and the mobs as Mob1=a hill giant ect. What am i doing wrong.. please help me, i'm a cute noob, as the posting says and even though i think that eventually i will understand this stuff well, right now i'm at a loss.
 
NVM... for some reason the place comes up as the mountains of rathe on a /w and the rathe mountains when trying to use this macro...thanks though
 
Acigaretteandsex said:
I wrote a macro before my hard drive dropped and what it would do is utilize the mq2cgank plugin setup with the bazaar shopper one. I would setup my trader and constantly /itemtarget generic /itemtarget drop /itemtarget mace sword staff blah blah blah (had to drop alot of items on the ground and watch their names appear on the maps to see what they were tag'd as) then it would pick them up and auto iunventory them. every 10 mins or so my trader would search the baz find my items and put the lowest price. You wouldnt believe the amount of crap people still drop.
which mostly resulted in everyone on FV laughing at you, as we noticed you warping around.
 
Acigaretteandsex said:
I wrote a macro before my hard drive dropped and what it would do is utilize the mq2cgank plugin setup with the bazaar shopper one. I would setup my trader and constantly /itemtarget generic /itemtarget drop /itemtarget mace sword staff blah blah blah (had to drop alot of items on the ground and watch their names appear on the maps to see what they were tag'd as) then it would pick them up and auto iunventory them. every 10 mins or so my trader would search the baz find my items and put the lowest price. You wouldnt believe the amount of crap people still drop.

Sounds like it'd be easy to do but would suck if a GM or Guide drops an Admin only item...
 
Sounds like it'd be easy to do but would suck if a GM or Guide drops an Admin only item...
look at the source for cgank and you'll instantly understand why this is the worst idea ever.

it's short-duration warp. that happens to leave a mirror-image of your character displayed wherever you warp for a few seconds.

warping in front of 500 people is BAD.
 
plat making macro's where are they !

Users who are viewing this thread

Back
Top
Cart