Eluna SendAddonMessage method

Added: SendAddonMessage method.

TODO: Debug, does not work. @Easelm
This commit is contained in:
Foereaper
2014-04-06 00:54:41 +02:00
parent a9542a28cb
commit 54899419e0
2 changed files with 32 additions and 0 deletions

View File

@@ -592,6 +592,7 @@ ElunaRegister<Player> PlayerMethods[] =
{ "SendAreaTriggerMessage", &LuaPlayer::SendAreaTriggerMessage }, // :SendAreaTriggerMessage(message) - Sends a yellow message in the middle of your screen
{ "SendNotification", &LuaPlayer::SendNotification }, // :SendNotification(message) - Sends a red message in the middle of your screen
{ "SendPacket", &LuaPlayer::SendPacket }, // :SendPacket(packet, selfOnly) - Sends a packet to player or everyone around also if selfOnly is false
{ "SendAddonMessage", &LuaPlayer::SendAddonMessage }, // :SendAddonMessage(prefix, message, channel, receiver) - Sends an addon message to the player.
{ "SendVendorWindow", &LuaPlayer::SendVendorWindow }, // :SendVendorWindow(unit) - Sends the unit's vendor window to the player
{ "ModifyMoney", &LuaPlayer::ModifyMoney }, // :ModifyMoney(amount[, sendError]) - Modifies (does not set) money (copper count) of the player. Amount can be negative to remove copper
{ "LearnSpell", &LuaPlayer::LearnSpell }, // :LearnSpell(id) - learns the given spell

View File

@@ -2229,6 +2229,37 @@ namespace LuaPlayer
return 0;
}
int SendAddonMessage(lua_State* L, Player* player)
{
std::string prefix = sEluna->CHECKVAL<std::string>(L, 1);
std::string message = sEluna->CHECKVAL<std::string>(L, 2);
uint8 channel = sEluna->CHECKVAL<uint8>(L, 3);
uint64 receiver = sEluna->CHECKVAL<uint64>(L, 4);
std::string fullmsg = prefix + '\t' + message;
// Needs a custom built packet since TC doesnt send guid
WorldPacket* data = new WorldPacket();
uint32 messageLength = (uint32)strlen(fullmsg.c_str()) + 1;
data->Initialize(SMSG_MESSAGECHAT, 100);
*data << channel;
*data << LANG_ADDON;
*data << player->GetGUID();
*data << uint32(0);
if (channel == CHAT_MSG_WHISPER)
*data << receiver;
else
*data << uint64(0);
*data << messageLength;
*data << fullmsg;
*data << uint8(0);
player->GetSession()->SendPacket(data);
return 0;
}
/*int BindToInstance(lua_State* L, Player* player)
{
player->BindToInstance();