游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2341|回复: 3

手上有套缘码.想一起研究学习

[复制链接]

4

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2009-5-20 01:46:00 | 显示全部楼层 |阅读模式
手上有一套完整的游戏C++ 的源码 结构合理.完善不过只是国外为这有些写的模拟器.我为学习提供而研究此源码不知道有没有人一起研究呢

下面是一源码
#include "StdAfx.h"

void WorldSession::HandleTaxiNodeStatusQueryOpcode( WorldPacket & recv_data )
{
        if(!_player->IsInWorld()) return;
        sLog.outDebug( "WORLD: Received CMSG_TAXINODE_STATUS_QUERY" );

        uint64 guid;
        uint32 curloc;
        uint8 field;
        uint32 submask;

        recv_data >> guid;

        curloc = sTaxiMgr.GetNearestTaxiNode( GetPlayer( )->GetPositionX( ), GetPlayer( )->GetPositionY( ), GetPlayer( )->GetPositionZ( ), GetPlayer( )->GetMapId( ) );

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

        WorldPacket data(9);
        data.Initialize( SMSG_TAXINODE_STATUS );
        data << guid;

        // Check for known nodes
        if ( (GetPlayer( )->GetTaximask(field) & submask) != submask )
        {
                data << uint8( 0 );
        }
        else
        {
                data << uint8( 1 );
        }

        SendPacket( &data );
        sLog.outDebug( "WORLD: Sent SMSG_TAXINODE_STATUS" );
}


void WorldSession::HandleTaxiQueryAvaibleNodesOpcode( WorldPacket & recv_data )
{
        if(!_player->IsInWorld()) return;
        sLog.outDebug( "WORLD: Received CMSG_TAXIQUERYAVAILABLENODES" );
        uint64 guid;
        recv_data >> guid;
        Creature *pCreature = _player->GetMapMgr()->GetCreature(GET_LOWGUID_PART(guid));
        if(!pCreature) return;

        SendTaxiList(pCreature);
}

void WorldSession::SendTaxiList(Creature* pCreature)
{
        uint32 curloc;
        uint8 field;
        uint32 TaxiMask[12];
        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
        memset(TaxiMask, 0, sizeof(uint32)*8);
        sTaxiMgr.GetGlobalTaxiNodeMask(curloc, TaxiMask);
        TaxiMask[field] |= 1 << ((curloc-1)%32);

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

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

        sLog.outDebug( "WORLD: Sent SMSG_SHOWTAXINODES" );
}

不知道有没有人有兴趣 最好是在线大学生

2

主题

50

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2009-5-20 14:52:00 | 显示全部楼层

Re:手上有套缘码.想一起研究学习

这是Mangos还是Ascent呢?人家开源的吧

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2009-5-22 11:03:00 | 显示全部楼层

Re:手上有套缘码.想一起研究学习

说说你研究源码要达到的学习目的吧

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-6-3 13:09:00 | 显示全部楼层

Re:手上有套缘码.想一起研究学习

请问那有Ascent写的某些客户端的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 04:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表