• IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
Resource icon

Skills.mac - auto skill raiser

Joined
Mar 18, 2012
Likes
8
RedCents
4,653¢
#1
This is part of another macro I wrote for new toons. This mac will use whatever spells you have memmed or abilities you have on your ability keys. It will use your target if you have one and attempt more abilities, else will use yourself as target. It ignores certain spells like gate, DA, and a few others. It should work with vanilla compile, but if some TLO says it doesnt exist, let me know.
skills.mac
Rich (BB code):
Sub Main
/declare AbilityTimer timer outer
/echo ${Macro.Name} loaded.
:mainloop
/call Abilities
/if (${Me.PctMana} && !${Me.Class.ShortName.Equal[brd]}) /call Skills
/if (!${AbilityTimer}) {
/call Abilities
/varset AbilityTimer 7s
}
/goto :mainloop

/return

Sub Abilities
	/if (${Me.Skill[tracking]} < ${Skill[tracking].SkillCap} && ${Me.AbilityReady[tracking]}) /doability "tracking"
	/if (${Window[TrackingWnd].Child[TRW_DoneButton]}) /notify TrackingWnd TRW_DoneButton leftmouseup
	/if (${Me.Skill[feign death]} < ${Skill[feign death].SkillCap} && ${Me.AbilityReady[feign death]}) {
		/doability "feign death"
		/delay 5
		/if (!${Me.Standing}) /stand
	}
	/if (${Me.Skill[hide]} < ${Skill[hide].SkillCap} && ${Me.AbilityReady[hide]}||!${AbilityTimer} && ${Me.Ability[hide]}) /doability "hide"
	/if (${Me.Skill[sneak]} < ${Skill[sneak].SkillCap} && ${Me.AbilityReady[sneak]}||!${AbilityTimer}  && ${Me.Ability[sneak]}) /doability "sneak"
	/if (${Me.Skill[mend]} < ${Skill[mend].SkillCap} && ${Me.AbilityReady[mend]}) /doability "mend"
	/if (!${Target.ID}||${Target.Type.Equal[pc]} && ${Zone.Type}||${Target.Master.Type.Equal[PC]} && ${Zone.Type}||${Target.Type.Equal[corpse]}||${Target.Distance}>${Target.MaxRange}||${Target.ID}==${Me.ID}) /return
	/if (${Me.AbilityReady[flying kick]}) /doability "flying kick"
	/if (${Me.AbilityReady[bash]} && (${InvSlot[offhand].Item.Type.Find[shield]}||${Me.AltAbility[2 Hand Bash]})) /doability "bash"
	/if (${Me.AbilityReady[frenzy]}) /doability "frenzy"
	/if (${Me.AbilityReady[slam]} && !${Me.AbilityReady[bash]}) /doability "slam"
	/if (${Me.AbilityReady[round kick]}) /doability "round kick"
	/if (${Me.AbilityReady[kick]}) /doability "kick"
	/if (${Me.AbilityReady[tiger claw]}) /doability "tiger claw"
	/if (${Target.Distance}<12 && ${Me.AbilityReady[Disarm]}) /doability "Disarm"
	/if (${Me.AbilityReady[Backstab]} && ${Melee.Behind}) /doability "Backstab"
/return

Sub Skills
/if (${Me.Casting.ID} && !${Me.Class.ShortName.Equal[BRD]}||${Me.Hovering}||${Window[tradewnd].Open}||${Window[lootwnd].Open}) /return
     /if (${Me.Skill[Abjuration]} < ${Skill[Abjuration].SkillCap}) /call Raise Abjuration
     /if (${Me.Skill[Alteration]} < ${Skill[Alteration].SkillCap}) /call Raise Alteration
     /if (${Me.Skill[Conjuration]} < ${Skill[Conjuration].SkillCap}) /call Raise Conjuration
     /if (${Me.Skill[Divination]} < ${Skill[Divination].SkillCap}) /call Raise Divination
     /if (${Me.Skill[Evocation]} < ${Skill[Evocation].SkillCap}) /call Raise Evocation
  /if (${Me.Skill[Divination]} >= ${Skill[Divination].SkillCap} && ${Me.Skill[Evocation]} >= ${Skill[Evocation].SkillCap} && ${Me.Skill[Abjuration]} >= ${Skill[Abjuration].SkillCap} && ${Me.Skill[Alteration]} >= ${Skill[Alteration].SkillCap} && ${Me.Skill[Divination]} >= ${Skill[Divination].SkillCap} && ${Me.Skill[Conjuration]} >= ${Skill[Conjuration].SkillCap}) {
   	/echo Skills maxed.
    /end
  }
 /return
 
Sub Raise(skilltype)
/if (${Me.Casting.ID} && !${Me.Class.ShortName.Equal[BRD]}||${Me.Hovering}||${Window[tradewnd].Open}||${Window[lootwnd].Open}) /return
/declare i int local
:checkcursor
 /if (${Cursor.ID} && !${Cursor.NoRent} && ${skilltype.Equal[Conjuration]}) /autoinv
 /if (${Cursor.ID} && ${Cursor.NoRent} && ${skilltype.Equal[Conjuration]}) /destroy
 /if (${Cursor.ID} && ${skilltype.Equal[Conjuration]}) /goto :checkcursor
 /for i 1 to 12
 /if (${Me.CurrentMana}>${Me.Gem[${i}].Mana} && ${Me.Gem[${i}].Skill.Equal[${skilltype}]} && !${Me.GemTimer[${i}]} && ${Me.SpellReady[${Me.Gem[${i}]}]} && !${Select[${Me.Gem[${i}].Category},Transport,Traps,Aura]} && !${Select[${Me.Gem[${i}].Subcategory},Misc,Invulnerability]} && (!${Me.Gem[${i}].Subcategory.Find[Sum: ]}||!${Me.Pet.ID})) {
	 	/if (${Me.Gem[${i}].TargetType.Equal[Single]} && ${Target.Type.NotEqual[npc]} && ${${Me.Gem[${i}].SpellType.Equal[Detrimental]}}) {
		 	/squelch /tar npc range ${Me.Gem[${i}].MyRange}
		 	/delay 1
		 	/if (!${Target.ID}) /squelch /tar myself
		 	/delay 1
	 	}
	 	/if (${Me.Gem[${i}].TargetType.Equal[Single]} && !${Target.ID} && ${${Me.Gem[${i}].SpellType.NotEqual[Detrimental]}}) {
		 	/if (!${Target.ID}) /squelch /tar myself
		 	/delay 1
	 	}
	 	/if (${Me.Gem[${i}].TargetType.Equal[pet]} && !${Me.Pet.ID}) /goto :skip
	 	/casting "${Me.Gem[${i}]}" gem${i}
	 	/delay 1s
	 	/delay 10s !${Me.Casting.ID}
 	}
 :skip	
 /next i

/return
[/hide][/hide][/hide][/hide]
[hide][hide][hide][hide][/hide][/hide][/hide][/hide]
 
Last edited:

Redbot

lvl 69 Rouge
Moderator
Joined
Oct 15, 2004
Likes
588
RedCents
39,572¢
#2
Well that's awesome, thank you!
 
Joined
Feb 12, 2011
Likes
41
RedCents
58¢
#3
Pete so glad to see you over here a bit man. You are like the only reason I ever missed the other place =). You are one of the best macro writers out there among a few others! Thank you for sharing your knowledge and some macros here bud.
 
Joined
Jun 15, 2012
Likes
0
RedCents
88¢
#4
i tried this on a rogue it just hits hide and sneak once then say "skills maxed" and ends macro
 
Joined
Mar 18, 2012
Likes
8
RedCents
4,653¢
#5
Oh, ya it wasnt intended for pure melee, i changed the /call Skills so it only tries it if you have mana and arent a bard. that should solve your issue.
 
Joined
Jun 15, 2012
Likes
0
RedCents
88¢
#6
thanks just tested it. it works but it wont click hide/sneak off . so the buttons dont refresh
just seen your pl.mac on the MQ2 boards nice work.
 
Joined
Mar 18, 2012
Likes
8
RedCents
4,653¢
#7
np, modified it to /doability hide and sneak even if you are already hiding or seeking based on a 7 second timer if you have the ability
 
Joined
Jun 15, 2012
Likes
0
RedCents
88¢
#8
ty works great now. i add'ed begging and disarm and intimidation great little rog trainer ty.
 

Korn

New member
Joined
Mar 16, 2016
Likes
0
RedCents
#9
What do we type to start this macro? I'm not good at this sort of thing, thank you!
 
Joined
Apr 9, 2016
Likes
6
RedCents
141¢
#11
It works great untill all casting skills are maxed. Once casting skills are maxed, the macro stops. It won't do Tracking for my ranger after.
 
Joined
Dec 29, 2017
Likes
697
RedCents
2,770¢
#12
Rich (BB code):
Sub Main
	/declare AbilityTimer timer outer
	/declare CastingSkillMaxxed bool outer FALSE
	/declare MeleeSkillsMaxxed bool outer FALSE
	/echo ${Macro.Name} loaded.
	:mainloop
	/if (${MeleeSkillsMaxed} && ${CastingSkillMaxed}) {
		/echo \agDone Skilling Up!
		/end
	}
	/call Abilities
	/if (${Me.PctMana} && !${Me.Class.ShortName.Equal[brd]}) /call Skills
	/if (!${AbilityTimer}) {
		/call Abilities
		/varset AbilityTimer 7s
	}
/goto :mainloop


/return


Sub Abilities
	/if (${Me.Skill[tracking]} < ${Skill[tracking].SkillCap} && ${Me.AbilityReady[tracking]}) /doability "tracking"
	/if (${Window[TrackingWnd].Child[TRW_DoneButton]}) /notify TrackingWnd TRW_DoneButton leftmouseup
	/if (${Me.Skill[feign death]} < ${Skill[feign death].SkillCap} && ${Me.AbilityReady[feign death]}) {
		/doability "feign death"
		/delay 5
		/if (!${Me.Standing}) /stand
	}
	/if (${Me.Skill[hide]} < ${Skill[hide].SkillCap} && ${Me.AbilityReady[hide]}||!${AbilityTimer} && ${Me.Ability[hide]}) /doability "hide"
	/if (${Me.Skill[sneak]} < ${Skill[sneak].SkillCap} && ${Me.AbilityReady[sneak]}||!${AbilityTimer}  && ${Me.Ability[sneak]}) /doability "sneak"
	/if (${Me.Skill[mend]} < ${Skill[mend].SkillCap} && ${Me.AbilityReady[mend]}) /doability "mend"
	/if (!${Target.ID}||${Target.Type.Equal[pc]} && ${Zone.Type}||${Target.Master.Type.Equal[PC]} && ${Zone.Type}||${Target.Type.Equal[corpse]}||${Target.Distance}>${Target.MaxRange}||${Target.ID}==${Me.ID}) {
		/if (${Me.Skill[tracking]} >= ${Skill[tracking].SkillCap} && ${Me.Skill[feign death]} >= ${Skill[feign death].SkillCap} && ${Me.Skill[hide]} >= ${Skill[hide].SkillCap} && ${Me.Skill[sneak]} >= ${Skill[sneak].SkillCap} && ${Me.Skill[mend]} >= ${Skill[mend].SkillCap}) {
			/if (!${MeleeSkillsMaxxed}) {
				/echo Melee Skills Maxxed!
				/varset MeleeSkillsMaxxed TRUE
			}
		}
		/return
	}
	
	/if (${Me.AbilityReady[flying kick]}) /doability "flying kick"
	/if (${Me.AbilityReady[bash]} && (${InvSlot[offhand].Item.Type.Find[shield]}||${Me.AltAbility[2 Hand Bash]})) /doability "bash"
	/if (${Me.AbilityReady[frenzy]}) /doability "frenzy"
	/if (${Me.AbilityReady[slam]} && !${Me.AbilityReady[bash]}) /doability "slam"
	/if (${Me.AbilityReady[round kick]}) /doability "round kick"
	/if (${Me.AbilityReady[kick]}) /doability "kick"
	/if (${Me.AbilityReady[tiger claw]}) /doability "tiger claw"
	/if (${Target.Distance}<12 && ${Me.AbilityReady[Disarm]}) /doability "Disarm"
	/if (${Me.AbilityReady[Backstab]} && ${Melee.Behind}) /doability "Backstab"
	
	/if (${Target.ID} && ${Me.Skill[tracking]} >= ${Skill[tracking].SkillCap} && ${Me.Skill[feign death]} >= ${Skill[feign death].SkillCap} && ${Me.Skill[hide]} >= ${Skill[hide].SkillCap} && ${Me.Skill[sneak]} >= ${Skill[sneak].SkillCap} && ${Me.Skill[mend]} >= ${Skill[mend].SkillCap}) {
		/if (${Me.Skill[bash]} >= ${Skill[bash].SkillCap} && ${Me.Skill[frenzy]} >= ${Skill[frenzy].SkillCap} && ${Me.Skill[slam]} >= ${Skill[slam].SkillCap} && ${Me.Skill[round kick]} >= ${Skill[round kick].SkillCap} && ${Me.Skill[kick]} >= ${Skill[kick].SkillCap} && ${Me.Skill[flying kick]} >= ${Skill[flying kick].SkillCap}) {
			/if (${Me.Skill[tiger claw]} >= ${Skill[tiger claw].SkillCap} && ${Me.Skill[disarm]} >= ${Skill[disarm].SkillCap} && ${Me.Skill[backstab]} >= ${Skill[backstab].SkillCap} && ) {
				/if (!${MeleeSkillsMaxxed}) {
					/echo Melee Skills Maxxed!
					/varset MeleeSkillsMaxxed TRUE
				}
			}
		}
	}
/return


Sub Skills
/if (${Me.Casting.ID} && !${Me.Class.ShortName.Equal[BRD]}||${Me.Hovering}||${Window[tradewnd].Open}||${Window[lootwnd].Open}) /return
     /if (${Me.Skill[Abjuration]} < ${Skill[Abjuration].SkillCap}) /call Raise Abjuration
     /if (${Me.Skill[Alteration]} < ${Skill[Alteration].SkillCap}) /call Raise Alteration
     /if (${Me.Skill[Conjuration]} < ${Skill[Conjuration].SkillCap}) /call Raise Conjuration
     /if (${Me.Skill[Divination]} < ${Skill[Divination].SkillCap}) /call Raise Divination
     /if (${Me.Skill[Evocation]} < ${Skill[Evocation].SkillCap}) /call Raise Evocation
  /if (${Me.Skill[Divination]} >= ${Skill[Divination].SkillCap} && ${Me.Skill[Evocation]} >= ${Skill[Evocation].SkillCap} && ${Me.Skill[Abjuration]} >= ${Skill[Abjuration].SkillCap} && ${Me.Skill[Alteration]} >= ${Skill[Alteration].SkillCap} && ${Me.Skill[Divination]} >= ${Skill[Divination].SkillCap} && ${Me.Skill[Conjuration]} >= ${Skill[Conjuration].SkillCap}) {
   	/if (!${CastingSkillMaxxed}) {
		/echo Skills maxxed.
		/varset CastingSkillMaxxed TRUE
	}
  }
 /return
 
Sub Raise(skilltype)
/if (${Me.Casting.ID} && !${Me.Class.ShortName.Equal[BRD]}||${Me.Hovering}||${Window[tradewnd].Open}||${Window[lootwnd].Open}) /return
/declare i int local
:checkcursor
 /if (${Cursor.ID} && !${Cursor.NoRent} && ${skilltype.Equal[Conjuration]}) /autoinv
 /if (${Cursor.ID} && ${Cursor.NoRent} && ${skilltype.Equal[Conjuration]}) /destroy
 /if (${Cursor.ID} && ${skilltype.Equal[Conjuration]}) /goto :checkcursor
 /for i 1 to 12
 /if (${Me.CurrentMana}>${Me.Gem[${i}].Mana} && ${Me.Gem[${i}].Skill.Equal[${skilltype}]} && !${Me.GemTimer[${i}]} && ${Me.SpellReady[${Me.Gem[${i}]}]} && !${Select[${Me.Gem[${i}].Category},Transport,Traps,Aura]} && !${Select[${Me.Gem[${i}].Subcategory},Misc,Invulnerability]} && (!${Me.Gem[${i}].Subcategory.Find[Sum: ]}||!${Me.Pet.ID})) {
	 	/if (${Me.Gem[${i}].TargetType.Equal[Single]} && ${Target.Type.NotEqual[npc]} && ${${Me.Gem[${i}].SpellType.Equal[Detrimental]}}) {
		 	/squelch /tar npc range ${Me.Gem[${i}].MyRange}
		 	/delay 1
		 	/if (!${Target.ID}) /squelch /tar myself
		 	/delay 1
	 	}
	 	/if (${Me.Gem[${i}].TargetType.Equal[Single]} && !${Target.ID} && ${${Me.Gem[${i}].SpellType.NotEqual[Detrimental]}}) {
		 	/if (!${Target.ID}) /squelch /tar myself
		 	/delay 1
	 	}
	 	/if (${Me.Gem[${i}].TargetType.Equal[pet]} && !${Me.Pet.ID}) /goto :skip
	 	/casting "${Me.Gem[${i}]}" gem${i}
	 	/delay 1s
	 	/delay 10s !${Me.Casting.ID}
 	}
 :skip	
 /next i


/return
[/hide][/hide][/hide][/hide][/hide][/hide][/hide][/hide]
[hide][hide][hide][hide][hide][hide][hide][hide]

I tried to add in logic for both casting and melee skills being maxxed. Untested, lemme know if that works out.[/hide][/hide][/hide][/hide][/hide][/hide][/hide][/hide]
 
Joined
Apr 9, 2016
Likes
6
RedCents
141¢
#13
Rich (BB code):
Sub Main
    /declare AbilityTimer timer outer
    /declare CastingSkillMaxxed bool outer FALSE
    /declare MeleeSkillsMaxxed bool outer FALSE
    /echo ${Macro.Name} loaded.
    :mainloop
    /if (${MeleeSkillsMaxed} && ${CastingSkillMaxed}) {
        /echo \agDone Skilling Up!
        /end
    }
    /call Abilities
    /if (${Me.PctMana} && !${Me.Class.ShortName.Equal[brd]}) /call Skills
    /if (!${AbilityTimer}) {
        /call Abilities
        /varset AbilityTimer 7s
    }
/goto :mainloop


/return


Sub Abilities
    /if (${Me.Skill[tracking]} < ${Skill[tracking].SkillCap} && ${Me.AbilityReady[tracking]}) /doability "tracking"
    /if (${Window[TrackingWnd].Child[TRW_DoneButton]}) /notify TrackingWnd TRW_DoneButton leftmouseup
    /if (${Me.Skill[feign death]} < ${Skill[feign death].SkillCap} && ${Me.AbilityReady[feign death]}) {
        /doability "feign death"
        /delay 5
        /if (!${Me.Standing}) /stand
    }
    /if (${Me.Skill[Hidden content]
[Hidden content]

It doesn't work for a bard. It goes through once and does casting part and says skills maxed.
 
Joined
Dec 29, 2017
Likes
697
RedCents
2,770¢
#14
@GeorgiaGeorgiz I believe the reason for that is because of a built in utility called MQ2Twist which you can run by typing /plugin mq2twist Once you run that command you can then type /twist 1 2 3 4 5 6 etc where the number is the spell gem you want to twist and it will automatically twist the songs for you.
But, the macro will run the other parts I hope.

Unless I've misunderstood the issue and you are saying it will not go through the skill portion of things once it starts playing the song. I could perhaps get it to exclude the bard for the casting portion.
 
Top