/// <summary> /// 加入一筆線上會員資料(成功回傳 (1),不成功回傳 (2)錯誤碼) /// </summary> /// <param name="guid"></param> /// <param name="PrimaryID"></param> /// <param name="Account"></param> /// <param name="Nickname"></param> /// <param name="Age"></param> /// <param name="Sex"></param> /// <param name="IP"></param> /// <param name="ServerPeer"></param> /// <returns></returns> public ActorReturn ActorOnline(Guid guid, int PrimaryID, string Account, string Nickname, byte Age, byte Sex, string IP, MPServerPeer serverPeer) { ActorReturn actorReturn = new ActorReturn(); actorReturn.ReturnCode = "S300"; if (PrimaryID <= 0) { actorReturn.ReturnCode = "S303"; actorReturn.DebugMessage = "PrimaryID必須有索引值!"; return(actorReturn); } if (Account.Length <= 0) { actorReturn.ReturnCode = "S304"; actorReturn.DebugMessage = "Account必須填入帳號!"; return(actorReturn); } if (Nickname.Length <= 0) { actorReturn.ReturnCode = "S305"; actorReturn.DebugMessage = "Nickname必須填入角色名稱!"; return(actorReturn); } if (Age <= 0) { actorReturn.ReturnCode = "S306"; actorReturn.DebugMessage = "Age必須填入年齡!"; return(actorReturn); } if (Sex < 0) { actorReturn.ReturnCode = "S307"; actorReturn.DebugMessage = "Sex必須填入性別!"; return(actorReturn); } try { lock (this) { // PrimaryGetGuid[i] 不能有null值 不能用來判斷bool ,PrimaryGetGuid.ContainsKey(i) 可以用來判斷bool // 檢查dictGetAccounts的索引確保沒有重複登入 if (PrimaryGetGuid.ContainsKey(PrimaryID)) { actorReturn.ReturnCode = "S302"; actorReturn.DebugMessage = "重複登入!"; return(actorReturn); // 不允許重複登入 } else { Log.Debug("登入的GUID:" + guid); GuidGetPrimary.Add(guid, PrimaryID); // 加入guid索引會員編號的列表 Actor actor = new Actor(guid, PrimaryID, Account, Nickname, Age, Sex, IP); actor.LoginTime = System.DateTime.Now; // 登入時間 actor.GameStatus = 1; // 代表上線中(閒置) if (!ConnectedClients.ContainsKey(guid)) { ConnectedClients.Add(guid, serverPeer); Log.Debug("ADD Peer!"); } if (!PrimaryGetActor.ContainsKey(PrimaryID)) { PrimaryGetActor.Add(PrimaryID, actor); // 加入線上會員列表 } if (!PrimaryGetNickname.ContainsKey(PrimaryID)) // 加入線上會員名稱 索引 { PrimaryGetNickname.Add(PrimaryID, Nickname); } if (!PrimaryGetAccount.ContainsKey(PrimaryID)) // 加入線上帳號名稱 索引 { PrimaryGetAccount.Add(PrimaryID, Account); } if (!PrimaryGetGuid.ContainsKey(PrimaryID)) // 加入線上GUID名稱 索引 { PrimaryGetGuid.Add(PrimaryID, guid); } if (!AccountGetPrimary.ContainsKey(Account)) // 若會員帳號索引會員編號列表沒有資料,加入索引 { AccountGetPrimary.Add(Account, PrimaryID); } if (!NicknameGetPrimary.ContainsKey(Nickname)) // 若會員帳號暱稱索引會員編號列表沒有資料,加入索引 { NicknameGetPrimary.Add(Nickname, PrimaryID); } actorReturn.ReturnCode = "S301"; // 加入線上會員資料成功 actorReturn.DebugMessage = ""; } } return(actorReturn); } catch (Exception e) { Log.Debug("Actors例外: " + e); actorReturn.ReturnCode = "S399"; // 加入線上會員資料成功 actorReturn.DebugMessage = "未知例外情況"; return(actorReturn); } }
public void AddConnectedPeer(Guid guid, MPServerPeer serverPeer) // 加入連接的Peer { ConnectedClients.Add(guid, serverPeer); }