1
0

Call HOOK_EXECUTE_COMMAND even for unknown console commands.

This allows plugins such as Aliases to intercept even unknown commands.
This commit is contained in:
Mattes D 2015-05-10 21:46:25 +02:00
parent b356419a07
commit 6c53abed23
3 changed files with 14 additions and 3 deletions

View File

@ -7,7 +7,8 @@ return
Desc = [[
A plugin may implement an OnChat() function and register it as a Hook to process chat messages from
the players. The function is then called for every in-game message sent from any player. Note that
commands are handled separately using a command framework API.
registered in-game commands are not sent through this hook. Use the
{{OnExecuteCommand|HOOK_EXECUTE_COMMAND}} to intercept registered in-game commands.
]],
Params = {
{ Name = "Player", Type = "{{cPlayer}}", Notes = "The player who sent the message" },

View File

@ -2,7 +2,10 @@ return
{
HOOK_EXECUTE_COMMAND =
{
CalledWhen = "A player executes an in-game command, or the admin issues a console command. Note that built-in console commands are exempt to this hook - they are always performed and the hook is not called.",
CalledWhen = [[
A player executes an in-game command, or the admin issues a console command. Note that built-in
console commands are exempt to this hook - they are always performed and the hook is not called.
]],
DefaultFnName = "OnExecuteCommand", -- also used as pagename
Desc = [[
A plugin may implement a callback for this hook to intercept both in-game commands executed by the
@ -11,7 +14,12 @@ return
server.</p>
<p>
If the command is in-game, the first parameter to the hook function is the {{cPlayer|player}} who's
executing the command. If the command comes from the server console, the first parameter is nil.
executing the command. If the command comes from the server console, the first parameter is nil.</p>
<p>
The server calls this hook even for unregistered (unknown) console commands. However, it doesn't call
the hook for unregistered in-game commands, simply because there's no way to distinguish between a
command and a chat message. If a plugin needs to intercept unknown in-game commands, it should use the
{{OnChat|HOOK_CHAT}} hook.
]],
Params =
{

View File

@ -1750,6 +1750,8 @@ bool cPluginManager::ExecuteConsoleCommand(const AStringVector & a_Split, cComma
if (cmd == m_ConsoleCommands.end())
{
// Command not found
// Still notify the plugins (so that plugins such as Aliases can intercept unknown commands):
CallHookExecuteCommand(nullptr, a_Split, a_Command);
return false;
}