Moderator: MacroQuest Developers

Code: Select all
Sub CheckAdds(int SpawnSearchID, int aggroCount)
/if ( !${PullSingleDistance} ) /return 0
/if ( !${Defined[aggroCount]} ) /declare aggroCount int local 1
/declare i int local 0
/declare AggroMonsters int local 0
/declare SpawnID int local 0
/for i 1 to ${SpawnCount[npc loc ${Spawn[id ${SpawnSearchID}].X} ${Spawn[id ${SpawnSearchID}].Y} radius ${PullDistance} zradius ${PullDistanceZ}]}
/varset SpawnID ${NearestSpawn[${i},npc loc ${Spawn[id ${SpawnSearchID}].X} ${Spawn[id ${SpawnSearchID}].Y} radius ${PullDistance} zradius ${PullDistanceZ}].ID}
/if ( ${SpawnID} != ${SpawnSearchID} && ${PullSingleDistance} ) {
/if ( d_ValidSpawnID && ${Spawn[id ${SpawnID}].Z} > ${Math.Calc[${Spawn[id ${SpawnSearchID}].Z}-${PullDistanceZ}]} && ${Spawn[id ${SpawnID}].Z} < ${Math.Calc[${Spawn[id ${SpawnSearchID}].Z}+${PullDistanceZ}]} ) {
/if ( ${Spawn[id ${SpawnID}].Speed} ) {
/if ( ${Math.Distance[${Spawn[id ${SpawnSearchID}].Y},${Spawn[id ${SpawnSearchID}].X},${Spawn[id ${SpawnSearchID}].Z}:${Spawn[id ${SpawnID}].Y},${Spawn[id ${SpawnID}].X},${Spawn[id ${SpawnID}].Z}]} < ${Math.Calc[${PullSingleDistance}*1.5]} ) {
/varset AggroMonsters ${Math.Calc[${AggroMonsters}+1]}
/if ( ${AggroMonsters} >= ${aggroCount} ) /return ${SpawnID}
}
} else {
/if ( ${Math.Distance[${Spawn[id ${SpawnSearchID}].Y},${Spawn[id ${SpawnSearchID}].X},${Spawn[id ${SpawnSearchID}].Z}:${Spawn[id ${SpawnID}].Y},${Spawn[id ${SpawnID}].X},${Spawn[id ${SpawnID}].Z}]} < ${PullSingleDistance} ) {
/varset AggroMonsters ${Math.Calc[${AggroMonsters}+1]}
/if ( ${AggroMonsters} >= ${aggroCount} ) /return ${SpawnID}
}
}
}
}
/next i
/return 0

Code: Select all
Sub CheckAdds(int SpawnSearchID, int PullSingleDistance, int aggroCount)
/if ( !${Defined[aggroCount]} ) /declare aggroCount int local 1
/declare i int local 0
/declare AggroMonsters int local 0
/declare SpawnID int local 0
/for i 1 to ${SpawnCount[npc loc ${Spawn[id ${SpawnSearchID}].X} ${Spawn[id ${SpawnSearchID}].Y} radius 150 zradius 50]}
/varset SpawnID ${NearestSpawn[${i},npc loc ${Spawn[id ${SpawnSearchID}].X} ${Spawn[id ${SpawnSearchID}].Y} radius 150 zradius 50].ID}
/if ( ${SpawnID} != ${SpawnSearchID} && ${PullSingleDistance} ) {
/if ( ${Spawn[id ${SpawnID}].Z} > ${Math.Calc[${Spawn[id ${SpawnSearchID}].Z}-50]} && ${Spawn[id ${SpawnID}].Z} < ${Math.Calc[${Spawn[id ${SpawnSearchID}].Z}+50]} ) {
/if ( ${Spawn[id ${SpawnID}].Speed} ) {
/if ( ${Math.Distance[${Spawn[id ${SpawnSearchID}].Y},${Spawn[id ${SpawnSearchID}].X},${Spawn[id ${SpawnSearchID}].Z}:${Spawn[id ${SpawnID}].Y},${Spawn[id ${SpawnID}].X},${Spawn[id ${SpawnID}].Z}]} < ${Math.Calc[${PullSingleDistance}*1.5]} ) {
/varset AggroMonsters ${Math.Calc[${AggroMonsters}+1]}
/if ( ${AggroMonsters} >= ${aggroCount} ) /return ${SpawnID}
}
} else {
/if ( ${Math.Distance[${Spawn[id ${SpawnSearchID}].Y},${Spawn[id ${SpawnSearchID}].X},${Spawn[id ${SpawnSearchID}].Z}:${Spawn[id ${SpawnID}].Y},${Spawn[id ${SpawnID}].X},${Spawn[id ${SpawnID}].Z}]} < ${PullSingleDistance} ) {
/varset AggroMonsters ${Math.Calc[${AggroMonsters}+1]}
/if ( ${AggroMonsters} >= ${aggroCount} ) /return ${SpawnID}
}
}
}
}
/next i
/return 0

I don't think you're doing it right (but I only briefly looked at the code)tums2004 wrote:So I tried the second code, and it always returns a spawn id. Even when mobs are really close.

correcttoomanynames wrote:I don't think you're doing it right (but I only briefly looked at the code)tums2004 wrote:So I tried the second code, and it always returns a spawn id. Even when mobs are really close.
Mobs close = number
No Mobs close = 0

Could use /mapfilter targetradius # ( aggro distance )simonh wrote:I'd have to say that this sounds like a very good addition to the Macro archive.
Maybe make something for a HUD that just puts the targets name in green if it's a single pull and red if it got adds?
If that's at all possible, but so far over the years with using and abusing MQ2, it seems like the sky is the limit...
