1
0

All in-game commands go through the OnExecuteCommand hook.

Everything that has a slash at the beginning, doesn't matter if it is a registered command or not.
This commit is contained in:
Mattes D 2015-05-13 18:31:01 +02:00
parent 0686b55901
commit f36b00f4d4
2 changed files with 10 additions and 4 deletions

View File

@ -16,10 +16,9 @@ return
If the command is in-game, the first parameter to the hook function is the {{cPlayer|player}} who's 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.</p> executing the command. If the command comes from the server console, the first parameter is nil.</p>
<p> <p>
The server calls this hook even for unregistered (unknown) console commands. However, it doesn't call The server calls this hook even for unregistered (unknown) console commands. It also calls the hook
the hook for unregistered in-game commands, simply because there's no way to distinguish between a for unknown in-game commands, as long as they begin with a slash ('/'). If a plugin needs to intercept
command and a chat message. If a plugin needs to intercept unknown in-game commands, it should use the in-game chat messages not beginning with a slash, it should use the {{OnChat|HOOK_CHAT}} hook.
{{OnChat|HOOK_CHAT}} hook.
]], ]],
Params = Params =
{ {

View File

@ -1445,6 +1445,13 @@ cPluginManager::CommandResult cPluginManager::HandleCommand(cPlayer & a_Player,
if (cmd == m_Commands.end()) if (cmd == m_Commands.end())
{ {
// Command not found // Command not found
// If it started with a slash, ask the plugins if they still want to handle it:
if (!a_Command.empty() && (a_Command[0] == '/'))
{
CommandResult Result = crUnknownCommand;
CallHookExecuteCommand(&a_Player, Split, a_Command, Result);
return Result;
}
return crUnknownCommand; return crUnknownCommand;
} }