Moderator: MacroQuest Developers

I would guess, since the problem is with the spellcasting part of the macro, that the structure used or the offset used for $spell or $char is not right yet. I'm not home to test it at the moment but if you want you can try this yourself in game.banananose wrote:Hi!
I tried both this, and the "generic" macro to run a bot cleric. I have the same problem with each one. Whenever I try to make my bot cast a spell, it crashes to desktop. I send the bot the tell, /tell <botname> sp heroism in one case, /tell <botname> hp in the other case, depending on the macro. The bot receives the tell, and replies to me, "Casting heroism on <toon-name>." And then immediately lands in desktopville. I'm thinking it must be something in the Spellsub routine, because it seems to make it's way to there just fine. Damned if I have the "skillz" to troubleshoot it anymore than that. Maybe something in today's patch changed and that function doesn't work properly now? Any help/suggestions appreciated - I like the idea of 2 boxing from one box :)
Thanks,
BN

I don't think /rtarget would be good to use for group watch auto heals. The heals go off based off group member percent health, not based on tells coming into the bot. /rtarget would not really work well for the /tell commands either since you may be telling the bot to heal someone else.Valerian wrote:either one...
Code: Select all
/if n $spawn($group($GroupMember),hp,pct)<41 {
/if n $spawn($group($GroupMember),hp,pct)>=1 {
/if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal
/if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal
/if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal
/if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal
/if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal
}
}
Code: Select all
Sub Do-pet
/varset CmdArrayNum 0
/if n $strlen("$p1")<=0 {
/assist $MasterName
/delay 3
} else /if n $strlen("$p2")<=0 {
/target "$p1"
} else /if n $strlen("$p3")<=0 {
/target "$p1 $p2"
} else /if n $strlen("$p4)<=0 {
/target "$p1 $p2 $p3"
} else /target "$p1 $p2 $p3 $p4"
/stand
||||||||||||||||||||||||||||Begin Edit|||||||||||||||||||||||||||||||||||||||
/tell "$MasterName" Casting pet on %t
/call SpellSub "Unswerving Hammer of Faith"
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/if "$SitAfterCast"=="1" /sit on
/press esc
/return
Code: Select all
/varset a(1,34) pet From the Manual wrote:$spawn(id,xxx)
Returns information on a spawn
xxx can be: name[clean], surname, id, x, y, z, heading, headingto, state, speed, distance[,nopredict|x|y|z], type, level, gm, class, race, gender, light, pet, master
state can return: STAND, SIT, DUCK, BIND, FEIGN, DEAD
$spawn(id,hp,xxx) returns the spawn's hp: cur, max, pct
$spawn(id,next/prev) returns the id of the next/previous spawn.
$spawn(id,held,xxx) returns the model name for a held slot
xxx can be: right, left, shield
Code: Select all
Sub Do-camp
/tell $MasterName Camping out.
/stand
/dismount
/sit
/camp
/return At one point in time mana was not reported correctly while on a mount. I'm glad to hear that's fixed.wilddoug wrote:Was using this over the weekend and it really helped!
One change to the do-camp routine: add dismount in case Cleric is on a mount.
Another change I made was to remove the /dismount from the do-mana routine. It didn't make sense to me to get off the horse during a mana check - but maybe I was using it differently than others.Code: Select all
Sub Do-camp /tell $MasterName Camping out. /stand /dismount /sit /camp /return
Excellent script!
Code: Select all
#define GroupMember v53
Code: Select all
/if n $t$v53!="0" /return | Make sure you set the $v53 to the correct v## for $GroupMember
Code: Select all
#define HOTTimer0 t0
#define HOTTimer1 t1
#define HOTTimer2 t2
#define HOTTimer3 t3
#define HOTTimer4 t4
#define HOTTimer5 t5
Code: Select all
#define hotspell "Celestial Healing"
#define healspell "Superior Healing"
#define chspell "Complete Healing"
Code: Select all
Sub Tankheal
/if n $group($GroupMember)==$char(id) /press F1
/if n $group($GroupMember)!=$char(id) /target id $group($GroupMember)
/delay 4
/if n $spawn($group($GroupMember),hp,pct)<30 {
/stand
/call spellsub "healspell"
/delay 4
/return
} else
/g "chspell" on %T in 10seconds... I hope %S will make it!
/stand
/call SpellSub "chspell"
/if "$SitAfterCast"=="1" /sit on
/press esc
/return
Sub Casterheal
/if n $spawn($group($GroupMember),hp,pct)<50 {
/if n $group($GroupMember)==$char(id) /press F1
/if n $group($GroupMember)!=$char(id) /target id $group($GroupMember)
/stand
/call spellsub "healspell"
/delay 4
/press esc
/return
} else
/if n $t$v53!="0" /return | Make sure you set the $v53 to the correct v## for $GroupMember
/if n $group($GroupMember)==$char(id) /press F1
/if n $group($GroupMember)!=$char(id) /target id $group($GroupMember)
/stand
/g Healing %T
/call SpellSub "hotspell"
/varset t$v53 24s
/press esc
/if "$SitAfterCast"=="1" /sit on
/return
Code: Select all
Sub Do-afk
/varset CmdArrayNum 0
/if n $strlen("$p1")<=0 {
/afk
} else /if n $strlen("$p2")<=0 {
/afk $p1
} else /if n $strlen("$p3")<=0 {
/afk $p1 $p2
} else /if n $strlen("$p4")<=0 {
/afk $p1 $p2 $p3
} else /if n $strlen("$p5")<=0 {
/afk $p1 $p2 $p3 $p4
} else /if n $strlen("$p6")<=0 {
/afk $p1 $p2 $p3 $p4 $p5
} else /if n $strlen("$p7")<=0 {
/afk $p1 $p2 $p3 $p4 $p5 $p6
} else /if n $strlen("$p8")<=0 {
/afk $p1 $p2 $p3 $p4 $p5 $p6 $p7
} else /if n $strlen("$p9")<=0 {
/afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8
} else {
/afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9
}
|/afk
/return