当前位置: 首页>>代码示例>>C++>>正文


C++ Session::GetCharacter方法代码示例

本文整理汇总了C++中Session::GetCharacter方法的典型用法代码示例。如果您正苦于以下问题:C++ Session::GetCharacter方法的具体用法?C++ Session::GetCharacter怎么用?C++ Session::GetCharacter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Session的用法示例。


在下文中一共展示了Session::GetCharacter方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: HandlePrivateMessage

void Session::HandlePrivateMessage(ChatClientPrivateMessage* data)
{
	Session* S = SearchForSession(data->receiver);
	if(S == NULL)
	{
		Send(ChatErrorMessage(CHAT_ERROR_RECEIVER_NOT_FOUND));
		return;
	}
	else if(S->GetCharacter()->GetGuid() == m_char->GetGuid())
	{
		Send(ChatErrorMessage(CHAT_ERROR_INTERIOR_MONOLOGUE));
		return;
	}
	else if(S->GetBoolValue(BOOL_AWAY) || S->IsEnnemyWith(m_data[FLAG_GUID].intValue)
		|| S->IsIgnoredWith(m_data[FLAG_GUID].intValue) || (S->GetBoolValue(BOOL_INVISIBLE)
		&& !S->IsFriendWith(m_data[FLAG_GUID].intValue)))
	{
		std::vector<std::string> args;
		args.push_back(S->GetCharacter()->GetName());
		Send(TextInformationMessage(1, 14, args));
		return;
	}
	
	ChatServerMessage* distant = NULL;
	ChatServerCopyMessage* local = NULL;

	time_t t = time(NULL);
	if(data->GetOpcode() == CMSG_CHAT_CLIENT_PRIVATE)
	{
		distant = new ChatServerMessage(PSEUDO_CHANNEL_PRIVATE, data->content, static_cast<int>(t), "", m_char->GetGuid(), m_char->GetName(),
			m_data[FLAG_GUID].intValue);
		local = new ChatServerCopyMessage(PSEUDO_CHANNEL_PRIVATE, data->content, static_cast<int>(t), "", S->GetCharacter()->GetGuid(),
			S->GetCharacter()->GetName());
	}
	else if(data->GetOpcode() == CMSG_CHAT_CLIENT_PRIVATE_WITH_OBJECT)
	{
		distant = new ChatServerWithObjectMessage(PSEUDO_CHANNEL_PRIVATE, data->content, static_cast<int>(t), "", m_char->GetGuid(), m_char->GetName(),
			m_data[FLAG_GUID].intValue, ((ChatClientPrivateWithObjectMessage*)data)->objects);
		local = new ChatServerCopyWithObjectMessage(PSEUDO_CHANNEL_PRIVATE, data->content, static_cast<int>(t), "", S->GetCharacter()->GetGuid(),
			S->GetCharacter()->GetName(), ((ChatClientPrivateWithObjectMessage*)data)->objects);
	}
	else
		return;

	S->Send(*distant);
	Send(*local);

	delete distant;
	delete local;
}
开发者ID:scalexm,项目名称:Desperion_legacy,代码行数:50,代码来源:ChatHandler.cpp

示例2: HandlePartyInvitationRequestMessage

void Session::HandlePartyInvitationRequestMessage(ByteBuffer& packet)
{
	INIT_PARTY_LOCK
	PartyInvitationRequestMessage data;
	data.Deserialize(packet);
	
	std::string lower = Desperion::ToLowerCase(data.name);
	if(lower == Desperion::ToLowerCase(m_char->GetName())
		|| lower == m_data[FLAG_PSEUDO].stringValue)
		return;

	Session* S = SearchForSession(data.name);
	if(S == NULL)
	{
		Send(PartyCannotJoinErrorMessage(0, 1));
		return;
	}
	else if(m_party != NULL && m_party->PlayersSize() + m_party->GuestsSize() >= 8)
	{
		Send(PartyCannotJoinErrorMessage(0, 3));
		return;
	}
	for(std::map<int, Session*>::iterator it = S->m_partyInvitations.begin(); it != S->m_partyInvitations.end(); ++it)
	{
		if(it->second->GetData(FLAG_GUID).intValue == m_data[FLAG_GUID].intValue)
		{
			Send(PartyCannotJoinErrorMessage(0, 6));
			return;
		}
	}
	
	if(m_party == NULL)
	{
		std::vector<PartyMemberInformationsPtr> members;
		members.push_back(PartyMemberInformationsPtr(m_char->GetPartyMemberInformations()));
		m_party = new Party;
		PARTY_LOCK(m_party)
		m_party->SetPartyId(static_cast<int>(RandomUInt()));
		m_party->SetLeader(this);
		Send(PartyJoinMessage(m_party->GetPartyId(), 0, m_char->GetGuid(), 8, members, std::vector<PartyGuestInformationsPtr>(), false));
	}
	if(!lock)
		PARTY_LOCK(m_party)
	S->m_partyInvitations[m_party->GetPartyId()] = this;
	m_party->GuestPush(S);
	m_party->SetGuestHost(S->GetCharacter()->GetGuid(), m_char->GetGuid());
	m_party->Send(PartyNewGuestMessage(m_party->GetPartyId(), S->GetCharacter()->GetPartyGuestInformations(m_data[FLAG_GUID].intValue)));
	S->Send(PartyInvitationMessage(m_party->GetPartyId(), 0, 8, m_char->GetGuid(), m_char->GetName(), S->GetCharacter()->GetGuid()));
}
开发者ID:scalexm,项目名称:Desperion_legacy,代码行数:49,代码来源:PartyHandler.cpp

示例3: HandlePartyInvitationDetailsRequestMessage

void Session::HandlePartyInvitationDetailsRequestMessage(ByteBuffer& packet)
{
	INIT_PARTY_LOCK
	PartyInvitationDetailsRequestMessage data;
	data.Deserialize(packet);

	std::map<int, Session*>::iterator it = m_partyInvitations.find(data.partyId);
	if(it == m_partyInvitations.end())
		return;
		
	Session* S = it->second;
	if(S->m_party == NULL)
		return; // ne devrait pas arriver grace aux locks
	std::vector<PartyInvitationMemberInformationsPtr> members;
	PARTY_LOCK(S->m_party)
	S->m_party->FillInvitationMembers(members);
	Send(PartyInvitationDetailsMessage(S->m_party->GetPartyId(), 0, it->first, S->GetCharacter()->GetName(),
		S->m_party->GetLeader()->GetCharacter()->GetGuid(), members));
}
开发者ID:scalexm,项目名称:Desperion_legacy,代码行数:19,代码来源:PartyHandler.cpp


注:本文中的Session::GetCharacter方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。