Ejemplo n.º 1
0
        public void LeavePlanes(ulong roleId)
        {
            OffPlayerData data = new OffPlayerData();

            lock (this)
            {
                var player = mPlayers[roleId];
                if (player != null)
                {
                    player.CalcAllOffValues();
                    data.value = player.FinalRoleValue;
                    var equip = player.EquipBag.FindItemByPos((int)CSCommon.eEquipType.Soul);
                    if (equip == null)
                    {
                        equip = player.EquipBag.FindItemByPos((int)CSCommon.eEquipType.Weapon);
                    }
                    data.WeapFacdeid = equip.ItemTemplate.id;
                    data.skills      = player.PlayerData.SkillDatas;

                    player.PlanesInstance = null;
                }
                mPlayers.Remove(roleId);
            }

            {
                if (data.value != null)
                {
                    byte[]            offvaluebytes = data.Serialize();
                    RPC.PackageWriter pkg           = new RPC.PackageWriter();
                    H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_RoleLogout(pkg, roleId, offvaluebytes);
                    pkg.DoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType);
                }
            }
        }
Ejemplo n.º 2
0
        public static void CreatePlayerImage(CSCommon.MapInfo_Npc nd, MapInstance map, ulong playerId)
        {
            PlayerImage ret = new PlayerImage();

            ret.mId = ServerFrame.Util.GenerateObjID(ServerFrame.GameObjectType.PlayerImage);

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_GetOffPlayerData(pkg, playerId);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, new System.Diagnostics.StackTrace(1, true)).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut)
            {
                CSCommon.Data.RoleCom rc = new CSCommon.Data.RoleCom();
                _io.Read(rc);
                OffPlayerData pd = new OffPlayerData();
                pd.Deserizle(rc);

                ret.InitPlayerData(pd, rc);

                var init = new NpcInit();
                init.GameType     = eActorGameType.PlayerImage;
                init.Data         = nd;
                init.OwnerMapData = map.MapInfo;
                if (!ret.Initialize(init))
                {
                    return;
                }

                ret.mAttackTarget = playerId;
                ret.Reborn();
                ret.OnEnterMap(map);
            };
        }
Ejemplo n.º 3
0
        protected bool InitPlayerData(OffPlayerData pd, RoleCom rc)
        {
            mPlayerData = pd;
            mRoleData   = rc;
            SkillMgr.InitBag(this, pd.skills);

            return(true);
        }