• 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

Captions ~ Why you should change it, and why didn't you know about this before.

ChatWithThisName

⚔️🛡️🗡️
Moderator
Joined
Dec 29, 2017
RedCents
23,978¢
So this topic doesn't have it's own Forum catagory that I saw. So I'm creating a thread in Macro Mania because it's to do with coding logic that follows along the same guidelines as the MQ2HUD.ini in a way.

I'm talking about the [Captions] section of Macroquest.ini that most people don't even know exists. The [Captions] section uses a little known TLO that's not echoable in MQ2 that inherits the "Spawn" datatype to display information on NPC's and players. It's the code that shows you the details of player/NPC/pet spawns in MQ2.

Why do you care? Well recently I created a HUD that got a lot of positive attention. the logic used to create the HUD is a lot like the logic that will be used to explain the captions section of Macroquest.ini

What can you do with [Captions] section of the Macroquest2.ini, well. See for yourself what I've done in a few minutes of coding using the ${NamingSpawn} TLO.

myCaption.png

This is an altered form of the [Captions] section of the macroquest.ini

I've changed NPC= section to display the information I want to see.

The ${NamingSpawn} inherits the spawn data type. https://redguides.com/docs/projects/macroquest/reference/data-types/datatype-spawn/

While the wiki is certainly dated, just with that link alone you can find a lot of information. Basically anything you see in that list should be allowed to attach to the end of ${NamingSpawn}. You can test them with ${Target.datamember} IE: ${NamingSpawn.Body} will display "Humaniod", "Animal", "Plant", "Undead", etc so you can just look at the targets name and see if you can use your body specific spells/banestrike. I've added distance using ${NamingSpawn.Distance} and there is a lot more that you can add that I just haven't done yet.

Limitations - You're only allowed two lines. So while you can \n to go to a next line, you can only do this once as two lines is the maximum.

Player1, Player2, Player3, etc......what does it mean? The players are directly attached to /shownames 1, 2, 3, 4 etc in game. This only applies to player information.

So if you want /shownames 1 to not show anything at all, you can do something like. Player1=${If[${NamingSpawn.ID},,]}

Someone recently mentioned mobs Feigning Death in EQ. Well perhaps you want to add ${NamingSpawn.Feigning} to the display of NPC's? ${If[${NamingSpawn.Feigning},FD,]} will display FD if the NPC is FD.

Want to know what spell a player is casting? Add ${If[${NamingSpawn.Casting.ID}, Casting: ${NamingSpawn.Casting},]} to the Player# you want to show that information. Great for PVP when you want to stop a player from casting a heal by stunning them but don't want to waste your bash/stun on a trivial spell that won't save their life. /evil grin.

So as you can see this is a very powerful feature that most players either don't know exists or don't know how to edit.

Got your captions setup already? type /captions anon on, then take a screenshot and post it along with the associated code!

~Chatwiththisname

--Update--
And is there anyway to reload the settings other than a totally relog?? is there any slash command like /reload or something? Ty


I completely overlooked this question. The answer is YES~!

So if you make changes and want to test them you have to type

Rich (BB code):
/unload

Then right click on the tray icon for MQ2 and hit "Refresh injections"

That will effectively reload the MacroQuest.ini and update your [Captions]

I don't know of any other way other than this.


How does an ${If[,,,]} statement work?

The following is how an ${If[,,,]} statement works.
Rich (BB code):
${If[ThisIsTrue,DoThis,ElseDoThis]}
How does a ${Select[,]} statement work?

The following is how a ${Select[,]} statement works.
Rich (BB code):
${Select[CompareThis,toThis,andThis,andThis]}
if CompareThis is equal toThis, OR andThis, OR andThis then it evaluates TRUE.

Example of a Select statement.
Rich (BB code):
${Select[${NamingSpawn.ID},${Group.Member[1].ID},${Group.Member[2].ID},${Group.Member[3].ID}]}
The above code evaluates true if the Spawn's ID is the first, second, or third group member in your group window.

How do I nest an ${Select[,]} inside an ${If[,,,]}

You would do
Rich (BB code):
${If[${Select[CompareThis,toThis,andThis,andThis]},IfTrueDoThis,IfFalseDoThis]}

What if I don't want it to do anything if it's false?

You leave the Else portion blank.
Rich (BB code):
${If[ThisIsTrue,DoThis,]}

What can I do with ${NamingSpawn}

NamingSpawn appears to inherit all members of ${Spawn[]} TLO. Therefore the following list should be available to ${NamingSpawn}. Some things may only apply to the current character you are playing.

Rich (BB code):
[spawn]
Member1=ID
Member2=Name
Member3=Level
Member4=X
Member5=Y
Member6=Z
Member7=DistanceX
Member8=DistanceY
Member9=DistanceZ
Member10=Distance
Member11=Distance3D
Member12=DistancePredict
Member13=Next
Member14=Prev
Member15=Heading
Member16=Speed
Member17=Levitating
Member18=Sneaking
Member19=HeadingTo
Member20=Light
Member21=Body
Member22=State
Member23=CurrentHPs
Member24=MaxHPs
Member25=PctHPs
Member26=Deity
Member28=Type
Member29=CleanName
Member30=Surname
Member31=Guild
Member32=GuildStatus
Member33=Master
Member34=Pet
Member35=Race
Member36=Class
Member38=Gender
Member39=GM
Member40=Height
Member41=MaxRange
Member42=AARank
Member43=Casting
Member44=Mount
Member45=FeetWet
Member46=Underwater
Member48=Animation
Member49=Holding
Member50=Look
Member51=N
Member52=W
Member53=U
Member54=S
Member55=E
Member56=D
Member57=DistanceN
Member58=DistanceW
Member59=DistanceU
Member60=Invis
Member61=Linkdead
Member62=LFG
Member63=Trader
Member64=AFK
Member65=ConColor
Member67=Standing
Member68=Sitting
Member69=Ducking
Member70=Feigning
Member71=Binding
Member72=Invited
Member73=NearestSpawn
Member74=MaxRangeTo
Member75=DisplayName
Member76=AATitle
Member77=GroupLeader
Member78=Mark
Member79=Assist
Member80=Anonymous
Member81=Roleplaying
Member82=LineOfSight
Member83=HeadingToLoc
Member84=Title
Member85=Suffix
Member86=Fleeing
Member87=Named
Member88=Buyer
Member89=Moving
Member90=StandState
Member91=Dead
Member92=Stunned
Member93=Hovering
Member94=CurrentMana
Member95=MaxMana
Member96=CurrentEndurance
Member97=PctEndurance
Member98=MaxEndurance
Member99=Loc
Member100=LocYX
Member101=LocYXZ
Member102=Owner
Member103=Following
Member104=Address
Member105=Inviter
Member106=MercID
Member107=ContractorID
Member108=PctMana
Member109=Primary
Member110=Secondary
Member111=Equipment
Member112=Targetable
Member113=PlayerState
Member114=Stuck
Member115=Aggressive
Member116=CanSplashLand
Member117=IsBerserk
Member118=pTouchingSwitch
Member119=bShowHelm
Member120=CorpseDragCount
Member121=bBetaBuffed
Member122=CombatSkillTicks
Member123=FD
Member124=InPvPArea
Member125=bAlwaysShowAura
Member126=GMRank
Member127=WarCry
Member128=IsPassenger
Member129=LastCastTime
Member130=DragNames
Member131=DraggingPlayer
Member132=bStationary
Member133=BearingToTarget
Member134=bTempPet
Member135=HoldingAnimation
Member136=Blind
Member137=LastCastNum
Member138=CollisionCounter
Member139=CeilingHeightAtCurrLocation
Member140=AssistName
Member141=SeeInvis
Member142=SpawnStatus
Member143=bWaitingForPort
Member144=EQLoc
Member145=MQLoc
Member146=TimeBeenDead
Member147=FloorZ
Member148=IsSummoned
Member149=TargetOfTarget

Mez Detection for NPC's.
Rich (BB code):
${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,]}

Group Role Detection for Main Tank, Main Assist, and Puller to go on Player#
Rich (BB code):
${If[${NamingSpawn.ID}==${Group.MainAssist.ID}, MA,]}
${If[${NamingSpawn.ID}==${Group.MainTank.ID}, MT,]}
${If[${NamingSpawn.ID}==${Group.Puller.ID}, Puller,]}
 
Last edited:
ChatWithThisName Never really played with this before, but yeah its great!

What I am trying to add is a flag if a mob or mobs are mezzed... I cant find a datatype that works for this though.. ${If[${NamingSpawn.State.Equal[Mezzed]}, >> MEZZED << } sorta thing..

Any ideas how i can go about doing this? there is no direct state of mezzed that i can tell, or a {NamingSpawn.Mezzed} so im not sure how to go about this..
 
you would have to mez a mob and
Rich (BB code):
/echo ${NamingSpawn.Animation}
or /echo ${Target.Animation}

- - - Updated - - -

thats how they used to check for mezzed mobs was checking the animation number and matching it
 
you would have to mez a mob and
Rich (BB code):
/echo ${NamingSpawn.Animation}
or /echo ${Target.Animation}

- - - Updated - - -

thats how they used to check for mezzed mobs was checking the animation number and matching it

Ok, testing this in the field mezzing a mob and doing an /echo ${NamingSpawn.Animation} either way returns a NULL...

Am i doing this wrong? I would have thought it would return an animation number?
 
@LorDeth

Mezzed animation is 110 for stationary, but that also applies to mobs that are just...well....stationary.
Rich (BB code):
${If[((${NamingSpawn.Animation}==110) && (${Me.XTarget[1].ID}==${NamingSpawn.ID} || ${Me.XTarget[2].ID}==${NamingSpawn.ID} || ${Me.XTarget[3].ID}==${NamingSpawn.ID} || ${Me.XTarget[4].ID}==${NamingSpawn.ID} || ${Me.XTarget[5].ID}==${NamingSpawn.ID} || ${Me.XTarget[6].ID}==${NamingSpawn.ID} || ${Me.XTarget[7].ID}==${NamingSpawn.ID} || ${Me.XTarget[8].ID}==${NamingSpawn.ID} || ${Me.XTarget[9].ID}==${NamingSpawn.ID} || ${Me.XTarget[10].ID}==${NamingSpawn.ID} || ${Me.XTarget[11].ID}==${NamingSpawn.ID} || ${Me.XTarget[12].ID}==${NamingSpawn.ID} || ${Me.XTarget[13].ID}==${NamingSpawn.ID} || ${Me.XTarget[14].ID}==${NamingSpawn.ID} || ${Me.XTarget[15].ID}==${NamingSpawn.ID})),>>Mezzed<<,]}

This is by no means short or pretty. If you find that your mez is generating a different animation you can aways use ${Select[Thingtocompare to,1st,2nd,3rd,4th,5th]}

So I could say /if (${Select[${Target.Animation},110,44,53,97,22]} and if the Target's animation is 110, 44,53,97,22 then it would result in a TRUE.


So below I've set it up for that. Now you can just add a comma and a new animation number to add to the list for better detection. According to dev's bots.
Rich (BB code):
} else     /if (!${Select[${Spawn[${vID}].Animation}, 26, 32, 71, 72, 110, 111]}) {            /call EchoLog "${Spawn[${vID}].CleanName} | ${vID} does not seem to be mezzed based on it's animation" TRUE
            /varset retValue FALSE
        } else {

Animation's that are known to be produced from mez are 26,32,71,72,110, and 111.
Code:
${If[((${Select[${NamingSpawn.Animation},110,26,32,71,72,111]}) && (${Me.XTarget[1].ID}==${NamingSpawn.ID} || ${Me.XTarget[2].ID}==${NamingSpawn.ID} || ${Me.XTarget[3].ID}==${NamingSpawn.ID} || ${Me.XTarget[4].ID}==${NamingSpawn.ID} || ${Me.XTarget[5].ID}==${NamingSpawn.ID} || ${Me.XTarget[6].ID}==${NamingSpawn.ID} || ${Me.XTarget[7].ID}==${NamingSpawn.ID} || ${Me.XTarget[8].ID}==${NamingSpawn.ID} || ${Me.XTarget[9].ID}==${NamingSpawn.ID} || ${Me.XTarget[10].ID}==${NamingSpawn.ID} || ${Me.XTarget[11].ID}==${NamingSpawn.ID} || ${Me.XTarget[12].ID}==${NamingSpawn.ID} || ${Me.XTarget[13].ID}==${NamingSpawn.ID} || ${Me.XTarget[14].ID}==${NamingSpawn.ID} || ${Me.XTarget[15].ID}==${NamingSpawn.ID})),>>Mezzed<<,]}

Even still you run into the issue of the Memblur factor when dealing with mez's.

${NamingSpawn} is not a TLO you can Echo. Try with ${Target.Animation} if you want to Echo.
 
ChatWithThisName can i use ${Target.Animation} in captions? I thought it was restricted to just ${NamingSpawn}..

See, the problem will be, the mob i have targeted will not be mezzed, cuz thats the one my grp is beating on.. however, the mobs around him that were adds, and have been mezzed (or not if they resisted, or are not mezzable) will be the ones I would like to have this appear on..

Doable?
 
LorDeth

You can but here-in lies the issue. It would mean that EVERYTHING with a ${NamingSpawn} would instead be showing your target. IE: If you did ${Target.Race} in the caption and you targeted a gingerbreadman then everything around you would also show their race as a gingerbread man. If you used ${Target.Distance} then ALL spawns around you would report a distance equivilent to your current target. ETC ETC. ${NamingSpawn} reports information for THAT spawn.

The code for your Mezzed mobs is the third code snippet in post #5 above. Please try that and let me know how it works out.
 
Zappy Find the section in MacroQuest.ini labeled [Captions] and change NPC= blah blah blah to the following.

Rich (BB code):
NPC=Lvl: ${NamingSpawn.Level} - ${NamingSpawn.Body} ${NamingSpawn.Class} - ${NamingSpawn.DisplayName} - HP:${NamingSpawn.PctHPs}% ${If[${Select[${NamingSpawn.Class},Bard,Beastlord,Cleric,Druid,Enchanter,Mage,Necromancer,Paladin,Ranger,Shaman,Shadow Knight,Wizard]},Mana: ${NamingSpawn.PctMana}%,]}${If[${NamingSpawn.Surname.Length},\n(${NamingSpawn.Surname}),\n>>>Distance: ${NamingSpawn.Distance}<<<]}
 
I've tested some, seems the
Rich (BB code):
${If[${NamingSpawn.Casting.ID}, Casting: ${NamingSpawn.Casting},]}

did not work in Player# section... Is any grammar mistake or?? And is there anyway to reload the settings other than a totally relog?? is there any slash command like /reload or something? Ty
 
LorDeth

You can but here-in lies the issue. It would mean that EVERYTHING with a ${NamingSpawn} would instead be showing your target. IE: If you did ${Target.Race} in the caption and you targeted a gingerbreadman then everything around you would also show their race as a gingerbread man. If you used ${Target.Distance} then ALL spawns around you would report a distance equivilent to your current target. ETC ETC. ${NamingSpawn} reports information for THAT spawn.

The code for your Mezzed mobs is the third code snippet in post #5 above. Please try that and let me know how it works out.

OK.. so it blew up hehe.. but it did put a NULL on all the mobs that were mezzed.. so its closer.. But i was also getting serious spam in my mq window with running kiss and this:

mq window.jpg
 
i would like for me to have it show myself as just my name.
group members their name and surname + mana% end% and health%
and everyone else with name surname an guild and titles like normal.

kaen01 LDR
kaen02 MA/MT
(HP:100% - EN:100% - MA:100%)
kaen03 PULL
(HP:100% - EN:100%)

Redlotus Somejoe Funnyssurname
(Active member of guild wonky)

if this makes sense.

make it so :P
 
KingArthur The casting check doesn't work on NPC's sadly, but works on PCs.

With that said, if you put it next to Player1= then you have to make sure that /shownames 1 is selected. If you did it for Player2= then you need to use /shownames 2 etc
 
I'll have to verify the code when I get sat down LorDeth I can also shorten the code up a bit while I do my testing putting the comparison between your XTarget.ID and the NamingSpawn.ID in a ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},...... etc setup.

Once I have typed it and confirmed I'll repost. Seems I likely just forgot a bracket somewhere lol.
 
@kaen01

That's doable.
Rich (BB code):
Player1=${If[${NamingSpawn.ID}==${Me.ID},${Me.Name} ${Me.SurName},${NamingSpawn.Name} ${NamingSpawn.SurName} \n(HP: ${NamingSpawn.PctHPs}% En: ${NamingSpawn.PctEndurance}% ${If[${Select[${NamingSpawn.Class},Bard,Beastlord,Cleric,Druid,Enchanter,Mage,Necromancer,Paladin,Ranger,Shaman,Shadow Knight,Wizard]},Mana: ${NamingSpawn.PctMana}%,]})]}

This just makes everyone but yourself Show firstname lastname with HP/EN/MA on second line.

I need to add more code to check to see if they are a group member. But breaking into that if statement is going to give me a headache without using my IDE to check my brackets.
 
The casting check doesn't work on NPC's sadly, but works on PCs.

With that said, if you put it next to Player1= then you have to make sure that /shownames 1 is selected. If you did it for Player2= then you need to use /shownames 2 etc

Yep, Chat, I tried, but they seems not working somehow... I already put them in PlayerX part.

Anyway, thanks for this great info!
 
KingArthur

I have mine show up on the second line using an escape
Rich (BB code):
\n${If[${NamingSpawn.Casting.ID}, Casting: ${NamingSpawn.Casting},]}
I have mine on Player1= and if I type /shownames 1 then it appears on my character when I start to cast a spell.

After a bit more checking it appears that the "Casting: Spellnamehere" only works for the character you have in the foreground that is actually casting the spell. It's not detecting the information on other characters. IE: If I'm playing on my necromancer and I cast a spell on my necro it shows up. But if my shaman starts casting a spell and I'm on my necro I don't see it. So this is a local thing only. Apparently NamingSpawn.Casting is a local only member.
 
I'll have to verify the code when I get sat down LorDeth I can also shorten the code up a bit while I do my testing putting the comparison between your XTarget.ID and the NamingSpawn.ID in a ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},...... etc setup.

Once I have typed it and confirmed I'll repost. Seems I likely just forgot a bracket somewhere lol.

Haha its all good, i appreciate your help with it :)
 
Ok that will make the casting info a bit less useful. What I most want is to see others casting without tab( l knew I can do that with some box layout toon like wineq2 and isboxer etc). Thanks for the answering Chat!


KA
 
I've tested some, seems the
And is there anyway to reload the settings other than a totally relog?? is there any slash command like /reload or something? Ty


I completely overlooked this question. The answer is YES~!

So if you make changes and want to test them you have to type

Rich (BB code):
/unload

Then right click on the tray icon for MQ2 and hit "Refresh injections"

That will effectively reload the MacroQuest.ini and update your [Captions]

I don't know of any other way other than this.
 
I completely overlooked this question. The answer is YES~!

So if you make changes and want to test them you have to type

Rich (BB code):
/unload

Then right click on the tray icon for MQ2 and hit "Refresh injections"

That will effectively reload the MacroQuest.ini and update your [Captions]

I don't know of any other way other than this.

I love you so much Chat


KA
 
LorDeth

Got it.

Rich (BB code):
${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,]}
 
LorDeth

Got it.

Rich (BB code):
${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,]}

WORKS LIKE A CHARM! I added it to the stuff i already have for the second line on mobs, and BOOYA! Thats worth GOLD!
 
kaen01

1,535 characters of code later. As requested a single line multi nested if statement to do all that crap you asked for lol. My brain now officially hurts.


Rich (BB code):
${If[${NamingSpawn.ID}==${Me.ID},${Me.Name} ${If[${NamingSpawn.Surname.Length}, ${NamingSpawn.Surname},]}${If[${NamingSpawn.ID}==${Group.MainAssist.ID}, MA,]}${If[${NamingSpawn.ID}==${Group.MainTank.ID}, MT,]}${If[${NamingSpawn.ID}==${Group.Puller.ID}, Puller,]}${If[${NamingSpawn.AFK}, AFK,]}${If[${NamingSpawn.Linkdead}, LD,]}${If[${NamingSpawn.LFG}, LFG,]}${If[${NamingSpawn.GroupLeader}, LDR,]},${If[${Select[${NamingSpawn.ID},${Group.Member[1].ID},${Group.Member[2].ID},${Group.Member[3].ID},${Group.Member[4].ID},${Group.Member[5].ID},${Group.Member[6].ID}]},${NamingSpawn.Name} ${If[${NamingSpawn.Surname.Length}, ${NamingSpawn.Surname},]}${If[${NamingSpawn.ID}==${Group.MainAssist.ID}, MA,]}${If[${NamingSpawn.ID}==${Group.MainTank.ID}, MT,]}${If[${NamingSpawn.ID}==${Group.Puller.ID}, Puller,]}${If[${NamingSpawn.AFK}, AFK,]}${If[${NamingSpawn.Linkdead}, LD,]}${If[${NamingSpawn.LFG}, LFG,]}${If[${NamingSpawn.GroupLeader}, LDR,]} \n(HP: ${NamingSpawn.PctHPs}% En: ${NamingSpawn.PctEndurance}% ${If[${Select[${NamingSpawn.Class},Bard,Beastlord,Cleric,Druid,Enchanter,Mage,Necromancer,Paladin,Ranger,Shaman,Shadow Knight,Wizard]},Mana: ${NamingSpawn.PctMana}%,]}),${NamingSpawn.Name} ${If[${NamingSpawn.Surname.Length}, ${NamingSpawn.Surname},]}${If[${NamingSpawn.AFK}, AFK,]}${If[${NamingSpawn.Linkdead}, LD,]}${If[${NamingSpawn.LFG}, LFG,]}${If[${NamingSpawn.GroupLeader}, LDR,]}${If[${NamingSpawn.Guild.Length},\n<${If[${NamingSpawn.GuildStatus.NotEqual[member]},${NamingSpawn.GuildStatus} of ,]}${NamingSpawn.Guild}>,]}]}]}
 
hmmm its nice, but i need to make some adjustment i can see, cause it not doing everything it supposed to quite right. but thanks for the ground work for sure
 
Rich (BB code):
Player1=${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Trader},Trader ,]}${If[${Select[${NamingSpawn.ID},${Me.ID},${Group.Member[1].ID},${Group.Member[2].ID},${Group.Member[3].ID},${Group.Member[4].ID},${Group.Member[5].ID},${Group.Member[6].ID}]},${If[${NamingSpawn.Levitating},^,]}${If[${NamingSpawn.Invis},(,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Invis},),]}${If[${NamingSpawn.AFK}, AFK,]}${If[${NamingSpawn.Linkdead}, LD,]}${If[${NamingSpawn.LFG}, LFG,]}${If[${NamingSpawn.GroupLeader}, LDR,]}${If[${NamingSpawn.ID}==${Group.MainAssist.ID}, MA,]}${If[${NamingSpawn.ID}==${Group.MainTank.ID}, MT,]}${If[${NamingSpawn.ID}==${Group.Puller.ID}, PL,]}\n(H: ${NamingSpawn.PctHPs}% - E: ${NamingSpawn.PctEndurance}%${If[${NamingSpawn.Class.CanCast}, - M: ${NamingSpawn.PctMana}%,]}),${If[${NamingSpawn.Levitating},^,]}${If[${NamingSpawn.AARank},${NamingSpawn.AATitle} ,]}${If[${NamingSpawn.Invis},(,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Invis},),]}${If[${NamingSpawn.Surname.Length}, ${NamingSpawn.Surname},]}${If[${NamingSpawn.Suffix.Length}~${If[${NamingSpawn.Suffix.Left[1].Equal[,]}~${NamingSpawn.Suffix}~ ${NamingSpawn.Suffix}]}~]}${If[${NamingSpawn.AFK}, AFK,]}${If[${NamingSpawn.Linkdead}, LD,]}${If[${NamingSpawn.LFG}, LFG,]}${If[${NamingSpawn.GroupLeader}, LDR,]}${If[${NamingSpawn.Guild.Length},\n<${If[${NamingSpawn.GuildStatus.NotEqual[member]},${NamingSpawn.GuildStatus} of ,]}${NamingSpawn.Guild}>,]}]}

Levitating Invis afk lfg ld group leader, main assist, main tank, puller
^(Kaen01) AFK LFG LD LDR MA MT PL
(H:100% - E:100% - M:100%)

non group member is
standard like shownames 4 show.

didnt like the group member showing surnames anyways.
 
Last edited:
Agreed brainiac. The [Captions] section is a lot like the MQ2HUD in the realm of performance. If you want to maintain a larger [Caption] you can always reduce the number of NPC's that it updates. But it does update this information extremely often and thus can create a very negative performance impact because of it. If you want to see how often it updates you can make one of the "Player#=${If[NamingSpawn.ID},/echo Updating,]} and it will echo "Updating" to the MQ2ChatWnd. Echos have a pretty heavy impact on performance in themselves when a lot are sent. So be aware that one toon testing that should be sufficient to see how often it updates and it isn't something you're going to want to do for very long.
 
bleh i keep being annoyed of too much onscreen on top of my guys so gone and removed the part that shows their hp and such, wish you could have the 2nd line be a much smaller font.
 
Alright so I made this if anyone is interested. . .
[CODE lang="ini" title="NPC Caption"]${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Assist},>> ,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Assist}, - ${NamingSpawn.PctHPs}%<<,]}]}\n[${NamingSpawn.Level}] ${NamingSpawn.Race} ${NamingSpawn.Class} ${If[${NamingSpawn.Surname.Length},(${NamingSpawn.Surname}),]}
[/CODE]

This took some testing, but I got it to turn out pretty cool now. This is an NPC caption that will check for a few things. First, it will check if the NPC is mezzed, and if it is it will make line 1 tell you it is. If not, it will display the normal MQ2 target info (Name, and if targeted will display health %). The second line is static and will display [Level] Race Class (Surname)

Feel free to use :)

For ease, the command would be this:
[CODE lang="ini" title="Command to Use"]/caption NPC ${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Assist},>> ,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Assist}, - ${NamingSpawn.PctHPs}%<<,]}]}\n[${NamingSpawn.Level}] ${NamingSpawn.Race} ${NamingSpawn.Class} ${If[${NamingSpawn.Surname.Length},(${NamingSpawn.Surname}),]} [/CODE]
 
I like to see the number after the mobs named:

I use </caption reload> to refresh it when making changes.

INI:
//   TYPE </caption reload> if changing to full display name
// EXAMPLE  a blob of goo
/NPC=${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Assist},>> ,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Assist}, - ${NamingSpawn.PctHPs}%<<,]}${If[${NamingSpawn.Surname.Length},\n(${NamingSpawn.Surname}),]}

//  EXAMPLE   a_blob_of_goo_05
NPC=${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Assist},>> ,]}${NamingSpawn.Name}${If[${NamingSpawn.Assist}, - ${NamingSpawn.PctHPs}%<<,]}${If[${NamingSpawn.Surname.Length},\n(${NamingSpawn.Surname}),]}

Corpse=${NamingSpawn.DisplayName}'s corpse
Pet=${If[${NamingSpawn.Mark},${NamingSpawn.Mark} - ,]}${If[${NamingSpawn.Assist},>> ,]}${NamingSpawn.DisplayName}${If[${NamingSpawn.Assist}, - ${NamingSpawn.PctHPs}%<<,]}${If[${NamingSpawn.Master.Type.Equal[PC]},\n(${NamingSpawn.Master}),]}
AnonCaption=[${NamingSpawn.Level}] ${NamingSpawn.Race} ${NamingSpawn.Class} ${NamingSpawn.Type}
 
Keep an eye on your CPU usage, a caption that complex has the potential to shoot it through the roof if you're not careful.

edit: Responding to Aeralisk's caption above.
 
Keep an eye on your CPU usage, a caption that complex has the potential to shoot it through the roof if you're not careful.

edit: Responding to Aeralisk's caption above.

Aye, this is a good point. I should have pointed out that I am running this on a pretty decent CPU and it doesn't cause any issues.
 
Captions ~ Why you should change it, and why didn't you know about this before.

Users who are viewing this thread

Back
Top
Cart