/// <summary> /// guid 取得 玩家暱稱 /// </summary> /// <param name="guid"></param> /// <returns></returns> public string GetAccountFromGuid(Guid guid) // 以 guid 取得 玩家暱稱 { if (!GuidGetPrimary.ContainsKey(guid)) { return(null); //找不到 } else { return(PrimaryGetAccount[GuidGetPrimary[guid]]); // 用guid找PrimaryID 再用PrimaryID找 暱稱 } }
/// <summary> /// 以 Guid 取得 玩家資料 /// </summary> /// <param name="guid"></param> /// <returns> /// 1.成功=Actor /// 2.失敗=null /// </returns> public Actor GetActorFromGuid(Guid guid) // 以 guid 取得 玩家資料 { if (!GuidGetPrimary.ContainsKey(guid)) { return(null); //找不到 } else { return(GetActorFromPrimary(GuidGetPrimary[guid])); // 用guid找PrimaryID 再用PrimaryID找 玩家資料 } }
/// <summary> /// 登出一筆會員資料,會順便移除Peer /// </summary> /// <param name="primaryID"></param> public void ActorKick(int primaryID) { isKick = !isKick; Log.Debug("KICK"); ActorReturn actorReturn = new ActorReturn(); Guid guid = Guid.Empty; lock (this) { try { if (PrimaryGetGuid.ContainsKey(primaryID)) { guid = GetGuidFromPrimary(primaryID); RemoveConnectedPeer(guid); // 移除Peer Log.Debug("(IN)HE Guid IS :" + guid); } Log.Debug("(OUT)HE Guid IS :" + guid); int _PrimaryID = 0; if (GuidGetPrimary.ContainsKey(guid)) // 若有資料 { Log.Debug("KICK 移除GUID:" + guid); _PrimaryID = GuidGetPrimary[guid]; GuidGetPrimary.Remove(guid); // 移除guid列表資料 if (PrimaryGetActor.ContainsKey(_PrimaryID)) // 若會員列表有資料 { Actor actor = GetActorFromPrimary(_PrimaryID); // 先取得會員資料 if (PrimaryGetNickname.ContainsKey(_PrimaryID)) // 移除 索引找會員名稱列表 { PrimaryGetNickname.Remove(_PrimaryID); } if (PrimaryGetAccount.ContainsKey(_PrimaryID)) // 移除 索引找會員名稱列表 { PrimaryGetAccount.Remove(_PrimaryID); } if (PrimaryGetGuid.ContainsKey(_PrimaryID)) // 移除線上GUID名稱列表 { PrimaryGetGuid.Remove(_PrimaryID); } if (AccountGetPrimary.ContainsKey(actor.Account)) // 移除會員帳號索引列表資料 { AccountGetPrimary.Remove(actor.Account); } if (NicknameGetPrimary.ContainsKey(actor.Nickname)) // 移除會員暱稱索引列表資料 { NicknameGetPrimary.Remove(actor.Nickname); } PrimaryGetActor.Remove(_PrimaryID); // 移除會員列表資料 actorReturn.ReturnCode = "S308"; actorReturn.DebugMessage = "移除玩家成功"; } } } catch (Exception e) { Log.Debug("沒移除PrimaryID:" + primaryID); actorReturn.ReturnCode = "S309"; actorReturn.DebugMessage = "不在線上列表 " + e.Message; } } }
/// <summary> /// 登出一筆會員資料,會順便移除Peer /// </summary> /// <param name="Guid"></param> public void ActorOffline(Guid guid) { if (!isKick) { ActorReturn actorReturn = new ActorReturn(); lock (this) { try { RemoveConnectedPeer(guid); // 移除Peer int _PrimaryID = 0; if (GuidGetPrimary.ContainsKey(guid)) // 若有資料 { Log.Debug("OFF 移除GUID:" + guid); _PrimaryID = GuidGetPrimary[guid]; GuidGetPrimary.Remove(guid); // 移除guid列表資料 if (PrimaryGetActor.ContainsKey(_PrimaryID)) // 若會員列表有資料 { Actor actor = GetActorFromPrimary(_PrimaryID); // 先取得會員資料 if (PrimaryGetNickname.ContainsKey(_PrimaryID)) // 移除 索引找會員名稱列表 { PrimaryGetNickname.Remove(_PrimaryID); } if (PrimaryGetAccount.ContainsKey(_PrimaryID)) // 移除 索引找會員名稱列表 { PrimaryGetAccount.Remove(_PrimaryID); } if (PrimaryGetGuid.ContainsKey(_PrimaryID)) // 移除線上GUID名稱列表 { PrimaryGetGuid.Remove(_PrimaryID); } if (AccountGetPrimary.ContainsKey(actor.Account)) // 移除會員帳號索引列表資料 { AccountGetPrimary.Remove(actor.Account); } if (NicknameGetPrimary.ContainsKey(actor.Nickname)) // 移除會員暱稱索引列表資料 { NicknameGetPrimary.Remove(actor.Nickname); } PrimaryGetActor.Remove(_PrimaryID); // 移除會員列表資料 actorReturn.ReturnCode = "S308"; actorReturn.DebugMessage = "移除玩家成功!"; } } } catch (Exception e) { Log.Debug("沒移除GUID:" + guid); actorReturn.ReturnCode = "S309"; actorReturn.DebugMessage = "不在線上列表 " + e.Message; } } } }