Exemplo n.º 1
0
        public void onPlayerLogout(int roleId)
        {
            MerlinRankingInfo data = null;

            lock (this.playerMerlinDatas)
            {
                this.playerMerlinDatas.TryGetValue(roleId, out data);
                if (null != data)
                {
                    this.playerMerlinDatas.Remove(roleId);
                }
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 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;
             }
         }
     }
 }
Exemplo n.º 4
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
                    }
                }
            }
        }
Exemplo n.º 7
0
        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);
        }