Esempio n. 1
0
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);
    }
}
Esempio n. 2
0
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);
        
    }
}