以前写的,一点点从新浪里搬过来
客户端登录验证(GameServer服务器的线程 ProcessLogin处理)
用户的验证是由GameServer服务器的线程 ProcessLogin处理。然后在准备登陆的玩家队列中ReadyUserInfoList2列表中搜索,判断用户是否已经登录,一旦登录就调用LoadPlayer:
先加载地图的单元格(玩家列表加入该游戏玩家)
前面博客讲过游戏客户端和玩家客户端二种所描绘的不是一样事物。
选脚色,判断玩家游戏状态。登陆以外的通用Mode状态为USERMODE_PLAY
优先加载背包,个人设置等。
passUserInfo->mapxPlayerObject->Initialize();初始化用户信息,加载用户坐标,方向,地图。
<wbr></wbr>
以下为初始化成功的执行流程:
1)AddProcess <wbr><wbr>LOGON R <wbr>加入登录消息。</wbr></wbr></wbr>
2)所在场景区域的编号MApSrvmap->制定场景AddNewObject 地图中单元格(玩家列表)加入该游戏玩家。OS_MOVINGOBJECT玩家状态。
3)AddRefMsg(Round_TURN 向周围玩家群发 TURN消息。以玩家自己为中心,以 xx*xx 通常为单屏的区域里,向这个区域所属的块里的所有玩家列表发送消息)广播,位置AddProcess。
4)ReAbility 设置玩家的能力属性(攻击力(手,衣服),武器力量等)。
5)循环处理本游戏玩家的附属物品,把这些物品的力量加到(手,衣服等)的攻击力量里。
6)RM_atuschanged消息,通知玩家状态改变消息。
7)AddProcess <wbr>setlevel <wbr><wbr><wbr>等级</wbr></wbr></wbr></wbr>
AddProces <wbr><wbr><wbr>Msgchanged date/day <wbr><wbr>校正日期信息</wbr></wbr></wbr></wbr></wbr>
AddProcess <wbr>SEITEMS <wbr><wbr><wbr><wbr><wbr>装备</wbr></wbr></wbr></wbr></wbr></wbr>
AddProcess <wbr>SENDMYskil <wbr><wbr>技能</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>AttactMsg() <wbr> 攻击力</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
并把用户数据从UserInfoList2列表中删除。