Beispiel #1
0
 private bool ReturnItem(OpenLottery data, BuyBoCai2SDB buyItem)
 {
     try
     {
         buyItem.IsSend = true;
         BoCaiBuy2DBList.getInstance().AddData(buyItem, 0, false);
         if (!"True".Equals(Global.Send2DB <BuyBoCai2SDB>(2082, buyItem, 0)))
         {
             LogManager.WriteLog(LogTypes.Warning, string.Format("[ljl_博彩]更新数据库标志失败,返回道具,没关系 线程会自动处理旧数据,{0},{1}", buyItem.m_RoleName, buyItem.DataPeriods), null, true);
             return(false);
         }
         int    returnNum = buyItem.BuyNum * data.XiaoHaoDaiBi;
         string strTitle  = "猜大小";
         if (buyItem.BocaiType == 2)
         {
             strTitle = "猜数字";
         }
         string           strIntro  = string.Format("因系统维护原因导致{0}期{1}玩法没有正常开奖,系统将返还您当期下注的欢乐代币。", buyItem.DataPeriods, strTitle);
         List <GoodsData> goodsData = new List <GoodsData>
         {
             HuanLeDaiBiManager.GetInstance().GetHuanLeDaiBi(returnNum)
         };
         return(this.SendMail(buyItem, goodsData, strTitle, strIntro, returnNum, false));
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
     }
     return(false);
 }
        private static EPetSkillState PetSkillInherit(GameClient client, int srcPetID, int tarPetID, int userMoney, out string outProps)
        {
            outProps = "";
            EPetSkillState result;

            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System2Dot6))
            {
                result = EPetSkillState.EnoOpen;
            }
            else if (!PetSkillManager.IsGongNengOpened(client))
            {
                result = EPetSkillState.EnoOpen;
            }
            else
            {
                GoodsData srcGoodsData = DamonMgr.GetDamonGoodsDataByDbID(client, srcPetID);
                GoodsData tarGoodsData = DamonMgr.GetDamonGoodsDataByDbID(client, tarPetID);
                if (null == srcGoodsData)
                {
                    srcGoodsData = Global.GetGoodsByDbID(client, srcPetID);
                }
                else if (srcGoodsData.Site != 5000)
                {
                    return(EPetSkillState.EnoUsing);
                }
                if (null == tarGoodsData)
                {
                    tarGoodsData = Global.GetGoodsByDbID(client, tarPetID);
                }
                else if (tarGoodsData.Site != 5000)
                {
                    return(EPetSkillState.EnoUsing);
                }
                if (srcGoodsData == null || srcGoodsData.GCount <= 0 || tarGoodsData == null || tarGoodsData.GCount <= 0)
                {
                    result = EPetSkillState.EnoPet;
                }
                else
                {
                    if (1 == userMoney)
                    {
                        if (client.ClientData.UserMoney < PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi && !HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi))
                        {
                            return(EPetSkillState.EnoDiamond);
                        }
                    }
                    else if (Global.GetTotalBindTongQianAndTongQianVal(client) < PetSkillManager.JingLingChuanChengXiaoHaoJinBi)
                    {
                        return(EPetSkillState.EnoGold);
                    }
                    List <PetSkillInfo> srcSkillList = PetSkillManager.GetPetSkillInfo(srcGoodsData);
                    List <PetSkillInfo> tarSkillList = PetSkillManager.GetPetSkillInfo(tarGoodsData);
                    int pitLoop;
                    for (pitLoop = 1; pitLoop < 4; pitLoop++)
                    {
                        PetSkillInfo srcSkill = srcSkillList.Find((PetSkillInfo _g) => _g.Pit == pitLoop);
                        PetSkillInfo tarSkill = tarSkillList.Find((PetSkillInfo _g) => _g.Pit == pitLoop);
                        if (srcSkill == null || null == tarSkill)
                        {
                            return(EPetSkillState.EpitWrong);
                        }
                        if (srcSkill.PitIsOpen && !tarSkill.PitIsOpen)
                        {
                            return(EPetSkillState.EpitWrong);
                        }
                    }
                    if (1 == userMoney)
                    {
                        if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, PetSkillManager.JingLingChuanChengXiaoHaoZhuanShi, "精灵技能传承", true, true, false, DaiBiSySType.JingLingJiNengChuanCheng))
                        {
                            return(EPetSkillState.EnoDiamond);
                        }
                    }
                    else if (!Global.SubBindTongQianAndTongQian(client, PetSkillManager.JingLingChuanChengXiaoHaoJinBi, "精灵技能传承"))
                    {
                        return(EPetSkillState.EnoGold);
                    }
                    int random = Global.GetRandomNumber(1, 101);
                    if (random > PetSkillManager.JingLingChuanChengGoodsRate)
                    {
                        result = EPetSkillState.EnoInheritFail;
                    }
                    else
                    {
                        long            returnMoHe   = PetSkillManager.DelGoodsReturnLingJing(tarGoodsData);
                        UpdateGoodsArgs tarGoodsArgs = new UpdateGoodsArgs
                        {
                            RoleID    = client.ClientData.RoleID,
                            DbID      = tarPetID,
                            WashProps = null
                        };
                        tarGoodsArgs.ElementhrtsProps = new List <int>();
                        for (int loop = 0; loop < tarSkillList.Count; loop++)
                        {
                            PetSkillInfo info = (loop < srcSkillList.Count) ? srcSkillList[loop] : tarSkillList[loop];
                            tarGoodsArgs.ElementhrtsProps.Add(info.PitIsOpen ? 1 : 0);
                            tarGoodsArgs.ElementhrtsProps.Add(info.Level);
                            tarGoodsArgs.ElementhrtsProps.Add((loop < srcSkillList.Count) ? info.SkillID : 0);
                        }
                        Global.UpdateGoodsProp(client, tarGoodsData, tarGoodsArgs, true);
                        UpdateGoodsArgs srcGoodsArgs = new UpdateGoodsArgs
                        {
                            RoleID    = client.ClientData.RoleID,
                            DbID      = srcPetID,
                            WashProps = null
                        };
                        srcGoodsArgs.ElementhrtsProps = new List <int>();
                        foreach (PetSkillInfo info in srcSkillList)
                        {
                            srcGoodsArgs.ElementhrtsProps.Add(info.PitIsOpen ? 1 : 0);
                            srcGoodsArgs.ElementhrtsProps.Add(1);
                            srcGoodsArgs.ElementhrtsProps.Add(0);
                        }
                        Global.UpdateGoodsProp(client, srcGoodsData, srcGoodsArgs, true);
                        GameManager.ClientMgr.ModifyMUMoHeValue(client, (int)returnMoHe, "精灵技能传承", true, true, false);
                        if (srcGoodsData.Using > 0 || tarGoodsData.Using > 0)
                        {
                            PetSkillManager.UpdateRolePetSkill(client);
                        }
                        outProps = string.Format("{0}:{1}", string.Join <int>(",", srcGoodsArgs.ElementhrtsProps.ToArray()), string.Join <int>(",", tarGoodsArgs.ElementhrtsProps.ToArray()));
                        result   = EPetSkillState.Success;
                    }
                }
            }
            return(result);
        }
Beispiel #3
0
 public bool SendWinItem(OpenLottery data, BuyBoCai2SDB buyItem)
 {
     try
     {
         buyItem.IsSend = true;
         string[] files = data.WinInfo.Split(new char[]
         {
             ','
         });
         List <int> winList;
         BoCaiHelper.String2ListInt(data.strWinNum, out winList);
         int        No1Win = Convert.ToInt32(files[0]);
         int        No2Win = Convert.ToInt32(files[1]);
         int        No3Win = Convert.ToInt32(files[2]);
         List <int> selfBuy;
         BoCaiHelper.String2ListInt(buyItem.strBuyValue, out selfBuy);
         if (selfBuy.Count != winList.Count)
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("[ljl_博彩]selfBuy.Count != winList.Count DataPeriods={0}, type={1}, roleid={2}", data.DataPeriods, data.BocaiType, buyItem.m_RoleID), null, true);
             return(false);
         }
         int sameNum = 0;
         for (int i = 0; i < selfBuy.Count; i++)
         {
             if (selfBuy[i] == winList[i])
             {
                 sameNum++;
             }
         }
         int No     = 0;
         int WinNum = 0;
         if (sameNum == 5)
         {
             No     = 1;
             WinNum = No1Win * buyItem.BuyNum;
         }
         else if (sameNum == 4)
         {
             No     = 2;
             WinNum = No2Win * buyItem.BuyNum;
         }
         else if (sameNum == 3)
         {
             No     = 3;
             WinNum = No3Win * buyItem.BuyNum;
         }
         string strLog = string.Format("猜数字id={6},name={7}, {0}期开奖{1}赢得{2},自己购买{3},{4}注,info={5}", new object[]
         {
             data.DataPeriods,
             data.strWinNum,
             WinNum,
             buyItem.strBuyValue,
             buyItem.BuyNum,
             data.WinInfo,
             buyItem.m_RoleID,
             buyItem.m_RoleName
         });
         if (WinNum < 1)
         {
             buyItem.IsWin = false;
             BoCaiBuy2DBList.getInstance().AddData(buyItem, -1, true);
             return(true);
         }
         buyItem.IsWin = true;
         BoCaiBuy2DBList.getInstance().AddData(buyItem, -1, false);
         if (!"True".Equals(Global.Send2DB <BuyBoCai2SDB>(2082, buyItem, 0)))
         {
             LogManager.WriteLog(LogTypes.Warning, string.Format("[ljl_博彩]更新数据库标志失败,不发奖励,没关系 会自动处理旧数据{0}", strLog), null, true);
             return(false);
         }
         string           strTitle  = "猜数字";
         string           strIntro  = string.Format("恭喜您在{0}期猜数字玩法中,中{2}等奖,获得欢乐代币{1},系统将邮件的形式将您获取的欢乐代币返还与你。", buyItem.DataPeriods, WinNum, No);
         List <GoodsData> goodsData = new List <GoodsData>
         {
             HuanLeDaiBiManager.GetInstance().GetHuanLeDaiBi(WinNum)
         };
         return(this.SendMail(buyItem, goodsData, strTitle, strIntro, WinNum, true));
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
     }
     return(false);
 }
Beispiel #4
0
 public bool SendWinItem(OpenLottery data, BuyBoCai2SDB buyItem, double Rate, bool isSendMail, string winType)
 {
     try
     {
         buyItem.IsSend = true;
         if (!winType.Equals(buyItem.strBuyValue))
         {
             buyItem.IsWin = false;
             BoCaiBuy2DBList.getInstance().AddData(buyItem, -1, true);
             return(true);
         }
         int    WinNum   = (int)(Rate * (double)buyItem.BuyNum * (double)data.XiaoHaoDaiBi);
         string strTitle = "猜大小";
         string strIntro = string.Format("恭喜您在{0}期猜大小玩法中,获得欢乐代币{1},系统将邮件的形式将您获取的欢乐代币返还与你。", buyItem.DataPeriods, WinNum);
         buyItem.IsWin = true;
         string strLog = string.Format("TYPE= {8},id={6},name={7}, {0}期开奖{1}赢得{2},自己购买{3},{4}注,info={5}", new object[]
         {
             data.DataPeriods,
             data.strWinNum,
             WinNum,
             buyItem.strBuyValue,
             buyItem.BuyNum,
             data.WinInfo,
             buyItem.m_RoleID,
             buyItem.m_RoleName,
             buyItem.BocaiType
         });
         BoCaiBuy2DBList.getInstance().AddData(buyItem, -1, false);
         if (!"True".Equals(Global.Send2DB <BuyBoCai2SDB>(2082, buyItem, 0)))
         {
             LogManager.WriteLog(LogTypes.Warning, string.Format("[ljl_博彩]更新数据库标志失败,不发奖励,没关系 会自动处理旧数据{0}", strLog), null, true);
             return(WinNum < 1);
         }
         if (WinNum < 1)
         {
             return(true);
         }
         GoodsData        Goods     = HuanLeDaiBiManager.GetInstance().GetHuanLeDaiBi(WinNum);
         List <GoodsData> goodsData = new List <GoodsData>
         {
             Goods
         };
         if (isSendMail)
         {
             return(this.SendMail(buyItem, goodsData, strTitle, strIntro, WinNum, true));
         }
         GameClient client = GameManager.ClientMgr.FindClient(buyItem.m_RoleID);
         if (client != null && Global.CanAddGoods3(client, Goods.GoodsID, WinNum, Goods.Binding, "1900-01-01 12:00:00", true))
         {
             int ret = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, Goods.GoodsID, Goods.GCount, Goods.Quality, Goods.Props, Goods.Forge_level, Goods.Binding, Goods.Site, Goods.Jewellist, true, 1, "猜大小中奖", "1900-01-01 12:00:00", 0, 0, 0, 0, 0, 0, 0, null, null, 0, true);
             LogManager.WriteLog(LogTypes.Info, string.Format("[ljl_博彩]放在背包ret={1},{0}", strLog, ret), null, true);
             return(true);
         }
         return(this.SendMail(buyItem, goodsData, strTitle, strIntro, WinNum, true));
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
     }
     return(false);
 }
Beispiel #5
0
        private string BuyItem(GameClient client, int nID, string[] cmdParams)
        {
            string msgInfo = "";

            try
            {
                if (GameManager.systemParamsList.GetParamValueIntByName("HuanLeDuiHuan", -1) < 1L)
                {
                    return(string.Format("{0}{1}", msgInfo, 7));
                }
                int    ID      = Convert.ToInt32(cmdParams[1]);
                int    BuyNum  = Convert.ToInt32(cmdParams[2]);
                string WuPinID = cmdParams[3];
                msgInfo = string.Format("{0}:{1}:{2}:", cmdParams[1], cmdParams[2], cmdParams[3]);
                DuiHuanShangChengConfig cfg = BoCaiConfigMgr.GetBoCaiShopConfig(ID, WuPinID);
                if (null == cfg)
                {
                    return(string.Format("{0}{1}", msgInfo, 14));
                }
                int       useItemNum = cfg.DaiBiJiaGe * BuyNum;
                GoodsData Goods      = GlobalNew.ParseGoodsData(WuPinID);
                if (null == Goods)
                {
                    return(string.Format("{0}{1}", msgInfo, 14));
                }
                if (!HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, useItemNum))
                {
                    return(string.Format("{0}{1}", msgInfo, 4));
                }
                if (!Global.CanAddGoods3(client, Goods.GoodsID, BuyNum, Goods.Binding, "1900-01-01 12:00:00", true))
                {
                    return(string.Format("{0}{1}", msgInfo, 13));
                }
                KFBoCaiShopDB item = new KFBoCaiShopDB();
                item.BuyNum  = BuyNum;
                item.ID      = ID;
                item.WuPinID = WuPinID;
                item.RoleID  = client.ClientData.RoleID;
                item.Periods = Convert.ToInt32(TimeUtil.NowDataTimeString("yyMMdd"));
                if (cfg.MeiRiShangXianDan > -1)
                {
                    if (BuyNum > cfg.MeiRiShangXianDan)
                    {
                        return(string.Format("{0}{1}", msgInfo, 17));
                    }
                    if (!BoCaiShopManager.GetInstance().CanBuyItem(item, cfg.MeiRiShangXianDan))
                    {
                        return(string.Format("{0}{1}", msgInfo, 18));
                    }
                }
                if (!HuanLeDaiBiManager.GetInstance().UseHuanledaibi(client, useItemNum))
                {
                    return(string.Format("{0}{1}", msgInfo, 4));
                }
                int ret = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, Goods.GoodsID, BuyNum, Goods.Quality, Goods.Props, Goods.Forge_level, Goods.Binding, Goods.Site, Goods.Jewellist, true, 1, "博彩商店购买", "1900-01-01 12:00:00", 0, 0, 0, 0, 0, 0, 0, null, null, 0, true);
                LogManager.WriteLog(LogTypes.Info, string.Format("[ljl_博彩] 博彩商店购买 放在背包ret={1},RoleID={0},WuPinID={2},name={3}", new object[]
                {
                    client.ClientData.RoleID,
                    ret,
                    WuPinID,
                    client.ClientData.RoleName
                }), null, true);
                return(string.Format("{0}{1}", msgInfo, 0));
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
            }
            return(string.Format("{0}{1}", msgInfo, 100));
        }
Beispiel #6
0
 private void BuyCaiDaXiao(GameClient client, int BuyNum, string strBuyVal, ref BuyBoCaiResult mgsData)
 {
     try
     {
         int value = Convert.ToInt32(strBuyVal);
         if (1 > value || value > 3 || BuyNum < 1)
         {
             mgsData.Info = 2;
             LogManager.WriteLog(LogTypes.Warning, string.Format("[ljl_博彩]BuyCaiDaXiao 购买内容 {0}, BuyNum={1} ", strBuyVal, BuyNum), null, true);
         }
         else if (!BoCaiCaiDaXiao.GetInstance().IsCanBuy())
         {
             mgsData.Info = 7;
         }
         else
         {
             ReturnValue <bool> msgData = TcpCall.KFBoCaiManager.IsCanBuy(1, strBuyVal, BuyNum + BoCaiCaiDaXiao.GetInstance().GetBuyNum(client.ClientData.RoleID), BoCaiCaiDaXiao.GetInstance().GetDataPeriods());
             if (!msgData.IsReturn)
             {
                 mgsData.Info = 8;
             }
             else if (!msgData.Value)
             {
                 mgsData.Info = 7;
             }
             else
             {
                 int useItemNum = BoCaiCaiDaXiao.GetInstance().GetXiaoHaoDaiBi() * BuyNum;
                 if (useItemNum < 1)
                 {
                     mgsData.Info = 3;
                     LogManager.WriteLog(LogTypes.Error, "[ljl_博彩]XiaoHaoDaiBi /GuDingLeiXing<1", null, true);
                 }
                 else if (!HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, useItemNum))
                 {
                     mgsData.Info = 4;
                 }
                 else
                 {
                     int          allNum = BuyNum;
                     BuyBoCai2SDB DbData = BoCaiCaiDaXiao.GetInstance().BuyBocai(client, BuyNum, strBuyVal, ref allNum);
                     if (null == DbData)
                     {
                         mgsData.Info = 8;
                         BoCaiCaiDaXiao.GetInstance().BuyBocai(client, -BuyNum, strBuyVal, ref allNum);
                         LogManager.WriteLog(LogTypes.Error, "[ljl_博彩]BoCaiCaiDaXiao.GetInstance().BuyBocai err", null, true);
                     }
                     else if (!HuanLeDaiBiManager.GetInstance().UseHuanledaibi(client, useItemNum))
                     {
                         mgsData.Info = 4;
                     }
                     else
                     {
                         ReturnValue <bool> msgData2 = TcpCall.KFBoCaiManager.BuyBoCai(new KFBuyBocaiData
                         {
                             BocaiType = 1,
                             RoleID    = DbData.m_RoleID,
                             RoleName  = DbData.m_RoleName,
                             ZoneID    = DbData.ZoneID,
                             ServerID  = DbData.ServerId,
                             BuyNum    = DbData.BuyNum,
                             BuyValue  = DbData.strBuyValue
                         });
                         if (!msgData2.IsReturn)
                         {
                             mgsData.Info = 8;
                         }
                         else if (!msgData2.Value)
                         {
                             GameManager.logDBCmdMgr.AddMessageLog(-1, "欢乐代币", "购买失败扣物品成功中心2次通信", client.ClientData.RoleName, client.ClientData.RoleName, "减少", useItemNum, client.ClientData.ZoneID, client.strUserID, -1, client.ServerId, "");
                             mgsData.Info = 5;
                         }
                         else
                         {
                             DbData.BuyNum = allNum;
                             BoCaiBuy2DBList.getInstance().AddData(DbData, useItemNum, true);
                             BoCaiCaiDaXiao.GetInstance().CopyBuyList(out mgsData.ItemList, DbData.m_RoleID);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         mgsData.Info = 100;
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
     }
 }
Beispiel #7
0
 private void BuyCaiShuzi(GameClient client, int BuyNum, string strBuyVal, ref BuyBoCaiResult mgsData)
 {
     try
     {
         List <int> buyList;
         BoCaiHelper.String2ListInt(strBuyVal, out buyList);
         if (buyList.Count != 5 || BuyNum < 1)
         {
             mgsData.Info = 2;
             LogManager.WriteLog(LogTypes.Warning, string.Format("[ljl_博彩] BuyCaiShuzi 购买内容 {0}, BuyNum={1} ", strBuyVal, BuyNum), null, true);
         }
         else
         {
             for (int i = 0; i < buyList.Count; i++)
             {
                 if (buyList[i] > 9 || buyList[i] < 0)
                 {
                     mgsData.Info = 2;
                     return;
                 }
             }
             if (!BoCaiCaiShuZi.GetInstance().IsCanBuy())
             {
                 mgsData.Info = 7;
             }
             else
             {
                 ReturnValue <bool> msgData = TcpCall.KFBoCaiManager.IsCanBuy(2, strBuyVal, BuyNum, BoCaiCaiShuZi.GetInstance().GetDataPeriods());
                 if (!msgData.IsReturn)
                 {
                     mgsData.Info = 8;
                 }
                 else if (!msgData.Value)
                 {
                     mgsData.Info = 5;
                 }
                 else
                 {
                     int XiaoHaoDaiBi = BoCaiCaiShuZi.GetInstance().GetXiaoHaoDaiBi();
                     if (XiaoHaoDaiBi < 1)
                     {
                         mgsData.Info = 3;
                         LogManager.WriteLog(LogTypes.Error, "[ljl_博彩]XiaoHaoDaiBi /GuDingLeiXing<1", null, true);
                     }
                     else
                     {
                         int useItemNum = BuyNum * XiaoHaoDaiBi;
                         if (!HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, useItemNum))
                         {
                             mgsData.Info = 4;
                         }
                         else
                         {
                             int          allNum = BuyNum;
                             BuyBoCai2SDB DbData = BoCaiCaiShuZi.GetInstance().BuyBocai(client, BuyNum, strBuyVal, ref allNum);
                             if (null == DbData)
                             {
                                 mgsData.Info = 8;
                                 BoCaiCaiShuZi.GetInstance().BuyBocai(client, -BuyNum, strBuyVal, ref allNum);
                                 LogManager.WriteLog(LogTypes.Error, "[ljl_博彩]BoCaiCaiShuZi.GetInstance().BuyBocai err", null, true);
                             }
                             else if (!HuanLeDaiBiManager.GetInstance().UseHuanledaibi(client, useItemNum))
                             {
                                 mgsData.Info = 4;
                             }
                             else
                             {
                                 ReturnValue <bool> msgData2 = TcpCall.KFBoCaiManager.BuyBoCai(new KFBuyBocaiData
                                 {
                                     BocaiType = 2,
                                     RoleID    = DbData.m_RoleID,
                                     RoleName  = DbData.m_RoleName,
                                     ZoneID    = DbData.ZoneID,
                                     ServerID  = DbData.ServerId,
                                     BuyNum    = DbData.BuyNum,
                                     BuyValue  = DbData.strBuyValue
                                 });
                                 if (!msgData2.IsReturn)
                                 {
                                     mgsData.Info = 8;
                                 }
                                 else if (!msgData2.Value)
                                 {
                                     GameManager.logDBCmdMgr.AddMessageLog(-1, "欢乐代币", "购买失败扣物品成功中心2次通信", client.ClientData.RoleName, client.ClientData.RoleName, "减少", useItemNum, client.ClientData.ZoneID, client.strUserID, -1, client.ServerId, "");
                                     mgsData.Info = 5;
                                 }
                                 else
                                 {
                                     DbData.BuyNum = allNum;
                                     BoCaiBuy2DBList.getInstance().AddData(DbData, useItemNum, true);
                                     BoCaiCaiShuZi.GetInstance().CopyBuyList(out mgsData.ItemList, DbData.m_RoleID);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         mgsData.Info = 100;
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]{0}", ex.ToString()), null, true);
     }
 }
Beispiel #8
0
        public bool processCmd(GameClient client, string[] cmdParams)
        {
            int  nID         = 609;
            int  nRoleID     = Global.SafeConvertToInt32(cmdParams[0]);
            int  nUpWingMode = Global.SafeConvertToInt32(cmdParams[1]);
            bool result;

            if (null == client.ClientData.MyWingData)
            {
                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                {
                    -3,
                    nRoleID,
                    0,
                    0
                });
                client.sendCmd(nID, strCmd, false);
                result = true;
            }
            else if (client.ClientData.MyWingData.WingID >= MUWingsManager.MaxWingID)
            {
                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                {
                    -8,
                    nRoleID,
                    0,
                    0
                });
                client.sendCmd(nID, strCmd, false);
                result = true;
            }
            else
            {
                SystemXmlItem upStarXmlItem = MUWingsManager.GetWingUPCacheItem(client.ClientData.MyWingData.WingID + 1);
                if (null == upStarXmlItem)
                {
                    string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                    {
                        -3,
                        nRoleID,
                        0,
                        0
                    });
                    client.sendCmd(nID, strCmd, false);
                    result = true;
                }
                else
                {
                    SystemXmlItem upStarXmlItem2 = WingStarCacheManager.GetWingStarCacheItem(Global.CalcOriginalOccupationID(client), client.ClientData.MyWingData.WingID, client.ClientData.MyWingData.ForgeLevel + 1);
                    if (null != upStarXmlItem2)
                    {
                        string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                        {
                            -3,
                            nRoleID,
                            0,
                            0
                        });
                        client.sendCmd(nID, strCmd, false);
                        result = true;
                    }
                    else
                    {
                        string strCostList = "";
                        if (0 == nUpWingMode)
                        {
                            string   strReqItemID = upStarXmlItem.GetStringValue("NeedGoods");
                            string[] itemParams   = strReqItemID.Split(new char[]
                            {
                                ','
                            });
                            if (itemParams == null || itemParams.Length != 2)
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -3,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            int originGoodsID  = Convert.ToInt32(itemParams[0]);
                            int originGoodsNum = Convert.ToInt32(itemParams[1]);
                            if (originGoodsID <= 0 || originGoodsNum <= 0)
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -3,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            GoodsReplaceResult replaceRet = SingletonTemplate <GoodsReplaceManager> .Instance().GetReplaceResult(client, originGoodsID);

                            if (replaceRet == null || replaceRet.TotalGoodsCnt() < originGoodsNum)
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -4,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            List <GoodsReplaceResult.ReplaceItem> realCostList = new List <GoodsReplaceResult.ReplaceItem>();
                            realCostList.AddRange(replaceRet.BindList);
                            realCostList.AddRange(replaceRet.UnBindList);
                            realCostList.Add(replaceRet.OriginBindGoods);
                            realCostList.Add(replaceRet.OriginUnBindGoods);
                            int stillNeedCnt = originGoodsNum;
                            foreach (GoodsReplaceResult.ReplaceItem item in realCostList)
                            {
                                if (item.GoodsCnt > 0)
                                {
                                    int realCostCnt = Math.Min(stillNeedCnt, item.GoodsCnt);
                                    if (realCostCnt <= 0)
                                    {
                                        break;
                                    }
                                    bool bUsedBinding     = false;
                                    bool bUsedTimeLimited = false;
                                    bool bFailed          = false;
                                    if (item.IsBind)
                                    {
                                        if (!GameManager.ClientMgr.NotifyUseBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, realCostCnt, false, out bUsedBinding, out bUsedTimeLimited, false))
                                        {
                                            bFailed = true;
                                        }
                                    }
                                    else if (!GameManager.ClientMgr.NotifyUseNotBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, realCostCnt, false, out bUsedBinding, out bUsedTimeLimited, false))
                                    {
                                        bFailed = true;
                                    }
                                    stillNeedCnt -= realCostCnt;
                                    if (bFailed)
                                    {
                                        string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                        {
                                            -5,
                                            nRoleID,
                                            0,
                                            0
                                        });
                                        client.sendCmd(nID, strCmd, false);
                                        return(true);
                                    }
                                    GoodsData goodsDataLog = new GoodsData
                                    {
                                        GoodsID = item.GoodsID,
                                        GCount  = realCostCnt
                                    };
                                    strCostList = EventLogManager.NewGoodsDataPropString(goodsDataLog);
                                }
                            }
                        }
                        else
                        {
                            int nReqZuanShi = upStarXmlItem.GetIntValue("NeedZuanShi", -1);
                            if (nReqZuanShi <= 0)
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -3,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            int oldUserMoney = client.ClientData.UserMoney;
                            int oldUserGlod  = client.ClientData.Gold;
                            if (client.ClientData.UserMoney < nReqZuanShi && !HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, nReqZuanShi))
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -6,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, nReqZuanShi, "翅膀进阶", true, true, false, DaiBiSySType.ChiBangShengJie))
                            {
                                string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                                {
                                    -7,
                                    nRoleID,
                                    0,
                                    0
                                });
                                client.sendCmd(nID, strCmd, false);
                                return(true);
                            }
                            strCostList = EventLogManager.NewResPropString(ResLogType.FristBindZuanShi, new object[]
                            {
                                -nReqZuanShi,
                                oldUserGlod,
                                client.ClientData.Gold,
                                oldUserMoney,
                                client.ClientData.UserMoney
                            });
                        }
                        int nLuckOne             = upStarXmlItem.GetIntValue("LuckyOne", -1);
                        int nLuckyTwo            = upStarXmlItem.GetIntValue("LuckyTwo", -1);
                        int nLuckTwoRate         = (int)(upStarXmlItem.GetDoubleValue("LuckyTwoRate") * 100.0);
                        int nNextWingID          = client.ClientData.MyWingData.WingID;
                        int nNextJinJieFailedNum = client.ClientData.MyWingData.JinJieFailedNum;
                        int nNextStarLevel       = client.ClientData.MyWingData.ForgeLevel;
                        int nNextStarExp         = client.ClientData.MyWingData.StarExp;
                        int nOldWingID           = client.ClientData.MyWingData.WingID;
                        int nOldJinJieFailedNum  = client.ClientData.MyWingData.JinJieFailedNum;
                        int nOldStarLevel        = client.ClientData.MyWingData.ForgeLevel;
                        int nOldStarExp          = client.ClientData.MyWingData.StarExp;
                        if (nLuckOne + client.ClientData.MyWingData.JinJieFailedNum < nLuckyTwo)
                        {
                            nNextJinJieFailedNum++;
                        }
                        else if (nLuckOne + client.ClientData.MyWingData.JinJieFailedNum < 110000)
                        {
                            int nRandNum = Global.GetRandomNumber(0, 100);
                            if (nRandNum < nLuckTwoRate)
                            {
                                nNextWingID++;
                                nNextJinJieFailedNum = 0;
                                nNextStarLevel       = 0;
                                nNextStarExp         = 0;
                            }
                            else
                            {
                                nNextJinJieFailedNum++;
                            }
                        }
                        else
                        {
                            nNextWingID++;
                            nNextJinJieFailedNum = 0;
                            nNextStarLevel       = 0;
                            nNextStarExp         = 0;
                        }
                        GlobalEventSource.getInstance().fireEvent(SevenDayGoalEvPool.Alloc(client, ESevenDayGoalFuncType.WingSuitStarTimes));
                        int iRet = MUWingsManager.WingUpDBCommand(client, client.ClientData.MyWingData.DbID, nNextWingID, nNextJinJieFailedNum, nNextStarLevel, nNextStarExp, client.ClientData.MyWingData.ZhuLingNum, client.ClientData.MyWingData.ZhuHunNum);
                        if (iRet < 0)
                        {
                            string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                            {
                                -3,
                                nRoleID,
                                0,
                                0
                            });
                            client.sendCmd(nID, strCmd, false);
                            result = true;
                        }
                        else
                        {
                            string strCmd = string.Format("{0}:{1}:{2}:{3}", new object[]
                            {
                                0,
                                nRoleID,
                                nNextWingID,
                                nNextJinJieFailedNum
                            });
                            client.sendCmd(nID, strCmd, false);
                            client.ClientData.MyWingData.JinJieFailedNum = nNextJinJieFailedNum;
                            if (client.ClientData.MyWingData.WingID != nNextWingID)
                            {
                                if (1 == client.ClientData.MyWingData.Using)
                                {
                                    MUWingsManager.UpdateWingDataProps(client, false);
                                }
                                bool oldWingLingYuOpened = GlobalNew.IsGongNengOpened(client, GongNengIDs.WingLingYu, false);
                                client.ClientData.MyWingData.WingID     = nNextWingID;
                                client.ClientData.MyWingData.ForgeLevel = 0;
                                client.ClientData.MyWingData.StarExp    = 0;
                                GlobalEventSource.getInstance().fireEvent(SevenDayGoalEvPool.Alloc(client, ESevenDayGoalFuncType.WingLevel));
                                bool newWingLingYuOpened = GlobalNew.IsGongNengOpened(client, GongNengIDs.WingLingYu, false);
                                if (!oldWingLingYuOpened && newWingLingYuOpened)
                                {
                                    LingYuManager.InitAsOpened(client);
                                }
                                if (1 == client.ClientData.MyWingData.Using)
                                {
                                    MUWingsManager.UpdateWingDataProps(client, true);
                                    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.CheckJieRiFanLi(client, ActivityTypes.JieriWing) || client._IconStateMgr.CheckReborn(client))
                                {
                                    client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived());
                                    client._IconStateMgr.SendIconStateToClient(client);
                                }
                                EventLogManager.AddWingStarEvent(client, 2, 0, nOldStarLevel, client.ClientData.MyWingData.WingID, client.ClientData.MyWingData.ForgeLevel, client.ClientData.MyWingData.StarExp, strCostList);
                            }
                            EventLogManager.AddWingUpgradeEvent(client, nUpWingMode, nOldJinJieFailedNum, client.ClientData.MyWingData.JinJieFailedNum, nOldWingID, client.ClientData.MyWingData.WingID, nOldStarLevel, client.ClientData.MyWingData.ForgeLevel, nOldStarExp, client.ClientData.MyWingData.StarExp, strCostList);
                            ProcessTask.ProcessRoleTaskVal(client, TaskTypes.WingIDLevel, -1);
                            result = true;
                        }
                    }
                }
            }
            return(result);
        }