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");
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        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
        }
Esempio n. 7
0
        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);
        }