MQ2SpellHotkeys - MMOBugs Wiki

Plugin Info
Name MQ2SpellHotkeys
Author Relkin
Link MQ2 VIP
Commands /autohotkey
Source Available Yes
Uses INI File Yes


MQ2SpellHotkeys MQ2SpellHotkeys allows a user to specify in an ini spell / hotkey combos that is stored in the release folder of MQ. The user can formate the hotkey directly in the proper spot in the .ini or can just put in the message they want to send. Any hotkey without formating before it will be sent to every chat in the default chat list.


  • /autohotkey Displays command list
  • /autohotkey on Turns on Autohotkey
  • /autohotkey off Turns off Authotkey
  • /autohotkey reload Reloads ini settings
  • /autohotkey list <all, state, chats, popups, hotkeys> Display plugin state, display configured spells/text/popup messages.
  • /autohotkey addchat <chatname> adds specified chat to the default chats list
  • /autohotkey remchat <chatname> removes specified chat from the default chats list
  • /autohotkey setpopups < all | NameOfPopUp > < TRUE | FALSE > all: sets all popups, NameOfPopUp: One of the categories such as OnHit or OnResist etc.
  • /autohotkey save saves the state (on or off) and default chats list to the .ini


The plugin uses the [MQ2SpellHotkeys] section of the ServerName_CharName.ini file. In this section, the chats must be labeled starting with CHAT0 and proceeding numerically. The placement with in this section is not an issue just can't have stuff like CHAT0, CHAT3, CHAT4. However, CHAT2, CHAT0, CHAT1 in that order is fine as long as the numbers don't skip. This is only so when I'm saving chats I don't end up with doubles of channels or overwrite something not intended to overwrite. Capitalization does not matter. The chats can be formatted as you want it here or you can let the plugin auto detect what type of formating to put on it. So if you just type in chat0=group" then the plugin will realize it's "/g" really. If you accidently type in "gropu" however, the plugin will think that is a chat channel and formate it as ";#gropu". Pop Up messages can be configured for 6 situations; PopUpOnHit, PopUpOnResist, PopUpOnInterrupt, PopUpOnOutOfRange, PopUpOnWillNotHold, and PopUpOnWornOff. Listed in here is the master control for what popup messages get shown. If all of these are false (or missing entirely), then no pop up messages will be shown. For each individual spell you wish to see popups for you must include a field for HK#_DoPopUps=TRUE in that spell's section. If it is missing or FALSE then no pop ups will be shown for that specific spell. So far I haven't added further customization of any of the 5 fields for any spell. Meaning, if HK#_DoPopUps=TRUE for a spell, you see popups for any of the 6 categories that are enabled, you can't mix and choose which of the 6 per spell.

Each spell hotkey entry is like HK#_Spell=Name of Spell. The # just needs to be unique, and can start at 0. The hotkeys are defined like HK#_OnCast0, HK0_OnResist0, etc. There are three conditions; HK#_OnHit, HK#_OnResist, and HK#_OnCast. Capitalization does not matter again, but each label must start with one of those three then end in whatever your heart desires. Once the label is there, just do an equal sign and the message you want exactly as you want it. You may either start the message off with the exact chat channel you want (such as HK2_OnCast0=/g ## I am casting healing on < %t > ##) or you may leave it unformated (HK2_OnCast0=## I am casting healing on < %t > ##) in which case that hotkey will get sent to every chat on the default chats list. If there are no chats on the default chats list then unformatted hotkeys will not be sent. If a hotkey starts with either a '/' or a ';' then I assume the user put in his/her own formatting. (FYI: chat channels can be addressed as ;#<chatname> instead of /<chatnumber> that's why the ';' is there.) And don't forget the field under each spell section for HK#_DoPopUps.

Example Configuration

HK0_Spell=My Uber Spellname Here
HK0_onresist=Some resist message here, may use %t type embedded commands
HK0_OnHiT0=Some message for successful spell cast here.
HK0_ONRESISTblah=;#mychat Some resist message only for the channel "mychat" here
HK0_oncast=/g Some message for starting to cast this spell here that only goes to group
HK1_Spell=Next Spell


; Filename: Innoruuk_Soandso.ini
; The chat's must be labeled in order.
; Doesn't matter the physical placement, just the numbers without skipping.
; If there is no "chat" label at all, then any unformated hotkeys below will
; not be sent.
; Next are boolean values for spell pop up reporting
; These are just what to pop up, DoPopUps must be enabled in the
; section for that spell to show pop ups.
; Popup messages enabled for resists and wear off messages only

; Here are the spell / hotkey combos
; The HK#_Spell is the name of the spell.
; There are 3 different types: HK#_OnCast, HK#_OnHit, and HK#_OnResist
; There can be multiple messages for each category as long as no two have
; the same exact name. They all have to start with one of the 3 categories.
; One field can be HK#_DoPopUps which enables popup messages for any of the
; categories allowed in the global PopUp* definitions described earlier.  If not
; included it's assumed FALSE.  Remember for items to use the name of the
; spell that will be casting.
HK0_Spell=Turgur's Insects
HK0_OnCast0=## I am casting Slow on < %t > ##
HK0_OnResist=## < %t > resisted Slow! HEAL MY FURRY BUTT!!! ##
HK0_OnHit=## I have SLOWED < %t > ##

HK1_Spell=Petrifying Earth
HK1_OnCast=## I am casting Root on < %t > ##
HK1_OnResist=## < %t > resisted ROOT! RUN SCREAM and SHOUT!! ##
HK1_OnHit=## I have ROOTED < %t > ##
HK1_OnInterrupt=## ROOT has been interrupted!##

HK2_Spell=Breath of Ultor
HK2_OnCast=## I am casting Breath of Ultor on < %t > ##
HK2_OnHit=## I have Casted Breath of Ultor on < %t > ##

HK3_OnCast=## I am casting Bane on < %t > ##
HK3_OnResist=## < %t > resisted Bane! ##
HK3_OnHit=## I have BANED < %t > ##

HK4_Spell=Tears of Saryrn
HK4_OnCast=I am casting Tears of Saryrn on < %t >!
HK4_OnResist=## < %t > Tears of Saryrn! ##

HK5_OnCast=## I am casting Malos on < %t > ##
HK5_OnResist=## < %t > resisted Malos! ##
HK5_OnHit=## I have MALOSED < %t > ##
HK5_OnInterrupt=## MALOS has been interrupted!##


This plugin is included with the MMOBugs Compile.