51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4215|回复: 0
打印 上一主题 下一主题

传奇源码分析-客户端(游戏逻辑处理源分析五 服务器端响应)

[复制链接]
  • TA的每日心情
    慵懒
    2015-1-8 08:46
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-12-13 10:50:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    游戏服务器执行流程:(玩家走动)
        GameSrv服务器ProcessUserHuman线程处理玩家消息:
    遍历UserInfoList列表,依次调用每个UserInfo的Operate来处理命令队列中的所有操作; pUserInfo->Operate()调用m_pxPlayerObject->Operate()调用。
    判断玩家if (!m_fIsDead),如果已死,则发送_MSG_FAIL消息。我们在前面看到过,该消息是被优先处理的。否则则调用WalkTo,并发送_MSG_GOOD消息给客户端。
    WalkTo函数的流程:
    1) WalkNextPos 根据随机值产生,八个方向的坐标位置。
    2) WalkXY怪物走动到一个坐标值中。
    CheckDoorEvent根据pMapCellInfo->m_sLightNEvent返回四种状态。
    a) 要移动的位置是一扇门 _DOOR_OPEN
    b) 不是一扇门 _DOOR_NOT
    c) 是一扇门不可以打开返回 _DOOR_MAPMOVE_BACK或_DOOR_MAPMOVE_FRONT玩家前/后移动
    3) 如果_DOOR_OPEN则发送SM_DOOROPEN消息给周围玩家。
    4) m_pMap->CanMove如果可以移动,则MoveToMovingObject从当前点移动到另一点。并发送AddRefMsg(RM_WALK)给周围玩家。
        AddRefMsg函数,我们在后面的服务器代码里分析过:它会根据X,Y坐标,在以自己坐标为中心周围26*26区域里面,按地图单元格的划分,遍历所有单元格,再遍历所有单元格内的玩家列表,广播发送RM_WALK消息。

    客户端执行流程:(反馈服务器端本玩家走动)
    1. 服务器如果发送_MSG_FAIL 由客户端CGameProcess::OnProcPacketNotEncode处理。
         m_xMyHero.SetOldPosition();
    人:  SetMotionFrame(_MT_STAND
               AdjustMyPostion(); 重绘地图
               m_bMotionLock = m_bInputLock = FALSE;

    骑马:SetMotionFrame(_MT_HORSESTAND
                AdjustMyPostion(); 重绘地图
                m_bMotionLock = m_bInputLock = FALSE;
       2. 服务器如果发送_MSG_GOOD, 由客户端CGameProcess::OnProcPacketNotEncode处理。m_xMyHero.m_bMotionLock = FALSE;

    其它客户端执行流程:(反馈服务器端其它玩家)
    1.其它玩家:

    人: SetMotionFrame(_MT_WALK, bDir);

    骑马:SetMotionFrame(_MT_HORSEWALK, bDir);
         m_bMoveSpeed = _SPEED_WALK;
         SetMoving(); 设置m_shShiftPixelX, m_shShiftPixelY坐标。
    2.NPC,怪物:
    SetMotionFrame(_MT_MON_WALK, bDir);
         m_bMoveSpeed = _SPEED_WALK;
         SetMoving(); 设置m_shShiftPixelX, m_shShiftPixelY坐标。
    CGameProcess::RenderObject->DrawActor(m_shShiftPixelX, m_shShiftPixelY)重绘发消息的玩家,NPC怪物位置。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 09:37 , Processed in 0.060119 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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