예제 #1
0
 /// <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找 暱稱
     }
 }
예제 #2
0
 /// <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找 玩家資料
     }
 }
예제 #3
0
        /// <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;
                }
            }
        }
예제 #4
0
        /// <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;
                    }
                }
            }
        }