本文整理汇总了C++中WorldPacket::read_skip方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::read_skip方法的具体用法?C++ WorldPacket::read_skip怎么用?C++ WorldPacket::read_skip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::read_skip方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleAuctionListItems
//this void is called when player clicks on search button
void WorldSession::HandleAuctionListItems( WorldPacket & recv_data )
{
std::string searchedname;
uint8 levelmin, levelmax, usable;
uint32 listfrom, auctionSlotID, auctionMainCategory, auctionSubCategory, quality;
uint64 guid;
recv_data >> guid;
recv_data >> listfrom; // start, used for page control listing by 50 elements
recv_data >> searchedname;
recv_data >> levelmin >> levelmax;
recv_data >> auctionSlotID >> auctionMainCategory >> auctionSubCategory;
recv_data >> quality >> usable;
recv_data.read_skip(16); // unknown 16 bytes: 00 07 01 00 00 01 05 00 06 00 09 01 08 00 03 00
Creature *pCreature = GetPlayer()->GetNPCIfCanInteractWith(guid,UNIT_NPC_FLAG_AUCTIONEER);
if (!pCreature)
{
sLog.outDebug( "WORLD: HandleAuctionListItems - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid)) );
return;
}
// remove fake death
if(GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap( pCreature->getFaction() );
//sLog.outDebug("Auctionhouse search (GUID: %u TypeId: %u)", , list from: %u, searchedname: %s, levelmin: %u, levelmax: %u, auctionSlotID: %u, auctionMainCategory: %u, auctionSubCategory: %u, quality: %u, usable: %u",
// GUID_LOPART(guid),GuidHigh2TypeId(GUID_HIPART(guid)), listfrom, searchedname.c_str(), levelmin, levelmax, auctionSlotID, auctionMainCategory, auctionSubCategory, quality, usable);
WorldPacket data( SMSG_AUCTION_LIST_RESULT, (4+4+4) );
uint32 count = 0;
uint32 totalcount = 0;
data << (uint32) 0;
// converting string that we try to find to lower case
std::wstring wsearchedname;
if(!Utf8toWStr(searchedname,wsearchedname))
return;
wstrToLower(wsearchedname);
auctionHouse->BuildListAuctionItems(data,_player,
wsearchedname, listfrom, levelmin, levelmax, usable,
auctionSlotID, auctionMainCategory, auctionSubCategory, quality,
count,totalcount);
data.put<uint32>(0, count);
data << (uint32) totalcount;
data << (uint32) 300; // unk 2.3.0 const?
SendPacket(&data);
}
示例2: HandleGroupInviteOpcode
//////////////////////////////////////////////////////////////
/// This function handles CMSG_GROUP_INVITE
//////////////////////////////////////////////////////////////
void WorldSession::HandleGroupInviteOpcode( WorldPacket & recv_data )
{
if(!_player->IsInWorld())
{
return;
}
CHECK_PACKET_SIZE(recv_data, 1);
std::string membername;
Player * player = NULL;
Group *group = NULL;
recv_data.read_skip( 10 ); //no idea, they were all 0
recv_data >> membername;
//tried to make sure the other guy can't accept the invited
/* if( _player->HasBeenInvited() )
{
return;
} */
player = objmgr.GetPlayer(membername.c_str(), false);
if ( player == NULL)
{
SendPartyCommandResult(_player, 0, membername, ERR_PARTY_CANNOT_FIND);
return;
}
if (player == _player)
{
return;
}
if ( _player->InGroup() && !_player->IsGroupLeader() )
{
SendPartyCommandResult(_player, 0, "", ERR_PARTY_YOU_ARE_NOT_LEADER);
return;
}
group = _player->GetGroup();
if( group != NULL )
{
if(group->IsFull())
{
SendPartyCommandResult(_player, 0, "", ERR_PARTY_IS_FULL);
return;
}
}
if ( player->InGroup() )
{
SendPartyCommandResult(_player, player->GetGroup()->GetGroupType(), membername, ERR_PARTY_ALREADY_IN_GROUP);
return;
}
if(player->GetTeam()!=_player->GetTeam() && _player->GetSession()->GetPermissionCount() == 0 && !sWorld.interfaction_group)
{
SendPartyCommandResult(_player, 0, membername, ERR_PARTY_WRONG_FACTION);
return;
}
//tried to make sure the other guy can't accept the invited
/* if ( player->HasBeenInvited() )
{
SendPartyCommandResult(_player, 0, membername, ERR_PARTY_ALREADY_IN_GROUP);
return;
}*/
if( player->Social_IsIgnoring( _player->GetLowGUID() ) )
{
SendPartyCommandResult(_player, 0, membername, ERR_PARTY_IS_IGNORING_YOU);
return;
}
/*
{SERVER} Packet: (0x1F7F) SMSG_GROUP_INVITE PacketSize = 16 TimeStamp = 30686468
01
55 64 72 65 61 00
AA 2A 00 00
00 00 00 00
00
14333
{SERVER} Packet: (0x4723) UNKNOWN PacketSize = 44 TimeStamp = 17757047
4E E0 1001110 11100000
6F 00 00 00
03 go3
00 00 00 00
00 00 00 00
4C go2
44 75 6E 65 6D 61 75 6C 00 Dunemaul
00 00 00 00
41 6E 61 72 6B 65 00 Anarke
00 1F 59 15
00 go7
AF go1
81 go6
//.........这里部分代码省略.........
示例3: ValidateCheatCheckResult
//.........这里部分代码省略.........
sLog->outWarden("Warden: player %s failed check, MPQ '%s' SHA1 is '%s' instead of '%s'", session->GetPlayerName(), (*checkList)[i].file->String.c_str(), strResSHA1.c_str(), strReqSHA1.c_str());
}
else
{
sLog->outWarden("Warden: account %u failed check, MPQ '%s' SHA1 is '%s' instead of '%s'", session->GetAccountId(), (*checkList)[i].file->String.c_str(), strResSHA1.c_str(), strReqSHA1.c_str());
}
}
pktLen = pktLen - 21;
}
sLog->outStaticDebug("Warden: MPQ %s", valid ? "Ok" : "Failed");
break;
}
case WARD_CHECK_LUA:
{
sLog->outStaticDebug("Warden: LUACheck");
uint8 res;
uint8 foundLuaLen;
clientPacket >> res; // should be 0
clientPacket >> foundLuaLen; // should be 0
uint8 *luaStr;
if (foundLuaLen > 0)
{
luaStr = (uint8*)malloc(foundLuaLen+1);
for (uint8 pos=0; pos<foundLuaLen; ++pos)
{
clientPacket >> luaStr[pos];
}
luaStr[foundLuaLen] = 0;
if (session->GetPlayer())
{
sLog->outWarden("Warden: player %s failed lua check, Lua '%s' found as '%s'", session->GetPlayerName(), (*checkList)[i].lua->String.c_str(), (char*)luaStr);
}
else
{
sLog->outWarden("Warden: account %u failed lua check, Lua '%s' found as '%s'", session->GetAccountId(), (*checkList)[i].lua->String.c_str(), (char*)luaStr);
}
valid = false;
free(luaStr);
}
sLog->outStaticDebug("Lua %s", valid ? "Ok" : "Failed");
pktLen = pktLen - 2;
break;
}
case WARD_CHECK_PAGE1:
case WARD_CHECK_PAGE2:
case WARD_CHECK_DRIVER:
{
sLog->outStaticDebug("PageCheck or DriverCheck");
uint8 res;
clientPacket >> res; // should be 0xE9
if (res != 0xE9)
{
if ((*checkList)[i].check == WARD_CHECK_DRIVER)
{
if (session->GetPlayer())
{
sLog->outWarden("Warden: player %s failed driver check '%s'", session->GetPlayerName(), (*checkList)[i].driver->String.c_str());
}
else
{
sLog->outWarden("Warden: account %u failed driver check '%s'", session->GetAccountId(), (*checkList)[i].driver->String.c_str());
}
}
else
{
if (session->GetPlayer())
{
sLog->outWarden("Warden: player %s failed page check Offset 0x%08X, length %u", session->GetPlayerName(), (*checkList)[i].page->Offset, (*checkList)[i].page->Length);
}
else
{
sLog->outWarden("Warden: account %u failed page check Offset 0x%08X, length %u", session->GetAccountId(), (*checkList)[i].page->Offset, (*checkList)[i].page->Length);
}
}
valid = false;
}
sLog->outStaticDebug("Page or Driver %s",valid?"Ok":"Failed");
pktLen = pktLen - 1;
break;
}
default:
sLog->outStaticDebug("Warden: Other!!");
// Finish skiping the rest of the packet and return failed checks
if (session->GetPlayer())
{
sLog->outWarden("Wrong packet for player %s or problem to parse it, I had to clean %u bytes", session->GetPlayerName(), clientPacket.size() - clientPacket.rpos());
}
else
{
sLog->outWarden("Wrong packet for account %u or problem to parse it, I had to clean %u bytes", session->GetAccountId(), clientPacket.size() - clientPacket.rpos());
}
clientPacket.read_skip(clientPacket.size() - clientPacket.rpos());
return false;
}
}