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); } } } }
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); }
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); }