WoW:Creating a slash command: Difference between revisions
Jump to navigation
Jump to search
m (Robot: converting/fixing HTML) |
No edit summary |
||
Line 1: | Line 1: | ||
Basics of supporting a [[slash command]] in your [[AddOn]]. | |||
== Simple Example == | == Simple Example == | ||
Line 55: | Line 57: | ||
* The actual '''SLASH_''<CommandId>''''<Number>''''' values should be localizable if you plan on your addon being translated, but the command ID will remain the same. | * The actual '''SLASH_''<CommandId>''''<Number>''''' values should be localizable if you plan on your addon being translated, but the command ID will remain the same. | ||
* Be prudent about how many aliases you make for your command, and try and pick something that's unlikely to collide with someone else's. | * Be prudent about how many aliases you make for your command, and try and pick something that's unlikely to collide with someone else's. | ||
[[Category: HOWTOs|Create a Slash Command]] | |||
[[Category:AddOns|Create a Slash Command]] | |||
[[Category:HOWTOs|Create a Slash Command]] |
Revision as of 23:22, 3 November 2007
Basics of supporting a slash command in your AddOn.
Simple Example
Suppose you have:
function MyScript_Command(cmd) DEFAULT_CHAT_FRAME:AddMessage("Command: " .. cmd); end
In your OnLoad function of your script, or in the .lua anyplace after the function is defined, put in the following:
SLASH_MYSCRIPT1 = "/myscript"; SLASH_MYSCRIPT2 = "/mys"; -- A shortcut or alias SlashCmdList["MYSCRIPT"] = MyScript_Command;
Note: The slash command(s) must be defined in an OnLoad Function or after the function has been defined.
EX.
OnLoad Function:
function addonname_OnLoad() SlashCmdList["ADDONNAME"] = FunctionToCall; SLASH_ADDONNAME1 = "/slash1"; SLASH_ADDONNAME2 = "/slash2"; end
After Function Has Been Defined:
function my_function() -- Some stuff here end SlashCmdList["ADDONNAME"] = FunctionToCall; SLASH_ADDONNAME1 = "/slash1"; SLASH_ADDONNAME2 = "/slash2";
The Details
SLASH_<CommandId><num>
SlashCmdList["<CommandId>"] = <CodeToExecute>
Slash command parsing is done by the chat frame, and it works as follows.
- The key of each entry is the <CommandId>. It should be the unique name of your Addon.
- The parser then examines SLASH_<CommandId>1, SLASH_<CommandId>2, ... and so on, until it either finds a match, or gets a nil value (undefined) on the next SLASH_<CommandId>'<Number>.
- If there was a hit, then the function value of SlashCmdList["<CommandId>"] is invoked, with the rest of the command line as its single parameter
- Special 'built in' slash commands for chat are handled first.
- The chat handler then iterates over the contents of the global table SlashCmdList
- Otherwise, the next command is searched until a match is found or the list is exhausted.
Conventions
- Command ID's are generally all caps, with underscores if necessary.
- Pick a command ID that's going to be unique to your addon, a common convention is ADDONNAME_COMMANDNAME, or if you just have one, then ADDONNAME (Where ADDONNAME is the name of your addon).
- The actual SLASH_<CommandId>'<Number> values should be localizable if you plan on your addon being translated, but the command ID will remain the same.
- Be prudent about how many aliases you make for your command, and try and pick something that's unlikely to collide with someone else's.