コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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]);
                     }
                 }
             }
         }
     }
 }
コード例 #3
0
 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);
 }