Пример #1
0
//发送一个消息给WorldServer套接字
long CMessage::SendToGS(long lSocketID)
{
	assert(m_pGSServer);
	*((long*)Base()) = GetSize()+HEAD_SIZE;

	CBaseMessage *pMsg = CBaseMessage::AllocMsg();
	vector<CDataBlock*>& MsgData = GetMsgData();
	pMsg->SetMsgData(MsgData);
	MsgData.clear();
	m_pGSServer->ASend(lSocketID,pMsg);
	return true;
}
Пример #2
0
long CMessage::Send(bool bFront)
{
	assert(m_pClientServer);
	*((long*)Base()) = GetSize()+HEAD_SIZE;
	//分配一个消息
	CBaseMessage *pMsg = CBaseMessage::AllocMsg();
	vector<CDataBlock*>& MsgData = GetMsgData();
	pMsg->SetMsgData(MsgData);
	MsgData.clear();
	m_pClientServer->ASend(m_lLogingSocket,pMsg);
	return 0;
}
Пример #3
0
void CMessage:: SendToSocket(int socket, bool clone)
{
	assert(s_server);
	*((long*)Base()) = GetSize() + HEAD_SIZE;
	CBaseMessage* msg = CBaseMessage::AllocMsg();
	if (!clone)
	{
		vector<CDataBlock*>& msgData = GetMsgData();
		msg->SetMsgData(msgData);
		msgData.clear();
	}
	else
	{
		Clone(msg);
	}
	s_server->ASend(socket, msg);
}
Пример #4
0
void CMessage::SendToAllGS()
{
	assert(s_server);
    if( s_GSs.empty() ) return;

	*((long*)Base()) = GetSize() + HEAD_SIZE;

	CBaseMessage* msg = AllocMsg();
	msg->SetRefCount(long(s_GSs.size()));
	vector<CDataBlock*>& msgData = GetMsgData();
	msg->SetMsgData(msgData);
	msgData.clear();

	ClientItr itr = s_GSs.begin();
	for (; itr != s_GSs.end(); ++itr)
	{
		s_server->ASend(itr->first, msg);
	}
}
Пример #5
0
// [服务器] 发送给所有客户端
long CMessage::SendAll()
{
	*((long*)Base()) = GetSize()+HEAD_SIZE;
	if( m_SocketGSID.size() == 0 )
		return true;

	CBaseMessage *pMsg = AllocMsg();
	pMsg->SetRefCount(m_SocketGSID.size());
	vector<CDataBlock*>& MsgData = GetMsgData();
	pMsg->SetMsgData(MsgData);
	MsgData.clear();

	itLL it = m_SocketGSID.begin();
	for(;it != m_SocketGSID.end();it++)
	{
		m_pClientServer->ASend((*it).first,pMsg);
	}
	return true;
}
Пример #6
0
long CMessage::SendToSocket(long lSocketID, bool bClone)
{
	*((long*)Base()) = GetSize() + HEAD_SIZE;

	// 分配一个消息
	CBaseMessage *pMsg = CBaseMessage::AllocMsg();
	if(!bClone)
	{
		vector<CDataBlock*>& MsgData = GetMsgData();
		pMsg->SetMsgData(MsgData);
		MsgData.clear();
	}
	else
	{
		Clone(pMsg);
	}
	
	m_pClientServer->ASend(lSocketID, pMsg);
	return true;
}
Пример #7
0
bool SpectatorAddonMsg::SendPacket(uint32 receiver)
{
    std::string addonData = GetMsgData();
    if (addonData == "")
        return false;

    Player* rPlayer = ObjectAccessor::FindPlayer(receiver);
    if (!rPlayer)
        return false;

    WorldPacket data(SMSG_MESSAGECHAT, 200);
    data << uint8(CHAT_MSG_WHISPER);
    data << uint32(LANG_ADDON);
    data << uint64(0);
    data << uint32(LANG_ADDON);                               //language 2.1.0 ?
    data << uint64(0);
    data << uint32(addonData.length() + 1);
    data << addonData;
    data << uint8(CHAT_TAG_NONE);
    rPlayer->GetSession()->SendPacket(&data);

    return true;
}