• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ OutPacket函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中OutPacket函数的典型用法代码示例。如果您正苦于以下问题:C++ OutPacket函数的具体用法?C++ OutPacket怎么用?C++ OutPacket使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



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

示例1: swap32

void WorldSession::HandleIgnoreTrade(WorldPacket & recv_data)
{
	if(!_player->IsInWorld()) return;
	uint32 TradeStatus = TRADE_STATUS_PLAYER_IGNORED;

	Player * plr = _player->GetTradeTarget();
	if(_player->mTradeTarget == 0 || plr == 0)
	{
#ifdef USING_BIG_ENDIAN
		TradeStatus = swap32(uint32(TRADE_STATUS_PLAYER_NOT_FOUND));
#else
		TradeStatus = TRADE_STATUS_PLAYER_NOT_FOUND;
#endif
		OutPacket(TRADE_STATUS_PLAYER_NOT_FOUND, 4, &TradeStatus);
		return;
	}

#ifdef USING_BIG_ENDIAN
	swap32(&TradeStatus);
	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	swap32(&TradeStatus);
#else
	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
#endif

	plr->mTradeStatus = TradeStatus;
	_player->mTradeStatus = TradeStatus;

	plr->mTradeTarget = 0;
	_player->mTradeTarget = 0;
}
开发者ID:wow4all,项目名称:wowtbc,代码行数:33,代码来源:TradeHandler.cpp


示例2: ASSERT

void WorldSocket::Authenticate()
{
	WorldSession * pSession = mSession;
	ASSERT(pAuthenticationPacket);
	mQueued = false;

	if(!pSession) return;
	pSession->deleteMutex.Acquire();

	if(pSession->HasFlag(ACCOUNT_FLAG_XPACK_01))
		OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x01");
	else
		OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x00");

	sAddonMgr.SendAddonInfoPacket(pAuthenticationPacket, (uint32)pAuthenticationPacket->rpos(), pSession);
	pSession->_latency = _latency;

	delete pAuthenticationPacket;
	pAuthenticationPacket = 0;

	if(mSession)
	{
		sWorld.AddSession(mSession);
		sWorld.AddGlobalSession(mSession);

/*		if(pSession->HasFlag(ACCOUNT_FLAG_XTEND_INFO))
			sWorld.AddExtendedSession(pSession);*/

		if(pSession->HasGMPermissions() && mSession)
			sWorld.gmList.insert(pSession);
	}

	pSession->deleteMutex.Release();
}
开发者ID:AwkwardDev,项目名称:ascent_classic,代码行数:34,代码来源:WorldSocket.cpp


示例3: ASSERT

void WorldSocket::Authenticate()
{
	WorldSession * pSession = mSession;
	ASSERT(pAuthenticationPacket);
	mQueued = false;

	if(!pSession)
	{
		DEBUG_LOG( "WorldSocket","Lost Session");
		return;
	}

	if(pSession->HasFlag(ACCOUNT_FLAG_XPACK_02))
		OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x02");
	else if(pSession->HasFlag(ACCOUNT_FLAG_XPACK_01))
		OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x01");
	else
		OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x00");

	sAddonMgr.SendAddonInfoPacket(pAuthenticationPacket, (uint32)pAuthenticationPacket->rpos(), pSession);
	pSession->_latency = _latency;

	delete pAuthenticationPacket;
	pAuthenticationPacket = NULL;

	sWorld.AddSession(pSession);
	sWorld.AddGlobalSession(pSession);
}
开发者ID:h4s0n,项目名称:Sandshroud,代码行数:28,代码来源:WorldSocket.cpp


示例4: OutPacket

void WorldSession::HandleBusyTrade(WorldPacket & recv_data)
{
	CHECK_INWORLD_RETURN

	uint32 TradeStatus = TRADE_STATUS_PLAYER_BUSY;

	Player* plr = _player->GetTradeTarget();
	if(_player->mTradeTarget == 0 || plr == 0)
	{

		TradeStatus = TRADE_STATUS_PLAYER_NOT_FOUND;

		OutPacket(TRADE_STATUS_PLAYER_NOT_FOUND, 4, &TradeStatus);
		return;
	}


	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);

	plr->mTradeStatus = TradeStatus;
	_player->mTradeStatus = TradeStatus;

	plr->mTradeTarget = 0;
	_player->mTradeTarget = 0;
}
开发者ID:Selenah,项目名称:ArcEmu,代码行数:26,代码来源:TradeHandler.cpp


示例5: CHECK_PACKET_SIZE

void WorldSession::HandleClearTradeItem(WorldPacket & recv_data)
{
	CHECK_PACKET_SIZE(recv_data, 1);
	if(_player->mTradeTarget == 0)
		return;

	uint8 TradeSlot = recv_data.contents()[0];
	if(TradeSlot > 6)
		return;

  // clean status
	Player * plr = _player->GetTradeTarget();
	if ( !plr ) return;

	uint32 TradeStatus = TRADE_STATUS_STATE_CHANGED;

#ifdef USING_BIG_ENDIAN
	swap32(&TradeStatus);
	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	swap32(&TradeStatus);
#else
	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
#endif

	plr->mTradeStatus = TradeStatus;
	_player->mTradeStatus = TradeStatus;


	_player->mTradeItems[TradeSlot] = 0;
	_player->SendTradeUpdate();
}
开发者ID:wow4all,项目名称:wowtbc,代码行数:33,代码来源:TradeHandler.cpp


示例6: OutPacket

void WorldSession::HandleLfgInviteAccept(WorldPacket & recvPacket)
{
	CHECK_INWORLD_RETURN;
	
	_player->PartLFGChannel();
	if(_player->m_lfgMatch == NULL && _player->m_lfgInviterGuid == 0)
	{
		if(_player->m_lfgMatch == NULL)
			OutPacket(SMSG_LFG_AUTOJOIN_FAILED_NO_PLAYER);		// Matched Player(s) have gone offline.
		else
			OutPacket(SMSG_LFG_AUTOJOIN_FAILED);				// Group no longer available.

		return;
	}

	if( _player->m_lfgMatch != NULL )
	{
		// move into accepted players
		_player->m_lfgMatch->lock.Acquire();
		_player->m_lfgMatch->PendingPlayers.erase(_player);

		if( !_player->GetGroup() )
		{
			_player->m_lfgMatch->AcceptedPlayers.insert(_player);

			if(!_player->m_lfgMatch->PendingPlayers.size())
			{
				// all players have accepted
				Group * pGroup = new Group(true);
				for(set<Player*>::iterator itr = _player->m_lfgMatch->AcceptedPlayers.begin(); itr != _player->m_lfgMatch->AcceptedPlayers.end(); ++itr)
					pGroup->AddMember((*itr)->m_playerInfo);

				_player->m_lfgMatch->pGroup = pGroup;
			}
		}
		_player->m_lfgMatch->lock.Release();
	}
	else
	{
		Player * pPlayer = objmgr.GetPlayer(_player->m_lfgInviterGuid);
		if( pPlayer == NULL )
		{
			OutPacket(SMSG_LFG_AUTOJOIN_FAILED_NO_PLAYER);			// Matched Player(s) have gone offline.
			return;
		}

		if( pPlayer->GetGroup() == NULL || pPlayer->GetGroup()->IsFull() || pPlayer->GetGroup()->GetLeader() != pPlayer->m_playerInfo )
		{
			OutPacket(SMSG_LFG_AUTOJOIN_FAILED);
			return;
		}

		pPlayer->GetGroup()->AddMember(_player->m_playerInfo);
	}
	_player->m_lfgInviterGuid = 0;
	_player->m_lfgMatch = NULL;
}
开发者ID:Naqvamp,项目名称:Underworld_Core,代码行数:57,代码来源:LfgHandler.cpp


示例7: getMSTime

void WorldSocket::OnConnect()
{
    sWorld.mAcceptedConnections++;
    _latency = getMSTime();

#ifdef USING_BIG_ENDIAN
    uint32 swapped = swap32(mSeed);
    OutPacket(SMSG_AUTH_CHALLENGE, 4, &swapped);
#else
    OutPacket(SMSG_AUTH_CHALLENGE, 4, &mSeed);
#endif
}
开发者ID:Zelgadisx5,项目名称:Arcemu-2.4.3,代码行数:12,代码来源:WorldSocket.cpp


示例8: GetPlayer

void WorldSession::HandleBeginTrade(WorldPacket & recv_data)
{
	if(!_player->IsInWorld()) 
	{ 
		return;
	}
#ifdef FORCED_GM_TRAINEE_MODE
	if( CanUseCommand('k') && !HasGMPermissions() )
	{
		GetPlayer()->BroadcastMessage( "You are not allowed to use this feature" );
		return;
	}
#endif
	if( sWorld.getIntRate( INTRATE_DISABLE_TRADE_FEATURE ) )
	{
		GetPlayer()->BroadcastMessage( "Trade feature is disabled right now" );
		return;
	}
	sLog.outDebug( "WORLD: got CMSG_BEGIN_TRADE from player %s.", _player->GetName() );
	packetSMSG_TRADE_STATUS data;
	memset( &data, 0, sizeof( data ) );
	data.trade_status = TRADE_STATUS_INITIATED;
	data.trade_id = TRADE_ID_CONST;	//this the constant used in status update also !

	Player * plr = _player->GetTradeTarget();
	if(_player->mTradeTarget == 0 || plr == 0)
	{
		data.trade_status = TRADE_STATUS_PLAYER_NOT_FOUND;
		OutPacket(SMSG_TRADE_STATUS,sizeof( packetSMSG_TRADE_STATUS ), &data);
		return;
	}
	// We're too far from target now?
	Player * plr2 = objmgr.GetPlayer(_player->mTradeTarget);
	if( plr2 == NULL )
	{
		return; //wtf ? player is inside the map and not in objectmanager ?
	}
	if( _player->CalcDistance( plr2 ) > 10.0f )
		data.trade_status = TRADE_STATUS_TOO_FAR_AWAY;

	//send to ourself
	OutPacket(SMSG_TRADE_STATUS,sizeof( packetSMSG_TRADE_STATUS ), &data);
	//send to our target
	plr->m_session->OutPacket(SMSG_TRADE_STATUS,sizeof( packetSMSG_TRADE_STATUS ), &data);

	plr->mTradeStatus = data.trade_status;
	_player->mTradeStatus = data.trade_status;

//	_player->SendTradeUpdate( 0 );
//	plr->SendTradeUpdate( 0 );
}
开发者ID:AtVirus,项目名称:Descent-core,代码行数:51,代码来源:TradeHandler.cpp


示例9: OutPacket

void WorldSocket::Authenticate()
{
    if(m_session->m_accountFlags & 16)
        OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x02");
    else if(m_session->m_accountFlags & 8)
        OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x01");
    else
        OutPacket(SMSG_AUTH_RESPONSE, 11, "\x0C\x30\x78\x00\x00\x00\x00\x00\x00\x00\x00");

    SendAddonInfoPacket(pAuthenticationPacket, (uint32)pAuthenticationPacket->rpos(), m_session);

    delete pAuthenticationPacket;
    pAuthenticationPacket = 0;
}
开发者ID:arcticdev,项目名称:arcticdev,代码行数:14,代码来源:WorldSocket.cpp


示例10: memset

void WorldSession::HandleCancelTrade(WorldPacket & recv_data)
{
	if(!_player->IsInWorld()) 
	{ 
		return;
	}

	sLog.outDebug( "WORLD: got CMSG_CANCEL_TRADE from player %s.", _player->GetName() );
	if(_player->mTradeTarget == 0 || _player->mTradeStatus == TRADE_STATUS_COMPLETE)
	{ 
		return;
	}

	packetSMSG_TRADE_STATUS data;
	memset( &data, 0, sizeof( data ) );
	data.trade_status = TRADE_STATUS_CANCELLED;

	//send to ourself
	OutPacket(SMSG_TRADE_STATUS,sizeof( packetSMSG_TRADE_STATUS ), &data);

	Player * plr = _player->GetTradeTarget();
    if(plr)
    {
		//send to our target
        if(plr->m_session && plr->m_session->GetSocket())
			plr->m_session->OutPacket(SMSG_TRADE_STATUS,sizeof( packetSMSG_TRADE_STATUS ), &data);
	
		plr->ResetTradeVariables();
    }
	
	_player->ResetTradeVariables();
}
开发者ID:AtVirus,项目名称:Descent-core,代码行数:32,代码来源:TradeHandler.cpp


示例11: OutPacket

void WorldServerSocket::OnConnect()
{
	sWorld.AcceptedConnections++;
	_latency = (uint32)time(NULL);

	OutPacket(SMSG_AUTH_CHALLENGE, 4, &mSeed);
}
开发者ID:DeaDSandro,项目名称:shadowfade,代码行数:7,代码来源:WorldServerSocket.cpp


示例12: swap32

void WorldSession::HandleCancelTrade(WorldPacket & recv_data)
{
	if(!_player->IsInWorld()) return;
	if(_player->mTradeTarget == 0 || _player->mTradeStatus == TRADE_STATUS_COMPLETE)
		return;

#ifdef USING_BIG_ENDIAN
	uint32 TradeStatus = swap32(uint32(TRADE_STATUS_CANCELLED));
#else
    uint32 TradeStatus = TRADE_STATUS_CANCELLED;
#endif

    OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);

	Player * plr = _player->GetTradeTarget();
    if(plr)
    {
        if(plr->m_session && plr->m_session->GetSocket())
		plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	
	    plr->mTradeTarget = 0;
		plr->ResetTradeVariables();
    }
	
	_player->mTradeTarget = 0;
	_player->ResetTradeVariables();
}
开发者ID:Chero,项目名称:abcwow,代码行数:27,代码来源:TradeHandler.cpp


示例13: OutPacket

void WorldSession::HandleBeginTrade(WorldPacket& recv_data)
{
    CHECK_INWORLD_RETURN

    uint32 TradeStatus = TRADE_STATUS_INITIATED;

    Player* plr = _player->GetTradeTarget();
    if (_player->mTradeTarget == 0 || plr == 0)
    {
        TradeStatus = TRADE_STATUS_PLAYER_NOT_FOUND;

        OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
        return;
    }

    // We're too far from target now?
    if (_player->CalcDistance(objmgr.GetPlayer(_player->mTradeTarget)) > 10.0f)
        TradeStatus = TRADE_STATUS_TOO_FAR_AWAY;

    WorldPacket data(SMSG_TRADE_STATUS, 8);

    data << uint32(TradeStatus);
    data << uint32(0x19);

    plr->m_session->SendPacket(&data);

    SendPacket(&data);

    plr->mTradeStatus = TradeStatus;
    _player->mTradeStatus = TradeStatus;
}
开发者ID:Nupper,项目名称:AscEmu,代码行数:31,代码来源:TradeHandler.cpp


示例14: CHECK_PACKET_SIZE

void WorldSession::HandlePlayerLoginOpcode( WorldPacket & recv_data )
{
	CHECK_PACKET_SIZE(recv_data, 8);
	uint64 playerGuid = 0;

	sLog.outDebug( "WORLD: Recvd Player Logon Message" );

	recv_data >> playerGuid; // this is the GUID selected by the player
	if(objmgr.GetPlayer((uint32)playerGuid) != NULL || m_loggingInPlayer || _player)
	{
		// A character with that name already exists 0x3E
		uint8 respons = CHAR_LOGIN_DUPLICATE_CHARACTER;
		OutPacket(SMSG_CHARACTER_LOGIN_FAILED, 1, &respons);
		return;
	}

	Player* plr = new Player((uint32)playerGuid);
	ASSERT(plr);
	plr->SetSession(this);
	m_bIsWLevelSet = false;
	
	Log.Debug("WorldSession", "Async loading player %u", (uint32)playerGuid);
	m_loggingInPlayer = plr;
	plr->LoadFromDB((uint32)playerGuid);
}
开发者ID:AwkwardDev,项目名称:ascent_classic,代码行数:25,代码来源:CharacterHandler.cpp


示例15: OutPacket

void WorldSession::HandleQuestgiverCancelOpcode(WorldPacket & recvPacket)
{
	CHECK_INWORLD_RETURN

	OutPacket(SMSG_GOSSIP_COMPLETE, 0, NULL);

	LOG_DEBUG("WORLD: Sent SMSG_GOSSIP_COMPLETE");
}
开发者ID:Carbinfibre,项目名称:ArcPro,代码行数:8,代码来源:QuestHandler.cpp


示例16: swap32

//////////////////////////////////////////////////////////////
/// This function handles CMSG_QUERY_TIME:
//////////////////////////////////////////////////////////////
void WorldSession::HandleQueryTimeOpcode( WorldPacket & recv_data )
{
	uint32 t = (uint32)UNIXTIME;
#ifdef USING_BIG_ENDIAN
	swap32(&t);
#endif
	OutPacket(SMSG_QUERY_TIME_RESPONSE, 4, &t);
}
开发者ID:Chero,项目名称:abcwow,代码行数:11,代码来源:QueryHandler.cpp


示例17: assert

// Output n'th path element via OutPacket
void ARec::OutPathElement(int n, PartialPath pp)
{
   Word wrd = NULL;
   char *w, *t;
   float ac,lm,score;     // various likelihoods
   float confidence;      // acoustic confidence
   HTime tst,tet;         // start and end times
   PhraseType k;
   NetNode *node;
   Path *p = pp.path;
   int i,frame;
   float prevLike,lmScore;

   // not very efficient but paths never very long
   for (i=pp.n; i>n; i--) {assert(p); p = p->prev;}
   assert(p);

   PathMap::const_iterator it = opMap.find(p);
   if (it != opMap.end()){
      i = opMap[p]; opMap[p] += 1;
      return;
   }
   node = p->owner->node; assert(node);
   t = node->tag; w = NULL;
   if (node->info.pron != NULL) wrd = node->info.pron->word;
   if (wrd != NULL) {w = wrd->wordName->name; k = Word_PT;}
   if (wrd == NULL || (wrd != NULL && strcmp(w,"!NULL")==0)){
      k = Null_PT; w = NULL;
   }
   if (t!=NULL){
      if (strstr(t,"!SUBLAT_(") != NULL){
         k=OpenTag_PT;  t = NULL;
      }else if (strstr(t,"!)_SUBLAT-") != NULL){
         k=CloseTag_PT; t += 10;
      }
   }
   frame = (n==1)?pp.startFrame:p->prev->owner->frame;
   tst = frame * sampPeriod;
   tet = p->owner->frame *sampPeriod;
   prevLike = (n==1)?pp.startLike:float(p->prev->like);
   lmScore = p->lm;  /* SJY 10/12/03  - lm used to be unscaled so this value was scaled
                          here, but now scaling done during recognition */
   // pronScore = (k == Word_PT)?node->info.pron->prob*pp.pronScale:0.0;
   wordPen = float((k==Word_PT)?pp.wordPen:0.0);
   ac = float(p->like - prevLike - lmScore - wordPen);
   lm = lmScore + wordPen;
   score = float(p->like);
   char *none="";
   confidence = GetConfidence(pri,frame+1,p->owner->frame,ac,(w!=NULL)?w:none);

   // printf("CONFB %d. ac=%.1f, prevLike=%.1f, lmScore=%.1f, wordPen=%.1f, lm=%.1f, score=%.1f conf=%.1f\n",
   //   p->owner->frame, ac,prevLike,lmScore,wordPen,lm,score,confidence);

   OutPacket(k, string((w!=NULL)?w:""), string((t!=NULL)?t:""),
	     outseqnum, 0, ac, lm, score, confidence, (float)tact/frameCount,
	     tst+stTime, tet+stTime);
   opMap[p] = 1;
}
开发者ID:deardaniel,项目名称:PizzaTest,代码行数:59,代码来源:ARec.cpp


示例18: OutPacket

void WorldSession::HandleBeginTrade(WorldPacket & recv_data)
{
	if(!_player->IsInWorld()) return;
	uint32 TradeStatus = TRADE_STATUS_INITIATED;

	Player * plr = _player->GetTradeTarget();
	if(_player->mTradeTarget == 0 || plr == 0)
	{
		TradeStatus = TRADE_STATUS_PLAYER_NOT_FOUND;
		OutPacket(TRADE_STATUS_PLAYER_NOT_FOUND, 4, &TradeStatus);
		return;
	}

	OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);
	plr->m_session->OutPacket(SMSG_TRADE_STATUS, 4, &TradeStatus);

	plr->mTradeStatus = TradeStatus;
	_player->mTradeStatus = TradeStatus;
}
开发者ID:Sylica2013,项目名称:Antrix,代码行数:19,代码来源:TradeHandler.cpp


示例19: GetPlayer

void WorldSession::SendTaxiList(Creature* pCreature)
{
	uint32 curloc;
	uint8 field;
	uint32 TaxiMask[NUM_TAXI_NODES];
	uint32 submask;
	uint64 guid = pCreature->GetGUID();

	curloc = pCreature->m_TaxiNode;
	if (!curloc)
		return;

	field = (uint8)((curloc - 1) / 32);
	submask = 1<<((curloc-1)%32);

	// Check for known nodes
	if (!(GetPlayer( )->GetTaximask(field) & submask))
	{
		GetPlayer()->SetTaximask(field, (submask | GetPlayer( )->GetTaximask(field)) );

		OutPacket(SMSG_NEW_TAXI_PATH);

		//Send packet
		WorldPacket update(SMSG_TAXINODE_STATUS, 9);
		update << guid << uint8( 1 );
		SendPacket( &update );
	}

	//Set Mask
	for(uint8 i = 0; i < NUM_TAXI_NODES; i++)
	{
		TaxiMask[i] = 0;
	}
	sTaxiMgr.GetGlobalTaxiNodeMask(curloc, TaxiMask);
	TaxiMask[field] |= 1 << ((curloc-1)%32);

	//Remove nodes unknown to player
	for(uint8 i = 0; i < NUM_TAXI_NODES; i++)
	{
		TaxiMask[i] &= GetPlayer( )->GetTaximask(i);
	}

	WorldPacket data(48);
	data.Initialize( SMSG_SHOWTAXINODES );
	data << uint32( 1 ) << guid;
	data << uint32( curloc );
	for(int i = 0; i < NUM_TAXI_NODES; i++)
	{
		data << TaxiMask[i];
	}
	SendPacket( &data );

	DEBUG_LOG( "WORLD: Sent SMSG_SHOWTAXINODES" );
}
开发者ID:Ballwinkle,项目名称:Ascent_NG,代码行数:54,代码来源:TaxiHandler.cpp


示例20: Disconnect

void WorldSocket::_HandlePing(WorldPacket* recvPacket)
{
    uint32 ping;
    if(recvPacket->size() < 4)
    {
        sLog.outString("Socket closed due to incomplete ping packet.");
        Disconnect();
        return;
    }

    *recvPacket >> ping;
    *recvPacket >> _latency;

    if(mSession)
    {
        mSession->_latency = _latency;
        mSession->m_lastPing = (uint32)UNIXTIME;

        // reset the move time diff calculator, don't worry it will be re-calculated next movement packet.
        mSession->m_clientTimeDelay = 0;
    }

#ifdef USING_BIG_ENDIAN
    swap32(&ping);
#endif

    OutPacket(SMSG_PONG, 4, &ping);

#ifdef WIN32
    // Dynamically change nagle buffering status based on latency.
    //if(_latency >= 250)
    // I think 350 is better, in a MMO 350 latency isn't that big that we need to worry about reducing the number of packets being sent.
    if(_latency >= 350)
    {
        if(!m_nagleEanbled)
        {
            u_long arg = 0;
            setsockopt(GetFd(), 0x6, 0x1, (const char*)&arg, sizeof(arg));
            m_nagleEanbled = true;
        }
    }
    else
    {
        if(m_nagleEanbled)
        {
            u_long arg = 1;
            setsockopt(GetFd(), 0x6, 0x1, (const char*)&arg, sizeof(arg));
            m_nagleEanbled = false;
        }
    }
#endif
}
开发者ID:Zelgadisx5,项目名称:Arcemu-2.4.3,代码行数:52,代码来源:WorldSocket.cpp



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ Output函数代码示例发布时间:2022-05-30
下一篇:
C++ OutOfBoundsEx函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap