本文整理汇总了C++中WorldPacket::ReadPackedTime方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::ReadPackedTime方法的具体用法?C++ WorldPacket::ReadPackedTime怎么用?C++ WorldPacket::ReadPackedTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::ReadPackedTime方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleCalendarAddEvent
void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
std::string title;
std::string description;
uint8 type;
uint8 repeatable;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 unkPackedTime;
uint32 flags;
recvData >> title >> description >> type >> repeatable >> maxInvites >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(unkPackedTime);
recvData >> flags;
CalendarEvent calendarEvent(sCalendarMgr->GetFreeEventId(), guid, 0, CalendarEventType(type), dungeonId,
time_t(eventPackedTime), flags, time_t(unkPackedTime), title, description);
if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement())
if (Player* creator = ObjectAccessor::FindPlayer(guid))
calendarEvent.SetGuildId(creator->GetGuildId());
if (calendarEvent.IsGuildAnnouncement())
{
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarInvite invite(0, calendarEvent.GetEventId(), 0, guid, 946684800, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "");
// WARNING: By passing pointer to a local variable, the underlying method(s) must NOT perform any kind
// of storage of the pointer as it will lead to memory corruption
sCalendarMgr->AddInvite(&calendarEvent, &invite);
}
else
{
uint32 inviteCount;
recvData >> inviteCount;
for (uint32 i = 0; i < inviteCount; ++i)
{
uint64 invitee = 0;
uint8 status = 0;
uint8 rank = 0;
recvData.readPackGUID(invitee);
recvData >> status >> rank;
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent.GetEventId(), invitee, guid, 946684800, CalendarInviteStatus(status), CalendarModerationRank(rank), "");
sCalendarMgr->AddInvite(&calendarEvent, invite);
}
}
sCalendarMgr->AddEvent(new CalendarEvent(calendarEvent, calendarEvent.GetEventId()), CALENDAR_SENDTYPE_ADD);
}
示例2: HandleCalendarUpdateEvent
void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recvData)
{
ObjectGuid guid = _player->GetGUID();
time_t oldEventTime;
uint64 eventId;
uint64 inviteId;
std::string title;
std::string description;
uint8 type;
uint8 repetitionType;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 timeZoneTime;
uint32 flags;
recvData >> eventId >> inviteId >> title >> description >> type >> repetitionType >> maxInvites >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(timeZoneTime);
recvData >> flags;
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
if (time_t(eventPackedTime) < (time(NULL) - time_t(86400L)))
{
recvData.rfinish();
return;
}
TC_LOG_DEBUG("network", "CMSG_CALENDAR_UPDATE_EVENT [%s] EventId [" UI64FMTD
"], InviteId [" UI64FMTD "] Title %s, Description %s, type %u "
"Repeatable %u, MaxInvites %u, Dungeon ID %d, Time %u "
"Time2 %u, Flags %u", guid.ToString().c_str(), eventId, inviteId, title.c_str(),
description.c_str(), type, repetitionType, maxInvites, dungeonId,
eventPackedTime, timeZoneTime, flags);
if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
{
oldEventTime = calendarEvent->GetEventTime();
calendarEvent->SetType(CalendarEventType(type));
calendarEvent->SetFlags(flags);
calendarEvent->SetEventTime(time_t(eventPackedTime));
calendarEvent->SetTimeZoneTime(time_t(timeZoneTime)); // Not sure, seems constant from the little sniffs we have
calendarEvent->SetDungeonId(dungeonId);
calendarEvent->SetTitle(title);
calendarEvent->SetDescription(description);
sCalendarMgr->UpdateEvent(calendarEvent);
sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例3: HandleCalendarAddEvent
void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
std::string title;
std::string description;
uint8 type;
uint8 repeatable;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 unkPackedTime;
uint32 flags;
recvData >> title >> description >> type >> repeatable >> maxInvites >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(unkPackedTime);
recvData >> flags;
CalendarEvent* calendarEvent = new CalendarEvent(sCalendarMgr->GetFreeEventId(), guid, 0, CalendarEventType(type), dungeonId,
time_t(eventPackedTime), flags, time_t(unkPackedTime), title, description);
if (calendarEvent->IsGuildEvent() || calendarEvent->IsGuildAnnouncement())
if (Player* creator = ObjectAccessor::FindPlayer(guid))
calendarEvent->SetGuildId(creator->GetGuildId());
if (calendarEvent->IsGuildAnnouncement())
{
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent->GetEventId(), 0, guid, 946684800, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->AddInvite(calendarEvent, invite);
}
else
{
uint32 inviteCount;
recvData >> inviteCount;
for (uint32 i = 0; i < inviteCount; ++i)
{
uint64 invitee = 0;
uint8 status = 0;
uint8 rank = 0;
recvData.readPackGUID(invitee);
recvData >> status >> rank;
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent->GetEventId(), invitee, guid, 946684800, CalendarInviteStatus(status), CalendarModerationRank(rank), "");
sCalendarMgr->AddInvite(calendarEvent, invite);
}
}
sCalendarMgr->AddEvent(calendarEvent, CALENDAR_SENDTYPE_ADD);
}
示例4: HandleCalendarCopyEvent
void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
uint64 eventId;
uint64 inviteId;
uint32 time;
recvData >> eventId >> inviteId;
recvData.ReadPackedTime(time);
if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(eventId))
{
CalendarEvent* newEvent = new CalendarEvent(*oldEvent, sCalendarMgr->GetFreeEventId());
newEvent->SetEventTime(time_t(time));
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId);
for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()));
// should we change owner when somebody makes a copy of event owned by another person?
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例5: HandleCalendarCopyEvent
void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
uint64 eventId;
uint64 inviteId;
uint32 time;
recvData >> eventId >> inviteId;
recvData.ReadPackedTime(time);
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_CALENDAR_COPY_EVENT [" UI64FMTD "], EventId [" UI64FMTD
"] inviteId [" UI64FMTD "] Time: %u", guid, eventId, inviteId, time);
if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(eventId))
{
CalendarEvent* newEvent = new CalendarEvent(*oldEvent, sCalendarMgr->GetFreeEventId());
newEvent->SetEventTime(time_t(time));
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
std::vector<CalendarInvite*> invites = sCalendarMgr->GetEventInvites(eventId);
for (std::vector<CalendarInvite*>::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()));
// should we change owner when somebody makes a copy of event owned by another person?
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例6: HandleCalendarCopyEvent
void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
uint64 eventId;
uint64 inviteId;
uint32 time;
recvData >> eventId >> inviteId;
recvData.ReadPackedTime(time);
TC_LOG_DEBUG("network", "CMSG_CALENDAR_COPY_EVENT [" UI64FMTD "], EventId [" UI64FMTD
"] inviteId [" UI64FMTD "] Time: %u", guid, eventId, inviteId, time);
if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(eventId))
{
CalendarEvent* newEvent = new CalendarEvent(*oldEvent, sCalendarMgr->GetFreeEventId());
newEvent->SetEventTime(time_t(time));
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId);
SQLTransaction trans;
if (invites.size() > 1)
trans = CharacterDatabase.BeginTransaction();
for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()), trans);
if (invites.size() > 1)
CharacterDatabase.CommitTransaction(trans);
// should we change owner when somebody makes a copy of event owned by another person?
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例7: HandleCalendarUpdateEvent
void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
time_t oldEventTime;
uint64 eventId;
uint64 inviteId;
std::string title;
std::string description;
uint8 type;
uint8 repetitionType;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 timeZoneTime;
uint32 flags;
recvData >> eventId >> inviteId >> title >> description >> type >> repetitionType >> maxInvites >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(timeZoneTime);
recvData >> flags;
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_CALENDAR_UPDATE_EVENT [" UI64FMTD "] EventId [" UI64FMTD
"], InviteId [" UI64FMTD "] Title %s, Description %s, type %u "
"Repeatable %u, MaxInvites %u, Dungeon ID %d, Time %u "
"Time2 %u, Flags %u", guid, eventId, inviteId, title.c_str(),
description.c_str(), type, repetitionType, maxInvites, dungeonId,
eventPackedTime, timeZoneTime, flags);
if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
{
oldEventTime = calendarEvent->GetEventTime();
calendarEvent->SetType(CalendarEventType(type));
calendarEvent->SetFlags(flags);
calendarEvent->SetEventTime(time_t(eventPackedTime));
calendarEvent->SetTimeZoneTime(time_t(timeZoneTime)); // Not sure, seems constant from the little sniffs we have
calendarEvent->SetDungeonId(dungeonId);
calendarEvent->SetTitle(title);
calendarEvent->SetDescription(description);
sCalendarMgr->UpdateEvent(calendarEvent);
sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例8: HandleCalendarAddEvent
void WorldSession::HandleCalendarAddEvent(WorldPacket& recv_data)
{
ObjectGuid guid = _player->GetObjectGuid();
DEBUG_LOG("WORLD: CMSG_CALENDAR_ADD_EVENT [%u]", guid.GetCounter());
std::string title;
std::string description;
uint8 type;
uint8 repeatable;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 unkPackedTime;
uint32 flags;
recv_data >> title;
recv_data >> description;
recv_data >> type;
recv_data >> repeatable;
recv_data >> maxInvites;
recv_data >> dungeonId;
eventPackedTime = recv_data.ReadPackedTime();
unkPackedTime = recv_data.ReadPackedTime();
recv_data >> flags;
// 946684800 is 01/01/2000 00:00:00 - default response time
CalendarEvent* cal = sCalendarMgr.AddEvent(_player->GetObjectGuid(), title, description, type, repeatable, maxInvites, dungeonId, eventPackedTime, unkPackedTime, flags);
if (cal)
{
if (cal->IsGuildAnnouncement())
{
sCalendarMgr.AddInvite(cal, guid, ObjectGuid(uint64(0)), CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "", time(NULL));
}
else
{
uint32 inviteCount;
recv_data >> inviteCount;
for (uint32 i = 0; i < inviteCount; ++i)
{
ObjectGuid invitee;
uint8 status = 0;
uint8 rank = 0;
recv_data >> invitee.ReadAsPacked();
recv_data >> status;
recv_data >> rank;
sCalendarMgr.AddInvite(cal, guid, invitee, CalendarInviteStatus(status), CalendarModerationRank(rank), "", time(NULL));
}
}
sCalendarMgr.SendCalendarEvent(_player->GetObjectGuid(), cal, CALENDAR_SENDTYPE_ADD);
}
}
示例9: HandleCalendarAddEvent
void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
std::string title;
std::string description;
uint8 type;
bool repeatable;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 unkPackedTime;
uint32 flags;
uint64 inviteId = 0;
uint64 invitee = 0;
uint8 status;
uint8 rank;
recvData >> title >> description >> type >> repeatable >> maxInvites;
recvData >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(unkPackedTime);
recvData >> flags;
if (!(flags & CALENDAR_FLAG_WITHOUT_INVITES))
{
uint32 inviteCount;
recvData >> inviteCount;
recvData.readPackGUID(invitee);
recvData >> status >> rank;
if (inviteCount != 1 || invitee != guid)
{
sLog->outError(LOG_FILTER_NETWORKIO, "HandleCalendarAddEvent: [" UI64FMTD
"]: More than one invite (%d) or Invitee [" UI64FMTD
"] differs", guid, inviteCount, invitee);
return;
}
inviteId = sCalendarMgr->GetFreeInviteId();
}
示例10: HandleCalendarUpdateEvent
void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
time_t oldEventTime;
uint64 eventId;
uint64 inviteId;
std::string title;
std::string description;
uint8 type;
uint8 repetitionType;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 timeZoneTime;
uint32 flags;
recvData >> eventId >> inviteId >> title >> description >> type >> repetitionType >> maxInvites >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData.ReadPackedTime(timeZoneTime);
recvData >> flags;
if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
{
oldEventTime = calendarEvent->GetEventTime();
calendarEvent->SetType(CalendarEventType(type));
calendarEvent->SetFlags(flags);
calendarEvent->SetEventTime(time_t(eventPackedTime));
calendarEvent->SetTimeZoneTime(time_t(timeZoneTime)); // Not sure, seems constant from the little sniffs we have
calendarEvent->SetDungeonId(dungeonId);
calendarEvent->SetTitle(title);
calendarEvent->SetDescription(description);
sCalendarMgr->UpdateEvent(calendarEvent);
sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例11: HandleCalendarCopyEvent
void WorldSession::HandleCalendarCopyEvent(WorldPacket& recv_data)
{
ObjectGuid guid = _player->GetObjectGuid();
DEBUG_LOG("WORLD: CMSG_CALENDAR_COPY_EVENT [%u]", guid.GetCounter());
ObjectGuid eventId;
ObjectGuid inviteId;
uint32 packedTime;
recv_data >> eventId;
recv_data >> inviteId;
packedTime = recv_data.ReadPackedTime();
DEBUG_FILTER_LOG(LOG_FILTER_CALENDAR, "WorldSession::HandleCalendarCopyEvent [%u], EventId [%u] inviteId [%u]",
guid.GetCounter(), uint32(eventId), uint32(inviteId));
sCalendarMgr.CopyEvent(eventId, packedTime, guid);
}
示例12: HandleCalendarCopyEvent
void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
{
ObjectGuid guid = _player->GetGUID();
uint64 eventId;
uint64 inviteId;
uint32 eventTime;
recvData >> eventId >> inviteId;
recvData.ReadPackedTime(eventTime);
TC_LOG_DEBUG("network", "CMSG_CALENDAR_COPY_EVENT [%s], EventId [" UI64FMTD
"] inviteId [" UI64FMTD "] Time: %u", guid.ToString().c_str(), eventId, inviteId, eventTime);
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
if (time_t(eventTime) < (time(NULL) - time_t(86400L)))
{
recvData.rfinish();
return;
}
if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(eventId))
{
CalendarEvent* newEvent = new CalendarEvent(*oldEvent, sCalendarMgr->GetFreeEventId());
newEvent->SetEventTime(time_t(eventTime));
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId);
SQLTransaction trans;
if (invites.size() > 1)
trans = CharacterDatabase.BeginTransaction();
for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
sCalendarMgr->AddInvite(newEvent, new CalendarInvite(**itr, sCalendarMgr->GetFreeInviteId(), newEvent->GetEventId()), trans);
if (invites.size() > 1)
CharacterDatabase.CommitTransaction(trans);
// should we change owner when somebody makes a copy of event owned by another person?
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例13: HandleCalendarUpdateEvent
void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recv_data)
{
ObjectGuid guid = _player->GetObjectGuid();
DEBUG_LOG("WORLD: CMSG_CALENDAR_UPDATE_EVENT [%u]", guid.GetCounter());
time_t oldEventTime;
ObjectGuid eventId;
ObjectGuid inviteId;
std::string title;
std::string description;
uint8 type;
uint8 repetitionType;
uint32 maxInvites;
int32 dungeonId;
uint32 eventPackedTime;
uint32 UnknownPackedTime;
uint32 flags;
recv_data >> eventId >> inviteId >> title >> description >> type >> repetitionType >> maxInvites >> dungeonId;
eventPackedTime = recv_data.ReadPackedTime();
UnknownPackedTime = recv_data.ReadPackedTime();
recv_data >> flags;
DEBUG_FILTER_LOG(LOG_FILTER_CALENDAR, "WorldSession::HandleCalendarUpdateEvent [%u] EventId [%u], InviteId [%u] Title %s, Description %s, type %u "
"Repeatable %u, MaxInvites %u, Dungeon ID %d, Flags %u", guid.GetCounter(), uint32(eventId), uint32(inviteId), title.c_str(),
description.c_str(), uint32(type), uint32(repetitionType), maxInvites, dungeonId, flags);
if (CalendarEvent* calendarEvent = sCalendarMgr.GetEventById(eventId))
{
if (guid != calendarEvent->CreatorGuid)
{
CalendarInvite* updaterInvite = calendarEvent->GetInviteByGuid(guid);
if (updaterInvite == NULL)
{
sCalendarMgr.SendCalendarCommandResult(guid, CALENDAR_ERROR_NOT_INVITED);
return ;
}
if (updaterInvite->Rank != CALENDAR_RANK_MODERATOR)
{
// remover have not enough right to change invite status
sCalendarMgr.SendCalendarCommandResult(guid, CALENDAR_ERROR_PERMISSIONS);
return;
}
}
oldEventTime = calendarEvent->EventTime;
calendarEvent->Type = CalendarEventType(type);
calendarEvent->Flags = flags;
calendarEvent->EventTime = eventPackedTime;
calendarEvent->UnknownTime = UnknownPackedTime;
calendarEvent->DungeonId = dungeonId;
calendarEvent->Title = title;
calendarEvent->Description = description;
calendarEvent->RemoveFlag(CALENDAR_STATE_FLAG_SAVED);
calendarEvent->AddFlag(CALENDAR_STATE_FLAG_UPDATED);
sCalendarMgr.SendCalendarEventUpdateAlert(calendarEvent, oldEventTime);
}
else
sCalendarMgr.SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
示例14: HandleSubmitComplainOpcode
//Todo Database Support
void WorldSession::HandleSubmitComplainOpcode(WorldPacket & recvData)
{
float posX, posY, posZ, posO;
uint32 mapID;
ObjectGuid guid;
guid[5] = recvData.ReadBit();
guid[0] = recvData.ReadBit();
guid[1] = recvData.ReadBit();
uint32 length = recvData.ReadBits(12);
guid[3] = recvData.ReadBit();
guid[2] = recvData.ReadBit();
guid[4] = recvData.ReadBit();
guid[7] = recvData.ReadBit();
//guid:4 options:0 length :0;posY:648.581055 ,posX:-8851.486328 ,posZ:96.454063 ,MAP:0 ,poso:2.151366 , unk:0 text: //SPAM
//guid:4 options:10 length :0;posY:648.581055 ,posX:-8851.486328 ,posZ:96.454063 ,MAP:0 ,poso:2.151366 , unk:0 text: //Ausdrucksweise
uint32 options = recvData.ReadBits(4); // ##
guid[6] = recvData.ReadBit();
recvData.ReadByteSeq(guid[3]);
recvData.ReadByteSeq(guid[5]);
recvData.ReadByteSeq(guid[1]);
recvData.ReadByteSeq(guid[2]);
recvData.ReadByteSeq(guid[6]);
recvData.ReadByteSeq(guid[0]);
std::string text = recvData.ReadString(length);
recvData.ReadByteSeq(guid[7]);
recvData.ReadByteSeq(guid[4]);
recvData >> posY;
recvData >> posZ;
recvData >> posX;
recvData >> mapID;
recvData >> posO;
recvData.ReadBit();
uint32 count = recvData.ReadBits(22);
uint32* strLength = new uint32[count];
// sLog->outInfo(LOG_FILTER_SERVER_LOADING,"CMSG_SUBMIT_COMPLAIN:: count:%u guid:%u option:%u length :%u;posY:%f ,posX:%f ,posZ:%f ,MAP:%u ,poso:%f text:%s",count,guid,options,length,posY,posX,posZ,mapID,posO,text.c_str());
switch(options)
{
case COMPLAIN_CHEATER:
case COMPLAIN_PLAYER_NAME:
case COMPLAIN_GUILD_NAME:
case COMPLAIN_ARENA_NAME:
break;
case COMPLAIN_SPAM:
case COMPLAIN_BAD_LANG:
for (uint32 i = 0; i < count; ++i)
strLength[i] = recvData.ReadBits(13);
for (uint32 i = 0; i < count; ++i)
{
sLog->outInfo(LOG_FILTER_SERVER_LOADING,"time : %u",recvData.ReadPackedTime());
sLog->outInfo(LOG_FILTER_SERVER_LOADING,"Text : %s",recvData.ReadString(strLength[i]).c_str());
}
break;
default:
sLog->outInfo(LOG_FILTER_SERVER_LOADING,"CMSG_SUBMIT_COMPLAIN::UNKNOW option:%u",options);
}
}
示例15: HandleCalendarAddEvent
void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
{
uint64 guid = _player->GetGUID();
std::string title;
std::string description;
uint8 type;
int32 dungeonId;
uint32 eventPackedTime;
uint32 maxInvites; // always 100, necesary? Not find the way how to change it
uint32 flags;
uint32 inviteeCount;
uint16 descriptionLength, titleLength;
recvData >> maxInvites >> flags >> dungeonId;
recvData.ReadPackedTime(eventPackedTime);
recvData >> type;
inviteeCount = recvData.ReadBits(22);
descriptionLength = recvData.ReadBits(11);
std::list<CalendarInvitePacketInfo> calendarInviteList;
for (uint32 i = 0; i < inviteeCount; i++)
{
CalendarInvitePacketInfo info;
info.Guid[7] = recvData.ReadBit();
info.Guid[2] = recvData.ReadBit();
info.Guid[6] = recvData.ReadBit();
info.Guid[3] = recvData.ReadBit();
info.Guid[5] = recvData.ReadBit();
info.Guid[1] = recvData.ReadBit();
info.Guid[0] = recvData.ReadBit();
info.Guid[4] = recvData.ReadBit();
calendarInviteList.push_back(info);
}
titleLength = recvData.ReadBits(8);
for (std::list<CalendarInvitePacketInfo>::iterator iter = calendarInviteList.begin(); iter != calendarInviteList.end(); ++iter)
{
recvData.ReadByteSeq(iter->Guid[4]);
recvData.ReadByteSeq(iter->Guid[2]);
recvData.ReadByteSeq(iter->Guid[3]);
recvData.ReadByteSeq(iter->Guid[1]);
recvData.ReadByteSeq(iter->Guid[0]);
recvData.ReadByteSeq(iter->Guid[6]);
recvData.ReadByteSeq(iter->Guid[7]);
recvData >> iter->Status;
recvData.ReadByteSeq(iter->Guid[5]);
recvData >> iter->ModerationRank;
}
title = recvData.ReadString(titleLength);
description = recvData.ReadString(descriptionLength);
CalendarEvent* calendarEvent = new CalendarEvent(sCalendarMgr->GetFreeEventId(), guid, 0, CalendarEventType(type), dungeonId,
time_t(eventPackedTime), flags, title, description);
if (calendarEvent->IsGuildEvent() || calendarEvent->IsGuildAnnouncement())
if (Player* creator = ObjectAccessor::FindPlayer(guid))
calendarEvent->SetGuildId(creator->GetGuildId());
if (calendarEvent->IsGuildAnnouncement())
{
// DEFAULT_STATUS_TIME is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(0, calendarEvent->GetEventId(), 0, guid, DEFAULT_STATUS_TIME, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->AddInvite(calendarEvent, invite);
}
else
{
for (std::list<CalendarInvitePacketInfo>::const_iterator iter = calendarInviteList.begin(); iter != calendarInviteList.end(); ++iter)
{
// DEFAULT_STATUS_TIME is 01/01/2000 00:00:00 - default response time
CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent->GetEventId(), (uint64)iter->Guid, guid, DEFAULT_STATUS_TIME, CalendarInviteStatus(iter->Status), CalendarModerationRank(iter->ModerationRank), "");
sCalendarMgr->AddInvite(calendarEvent, invite);
}
}
sCalendarMgr->AddEvent(calendarEvent, CALENDAR_SENDTYPE_ADD);
}