private void UpdateRoleJueXingData(GameServerClient client, int nID, byte[] cmdParams, int count) { try { string cmdData = new UTF8Encoding().GetString(cmdParams, 0, count); string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 3) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true); client.sendCmd <int>(nID, -4); } int roleID = Convert.ToInt32(fields[0]); int suitid = Convert.ToInt32(fields[1]); string activite = fields[2]; DBRoleInfo dbRoleInfo = DBManager.getInstance().FindDBRoleInfo(ref roleID); if (null == dbRoleInfo) { LogManager.WriteLog(LogTypes.Error, string.Format("发起请求的角色不存在,CMD={0}, RoleID={1}", (TCPGameServerCmds)nID, roleID), null, true); client.sendCmd(30767, "0"); } else { using (MyDbConnection3 conn = new MyDbConnection3(false)) { string cmdText = string.Format("REPLACE INTO t_juexing(rid, suitid, activite) VALUES('{0}', '{1}', '{2}')", roleID, suitid, activite); conn.ExecuteNonQuery(cmdText, 0); } TaoZhuangData suitData = dbRoleInfo.JueXingTaoZhuangList.Find((TaoZhuangData _g) => _g.ID == suitid); if (null == suitData) { suitData = new TaoZhuangData { ID = suitid, ActiviteList = new List <int>() }; dbRoleInfo.JueXingTaoZhuangList.Add(suitData); } suitData.ActiviteList = Array.ConvertAll <string, int>(activite.Split(new char[] { ',' }), (string x) => Convert.ToInt32(x)).ToList <int>(); client.sendCmd <int>(nID, 0); } } catch (Exception ex) { LogManager.WriteException(ex.Message); client.sendCmd <int>(nID, -8); } }
public void UpdateTaoZhuangAttr(GameClient client, TaoZhuangData taoZhuangEquip, ref List <PassiveSkillData> passiveSkillList, ref double[] _ExtProps) { if (null != taoZhuangEquip) { TaoZhuang taoZhuang; if (this.JueXingRunTimeData.TaoZhuangDict.TryGetValue(taoZhuangEquip.ID, out taoZhuang)) { int canActiveCount = taoZhuangEquip.ActiviteList.FindAll(delegate(int _x) { JueXingShiItem stone; return(this.JueXingRunTimeData.JueXingShiDict.TryGetValue(_x, out stone) && this.CanAddAttribute(client, stone.Position)); }).Count; if (canActiveCount >= taoZhuang.TaoZhuangProps3Num && taoZhuang.TaoZhuangProps3Num > 0) { for (int i = 0; i < 177; i++) { _ExtProps[i] += taoZhuang.TaoZhuangProps3[i]; _ExtProps[i] += taoZhuang.TaoZhuangProps2[i]; _ExtProps[i] += taoZhuang.TaoZhuangProps1[i]; } } else if (canActiveCount >= taoZhuang.TaoZhuangProps2Num && taoZhuang.TaoZhuangProps2Num > 0) { for (int i = 0; i < 177; i++) { _ExtProps[i] += taoZhuang.TaoZhuangProps2[i]; _ExtProps[i] += taoZhuang.TaoZhuangProps1[i]; } } else if (canActiveCount >= taoZhuang.TaoZhuangProps1Num && taoZhuang.TaoZhuangProps1Num > 0) { for (int i = 0; i < 177; i++) { _ExtProps[i] += taoZhuang.TaoZhuangProps1[i]; } } if (taoZhuang.Type == 1) { client.ClientData.PropsCacheManager.SetExtProps(new object[] { PropsSystemTypes.WeaponMaster, new double[177] }); if (canActiveCount >= taoZhuang.WeaponMasterNum) { WeaponMaster.UpdateRoleAttr(client, taoZhuang.WeaponMasterType, false); } } foreach (List <int> skillItem in taoZhuang.PassiveSkill) { if (skillItem.Count > 1 && canActiveCount >= skillItem[0]) { for (int i = 1; i < skillItem.Count; i++) { SystemXmlItem systemMagic = null; if (GameManager.SystemMagicsMgr.SystemXmlItemDict.TryGetValue(skillItem[i], out systemMagic)) { passiveSkillList.Add(new PassiveSkillData { skillId = skillItem[i], triggerRate = (int)(systemMagic.GetDoubleValue("TriggerOdds") * 100.0), triggerType = systemMagic.GetIntValue("TriggerType", -1), coolDown = systemMagic.GetIntValue("CDTime", -1), triggerCD = systemMagic.GetIntValue("TriggerCD", -1) }); } } } } foreach (List <int> item in taoZhuang.PassiveEffect) { if (item.Count > 1 && canActiveCount >= item[0]) { for (int i = 1; i < item.Count; i++) { client.PassiveEffectList.Add(item[i]); } } } } } }
public bool ProcessJueXingJiHuoCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { if (!CheckHelper.CheckCmdLengthAndRole(client, nID, cmdParams, 3)) { return(false); } int suitID = Convert.ToInt32(cmdParams[1]); int stoneID = Convert.ToInt32(cmdParams[2]); TaoZhuang taoZhuang; int result; JueXingShiItem jueXingItem; if (!this.JueXingRunTimeData.TaoZhuangDict.TryGetValue(suitID, out taoZhuang)) { result = -2; } else if (!this.JueXingRunTimeData.JueXingShiDict.TryGetValue(stoneID, out jueXingItem)) { result = -2; } else if (jueXingItem.SuitParent != suitID) { result = -5; } else { JueXingShiData jueXingData = client.ClientData.JueXingData; List <TaoZhuangData> jueXingList = jueXingData.TaoZhuangList; TaoZhuangData suitData = jueXingList.Find((TaoZhuangData _g) => _g.ID == suitID); if (null == suitData) { suitData = new TaoZhuangData { ID = suitID, ActiviteList = new List <int>() }; jueXingList.Add(suitData); } if (suitData.ActiviteList.Contains(stoneID)) { result = -1; } else { int needGoods = jueXingItem.NeedGoodsID; int needNum = jueXingItem.NeedGoodsNum; bool usedBinding; bool usedTimeLimited; if (Global.UseGoodsBindOrNot(client, needGoods, needNum, true, out usedBinding, out usedTimeLimited) < 1) { result = -3; } else { suitData.ActiviteList.Add(stoneID); string strcmd = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, suitID, string.Join <int>(",", suitData.ActiviteList)); result = Global.sendToDB <int, string>(20318, strcmd, client.ServerId); Global.RefreshEquipProp(client); GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7); } } } client.sendCmd(nID, string.Format("{0}:{1}:{2}", result, suitID, stoneID), false); return(true); } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, string.Format("JueXing :: 激活觉醒石错误。rid:{0}, ex:{1}", client.ClientData.RoleID, ex.Message), null, true); } return(false); }