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); } } }
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); }; }
protected bool InitPlayerData(OffPlayerData pd, RoleCom rc) { mPlayerData = pd; mRoleData = rc; SkillMgr.InitBag(this, pd.skills); return(true); }