本文整理汇总了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;
}
示例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()));
}
示例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));
}