Have a macro idea but not sure where to start? Ask here.
Moderator: MacroQuest Developers
-
Kensh
- decaying skeleton

- Posts: 2
- Joined: Sun Apr 03, 2005 5:03 am
Post
by Kensh » Sun Apr 03, 2005 5:09 am
hmm.. this has already been done but i'm too tired to look atm, already went thru a few pages of afk+wiz with hardly any luck, so here i am.
I'm looking for a macro that will PL my wiz (preferrably in any zone) He's level 59 atm, and the main nuke i'm using is Draught of Ice. My root is Fetter, my shielding is Shield of the Magi, and my familiar is Familiar. If someone could make a macro that would use these to kill while i was afk that'd be lovely. I'd prefer that it sat down under 30% mana (which is like 760ish)
Thanks.
-
Goofmester1
- a hill giant

- Posts: 241
- Joined: Thu Nov 06, 2003 4:26 am
Post
by Goofmester1 » Sun Apr 03, 2005 5:47 am
Kensh wrote:hmm.. this has already been done but i'm too tired to look atm,.
That ok the rest of us could be too tired to help. If you know it has already been done then how hard is it to use search?
-
Fluffy
- a ghoul

- Posts: 81
- Joined: Sun Aug 22, 2004 5:08 pm
Post
by Fluffy » Sun Apr 03, 2005 7:28 am
Kensh wrote:hmm.. this has already been done but i'm too tired to look atm, already went thru a few pages of afk+wiz with hardly any luck, so here i am.
I'm looking for a macro that will PL my wiz (preferrably in any zone) He's level 59 atm, and the main nuke i'm using is Draught of Ice. My root is Fetter, my shielding is Shield of the Magi, and my familiar is Familiar. If someone could make a macro that would use these to kill while i was afk that'd be lovely. I'd prefer that it sat down under 30% mana (which is like 760ish)
Thanks.
Well you need to have a little more information here.. What do you want it to do? Sit in a group and do your job... Or you want it to run around Quad kitting? Or you want it to just randomly tag a mob and train people??
Please people if you are going to request a macro atleast tell us what you want it to do.. Sometimes I am bored and rip out macros for people who request them but without information I cant help you..
HELP ME HELP YOU!
Jesus that sounded sappy...
BTW dont send me private messages since I have been banned from sending them :) Something about being rude in private messages :)
And remember, if I said something to offend you it is only becuase I hate you. -- My Mom.
If you can't find it odds are you didn't bother looking. -- My Mom.
Why do I bother, your just stupid. -- My Mom.
Hmm maybe mom didnt love me?
-
Kensh
- decaying skeleton

- Posts: 2
- Joined: Sun Apr 03, 2005 5:03 am
Post
by Kensh » Sun Apr 03, 2005 12:22 pm
Well, i'd want it to run around soloing. Quad kiting would be hilarious, except i'll probably be using it to level up in sebilis sooo... that might be out of the question. If you could make it so it kills one at a time with root, then refreshes it when it fades, that'd be great. (Possibly so it moves away if the npc is too close?)
PS. wizzyman, yours is the closest to what i'm looking for, but i'm not sure how to edit it to what i would need.
-
wizzyman
- a ghoul

- Posts: 106
- Joined: Fri Dec 10, 2004 6:03 pm
Post
by wizzyman » Mon Apr 04, 2005 7:47 am
try this out, very basic but working.
Code: Select all
| wizsolo.mac by wizzyman
| wiz solo little mac
| v1.0
#Chat tell
#Event OutDoor "#*#outdoors#*#"
#Event NoMount "You can not summon a mount here."
#Event ImDead "You have been slain by#*#"
#Event Invited "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel#*#"
#Event NoLevit "This spell does not work here."
#Event levitFade "You feel as you are about to fall."
#Event Rooted "|${Target.CleanName}| adheres to the ground."
#Event Snared "|${Target.CleanName}| is shackled to the ground."
#Event Debuffed "|${Target.CleanName}| looks uncomfortable."
#Event RootOff "You Greater Fetter spell has worn off."
#event ImHit "You have been summoned!"
#event ImHit "#*#hits YOU for#*#"
#event ImHit "#*#slashes YOU for#*#"
#event ImHit "#*#crushes YOU for#*#"
#event ImHit "#*#bashes YOU for#*#"
#event ImHit "#*#kicks YOU for#*#"
#event ImHit "#*#smashes YOU for#*#"
#event ImHit "#*#mauls YOU for#*#"
#event ImHit "#*#gores YOU for#*#"
#event ImHit "#*#pierces YOU for#*#"
#event ImHit "#*#but YOUR magical skin#*#"
#event OORLoot "You are too far away to loot that corpse."
#include Spell_Routines.inc
Sub Main
/cleanup
/fastdrop on
/lootn never
/declare Tell outer FALSE
/declare MyXLOCA float outer 0.0
/declare MyYLOCA float outer 0.0
/declare ninjadist int outer 80
/declare following int outer 0
/declare LootINIFile string outer "loot.ini"
/declare follname string outer NULL
/declare Spellsnare outer "Atol's Spectral Shackles"
/declare Spellquicknuke outer "Spark of Fire"
/declare Spellmainnuke outer "White Fire"
/declare Spellroot outer "Greater Fetter"
/declare Spellstun outer "Teleka"
/declare Spellshield outer "Ether shield"
/declare Spellharvest outer "harvest"
/declare Spelltl outer "translocate"
/declare Spellrune outer "Ether Skin"
/declare Mount outer "White Chain Bridle"
/declare Debuff outer "Staff of Temperate Flux"
/declare conc outer "Maelin's Leggings of Lore"
/declare maelin outer "Shawl of Eternal Forces"
/declare Spelllevit outer "O`Keils Levity"
/declare maelinexp outer "Eye of Dreams"
/declare SpellStun2 outer "Teleka"
/declare SpellInvis outer "Improved Invisibiliry"
/declare AssistAt int outer 100
/declare CombatAt int outer 100
/declare DebuffCount int outer 0
/declare M_Assist string outer
/declare OutDoors outer TRUE
/declare NoMount outer FALSE
/declare NoLevit outer FALSE
/declare NoSit outer FALSE
/declare TargetArray[4] string outer
/declare MobDebuffed outer FALSE
/declare MobRooted outer FALSE
/declare MobSnared outer FALSE
/declare CombatOn outer FALSE
/declare DoDebuff outer TRUE
/declare IAmHit outer FALSE
/call MemSpells
/afk
/lfg off
:main_loop
/if (!${Me.Mount.ID} && ${OutDoors} && !${NoMount}) /call cast ${Mount} item 4s
/if (${Me.State.Equal[Stand]} && ${NoMount} && !${NoSit} && ${Me.PctMana}<80 && !${Spawn[npc radius 80].ID}) /sit
/doevents
:Hold_Main
/if (${Me.Moving}) /goto :Hold_Main
/if (${Me.PctMana} < 80 && ${Me.SpellReady["Harvest"]} && !${CombatOn}) /call Cast ${Spellharvest}
/if (${Me.PctMana} < 80 && ${Me.AltAbilityReady["Harvest of Druzzil"]} && !${CombatOn} && !${Me.Casting.ID}) /aa act Harvest of Druzzil
| /if (${Target.PctHPs}<= 85 && ${CombatOn} && ${Me.AltAbilityReady["Call of Xuzl"]} ) /aa act Call of Xuzl 8s
/call SingleBuffs
/if (${Me.PctHPs} > 69 && ${Me.PctMana} > 50) /call GetTarget
/if (${CombatOn}) /call Combat
/goto :Main_Loop
/return
Sub MemSpells
/echo Memming spells. Hang on.
/if ( !${Me.Gem[${Spellsnare}]} ) {
/memspell 1 ${Spellsnare}
/delay 20
}
/if ( !${Me.Gem[${Spellquicknuke}]} ) {
/memspell 2 ${Spellquicknuke}
/delay 25
}
/if ( !${Me.Gem[${Spellmainnuke}]} ) {
/memspell 3 ${Spellmainnuke}
/delay 20
}
/if ( !${Me.Gem[${Spellroot}]} ) {
/memspell 4 ${Spellroot}
/delay 20
}
/if ( !${Me.Gem[${Spellstun}]} ) {
/memspell 5 ${Spellstun}
/delay 25
}
/if ( !${Me.Gem[${Spellshield}]} ) {
/memspell 6 ${Spellshield}
/delay 25
}
/if ( !${Me.Gem[${Spellharvest}]} ) {
/memspell 7 ${Spellharvest}
/delay 20
}
/if ( !${Me.Gem[${Spelllevit}]} ) {
/memspell 8 ${Spelllevit}
/delay 20
}
/if ( !${Me.Gem[${Spellrune}]} ) {
/memspell 9 ${Spellrune}
/delay 30
}
|/if ( ${Window[SpellBookWnd].Open} ) /windowstate SpellBookWnd close
/echo Spells are memmed.
/return
Sub GetTarget
/if (${Spawn[npc radius 150].ID}) {
/target id ${Spawn[npc radius 150].ID}
}
/delay 1s
/if (!${Target.Type.Equal[NPC]} && ${Target.ID}) {
/cleanup
/return
}
/delay 1s
/if (${Target.ID} && ${Target.Type.Equal[NPC]}) {
/varset TargetArray[1] ${Target.CleanName}
/varset TargetArray[2] ${Target.Level}
/varset TargetArray[3] ${Target.Name}
/varset TargetArray[4] ${Target.ID}
/varset CombatOn TRUE
} else {
/return
}
/return
Sub Combat
:combat_loop
/doevents
/if (${Target.Distance} > 200) /goto :mobwentoor
/if (${Me.PctMana} < 20) {
/if (${Me.State.Equal[Stand]} && ${NoMount}) /sit
/goto :combat_loop
}
/if (${Target.PctHPs}<= 0 ) {
/varset CombatOn FALSE
}
/if (!${MobRooted} && ${CombatOn}) /call Root
/if (${CombatOn} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) /call snare
/doevents
/if (!${MobRooted} && ${CombatOn}) /call Root
/if (${DoDebuff} && ${CombatOn} && !${MobDebuffed} && ${MobSnared} && ${MobRooted} && ${Target.ID}==${TargetArray[4]}) /call DeBuff
/if (${Target.PctHPs}<= 35 && ${CombatOn} && ${MobSnared} && ${MobRooted} && ${Target.ID}==${TargetArray[4]}) {
/call quicknuke
/goto :combat_loop
}
/doevents
/if (${Target.PctHPs}<= 100 && !${MobRooted}) /call Root
/if (${Target.PctHPs}<= 100 && ${CombatOn} && ${MobSnared} && ${MobRooted} && ${Target.ID}==${TargetArray[4]}) /call mainnuke
/doevents
/if (${Target.PctHPs}<= 100 && !${MobRooted}) /call Root
|- EndCombat
/target ${TargetArray[3]}
/if (!${Target.Name.Equal[${TargetArray[3]}]} || !${Target.ID}) {
:mobwentoor
/echo ${TargetArray[1]} is dead
/varset CombatOn FALSE
/varset MobDebuffed FALSE
/varset MobSnared FALSE
/varset MobRooted FALSE
/varset TargetArray[1] NULL
/varset TargetArray[2] NULL
/varset TargetArray[3] NULL
/varset TargetArray[4] NULL
/call LootMob
} else {
/goto :combat_loop
}
/return
Sub DeBuff
:DeBuff_Loop
/if (${DebuffCount} > 5) /goto :DebuffEnd
/if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) {
/call cast ${Debuff} item
/delay 2
/doevents Debuffed
/if (${MobDebuffed}) /goto :DebuffEnd
/varcalc DebuffCount ${DebuffCount}+1
/goto :DeBuff_Loop
}
:DebuffEnd
/varset MobDebuffed TRUE
/varset DebuffCount 0
/return
Sub mainnuke
/if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) {
/if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) {
/echo Shid ! I don't have mana to nuke %T
} else {
:mainnuke_Loop
/call cast ${Spellmainnuke} gem3 6s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :mainnuke_Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :mainnuke_Loop
}
}
/doevents
/return
Sub quicknuke
/if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) {
/if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) {
/echo Shid ! I don't have mana to nuke %T
} else {
:quicknuke_Loop
/call cast ${Spellquicknuke} gem2 3s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :quicknuke_Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :quicknuke_Loop
}
}
/doevents
/return
Sub Root
/if (!${MobRooted} && ${Target.ID}==${TargetArray[4]}) {
:root_Loop
/call cast ${Spellroot} 2s
/delay 2
/doevents Rooted
/if (${MobRooted}) {
/return
} else {
/goto :root_loop
}
}
/return
Sub snare
/if (${Target.PctHPs}<=${CombatAt} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) {
:snare_Loop
/call cast ${Spellsnare} 2s
/delay 2
/doevents Snared
/if (${MobSnared}) {
/return
} else {
/goto :snare_Loop
}
}
/return
sub SingleBuffs
/if (${Bool[${Me.Buff["Ether Skin"]}]}==FALSE) /call Cast ${Spellrune} gem9 5s
/if (${Bool[${Me.Buff["Ether Shield"]}]}==FALSE) /call Cast ${Spellshield} gem6 12s
/if (${Bool[${Me.Buff["Ro's Greater Familiar"]}]}==FALSE) /alt activate 453
| /if (${Bool[${Me.Buff["Devoted Familiar"]}]}==FALSE) /alt activate 457
| /if (${Bool[${Me.Buff["Druzzil's Mystical Familiar"]}]}==FALSE) /alt activate 305
/if (${Me.Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost
/if (${Bool[${Me.Buff["Maelin's Methodical Mind"]}]}==FALSE) /call Cast "Shawl of Eternal Forces" item 6s
/if (${Bool[${Me.Buff["Maelin's Meditation"]}]}==FALSE) /call Cast "Eye of Dreams" item 5s
/if (${Bool[${Me.Buff["O`Keils Levity"]}]}==FALSE && !${NoLevit}) /call Cast ${Spelllevit} gem8 6s
/return
Sub MoveToSafe
/doevents
/delay 3
/if (!${MobRooted}) /call Root
/if (${Target.Distance} > 100) {
/varset IAmHit FALSE
/return
}
/if (${IAmHit} && ${Target.Distance} < 50) {
/call MoveSafe
/doevents ImHit
/varset IAmHit FALSE
/return
}
/return
Sub MoveSafe
/if (${Target.ID}) /face fast
/dismount
/doevents
/if (!${MobRooted}) /call Root
/keypress back hold
/delay 2s
/keypress back
/delay 1s
/if (${Bool[${Me.Buff["Ether Skin"]}]}==FALSE && ${MobRooted}) /call Cast ${Spellrune} gem9 5s
/return
sub CheckObstacle
/varset MyXLOCA ${Me.X}
/varset MyYLOCA ${Me.Y}
/delay 2
/if (${MyXLOCA}==${Me.X} && ${MyYLOCA}==${Me.Y}) /call Obstacle
/return
sub Obstacle
/keypress forward
/keypress back hold
/delay 3
/keypress back
/if (${Math.Rand[2]}) {
/keypress strafe_right hold
/delay 1s
/keypress strafe_right
} else {
/keypress strafe_left hold
/delay 1s
/keypress strafe_left
}
/keypress forward hold
/return
Sub LootMob
/declare LootSlot int inner 0
/declare LootCheck int inner 0
/declare LootTotal int inner 0
/declare LootLoop int local 0
:WaitLootMobWnd
/squelch /target corpse notid ${WtDCorpse} radius 150
/delay 5
/squelch /stick
/if (${Target.Type.Equal[CORPSE]}) /loot
/doevents
/delay 1s
/varcalc LootLoop ${LootLoop}+1
/if (${LootLoop} > 5) /return
/if (!${Corpse}) /goto :WaitLootMobWnd
/if (!${Corpse.Items}) {
/squelch /stick off
/echo NO LOOT! Cheap Bastard!
/notify LootWnd DoneButton leftmouseup
/delay 2
/return
}
/varset LootTotal ${Corpse.Items}
/for LootSlot 1 to ${LootTotal}
/itemnotify loot${LootSlot} leftmouseup
/delay 1s
/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.Value} > 9000 && ${Cursor.Stackable}) {
/echo Keeping a ${Cursor.Name}...
/autoi
/delay 1s
}
/if (${Cursor.NoDrop}) {
/echo Destroying a ${Cursor.Name}...
/des
/delay 1s
}
/if (${Cursor.ID}) {
/echo Dropping a ${Cursor.Name}...
/drop
/delay 1s
}
/next LootSlot
/squelch /stick off
/notify LootWnd DoneButton leftmouseup
/doevents
/return
Sub MoveToCorpse
/stand
/dismount
/if (${Me.Pet.State.NotEqual[SIT]} && ${Me.Pet.PctHPs} < 99) /pet sit
:Move_loop
/if (${Target.Distance} > 10 && !${Me.Casting.ID}) {
/face nolook
/if (!${Me.Moving}) /keypress Num_Lock
/call CheckObstacle
/goto :Move_loop
} else {
/keypress Down
/return
}
| ######################################################################################################
Sub Event_OutDoor
/echo This is an indoor zone. Sorry.
/varset OutDoors FALSE
/return
| ######################################################################################################
Sub Event_NoLevit
/echo can't levitate in this zone. Sorry.
/varset NoLevit TRUE
/return
| ######################################################################################################
Sub Event_NoMount
/echo No mount in this zone. Sorry.
/varset NoMount TRUE
/return
| ######################################################################################################
Sub Event_levitFade
/call Cast ${Spelllevit}
/return
| ######################################################################################################
Sub Event_Invited
/invite
/return
| ######################################################################################################
Sub Event_RootOff
/varset MobRooted FALSE
/return
Sub Event_Rooted
/varset MobRooted TRUE
/return
Sub Event_Debuffed
/varset MobDebuffed TRUE
/return
Sub Event_Snared
/varset MobSnared TRUE
/return
Sub Event_ImHit
/varset IAmHit TRUE
/call MoveToSafe
/return
Sub Event_OORLoot
/call MoveToCorpse
/return
Sub Event_ImDead
/echo Bummer !
:Zone_Loop
/if ( ${Me.Bound.ID} != ${Zone.ID} ) /goto :Zone_Loop
/delay 5s
/consent group
/delay 5
/gsay Im ready to get rez.
/call Wait4Rez
/delay 20
/call MemSpells
/if (${Me.State.Equal[Stand]}) /sit
| We do some short meditate before we start again.
:Meditate
/delay 1s
/if (${Me.CurrentMana} < 300) /goto :Meditate
/return
| ################## This part is taken from wait4res.
Sub Wait4Rez
:waitforrez
/if (!${Window[ConfirmationDialogBox].Open}) {
/delay 5s ${Window[ConfirmationDialogBox].Open}
/goto :waitforrez
}
/if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox Yes_Button leftmouseup
:zonein
/delay 5
/squelch /target mycorpse
/delay 5
/if (${Target.CleanName.NotEqual[${Me}'s corpse]}) /goto :zonein
/if (${Target.CleanName.Equal[${Me}'s corpse]}) {
/delay 3s
/call Loot_Corpse
} else /goto :zonein
/return
Sub Loot_Corpse
/declare LootTotal int local 0
/declare LootSlot int local
/squelch /target mycorpse
/if (${Target.Type.NotEqual[CORPSE]} || !${Target.ID}) {
/echo ** Can't target my corpse.
/return
}
/corpse
/delay 1s
/loot
/delay 1s
/if (${Me.State.NotEqual[BIND]}) {
/echo ** Massive lag right now... Aborting looting.
/return
}
:LootLag
/if (${LootTotal}!=${Corpse.Items}) {
/varset LootTotal ${Corpse.Items}
/delay 5
/goto :LootLag
}
/for LootSlot 1 to ${LootTotal}
:LootItem
/itemnotify loot${LootSlot} rightmouseup
/delay 3
/if (${Corpse.Item[${LootSlot}].ID}) {
/delay 2
/goto :LootItem
}
/next LootSlot
/delay 5
/echo ** Done looting my corpse.
/notify LootWnd DoneButton leftmouseup
/return
| ###############################
Sub Event_Chat(string ChatType,string ChatSender,string ChatText)
/if (!${ChatType.Equal[TELL]}) /return
/if (${ChatSender.Equal[${Me.Pet.CleanName]}) /return
/varset Tell TRUE
/return