void Channel::Say(uint64 p, const char *what, uint32 lang) { if(!what) return; if (sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) lang = LANG_UNIVERSAL; uint32 sec = 0; Player *plr = objmgr.GetPlayer(p); if(plr) sec = plr->GetSession()->GetSecurity(); if(!IsOn(p)) { WorldPacket data; MakeNotOn(&data); SendToOne(&data,p); } else if(players[p].muted) { WorldPacket data; MakeYouCantSpeak(&data); SendToOne(&data,p); } else if(moderate && !players[p].moderator && sec < SEC_GAMEMASTER) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data,p); } else { uint32 messageLength = strlen(what) + 1; WorldPacket data(SMSG_MESSAGECHAT,1+4+name.size()+1+8+4+messageLength+1); data << (uint8)CHAT_MSG_CHANNEL; data << (uint32)lang; data << name; data << p; data << messageLength; data << what; data << uint8(plr ? plr->chatTag() : 0); SendToAll(&data,!players[p].moderator ? p : false); } }
void Channel::Say(Player *p, const char *what) { WorldPacket data; if(!IsOn(p)) { MakeNotOn(&data); SendToOne(&data,p); } else if(players[p].muted) { MakeYouCantSpeak(&data); SendToOne(&data,p); } else if(moderate && !players[p].moderator && p->GetSession()->GetSecurity() < 2) { MakeNotModerator(&data); SendToOne(&data,p); } else { uint32 messageLength = strlen((char*)what) + 1; uint8 afk = 0; data.Initialize(SMSG_MESSAGECHAT); data << (uint8)14; // CHAT_MESSAGE_CHANNEL data << (uint32)0; // Universal lang data << name.c_str(); data << (uint32)0; data << p->GetGUID(); data << messageLength; data << what; data << (uint8)0; SendToAll(&data); } }