public static bool IfZhuHunPerfect(GameClient client) { bool result; if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.WingZhuHun, false)) { result = false; } else { ZhuLingZhuHunLimit i = ZhuLingZhuHunManager.GetLimit(client.ClientData.MyWingData.WingID); result = (i != null && client.ClientData.MyWingData.ZhuHunNum >= i.ZhuHunLimit); } return(result); }
public static void SetZhuHunMax_GM(GameClient client) { ZhuLingZhuHunLimit i = ZhuLingZhuHunManager.GetLimit(client.ClientData.MyWingData.WingID); if (i != null) { client.ClientData.MyWingData.ZhuHunNum = i.ZhuHunLimit; MUWingsManager.WingUpDBCommand(client, client.ClientData.MyWingData.DbID, client.ClientData.MyWingData.WingID, client.ClientData.MyWingData.JinJieFailedNum, client.ClientData.MyWingData.ForgeLevel, client.ClientData.MyWingData.StarExp, client.ClientData.MyWingData.ZhuLingNum, client.ClientData.MyWingData.ZhuHunNum); ZhuLingZhuHunManager.UpdateZhuLingZhuHunProps(client); GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7); if (client._IconStateMgr.CheckReborn(client)) { client._IconStateMgr.SendIconStateToClient(client); } } }
public static double GetZhuHunPct(GameClient client) { double pct = 0.0; double result; if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.WingZhuHun, false)) { result = pct; } else { ZhuLingZhuHunLimit i = ZhuLingZhuHunManager.GetLimit(client.ClientData.MyWingData.WingID); if (i == null) { result = pct; } else { pct = (double)client.ClientData.MyWingData.ZhuHunNum / (double)i.ZhuHunLimit; result = pct; } } return(result); }
public static ZhuLingZhuHunError ReqZhuHun(GameClient client) { int oldLevel = client.ClientData.MyWingData.ZhuHunNum; int oldYinLiang = client.ClientData.YinLiang; int oldMoney = client.ClientData.Money1; ZhuLingZhuHunError result; if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.WingZhuHun, false)) { result = ZhuLingZhuHunError.ZhuHunNotOpen; } else { ZhuLingZhuHunLimit i = ZhuLingZhuHunManager.GetLimit(client.ClientData.MyWingData.WingID); if (i == null) { result = ZhuLingZhuHunError.ErrorConfig; } else if (client.ClientData.MyWingData.ZhuHunNum >= i.ZhuHunLimit) { result = ZhuLingZhuHunError.ZhuHunFull; } else if (Global.GetTotalGoodsCountByID(client, ZhuLingZhuHunManager.ZhuHunCostGoodsID) < ZhuLingZhuHunManager.ZhuHunCostGoodsNum) { result = ZhuLingZhuHunError.ZhuHunMaterialNotEnough; } else if (Global.GetTotalBindTongQianAndTongQianVal(client) < ZhuLingZhuHunManager.ZhuHunCostJinBi) { result = ZhuLingZhuHunError.ZhuHunJinBiNotEnough; } else if (!Global.SubBindTongQianAndTongQian(client, ZhuLingZhuHunManager.ZhuHunCostJinBi, "注魂消耗")) { result = ZhuLingZhuHunError.DBSERVERERROR; } else { string strCostList = EventLogManager.NewResPropString(ResLogType.SubJinbi, new object[] { -ZhuLingZhuHunManager.ZhuHunCostJinBi, oldYinLiang, client.ClientData.YinLiang, oldMoney, client.ClientData.Money1 }); bool bUsedBinding = true; bool bUsedTimeLimited = false; if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ZhuLingZhuHunManager.ZhuHunCostGoodsID, ZhuLingZhuHunManager.ZhuHunCostGoodsNum, false, out bUsedBinding, out bUsedTimeLimited, false)) { result = ZhuLingZhuHunError.DBSERVERERROR; } else { GoodsData goodsDataCost = new GoodsData { GoodsID = ZhuLingZhuHunManager.ZhuHunCostGoodsID, GCount = ZhuLingZhuHunManager.ZhuHunCostGoodsNum }; strCostList += EventLogManager.AddGoodsDataPropString(goodsDataCost); int iRet = MUWingsManager.WingUpDBCommand(client, client.ClientData.MyWingData.DbID, client.ClientData.MyWingData.WingID, client.ClientData.MyWingData.JinJieFailedNum, client.ClientData.MyWingData.ForgeLevel, client.ClientData.MyWingData.StarExp, client.ClientData.MyWingData.ZhuLingNum, client.ClientData.MyWingData.ZhuHunNum + 1); if (iRet < 0) { result = ZhuLingZhuHunError.DBSERVERERROR; } else { client.ClientData.MyWingData.ZhuHunNum++; ZhuLingZhuHunManager.UpdateZhuLingZhuHunProps(client); GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7); EventLogManager.AddWingZhuHunEvent(client, oldLevel, client.ClientData.MyWingData.ZhuHunNum, strCostList); if (client._IconStateMgr.CheckReborn(client)) { client._IconStateMgr.SendIconStateToClient(client); } result = ZhuLingZhuHunError.Success; } } } } return(result); }
public static void LoadConfig() { string fileName = "Config/ZhuLingType.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName), null, true); } else { XElement xml2 = xml.Element("Types"); if (xml2 == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName), null, true); } else { IEnumerable <XElement> xmlItems = xml2.Elements(); foreach (XElement xmlItem in xmlItems) { int id = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "ID")); string strGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsID"); int bindJinBi = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "CostBandJinBi")); string[] goods = strGoods.Split(new char[] { ',' }); if (goods.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!! ID={1} 消耗物品配置错误", fileName, id), null, true); } else { int goodsID = Convert.ToInt32(goods[0]); int goodsNum = Convert.ToInt32(goods[1]); if (id == 1) { ZhuLingZhuHunManager.ZhuLingCostGoodsID = goodsID; ZhuLingZhuHunManager.ZhuLingCostGoodsNum = goodsNum; ZhuLingZhuHunManager.ZhuLingCostJinBi = bindJinBi; } else if (id == 2) { ZhuLingZhuHunManager.ZhuHunCostGoodsID = goodsID; ZhuLingZhuHunManager.ZhuHunCostGoodsNum = goodsNum; ZhuLingZhuHunManager.ZhuHunCostJinBi = bindJinBi; } } } } } fileName = "Config/MaxWinZhuLing.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName), null, true); } else { IEnumerable <XElement> xmlItems = xml.Elements(); foreach (XElement xmlItem in xmlItems) { ZhuLingZhuHunLimit i = new ZhuLingZhuHunLimit(); i.SuitID = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "SuitID")); i.ZhuLingLimit = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "PlainZhuLing")); i.ZhuHunLimit = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "SeniorZhuLing")); ZhuLingZhuHunManager.Limit.Add(i); } } fileName = "Config/WinZhuLing.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName), null, true); } else { for (int j = 0; j < 6; j++) { ZhuLingZhuHunManager.Effect.Add(new ZhuLingZhuHunEffect()); } IEnumerable <XElement> xmlItems = xml.Elements(); foreach (XElement xmlItem in xmlItems) { int type = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "TypeID")); int occupation = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "Occupation")); if (occupation < 0 || occupation >= ZhuLingZhuHunManager.Effect.Count <ZhuLingZhuHunEffect>()) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!! 职业配置有问题", fileName), null, true); } else { ZhuLingZhuHunManager.Effect[occupation].Occupation = occupation; if (type == 1) { ZhuLingZhuHunManager.Effect[occupation].MaxAttackV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxAttackV")); ZhuLingZhuHunManager.Effect[occupation].MaxMAttackV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxMAttackV")); ZhuLingZhuHunManager.Effect[occupation].MaxDefenseV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxDefenseV")); ZhuLingZhuHunManager.Effect[occupation].MaxMDefenseV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxMDefenseV")); ZhuLingZhuHunManager.Effect[occupation].LifeV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "LifeV")); ZhuLingZhuHunManager.Effect[occupation].HitV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "HitV")); ZhuLingZhuHunManager.Effect[occupation].DodgeV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "DodgeV")); } else if (type == 2) { ZhuLingZhuHunManager.Effect[occupation].AllAttribute = Global.GetSafeAttributeDouble(xmlItem, "AllAttribute"); } } } } }
public static void LoadConfig() { XElement xml = null; string fileName = null; #region 加载注灵注魂消耗 ZhuLingType.xml fileName = "Config/ZhuLingType.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName)); } else { XElement xml1 = xml.Element("Types"); if (xml1 == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName)); } else { IEnumerable <XElement> xmlItems = xml1.Elements(); foreach (XElement xmlItem in xmlItems) { int id = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "ID")); string strGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsID"); int bindJinBi = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "CostBandJinBi")); string[] goods = strGoods.Split(','); if (goods.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!! ID={1} 消耗物品配置错误", fileName, id)); continue; } int goodsID = Convert.ToInt32(goods[0]); int goodsNum = Convert.ToInt32(goods[1]); if (id == 1) { ZhuLingZhuHunManager.ZhuLingCostGoodsID = goodsID; ZhuLingZhuHunManager.ZhuLingCostGoodsNum = goodsNum; ZhuLingZhuHunManager.ZhuLingCostJinBi = bindJinBi; } else if (id == 2) { ZhuLingZhuHunManager.ZhuHunCostGoodsID = goodsID; ZhuLingZhuHunManager.ZhuHunCostGoodsNum = goodsNum; ZhuLingZhuHunManager.ZhuHunCostJinBi = bindJinBi; } } } } #endregion #region 加载注灵注魂限制 MaxWinZhuLing.xml xml = null; fileName = "Config/MaxWinZhuLing.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName)); } else { IEnumerable <XElement> xmlItems = xml.Elements(); foreach (XElement xmlItem in xmlItems) { ZhuLingZhuHunLimit l = new ZhuLingZhuHunLimit(); l.SuitID = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "SuitID")); l.ZhuLingLimit = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "PlainZhuLing")); l.ZhuHunLimit = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "SeniorZhuLing")); ZhuLingZhuHunManager.Limit.Add(l); } } #endregion #region 加载注灵注魂属性加成 WinZhuLing.xml xml = null; fileName = "Config/WinZhuLing.xml"; GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(fileName)); xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (xml == null) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!!文件不存在", fileName)); } else { for (int i = (int)EOccupationType.EOT_Warrior; i < (int)EOccupationType.EOT_MAX; ++i) { ZhuLingZhuHunManager.Effect.Add(new ZhuLingZhuHunEffect()); } IEnumerable <XElement> xmlItems = xml.Elements(); foreach (XElement xmlItem in xmlItems) { int type = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "TypeID")); //1=注灵 2=注魂 int occupation = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "Occupation")); //0=战士 1=法师 2=弓箭手 3=魔剑士 if (occupation < 0 || occupation >= ZhuLingZhuHunManager.Effect.Count()) { LogManager.WriteLog(LogTypes.Error, string.Format("加载{0}时出错!!! 职业配置有问题", fileName)); continue; } ZhuLingZhuHunManager.Effect[occupation].Occupation = occupation; if (type == 1) { ZhuLingZhuHunManager.Effect[occupation].MaxAttackV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxAttackV")); ZhuLingZhuHunManager.Effect[occupation].MaxMAttackV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxMAttackV")); ZhuLingZhuHunManager.Effect[occupation].MaxDefenseV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxDefenseV")); ZhuLingZhuHunManager.Effect[occupation].MaxMDefenseV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "MaxMDefenseV")); ZhuLingZhuHunManager.Effect[occupation].LifeV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "LifeV")); ZhuLingZhuHunManager.Effect[occupation].HitV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "HitV")); ZhuLingZhuHunManager.Effect[occupation].DodgeV = Convert.ToInt32(Global.GetSafeAttributeStr(xmlItem, "DodgeV")); } else if (type == 2) { ZhuLingZhuHunManager.Effect[occupation].AllAttribute = Global.GetSafeAttributeDouble(xmlItem, "AllAttribute"); } } } #endregion }
public static ZhuLingZhuHunError ReqZhuHun(GameClient client) { if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.WingZhuHun)) { return(ZhuLingZhuHunError.ZhuHunNotOpen); } ZhuLingZhuHunLimit l = ZhuLingZhuHunManager.GetLimit(client.ClientData.MyWingData.WingID); if (l == null) { return(ZhuLingZhuHunError.ErrorConfig); } if (client.ClientData.MyWingData.ZhuHunNum >= l.ZhuHunLimit) { return(ZhuLingZhuHunError.ZhuHunFull); } if (Global.GetTotalGoodsCountByID(client, ZhuLingZhuHunManager.ZhuHunCostGoodsID) < ZhuLingZhuHunManager.ZhuHunCostGoodsNum) { return(ZhuLingZhuHunError.ZhuHunMaterialNotEnough); } if (Global.GetTotalBindTongQianAndTongQianVal(client) < ZhuLingZhuHunManager.ZhuHunCostJinBi) { return(ZhuLingZhuHunError.ZhuHunJinBiNotEnough); } if (!Global.SubBindTongQianAndTongQian(client, ZhuLingZhuHunManager.ZhuHunCostJinBi, "注魂消耗")) { return(ZhuLingZhuHunError.DBSERVERERROR); } bool bUsedBinding = true; bool bUsedTimeLimited = false; if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ZhuLingZhuHunManager.ZhuHunCostGoodsID, ZhuLingZhuHunManager.ZhuHunCostGoodsNum, false, out bUsedBinding, out bUsedTimeLimited)) { return(ZhuLingZhuHunError.DBSERVERERROR); } int iRet = MUWingsManager.WingUpDBCommand(client, client.ClientData.MyWingData.DbID, client.ClientData.MyWingData.WingID, client.ClientData.MyWingData.JinJieFailedNum, client.ClientData.MyWingData.ForgeLevel, client.ClientData.MyWingData.StarExp, client.ClientData.MyWingData.ZhuLingNum, client.ClientData.MyWingData.ZhuHunNum + 1); if (iRet < 0) { return(ZhuLingZhuHunError.DBSERVERERROR); } client.ClientData.MyWingData.ZhuHunNum++; ZhuLingZhuHunManager.UpdateZhuLingZhuHunProps(client); // 通知客户端属性变化 GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); // 总生命值和魔法值变化通知(同一个地图才需要通知) GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); return(ZhuLingZhuHunError.Success); }