Example #1
0
        private void ShenJiModify(GameServerClient client, int nID, byte[] cmdParams, int count)
        {
            string[] fields = null;
            int      length = 3;

            if (!CheckHelper.CheckTCPCmdFields(nID, cmdParams, count, out fields, length))
            {
                client.sendCmd <bool>(nID, false);
            }
            else
            {
                int        roleID     = int.Parse(fields[0]);
                int        shenjiID   = int.Parse(fields[1]);
                int        shenjiLev  = int.Parse(fields[2]);
                DBRoleInfo dbRoleInfo = DBManager.getInstance().FindDBRoleInfo(ref roleID);
                if (null == dbRoleInfo)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("精灵神迹,找不到玩家 roleid={0}", roleID), null, true);
                    client.sendCmd(30767, "0");
                }
                else
                {
                    bool ret = false;
                    using (MyDbConnection3 conn = new MyDbConnection3(false))
                    {
                        string cmdText = string.Format("REPLACE INTO t_shenjifuwen(rid, sjID, level) VALUES('{0}', '{1}', '{2}')", roleID, shenjiID, shenjiLev);
                        ret = conn.ExecuteNonQueryBool(cmdText, 0);
                    }
                    if (!ret)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("更新角色更新精灵神迹数据失败,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, roleID), null, true);
                        client.sendCmd <bool>(nID, ret);
                    }
                    else
                    {
                        lock (dbRoleInfo.ShenJiDict)
                        {
                            ShenJiFuWenData data = new ShenJiFuWenData
                            {
                                ShenJiID = shenjiID,
                                Level    = shenjiLev
                            };
                            dbRoleInfo.ShenJiDict[shenjiID] = data;
                        }
                        client.sendCmd <bool>(nID, ret);
                    }
                }
            }
        }
Example #2
0
        private ShenJiFuWenData GetShenJiFuWenData(GameClient client, int shenjiID)
        {
            ShenJiFuWenData result;

            if (null == client.ClientData.ShenJiDataDict)
            {
                result = null;
            }
            else
            {
                ShenJiFuWenData data = null;
                if (!client.ClientData.ShenJiDataDict.TryGetValue(shenjiID, out data))
                {
                    result = null;
                }
                else
                {
                    result = data;
                }
            }
            return(result);
        }
Example #3
0
 public bool ProcessShenJiAddEffectCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams)
 {
     try
     {
         int result   = 0;
         int roleID   = Convert.ToInt32(cmdParams[0]);
         int shenjiID = Convert.ToInt32(cmdParams[1]);
         Dictionary <int, ShenJiFuWenConfigData> tempShenJiConfig = null;
         lock (this.ConfigMutex)
         {
             tempShenJiConfig = this.ShenJiConfig;
         }
         ShenJiFuWenConfigData sConfigData = null;
         if (!tempShenJiConfig.TryGetValue(shenjiID, out sConfigData))
         {
             result = 1;
             client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[]
             {
                 result,
                 roleID,
                 shenjiID,
                 0
             }), false);
             return(true);
         }
         ShenJiFuWenData actData = this.GetShenJiFuWenData(client, shenjiID);
         if (actData != null && actData.Level >= sConfigData.MaxLevel)
         {
             result = 2;
             client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[]
             {
                 result,
                 roleID,
                 shenjiID,
                 0
             }), false);
             return(true);
         }
         if (sConfigData.UpNeed > GameManager.ClientMgr.GetShenJiPointValue(client))
         {
             result = 2;
             client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[]
             {
                 result,
                 roleID,
                 shenjiID,
                 0
             }), false);
             return(true);
         }
         ShenJiFuWenConfigData preConfigData = null;
         if (tempShenJiConfig.TryGetValue(sConfigData.PreShenJiID, out preConfigData))
         {
             ShenJiFuWenData preData = this.GetShenJiFuWenData(client, sConfigData.PreShenJiID);
             if (preData == null || sConfigData.PreShenJiLev > preData.Level)
             {
                 result = 2;
                 client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[]
                 {
                     result,
                     roleID,
                     shenjiID,
                     0
                 }), false);
                 return(true);
             }
         }
         if (null == actData)
         {
             actData = new ShenJiFuWenData
             {
                 ShenJiID = shenjiID
             };
             client.ClientData.ShenJiDataDict[shenjiID] = actData;
         }
         GameManager.ClientMgr.ModifyShenJiPointValue(client, -sConfigData.UpNeed, "精灵神迹升级|激活", true, true);
         actData.Level++;
         this.UpdateShenJiFuWenDataDB(client, shenjiID, actData.Level);
         this.RefreshShenJiFuWenProps(client);
         client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[]
         {
             result,
             roleID,
             shenjiID,
             actData.Level
         }), false);
         return(true);
     }
     catch (Exception ex)
     {
         DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
     }
     return(false);
 }