public void onPlayerLogout(int roleId) { MerlinRankingInfo data = null; lock (this.playerMerlinDatas) { this.playerMerlinDatas.TryGetValue(roleId, out data); if (null != data) { this.playerMerlinDatas.Remove(roleId); } } }
public MerlinRankingInfo getMerlinData(int nRoleID) { MerlinRankingInfo data = null; lock (this.playerMerlinDatas) { if (this.playerMerlinDatas.TryGetValue(nRoleID, out data)) { return(data); } } return(MerlinRankDBController.getInstance().getMerlinDataByRoleID(nRoleID)); }
public void OnChangeName(int roleId, string oldName, string newName) { if (!string.IsNullOrEmpty(oldName) && !string.IsNullOrEmpty(newName)) { lock (this.playerMerlinDatas) { MerlinRankingInfo data = null; if (this.playerMerlinDatas.TryGetValue(roleId, out data)) { data.strRoleName = newName; } } } }
public void ModifyMerlinRankData(MerlinRankingInfo data, bool bIsLogin) { if (null != data) { lock (this.rankingDatas) { PlayerMerlinRankingData result = this.rankingDatas.Find((PlayerMerlinRankingData paiHang) => paiHang.roleId == data.nRoleID); if (null == result) { if (this.rankingDatas.Count < MerlinRankManager.RankingList_Max_Num) { this.rankingDatas.Add(data.getPlayerMerlinRankingData()); } else if (data.nLevel * 20 + data.nStarNum > this.rankingDatas[this.rankingDatas.Count - 1].Level * 20 + this.rankingDatas[this.rankingDatas.Count - 1].StarNum) { this.rankingDatas.RemoveAt(this.rankingDatas.Count - 1); this.rankingDatas.Add(data.getPlayerMerlinRankingData()); } try { this.rankingDatas.Sort(); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } } else if (!bIsLogin) { try { result.UpdateData(data); this.rankingDatas.Sort(); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } } } } }
public int createMerlinData(int nRoleID) { MerlinRankingInfo data = null; lock (this.playerMerlinDatas) { if (this.playerMerlinDatas.ContainsKey(nRoleID)) { return(0); } data = this.getMerlinData(nRoleID); if (null != data) { this.playerMerlinDatas.Add(data.nRoleID, data); } } if (null != data) { this.ModifyMerlinRankData(data, false); } return(1); }
public void onPlayerLogin(int roleId, string strRoleName) { MerlinRankingInfo data = null; lock (this.playerMerlinDatas) { if (this.playerMerlinDatas.TryGetValue(roleId, out data)) { return; } } if (null == data) { data = MerlinRankDBController.getInstance().getMerlinDataByRoleID(roleId); if (null != data) { this.ModifyMerlinRankData(data, true); lock (this.playerMerlinDatas) { this.playerMerlinDatas.Add(data.nRoleID, data); } } } }
public TCPProcessCmdResults ProcessUpdateMerlinDataCmd(DBManager dbMgr, GameServerClient client, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; bool bRet = false; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true); client.sendCmd <bool>(nID, bRet); return(TCPProcessCmdResults.RESULT_OK); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 15) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true); client.sendCmd <bool>(nID, bRet); return(TCPProcessCmdResults.RESULT_OK); } int nRoleID = Convert.ToInt32(fields[0]); DBRoleInfo dbRoleInfo = dbMgr.GetDBRoleInfo(ref nRoleID); if (null == dbRoleInfo) { LogManager.WriteLog(LogTypes.Error, string.Format("发起请求的角色不存在,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, nRoleID), null, true); client.sendCmd <bool>(nID, bRet); return(TCPProcessCmdResults.RESULT_OK); } long lTmpToTicks = 0L; if (fields[6] != "*") { lTmpToTicks = Convert.ToInt64(fields[6]); } bRet = MerlinDBOperate.UpdateMerlinData(dbMgr, nRoleID, fields, 1); if (!bRet) { LogManager.WriteLog(LogTypes.Error, string.Format("更新梅林魔法书失败,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, nRoleID), null, true); } else { dbRoleInfo = dbMgr.GetDBRoleInfo(ref nRoleID); if (null != dbRoleInfo) { lock (dbRoleInfo) { dbRoleInfo.MerlinData._Level = DataHelper.ConvertToInt32(fields[1], dbRoleInfo.MerlinData._Level); dbRoleInfo.MerlinData._LevelUpFailNum = DataHelper.ConvertToInt32(fields[2], dbRoleInfo.MerlinData._LevelUpFailNum); dbRoleInfo.MerlinData._StarNum = DataHelper.ConvertToInt32(fields[3], dbRoleInfo.MerlinData._StarNum); dbRoleInfo.MerlinData._StarExp = DataHelper.ConvertToInt32(fields[4], dbRoleInfo.MerlinData._StarExp); dbRoleInfo.MerlinData._LuckyPoint = DataHelper.ConvertToInt32(fields[5], dbRoleInfo.MerlinData._LuckyPoint); if (fields[6] != "*") { dbRoleInfo.MerlinData._ToTicks = lTmpToTicks; } if (fields[7] != "*") { dbRoleInfo.MerlinData._ActiveAttr[0] = (double)(Global.SafeConvertToInt32(fields[7], 10) / 100); } if (fields[8] != "*") { dbRoleInfo.MerlinData._ActiveAttr[1] = (double)(Global.SafeConvertToInt32(fields[8], 10) / 100); } if (fields[9] != "*") { dbRoleInfo.MerlinData._ActiveAttr[2] = (double)(Global.SafeConvertToInt32(fields[9], 10) / 100); } if (fields[10] != "*") { dbRoleInfo.MerlinData._ActiveAttr[3] = (double)(Global.SafeConvertToInt32(fields[10], 10) / 100); } if (fields[11] != "*") { dbRoleInfo.MerlinData._UnActiveAttr[0] = (double)(Global.SafeConvertToInt32(fields[11], 10) / 100); } if (fields[12] != "*") { dbRoleInfo.MerlinData._UnActiveAttr[1] = (double)(Global.SafeConvertToInt32(fields[12], 10) / 100); } if (fields[13] != "*") { dbRoleInfo.MerlinData._UnActiveAttr[2] = (double)(Global.SafeConvertToInt32(fields[13], 10) / 100); } if (fields[14] != "*") { dbRoleInfo.MerlinData._UnActiveAttr[3] = (double)(Global.SafeConvertToInt32(fields[14], 10) / 100); } } MerlinRankingInfo MerlinInfo = MerlinRankManager.getInstance().getMerlinData(nRoleID); if (null != MerlinInfo) { if (MerlinInfo.nLevel != dbRoleInfo.MerlinData._Level || MerlinInfo.nStarNum != dbRoleInfo.MerlinData._StarNum) { MerlinInfo.nLevel = dbRoleInfo.MerlinData._Level; MerlinInfo.nStarNum = dbRoleInfo.MerlinData._StarNum; MerlinRankManager.getInstance().ModifyMerlinRankData(MerlinInfo, false); } } } } client.sendCmd <bool>(nID, bRet); return(TCPProcessCmdResults.RESULT_OK); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } client.sendCmd <bool>(nID, bRet); return(TCPProcessCmdResults.RESULT_OK); }