Plugins can modify message in the OnChat() hook handler.
FS #376 git-svn-id: http://mc-server.googlecode.com/svn/trunk@1622 0a769ca7-a7f5-676a-18bf-c427514a06d6master
parent
9dd0486faf
commit
943dcaea14
|
@ -20,6 +20,7 @@ function Initialize(Plugin)
|
|||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_PLAYER_USING_ITEM);
|
||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_TAKE_DAMAGE);
|
||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_TICK);
|
||||
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CHAT);
|
||||
|
||||
PluginManager:BindCommand("/le", "debuggers", HandleListEntitiesCmd, "Shows a list of all the loaded entities");
|
||||
PluginManager:BindCommand("/ke", "debuggers", HandleKillEntitiesCmd, "Kills all the loaded entities");
|
||||
|
@ -631,3 +632,11 @@ end
|
|||
|
||||
|
||||
|
||||
|
||||
function OnChat(a_Player, a_Message)
|
||||
return false, "blabla " .. a_Message;
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -898,14 +898,15 @@ void cClientHandle::HandlePlaceBlock(int a_BlockX, int a_BlockY, int a_BlockZ, c
|
|||
|
||||
void cClientHandle::HandleChat(const AString & a_Message)
|
||||
{
|
||||
if (!cRoot::Get()->GetServer()->Command(*this, a_Message))
|
||||
AString Message(a_Message);
|
||||
if (!cRoot::Get()->GetServer()->Command(*this, Message))
|
||||
{
|
||||
AString Msg;
|
||||
Printf(Msg, "<%s%s%s> %s",
|
||||
m_Player->GetColor().c_str(),
|
||||
m_Player->GetName().c_str(),
|
||||
cChatColor::White.c_str(),
|
||||
a_Message.c_str()
|
||||
Message.c_str()
|
||||
);
|
||||
m_Player->GetWorld()->BroadcastChat(Msg);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ bool cPlugin::OnBlockToPickups(cWorld * a_World, cEntity * a_Digger, int a_Block
|
|||
|
||||
|
||||
|
||||
bool cPlugin::OnChat(cPlayer * a_Player, const AString & a_Message)
|
||||
bool cPlugin::OnChat(cPlayer * a_Player, AString & a_Message)
|
||||
{
|
||||
UNUSED(a_Player);
|
||||
UNUSED(a_Message);
|
||||
|
|
|
@ -49,7 +49,7 @@ public:
|
|||
* You can also return false, so default behavior is used.
|
||||
**/
|
||||
virtual bool OnBlockToPickups (cWorld * a_World, cEntity * a_Digger, int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, cItems & a_Pickups);
|
||||
virtual bool OnChat (cPlayer * a_Player, const AString & a_Message);
|
||||
virtual bool OnChat (cPlayer * a_Player, AString & a_Message);
|
||||
virtual bool OnChunkAvailable (cWorld * a_World, int a_ChunkX, int a_ChunkZ);
|
||||
virtual bool OnChunkGenerated (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc);
|
||||
virtual bool OnChunkGenerating (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc);
|
||||
|
|
|
@ -198,7 +198,7 @@ bool cPluginManager::CallHookBlockToPickups(
|
|||
|
||||
|
||||
|
||||
bool cPluginManager::CallHookChat(cPlayer * a_Player, const AString & a_Message)
|
||||
bool cPluginManager::CallHookChat(cPlayer * a_Player, AString & a_Message)
|
||||
{
|
||||
if (ExecuteCommand(a_Player, a_Message))
|
||||
{
|
||||
|
|
|
@ -112,7 +112,7 @@ public: // tolua_export
|
|||
unsigned int GetNumPlugins() const; // tolua_export
|
||||
|
||||
bool CallHookBlockToPickups (cWorld * a_World, cEntity * a_Digger, int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, cItems & a_Pickups);
|
||||
bool CallHookChat (cPlayer * a_Player, const AString & a_Message);
|
||||
bool CallHookChat (cPlayer * a_Player, AString & a_Message);
|
||||
bool CallHookChunkAvailable (cWorld * a_World, int a_ChunkX, int a_ChunkZ);
|
||||
bool CallHookChunkGenerated (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc);
|
||||
bool CallHookChunkGenerating (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc);
|
||||
|
|
|
@ -228,7 +228,7 @@ bool cPlugin_NewLua::OnBlockToPickups(cWorld * a_World, cEntity * a_Digger, int
|
|||
|
||||
|
||||
|
||||
bool cPlugin_NewLua::OnChat(cPlayer * a_Player, const AString & a_Message)
|
||||
bool cPlugin_NewLua::OnChat(cPlayer * a_Player, AString & a_Message)
|
||||
{
|
||||
cCSLock Lock(m_CriticalSection);
|
||||
const char * FnName = GetHookFnName(cPluginManager::HOOK_CHAT);
|
||||
|
@ -241,13 +241,17 @@ bool cPlugin_NewLua::OnChat(cPlayer * a_Player, const AString & a_Message)
|
|||
tolua_pushusertype(m_LuaState, a_Player, "cPlayer");
|
||||
tolua_pushstring (m_LuaState, a_Message.c_str());
|
||||
|
||||
if (!CallFunction(2, 1, FnName))
|
||||
if (!CallFunction(2, 2, FnName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool bRetVal = (tolua_toboolean(m_LuaState, -1, 0) > 0);
|
||||
lua_pop(m_LuaState, 1);
|
||||
bool bRetVal = (tolua_toboolean(m_LuaState, -2, 0) > 0);
|
||||
if (lua_isstring(m_LuaState, -1))
|
||||
{
|
||||
a_Message = tolua_tostring(m_LuaState, -1, "");
|
||||
}
|
||||
lua_pop(m_LuaState, 2);
|
||||
return bRetVal;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ public:
|
|||
virtual void Tick(float a_Dt) override;
|
||||
|
||||
virtual bool OnBlockToPickups (cWorld * a_World, cEntity * a_Digger, int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, cItems & a_Pickups) override;
|
||||
virtual bool OnChat (cPlayer * a_Player, const AString & a_Message) override;
|
||||
virtual bool OnChat (cPlayer * a_Player, AString & a_Message) override;
|
||||
virtual bool OnChunkAvailable (cWorld * a_World, int a_ChunkX, int a_ChunkZ) override;
|
||||
virtual bool OnChunkGenerated (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc) override;
|
||||
virtual bool OnChunkGenerating (cWorld * a_World, int a_ChunkX, int a_ChunkZ, cChunkDesc * a_ChunkDesc) override;
|
||||
|
|
|
@ -413,7 +413,7 @@ bool cServer::Start(void)
|
|||
|
||||
|
||||
|
||||
bool cServer::Command(cClientHandle & a_Client, const AString & a_Cmd)
|
||||
bool cServer::Command(cClientHandle & a_Client, AString & a_Cmd)
|
||||
{
|
||||
return cRoot::Get()->GetPluginManager()->CallHookChat(a_Client.GetPlayer(), a_Cmd);
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public: // tolua_export
|
|||
|
||||
bool Start(void);
|
||||
|
||||
bool Command(cClientHandle & a_Client, const AString & a_Cmd);
|
||||
bool Command(cClientHandle & a_Client, AString & a_Cmd);
|
||||
void ExecuteConsoleCommand(const AString & a_Cmd);
|
||||
|
||||
/// Binds the built-in console commands with the plugin manager
|
||||
|
|
Loading…
Reference in New Issue