Example #1
0
        public static int GiveRoleShareAward(GameClient client)
        {
            int ret = 0;

            if (ShareManager.CanGetShareAward(client))
            {
                if (Global.CanAddGoodsDataList(client, ShareManager.ShareGoodslist))
                {
                    List <GoodsData> goodlist = ShareManager.ShareGoodslist;
                    foreach (GoodsData item in goodlist)
                    {
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GCount, item.Quality, "", item.Forge_level, item.Binding, 0, "", true, 1, "分享", "1900-01-01 12:00:00", item.AddPropIndex, item.BornIndex, item.Lucky, item.Strong, item.ExcellenceInfo, item.AppendPropLev, item.ChangeLifeLevForEquip, item.WashProps, null, 0, true);
                    }
                    Global.SaveRoleParamsStringToDB(client, "DailyShare", string.Format("{0},{1}", TimeUtil.NowDateTime().DayOfYear, 1), true);
                    client.ClientData.AddAwardRecord(RoleAwardMsg.FenXiang, goodlist, false);
                    GameManager.ClientMgr.NotifyGetAwardMsg(client, RoleAwardMsg.FenXiang, "");
                }
                else
                {
                    ret = -3;
                }
            }
            else if (!ShareManager.HasDoneShare(client))
            {
                ret = -1;
            }
            else
            {
                ret = -2;
            }
            return(ret);
        }
Example #2
0
        public static int GiveRoleShareAward(GameClient client)
        {
            int ret = 0;

            if (CanGetShareAward(client))
            {
                if (Global.CanAddGoodsDataList(client, ShareGoodslist))
                {
                    List <GoodsData> goodlist = ShareGoodslist;

                    //获取奖励的物品
                    foreach (var item in goodlist)
                    {
                        //想DBServer请求加入某个新的物品到背包中
                        //添加物品
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GCount, item.Quality, "", item.Forge_level, item.Binding, 0, "", true, 1, "分享", Global.ConstGoodsEndTime, item.AddPropIndex, item.BornIndex, item.Lucky, item.Strong, item.ExcellenceInfo, item.AppendPropLev, item.ChangeLifeLevForEquip, item.WashProps);
                    }
                    Global.SaveRoleParamsStringToDB(client, RoleParamName.DailyShare, string.Format("{0},{1}", TimeUtil.NowDateTime().DayOfYear, 1), true);
                }
                else
                {
                    ret = -3;//背包已满
                }
            }
            else if (!HasDoneShare(client))
            {
                ret = -1;//未分享,不能领取
            }
            else
            {
                ret = -2;//已经领取过了
            }
            return(ret);
        }
Example #3
0
        public static void ProcessFallBaoXiang_StepTwo(GameClient client, int fallID, int maxFallCount, int binding, int actionGoodsID)
        {
            List <GoodsData> goodsDataList = client.ClientData.FallBaoXiangGoodsList;

            if (null != goodsDataList)
            {
                for (int i = 0; i < goodsDataList.Count; i++)
                {
                    SystemXmlItem systemGoods = null;
                    if (GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(goodsDataList[i].GoodsID, out systemGoods))
                    {
                        int categoriy = systemGoods.GetIntValue("Categoriy", -1);
                        binding = Global.GetBindingByCategoriy(categoriy, goodsDataList[i].Binding);
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsDataList[i].GoodsID, goodsDataList[i].GCount, goodsDataList[i].Quality, goodsDataList[i].Props, goodsDataList[i].Forge_level, binding, goodsDataList[i].Site, "", true, 1, "掉落宝箱获取", goodsDataList[i].Endtime, goodsDataList[i].AddPropIndex, goodsDataList[i].BornIndex, goodsDataList[i].Lucky, goodsDataList[i].Strong, goodsDataList[i].ExcellenceInfo, goodsDataList[i].AppendPropLev, goodsDataList[i].ChangeLifeLevForEquip, null, null, 0, true);
                        Global.BroadcastFallBaoXiangGoodsHint(client, goodsDataList[i], actionGoodsID);
                        Global.BroadSelfFallBoxGoods(client, goodsDataList[i]);
                        if (client.ClientData.RoleAwardMsgType == RoleAwardMsg.RandomBaoXiang)
                        {
                            client.ClientData.AddAwardRecord(RoleAwardMsg.RandomBaoXiang, new GoodsData(goodsDataList[i]), false);
                        }
                    }
                }
                client.ClientData.FallBaoXiangGoodsList = null;
            }
        }
Example #4
0
        public bool GiveAward(GameClient client, AwardItem item, ESevenDayActType type)
        {
            bool result;

            if (client == null || null == item)
            {
                result = false;
            }
            else
            {
                if (item.GoodsDataList != null)
                {
                    for (int i = 0; i < item.GoodsDataList.Count; i++)
                    {
                        int nGoodsID = item.GoodsDataList[i].GoodsID;
                        if (Global.IsCanGiveRewardByOccupation(client, nGoodsID))
                        {
                            Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsDataList[i].GoodsID, item.GoodsDataList[i].GCount, item.GoodsDataList[i].Quality, "", item.GoodsDataList[i].Forge_level, item.GoodsDataList[i].Binding, 0, "", true, 1, this.GetActivityChineseName(type), "1900-01-01 12:00:00", item.GoodsDataList[i].AddPropIndex, item.GoodsDataList[i].BornIndex, item.GoodsDataList[i].Lucky, item.GoodsDataList[i].Strong, item.GoodsDataList[i].ExcellenceInfo, item.GoodsDataList[i].AppendPropLev, item.GoodsDataList[i].ChangeLifeLevForEquip, null, null, 0, true);
                        }
                    }
                }
                result = true;
            }
            return(result);
        }
Example #5
0
        public static TCPOutPacket ProcessGetWaBaoGoodsData(GameClient client, TCPOutPacketPool pool, int cmd)
        {
            TCPOutPacket result;

            if (null == client.ClientData.WaBaoGoodsData)
            {
                string strcmd = string.Format("{0}:{1}", -1, client.ClientData.RoleID);
                result = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd);
            }
            else if (!Global.CanAddGoods(client, client.ClientData.WaBaoGoodsData.GoodsID, client.ClientData.WaBaoGoodsData.GCount, client.ClientData.WaBaoGoodsData.Binding, client.ClientData.WaBaoGoodsData.Endtime, true, false))
            {
                string strcmd = string.Format("{0}:{1}", -10, client.ClientData.RoleID);
                result = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd);
            }
            else
            {
                int dbRet = Global.AddGoodsDBCommand(pool, client, client.ClientData.WaBaoGoodsData.GoodsID, client.ClientData.WaBaoGoodsData.GCount, client.ClientData.WaBaoGoodsData.Quality, client.ClientData.WaBaoGoodsData.Props, client.ClientData.WaBaoGoodsData.Forge_level, client.ClientData.WaBaoGoodsData.Binding, client.ClientData.WaBaoGoodsData.Site, client.ClientData.WaBaoGoodsData.Jewellist, true, 1, "挖宝获取道具", "1900-01-01 12:00:00", client.ClientData.WaBaoGoodsData.AddPropIndex, client.ClientData.WaBaoGoodsData.BornIndex, client.ClientData.WaBaoGoodsData.Lucky, client.ClientData.WaBaoGoodsData.Strong, 0, 0, 0, null, null, 0, true);
                if (dbRet < 0)
                {
                    string strcmd = string.Format("{0}:{1}", -10, client.ClientData.RoleID);
                    result = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd);
                }
                else
                {
                    client.ClientData.WaBaoGoodsData = null;
                    string strcmd = string.Format("{0}:{1}", 0, client.ClientData.RoleID);
                    result = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd);
                }
            }
            return(result);
        }
Example #6
0
        /// <summary>
        /// 发奖
        /// </summary>
        /// <param name="client"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        public bool GiveAward(GameClient client, AwardItem item, ESevenDayActType type)
        {
            if (null == client || null == item)
            {
                return(false);
            }

            if (item.GoodsDataList != null)
            {
                for (int i = 0; i < item.GoodsDataList.Count; i++)
                {
                    int nGoodsID = item.GoodsDataList[i].GoodsID; // 物品id
                    if (Global.IsCanGiveRewardByOccupation(client, nGoodsID))
                    {
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client,
                                                 item.GoodsDataList[i].GoodsID, item.GoodsDataList[i].GCount,
                                                 item.GoodsDataList[i].Quality, "", item.GoodsDataList[i].Forge_level,
                                                 item.GoodsDataList[i].Binding, 0, "", true, 1,
                                                 GetActivityChineseName((ESevenDayActType)type), Global.ConstGoodsEndTime,
                                                 item.GoodsDataList[i].AddPropIndex, item.GoodsDataList[i].BornIndex,
                                                 item.GoodsDataList[i].Lucky, item.GoodsDataList[i].Strong,
                                                 item.GoodsDataList[i].ExcellenceInfo, item.GoodsDataList[i].AppendPropLev, item.GoodsDataList[i].ChangeLifeLevForEquip);
                    }
                }
            }

            return(true);
        }
Example #7
0
 public static void ProcessFallBaoXiang(GameClient client, int fallID, int maxFallCount, int binding, int actionGoodsID)
 {
     if (fallID > 0)
     {
         List <FallGoodsItem> gallGoodsItemList = GameManager.GoodsPackMgr.GetFallGoodsItemList(fallID);
         if (null != gallGoodsItemList)
         {
             List <FallGoodsItem> tempItemList2 = GameManager.GoodsPackMgr.GetFallGoodsItemByPercent(gallGoodsItemList, maxFallCount, 1, 1.0);
             if (tempItemList2.Count > 0)
             {
                 List <GoodsData> goodsDataList = GameManager.GoodsPackMgr.GetGoodsDataListFromFallGoodsItemList(tempItemList2);
                 if (Global.CanAddGoodsNum(client, goodsDataList.Count))
                 {
                     for (int i = 0; i < goodsDataList.Count; i++)
                     {
                         Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsDataList[i].GoodsID, goodsDataList[i].GCount, goodsDataList[i].Quality, goodsDataList[i].Props, goodsDataList[i].Forge_level, binding, 0, "", true, 1, "掉落宝箱获取", goodsDataList[i].Endtime, goodsDataList[i].AddPropIndex, goodsDataList[i].BornIndex, goodsDataList[i].Lucky, goodsDataList[i].Strong, goodsDataList[i].ExcellenceInfo, goodsDataList[i].AppendPropLev, goodsDataList[i].ChangeLifeLevForEquip, null, null, 0, true);
                         Global.BroadcastFallBaoXiangGoodsHint(client, goodsDataList[i], actionGoodsID);
                         if (client.ClientData.RoleAwardMsgType == RoleAwardMsg.RandomBaoXiang)
                         {
                             client.ClientData.AddAwardRecord(RoleAwardMsg.RandomBaoXiang, new GoodsData(goodsDataList[i]), false);
                         }
                     }
                 }
             }
         }
     }
 }
Example #8
0
        protected bool GiveAwardByOccupation(GameClient client, AwardItem myAwardItem, int occupation)
        {
            bool result;

            if (client == null || null == myAwardItem)
            {
                result = false;
            }
            else
            {
                if (myAwardItem.GoodsDataList != null && myAwardItem.GoodsDataList.Count > 0)
                {
                    int count = myAwardItem.GoodsDataList.Count;
                    for (int i = 0; i < count; i++)
                    {
                        GoodsData data = myAwardItem.GoodsDataList[i];
                        if (Global.IsCanGiveRewardByOccupation(client, data.GoodsID))
                        {
                            Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, data.GoodsID, data.GCount, data.Quality, "", data.Forge_level, data.Binding, 0, "", true, 1, Activity.GetActivityChineseName((ActivityTypes)this.ActivityType), "1900-01-01 12:00:00", data.AddPropIndex, data.BornIndex, data.Lucky, data.Strong, data.ExcellenceInfo, data.AppendPropLev, data.ChangeLifeLevForEquip, null, null, 0, true);
                        }
                    }
                }
                if (myAwardItem.AwardYuanBao > 0)
                {
                    GameManager.ClientMgr.AddUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, myAwardItem.AwardYuanBao, string.Format("领取{0}活动奖励", (ActivityTypes)this.ActivityType), ActivityTypes.None, "");
                    GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(GLang.GetLang(386, new object[0]), new object[]
                    {
                        myAwardItem.AwardYuanBao
                    }), GameInfoTypeIndexes.Normal, ShowGameInfoTypes.OnlyErr, 0);
                    GameManager.DBCmdMgr.AddDBCmd(10113, string.Format("{0}:{1}:{2}", client.ClientData.RoleID, myAwardItem.AwardYuanBao, string.Format("领取{0}活动奖励", (ActivityTypes)this.ActivityType)), null, client.ServerId);
                }
                result = true;
            }
            return(result);
        }
Example #9
0
        private EUserActivateState ActivateAward(GameClient client, int roleId, string userID, int activateType, string activateInfo, string error)
        {
            string checkInfo = GetCheckInfo(userID, error, activateType);

            if (checkInfo != activateInfo)
            {
                return(EUserActivateState.ECheck);
            }

            if (activateType != 0)
            {
                return(EUserActivateState.EnoBind);
            }

            PlatformTypes platformType = GameCoreInterface.getinstance().GetPlatformType();

            if (platformType != PlatformTypes.APP)
            {
                return(EUserActivateState.EPlatform);
            }

            int awardState = DBActivateStateGet(client);

            if (awardState == 1)
            {
                return(EUserActivateState.EIsAward);
            }

            List <GoodsData> awardList = GetAwardList();

            if (awardList == null || awardList.Count <= 0)
            {
                return(EUserActivateState.ENoAward);
            }
            if (!Global.CanAddGoodsDataList(client, awardList))
            {
                return(EUserActivateState.EBag);
            }

            bool result = DBActivateStateSet(client);

            if (!result)
            {
                return(EUserActivateState.EFail);
            }

            for (int i = 0; i < awardList.Count; i++)
            {
                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client,
                                         awardList[i].GoodsID, awardList[i].GCount, awardList[i].Quality, "", awardList[i].Forge_level,
                                         awardList[i].Binding, 0, "", true, 1,
                                         /**/ "账号绑定奖励", Global.ConstGoodsEndTime, awardList[i].AddPropIndex, awardList[i].BornIndex,
                                         awardList[i].Lucky, awardList[i].Strong, awardList[i].ExcellenceInfo, awardList[i].AppendPropLev);
            }

            return(EUserActivateState.Success);
        }
Example #10
0
        private UserActivateManager.EUserActivateState ActivateAward(GameClient client, int roleId, string userID, int activateType, string activateInfo, string error)
        {
            string checkInfo = this.GetCheckInfo(userID, error, activateType);

            UserActivateManager.EUserActivateState result;
            if (checkInfo != activateInfo)
            {
                result = UserActivateManager.EUserActivateState.ECheck;
            }
            else if (activateType != 0)
            {
                result = UserActivateManager.EUserActivateState.EnoBind;
            }
            else
            {
                PlatformTypes platformType = GameCoreInterface.getinstance().GetPlatformType();
                if (platformType != PlatformTypes.APP)
                {
                    result = UserActivateManager.EUserActivateState.EPlatform;
                }
                else
                {
                    int awardState = this.DBActivateStateGet(client);
                    if (awardState == 1)
                    {
                        result = UserActivateManager.EUserActivateState.EIsAward;
                    }
                    else
                    {
                        List <GoodsData> awardList = this.GetAwardList();
                        if (awardList == null || awardList.Count <= 0)
                        {
                            result = UserActivateManager.EUserActivateState.ENoAward;
                        }
                        else if (!Global.CanAddGoodsDataList(client, awardList))
                        {
                            result = UserActivateManager.EUserActivateState.EBag;
                        }
                        else if (!this.DBActivateStateSet(client))
                        {
                            result = UserActivateManager.EUserActivateState.EFail;
                        }
                        else
                        {
                            for (int i = 0; i < awardList.Count; i++)
                            {
                                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, awardList[i].GoodsID, awardList[i].GCount, awardList[i].Quality, "", awardList[i].Forge_level, awardList[i].Binding, 0, "", true, 1, "账号绑定奖励", "1900-01-01 12:00:00", awardList[i].AddPropIndex, awardList[i].BornIndex, awardList[i].Lucky, awardList[i].Strong, awardList[i].ExcellenceInfo, awardList[i].AppendPropLev, 0, null, null, 0, true);
                            }
                            result = UserActivateManager.EUserActivateState.Success;
                        }
                    }
                }
            }
            return(result);
        }
Example #11
0
        private int GiveRoleAwards(GameClient client, int success, KarenBattleSceneInfo sceneInfo)
        {
            long addExp       = 0L;
            int  addBindJinBi = 0;

            addExp       = Global.GetExpMultiByZhuanShengExpXiShu(client, sceneInfo.Exp);
            addBindJinBi = sceneInfo.BandJinBi;
            List <AwardsItemData> awardsItemDataList;

            if (success > 0)
            {
                awardsItemDataList = sceneInfo.WinAwardsItemList.Items;
            }
            else
            {
                addExp             = (long)((double)addExp * 0.8);
                addBindJinBi       = (int)((double)addBindJinBi * 0.8);
                awardsItemDataList = sceneInfo.LoseAwardsItemList.Items;
            }
            addExp       -= addExp % 10000L;
            addBindJinBi -= addBindJinBi % 10000;
            string         sSubject = "阿卡伦战场奖励";
            SceneUIClasses mapType  = Global.GetMapSceneType(sceneInfo.MapCode);
            string         sContent;

            if (SceneUIClasses.KarenWest == mapType)
            {
                sContent = GLang.GetLang(2617, new object[0]);
            }
            else
            {
                sContent = GLang.GetLang(2618, new object[0]);
            }
            if (awardsItemDataList != null && !Global.CanAddGoodsNum(client, awardsItemDataList.Count))
            {
                Global.UseMailGivePlayerAward2(client, awardsItemDataList, GLang.GetLang(2616, new object[0]), sContent, 0, 0, 0);
            }
            else if (awardsItemDataList != null)
            {
                foreach (AwardsItemData item in awardsItemDataList)
                {
                    Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GoodsNum, 0, "", item.Level, item.Binding, 0, "", true, 1, sSubject, "1900-01-01 12:00:00", 0, 0, item.IsHaveLuckyProp, 0, item.ExcellencePorpValue, item.AppendLev, 0, null, null, 0, true);
                }
            }
            if (addExp > 0L)
            {
                GameManager.ClientMgr.ProcessRoleExperience(client, addExp, true, true, false, "none");
            }
            if (addBindJinBi > 0)
            {
                GameManager.ClientMgr.AddMoney1(client, addBindJinBi, sSubject, true);
            }
            return(1);
        }
Example #12
0
        private int GiveRoleAwards(GameClient client, int success, int score, YongZheZhanChangSceneInfo sceneInfo)
        {
            long addExp       = 0;
            int  addBindJinBi = 0;
            List <AwardsItemData> awardsItemDataList = null;

            if (score >= RuntimeData.WarriorBattleLowestJiFen)
            {
                //最终经验(取整万舍去尾数) = 经验系数 * (0.2 + Min(0.8, (积分 ^ 0.5) / 100)
                //最终金币(取整万舍去尾数) = 金币系数 * Min(100, (积分 ^ 0.5))
                addExp       = (long)(sceneInfo.Exp * (0.2 + Math.Min(0.8, Math.Pow(score, 0.5) / 100)));
                addBindJinBi = (int)(sceneInfo.BandJinBi * Math.Min(100, Math.Pow(score, 0.5)));
                if (success > 0)
                {
                    awardsItemDataList = sceneInfo.WinAwardsItemList.Items;
                }
                else
                {
                    addExp             = (long)(addExp * 0.8);
                    addBindJinBi       = (int)(addBindJinBi * 0.8);
                    awardsItemDataList = sceneInfo.LoseAwardsItemList.Items;
                }

                addExp       = addExp - (addExp % 10000);
                addBindJinBi = addBindJinBi - (addBindJinBi % 10000);
            }

            if (awardsItemDataList != null && !Global.CanAddGoodsNum(client, awardsItemDataList.Count))
            {
                // 背包不足
                return(StdErrorCode.Error_BagNum_Not_Enough);
            }

            if (addExp > 0)
            {
                GameManager.ClientMgr.ProcessRoleExperience(client, addExp);
            }

            if (addBindJinBi > 0)
            {
                GameManager.ClientMgr.AddMoney1(client, addBindJinBi, "勇者战场奖励");
            }

            if (awardsItemDataList != null)
            {
                foreach (var item in awardsItemDataList)
                {
                    Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GoodsNum, 0, "", item.Level, item.Binding, 0, "", true, 1, "勇者战场奖励", Global.ConstGoodsEndTime, 0, 0, item.IsHaveLuckyProp, 0, item.ExcellencePorpValue, item.AppendLev);
                }
            }

            return(StdErrorCode.Error_Success);
        }
Example #13
0
 public static void GiveBuChang(GameClient client)
 {
     if (!BuChangManager.CanGiveBuChang())
     {
         GameManager.LuaMgr.Error(client, GLang.GetLang(24, new object[0]), 0);
     }
     else
     {
         BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
         if (null == buChangItem)
         {
             GameManager.LuaMgr.Error(client, GLang.GetLang(25, new object[0]), 0);
         }
         else if (!BuChangManager.HasEnoughBagSpaceForAwardGoods(client, buChangItem))
         {
             GameManager.LuaMgr.Error(client, GLang.GetLang(26, new object[0]), 0);
         }
         else
         {
             DateTime buChangDateTime = Global.GetBuChangStartDay();
             int      buChangFlag     = Global.GetRoleParamsInt32FromDB(client, "BuChangFlag");
             if (buChangDateTime.DayOfYear == buChangFlag)
             {
                 GameManager.LuaMgr.Error(client, GLang.GetLang(27, new object[0]), 0);
             }
             else
             {
                 Global.SaveRoleParamsInt32ValueToDB(client, "BuChangFlag", buChangDateTime.DayOfYear, true);
                 for (int i = 0; i < buChangItem.GoodsDataList.Count; i++)
                 {
                     Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, buChangItem.GoodsDataList[i].GoodsID, buChangItem.GoodsDataList[i].GCount, buChangItem.GoodsDataList[i].Quality, "", buChangItem.GoodsDataList[i].Forge_level, buChangItem.GoodsDataList[i].Binding, 0, "", true, 1, "系统补偿物品", "1900-01-01 12:00:00", buChangItem.GoodsDataList[i].AddPropIndex, buChangItem.GoodsDataList[i].BornIndex, buChangItem.GoodsDataList[i].Lucky, buChangItem.GoodsDataList[i].Strong, 0, 0, 0, null, null, 0, true);
                 }
                 if (buChangItem.MoJing > 0)
                 {
                     GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, buChangItem.MoJing, "系统补偿", false, true, false);
                 }
                 if (buChangItem.Experience > 0L)
                 {
                     GameManager.ClientMgr.ProcessRoleExperience(client, buChangItem.Experience, false, true, false, "none");
                 }
                 client._IconStateMgr.CheckBuChangState(client);
                 client._IconStateMgr.SendIconStateToClient(client);
             }
         }
     }
 }
Example #14
0
        public bool ProcessTianTiGetPaiHangAwardsCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            try
            {
                int result = StdErrorCode.Error_Not_Exist;
                DuanWeiRankAward duanWeiRankAward = null;
                if (CanGetMonthRankAwards(client, out duanWeiRankAward))
                {
                    List <GoodsData> goodsDataList = Global.ConvertToGoodsDataList(duanWeiRankAward.Award.Items);
                    if (!Global.CanAddGoodsDataList(client, goodsDataList))
                    {
                        result = StdErrorCode.Error_BagNum_Not_Enough;
                    }
                    else
                    {
                        result = StdErrorCode.Error_Success_No_Info;
                        client.ClientData.TianTiData.FetchMonthDuanWeiRankAwardsTime = TimeUtil.NowDateTime();
                        Global.sendToDB <int, RoleTianTiData>((int)TCPGameServerCmds.CMD_DB_TIANTI_UPDATE_ROLE_DATA, client.ClientData.TianTiData, client.ServerId);
                        for (int i = 0; i < goodsDataList.Count; i++)
                        {
                            //向DBServer请求加入某个新的物品到背包中
                            Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsDataList[i].GoodsID, goodsDataList[i].GCount, goodsDataList[i].Quality, "", goodsDataList[i].Forge_level, goodsDataList[i].Binding, 0, "", true, 1, "天梯月段位排名奖励", Global.ConstGoodsEndTime, 0, goodsDataList[i].BornIndex, goodsDataList[i].Lucky, 0, goodsDataList[i].ExcellenceInfo, goodsDataList[i].AppendPropLev);
                        }
                    }
                }
                else if (duanWeiRankAward != null)
                {
                    if (client.CodeRevision <= 2)
                    {
                        result = StdErrorCode.Error_Success;
                        GameManager.ClientMgr.NotifyHintMsg(client, Global.GetLang("请等待排名更新后再领取排名奖励"));
                    }
                }

                //发送结果给客户端
                client.sendCmd(nID, result);
                return(true);
            }
            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false);
            }

            return(false);
        }
Example #15
0
        /// <summary>
        /// 处理领取挖宝的物品的操作
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static TCPOutPacket ProcessGetWaBaoGoodsData(GameClient client, TCPOutPacketPool pool, int cmd)
        {
            string strcmd = null;

            //首先判断是否有挖宝得到的数据
            if (null == client.ClientData.WaBaoGoodsData)
            {
                strcmd = string.Format("{0}:{1}", -1, client.ClientData.RoleID);
                return(TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd));
            }

            //判断背包是否已经满了?
            if (!Global.CanAddGoods(client, client.ClientData.WaBaoGoodsData.GoodsID,
                                    client.ClientData.WaBaoGoodsData.GCount,
                                    client.ClientData.WaBaoGoodsData.Binding,
                                    client.ClientData.WaBaoGoodsData.Endtime,
                                    true))
            {
                strcmd = string.Format("{0}:{1}", -10, client.ClientData.RoleID);
                return(TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd));
            }

            //想DBServer请求加入某个新的物品到背包中
            int dbRet = Global.AddGoodsDBCommand(pool, client,
                                                 client.ClientData.WaBaoGoodsData.GoodsID,
                                                 client.ClientData.WaBaoGoodsData.GCount,
                                                 client.ClientData.WaBaoGoodsData.Quality,
                                                 client.ClientData.WaBaoGoodsData.Props,
                                                 client.ClientData.WaBaoGoodsData.Forge_level,
                                                 client.ClientData.WaBaoGoodsData.Binding,
                                                 client.ClientData.WaBaoGoodsData.Site,
                                                 client.ClientData.WaBaoGoodsData.Jewellist, true, 1, /**/ "挖宝获取道具", Global.ConstGoodsEndTime, client.ClientData.WaBaoGoodsData.AddPropIndex, client.ClientData.WaBaoGoodsData.BornIndex, client.ClientData.WaBaoGoodsData.Lucky, client.ClientData.WaBaoGoodsData.Strong);

            if (dbRet < 0)
            {
                strcmd = string.Format("{0}:{1}", -10, client.ClientData.RoleID);
                return(TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd));
            }

            //清空挖宝得到的物品数据
            client.ClientData.WaBaoGoodsData = null;

            strcmd = string.Format("{0}:{1}", 0, client.ClientData.RoleID);
            return(TCPOutPacket.MakeTCPOutPacket(pool, strcmd, cmd));
        }
 private void ExchangeHuanlebi(GameClient client, int ExchangeNum, ref int mgsData)
 {
     try
     {
         GoodsData Goods = this.GetHuanLeDaiBi(ExchangeNum);
         mgsData = 0;
         if (ExchangeNum < 1)
         {
             mgsData = 11;
         }
         else if (client.ClientData.UserMoney < ExchangeNum)
         {
             mgsData = 12;
         }
         else if (!Global.CanAddGoods3(client, Goods.GoodsID, ExchangeNum, Goods.Binding, "1900-01-01 12:00:00", true))
         {
             mgsData = 13;
         }
         if (mgsData == 0)
         {
             if (!GameManager.ClientMgr.SubUserMoney(client, ExchangeNum, "兑换欢乐币", true, true, true, true, DaiBiSySType.None))
             {
                 mgsData = 12;
             }
             else
             {
                 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},num={0},,id={2},name={3}", new object[]
                 {
                     ExchangeNum,
                     ret,
                     client.ClientData.RoleID,
                     client.ClientData.RoleName
                 }), null, true);
             }
         }
     }
     catch (Exception ex)
     {
         mgsData = 100;
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_欢乐代币]{0}", ex.ToString()), null, true);
     }
 }
Example #17
0
        private void GiveClientChargeItem(GameClient client, List <GoodsData> awardList)
        {
            int outBag;

            if (!RebornEquip.MoreIsCanIntoRebornOrBaseBag(client, awardList, out outBag))
            {
                Global.UseMailGivePlayerAward2(client, awardList, GLang.GetLang(553, new object[0]), GLang.GetLang(554, new object[0]), 0, 0, 0);
            }
            else
            {
                for (int i = 0; i < awardList.Count; i++)
                {
                    GoodsData goodsData = awardList[i];
                    if (null != goodsData)
                    {
                        goodsData.Id = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsData.GoodsID, goodsData.GCount, goodsData.Quality, goodsData.Props, goodsData.Forge_level, goodsData.Binding, 0, goodsData.Jewellist, true, 1, "充值直购", goodsData.Endtime, goodsData.AddPropIndex, goodsData.BornIndex, goodsData.Lucky, goodsData.Strong, goodsData.ExcellenceInfo, 0, 0, null, null, 0, true);
                    }
                }
            }
        }
Example #18
0
        /// <summary>
        /// 处理掉落的宝箱
        /// </summary>
        /// <param name="fallID"></param>
        public static void ProcessFallBaoXiang(GameClient client, int fallID, int maxFallCount, int binding, int actionGoodsID)
        {
            if (fallID <= 0)
            {
                return;
            }

            List <FallGoodsItem> gallGoodsItemList = GameManager.GoodsPackMgr.GetFallGoodsItemList(fallID);

            if (null == gallGoodsItemList)
            {
                return;
            }

            List <FallGoodsItem> tempItemList2 = GameManager.GoodsPackMgr.GetFallGoodsItemByPercent(gallGoodsItemList, maxFallCount, (int)FallAlgorithm.BaoXiang);

            if (tempItemList2.Count <= 0)
            {
                return;
            }

            List <GoodsData> goodsDataList = GameManager.GoodsPackMgr.GetGoodsDataListFromFallGoodsItemList(tempItemList2);

            if (!Global.CanAddGoodsNum(client, goodsDataList.Count))
            {
                return;
            }

            for (int i = 0; i < goodsDataList.Count; i++)
            {
                //想DBServer请求加入某个新的物品到背包中
                //添加物品
                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsDataList[i].GoodsID,
                                         goodsDataList[i].GCount, goodsDataList[i].Quality, goodsDataList[i].Props, goodsDataList[i].Forge_level,
                                         binding, 0, "", true, 1, "掉落宝箱获取", goodsDataList[i].Endtime, goodsDataList[i].AddPropIndex, goodsDataList[i].BornIndex, goodsDataList[i].Lucky, goodsDataList[i].Strong,
                                         goodsDataList[i].ExcellenceInfo, goodsDataList[i].AppendPropLev, goodsDataList[i].ChangeLifeLevForEquip);

                /// 开宝箱类挖宝成功的提示
                Global.BroadcastFallBaoXiangGoodsHint(client, goodsDataList[i], actionGoodsID);
            }
        }
        /// <summary>
        /// 发放活动奖励
        /// </summary>
        private void GiveLangHunLingYuAwards(LangHunLingYuScene scene)
        {
            LangHunLingYuAwardsData successAwardsData = new LangHunLingYuAwardsData();
            LangHunLingYuAwardsData faildAwardsData   = new LangHunLingYuAwardsData();

            successAwardsData.Success            = 1;
            successAwardsData.AwardsItemDataList = scene.LevelInfo.Award.Items;
            foreach (var copyMap in scene.CopyMapDict.Values)
            {
                List <GameClient> objList = copyMap.GetClientsList();
                foreach (var client in objList)
                {
                    LangHunLingYuAwardsData awardsData = client.ClientData.Faction == scene.LongTaOwnerData.OwnerBHid ? successAwardsData : faildAwardsData;
                    if (awardsData.AwardsItemDataList != null)
                    {
                        // 判断背包空闲格子是否足够
                        if (Global.CanAddGoodsNum(client, awardsData.AwardsItemDataList.Count))
                        {
                            foreach (var item in awardsData.AwardsItemDataList)
                            {
                                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GoodsNum, 0, "", item.Level, item.Binding, 0,
                                                         "", true, 1, /**/ "圣域争霸胜利奖励", Global.ConstGoodsEndTime, 0, 0, item.IsHaveLuckyProp, 0, item.ExcellencePorpValue, item.AppendLev);
                            }
                        }
                        else
                        {
                            Global.UseMailGivePlayerAward2(client, awardsData.AwardsItemDataList, Global.GetLang("圣域争霸胜利奖励"), Global.GetLang("圣域争霸胜利奖励"));
                        }

                        EventLogManager.AddRoleEvent(client, OpTypes.GiveAwards, OpTags.LangHunLingYu, LogRecordType.IntValue2, client.ClientData.Faction, awardsData.Success);
                    }

                    client.sendCmd((int)TCPGameServerCmds.CMD_SPR_LANGHUNLINGYU_AWARD, awardsData);
                }
            }
        }
Example #20
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));
        }
Example #21
0
        private string TodayAward(GameClient client, bool isAll, int todayID)
        {
            string result = "{0}:{1}";
            string result2;

            if (!this.IsGongNengOpened())
            {
                result2 = string.Format(result, -11, 0);
            }
            else
            {
                TodayInfo oneInfo = null;
                if (!isAll)
                {
                    oneInfo = this.GetTadayInfoByID(client, todayID);
                    if (oneInfo == null)
                    {
                        return(string.Format(result, -3, 0));
                    }
                    if (oneInfo.NumMax - oneInfo.NumEnd <= 0)
                    {
                        return(string.Format(result, -4, 0));
                    }
                }
                List <TodayInfo> listAll = new List <TodayInfo>();
                if (isAll)
                {
                    listAll = this.InitToday(client);
                }
                else
                {
                    listAll.Add(oneInfo);
                }
                if (listAll.IsNullOrEmpty <TodayInfo>())
                {
                    result2 = string.Format(result, -3, 0);
                }
                else
                {
                    IEnumerable <TodayInfo> fubenList = from info in listAll
                                                        where info.FuBenID > 0 && client.ClientData.FuBenID > 0 && client.ClientData.FuBenID == info.FuBenID && info.NumMax - info.NumEnd > 0 && info.NumEnd >= 0
                                                        select info;
                    if (fubenList.Any <TodayInfo>())
                    {
                        result2 = string.Format(result, -6, 0);
                    }
                    else
                    {
                        IEnumerable <TodayInfo> awardList = from info in listAll
                                                            where info.NumMax - info.NumEnd > 0
                                                            select info;
                        if (!awardList.Any <TodayInfo>())
                        {
                            result2 = string.Format(result, -5, 0);
                        }
                        else
                        {
                            int goodsCount = 0;
                            foreach (TodayInfo info2 in awardList)
                            {
                                goodsCount += info2.AwardInfo.GoodsList.Count;
                            }
                            if (!Global.CanAddGoodsNum(client, goodsCount))
                            {
                                result2 = string.Format(result, -2, 0);
                            }
                            else
                            {
                                foreach (TodayInfo info2 in awardList)
                                {
                                    SystemXmlItem fuBenInfo = null;
                                    if (info2.Type == 6)
                                    {
                                        TaskData taskData = TodayManager.GetTaoTask(client);
                                        if (taskData != null)
                                        {
                                            if (!Global.CancelTask(client, taskData.DbID, taskData.DoingTaskID))
                                            {
                                                return(string.Format(result, -8, 0));
                                            }
                                        }
                                    }
                                    else if (info2.Type == 9)
                                    {
                                        BufferData bufferData = Global.GetBufferDataByID(client, 34);
                                        if (bufferData != null)
                                        {
                                            bufferData.BufferVal  = 0L;
                                            bufferData.BufferSecs = 0;
                                            GameManager.ClientMgr.NotifyBufferData(client, bufferData);
                                        }
                                    }
                                    else if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(info2.FuBenID, out fuBenInfo))
                                    {
                                        return(string.Format(result, -7, 0));
                                    }
                                    if (!this.SetFinishNum(client, info2, fuBenInfo))
                                    {
                                        return(string.Format(result, -1, 0));
                                    }
                                }
                                TodayAwardInfo awardInfo = new TodayAwardInfo();
                                foreach (TodayInfo info2 in awardList)
                                {
                                    int num = info2.NumMax - info2.NumEnd;
                                    for (int i = 0; i < info2.AwardInfo.GoodsList.Count; i++)
                                    {
                                        GoodsData goods = info2.AwardInfo.GoodsList[i];
                                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goods.GoodsID, goods.GCount * num, goods.Quality, "", goods.Forge_level, goods.Binding, 0, "", true, 1, "每日专享", "1900-01-01 12:00:00", goods.AddPropIndex, goods.BornIndex, goods.Lucky, goods.Strong, goods.ExcellenceInfo, goods.AppendPropLev, 0, null, null, 0, true);
                                    }
                                    awardInfo.AddAward(info2.AwardInfo, num);
                                }
                                if (awardInfo.Exp > 0.0)
                                {
                                    GameManager.ClientMgr.ProcessRoleExperience(client, (long)awardInfo.Exp, true, true, false, "none");
                                    GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(GLang.GetLang(30, new object[0]), new object[]
                                    {
                                        awardInfo.Exp
                                    }), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlyErr, 0);
                                }
                                if (awardInfo.GoldBind > 0.0)
                                {
                                    GameManager.ClientMgr.AddMoney1(client, (int)awardInfo.GoldBind, "每日专享", true);
                                }
                                if (awardInfo.MoJing > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, (int)awardInfo.MoJing, "每日专享", true, true, false);
                                }
                                if (awardInfo.ChengJiu > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyChengJiuPointsValue(client, (int)awardInfo.ChengJiu, "每日专享", true, true);
                                }
                                if (awardInfo.ShengWang > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyShengWangValue(client, (int)awardInfo.ShengWang, "每日专享", true, true);
                                }
                                if (awardInfo.ZhanGong > 0.0)
                                {
                                    int zhanGong = (int)awardInfo.ZhanGong;
                                    GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref zhanGong, AddBangGongTypes.Today, 0);
                                }
                                if (awardInfo.DiamondBind > 0.0 || awardInfo.ExtDiamondBind > 0.0)
                                {
                                    GameManager.ClientMgr.AddUserGold(client, (int)(awardInfo.DiamondBind + awardInfo.ExtDiamondBind), "每日专享");
                                }
                                if (awardInfo.XingHun > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyStarSoulValue(client, (int)awardInfo.XingHun, "每日专享", true, true);
                                }
                                if (awardInfo.YuanSuFenMo > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyYuanSuFenMoValue(client, (int)awardInfo.YuanSuFenMo, "每日专享", true, false);
                                }
                                if (awardInfo.ShouHuDianShu > 0.0)
                                {
                                    SingletonTemplate <GuardStatueManager> .Instance().AddGuardPoint(client, (int)awardInfo.ShouHuDianShu, "每日专享");
                                }
                                if (awardInfo.ZaiZao > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyZaiZaoValue(client, (int)awardInfo.ZaiZao, "每日专享", true, true, false);
                                }
                                if (awardInfo.LingJing > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyMUMoHeValue(client, (int)awardInfo.LingJing, "每日专享", true, true, false);
                                }
                                if (awardInfo.RongYao > 0.0)
                                {
                                    GameManager.ClientMgr.ModifyTianTiRongYaoValue(client, (int)awardInfo.RongYao, "每日专享", true);
                                }
                                result2 = this.GetTodayData(client);
                            }
                        }
                    }
                }
            }
            return(result2);
        }
Example #22
0
        private bool ModifyAddElementCost(GameClient client, int costType, int useNum, bool bindOnly)
        {
            bool result;

            if (0 == useNum)
            {
                result = false;
            }
            else
            {
                string strLogFrom = "炼金-灌注";
                if (useNum > 0)
                {
                    strLogFrom = "炼金-灌注GM回滚";
                }
                bool success;
                switch (costType)
                {
                case 1:
                    GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, useNum, strLogFrom, true, true, false);
                    success = true;
                    break;

                case 2:
                    GameManager.ClientMgr.ModifyChengJiuPointsValue(client, useNum, strLogFrom, true, true);
                    success = true;
                    break;

                case 3:
                    GameManager.ClientMgr.ModifyShengWangValue(client, useNum, strLogFrom, true, true);
                    success = true;
                    break;

                case 4:
                    GameManager.ClientMgr.ModifyStarSoulValue(client, useNum, strLogFrom, true, true);
                    success = true;
                    break;

                case 5:
                    GameManager.ClientMgr.ModifyMUMoHeValue(client, useNum, strLogFrom, true, true, false);
                    success = true;
                    break;

                case 6:
                    GameManager.ClientMgr.ModifyYuanSuFenMoValue(client, useNum, strLogFrom, true, false);
                    success = true;
                    break;

                case 7:
                    GameManager.ClientMgr.ModifyZaiZaoValue(client, useNum, strLogFrom, true, true, false);
                    success = true;
                    break;

                case 8:
                    SingletonTemplate <GuardStatueManager> .Instance().AddGuardPoint(client, useNum, strLogFrom);

                    success = true;
                    break;

                case 9:
                    success = GameManager.ClientMgr.ModifyTianTiRongYaoValue(client, useNum, strLogFrom, true);
                    break;

                case 10:
                    if (useNum > 0)
                    {
                        success = GameManager.FluorescentGemMgr.AddFluorescentPoint(client, useNum, strLogFrom, true);
                    }
                    else
                    {
                        success = GameManager.FluorescentGemMgr.DecFluorescentPoint(client, -useNum, strLogFrom, false);
                    }
                    break;

                case 11:
                    GameManager.ClientMgr.ModifyLangHunFenMoValue(client, useNum, strLogFrom, true, true);
                    success = true;
                    break;

                case 12:
                    GameManager.ClientMgr.ModifyShenLiJingHuaPointsValue(client, useNum, strLogFrom, true, true);
                    success = true;
                    break;

                case 13:
                    if (useNum > 0)
                    {
                        success = GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref useNum, AddBangGongTypes.Alchemy, 0);
                        if (success)
                        {
                            GameManager.logDBCmdMgr.AddDBLogInfo(-1, "战功", strLogFrom, "系统", client.ClientData.RoleName, "增加", useNum, client.ClientData.ZoneID, client.strUserID, client.ClientData.BangGong, client.ServerId, null);
                        }
                    }
                    else
                    {
                        success = GameManager.ClientMgr.SubUserBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, -useNum);
                        if (success)
                        {
                            GameManager.logDBCmdMgr.AddDBLogInfo(-1, "战功", strLogFrom, "系统", client.ClientData.RoleName, "减少", -useNum, client.ClientData.ZoneID, client.strUserID, client.ClientData.BangGong, client.ServerId, null);
                        }
                    }
                    break;

                case 14:
                    GameManager.ClientMgr.ModifyOrnamentCharmPointValue(client, useNum, strLogFrom, true, true, false);
                    success = true;
                    break;

                default:
                    if (costType >= this.MinGoodsID)
                    {
                        if (useNum > 0)
                        {
                            GoodsData goodsData = new GoodsData
                            {
                                GoodsID = costType,
                                GCount  = useNum,
                                Binding = 1
                            };
                            if (!Global.CanAddGoodsNum(client, useNum))
                            {
                                Global.UseMailGivePlayerAward(client, goodsData, GLang.GetLang(5000, new object[0]), GLang.GetLang(5000, new object[0]), 1.0);
                                GameManager.ClientMgr.NotifyHintMsg(client, GLang.GetLang(5001, new object[0]));
                            }
                            else
                            {
                                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsData.GoodsID, goodsData.GCount, goodsData.Quality, "", goodsData.Forge_level, goodsData.Binding, 0, "", true, 1, strLogFrom, goodsData.Endtime, 0, 0, 0, 0, 0, 0, 0, null, null, 0, true);
                            }
                        }
                        else
                        {
                            useNum = -useNum;
                            if (Global.GetTotalGoodsCountByID(client, costType) < useNum)
                            {
                                return(false);
                            }
                            int bindGoodsCount = Global.GetTotalBindGoodsCountByID(client, costType);
                            if (bindOnly && bindGoodsCount < useNum)
                            {
                                return(false);
                            }
                            int useBindGoodsCount = Math.Min(bindGoodsCount, useNum);
                            if (useBindGoodsCount > 0)
                            {
                                bool usedBinding;
                                bool usedTimeLimited;
                                if (!GameManager.ClientMgr.NotifyUseBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, costType, useBindGoodsCount, false, out usedBinding, out usedTimeLimited, false))
                                {
                                    LogManager.WriteLog(LogTypes.Error, "扣除物品时发现道具不足", null, true);
                                }
                            }
                            int useNoBindGoodsCount = useNum - useBindGoodsCount;
                            if (useNoBindGoodsCount <= 0)
                            {
                                return(true);
                            }
                            bool bUsedBinding_just_placeholder;
                            bool bUsedTimeLimited_just_placeholder;
                            if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, costType, useNoBindGoodsCount, false, out bUsedBinding_just_placeholder, out bUsedTimeLimited_just_placeholder, false))
                            {
                                LogManager.WriteLog(LogTypes.Error, "扣除物品时发现道具不足", null, true);
                            }
                            return(true);
                        }
                    }
                    return(false);
                }
                result = success;
            }
            return(result);
        }
Example #23
0
        /// <summary>
        /// 获取五行奇阵的奖励,一天只能获取一次
        /// </summary>
        /// <param name="client"></param>
        public static void ProcessWuXingAward(GameClient client)
        {
            //已经领取过了,就不能再领取
            if (!CanGetWuXingAward(client))
            {
                return;
            }

            if (null == TheWuXingMapAwardItem)
            {
                return;
            }

            if (null != TheWuXingMapAwardItem.GoodsDataList)
            {
                //判断背包是否空间足够
                if (!Global.CanAddGoodsDataList(client, TheWuXingMapAwardItem.GoodsDataList))
                {
                    GameManager.ClientMgr.NotifyImportantMsg(
                        Global._TCPManager.MySocketListener,
                        Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(Global.GetLang("背包中空格不足,请清理出足够的空格后,再获取五行奇阵的奖励")), GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, (int)HintErrCodeTypes.NoBagGrid);
                    return;
                }
            }

            int blessPoint = 0;

            //判断如果有坐骑的祝福点奖励,则要判断是否在骑乘状态
            if (TheWuXingMapAwardItem.MinBlessPoint >= 0 && TheWuXingMapAwardItem.MaxBlessPoint >= 0)
            {
                blessPoint = Global.GetRandomNumber(TheWuXingMapAwardItem.MinBlessPoint, TheWuXingMapAwardItem.MaxBlessPoint);
                if (blessPoint > 0)
                {
                    if (client.ClientData.HorseDbID <= 0)
                    {
                        GameManager.ClientMgr.NotifyImportantMsg(
                            Global._TCPManager.MySocketListener,
                            Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(Global.GetLang("获取五行奇阵的奖励的坐骑临时养成点,必须处于骑乘状态")), GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, (int)HintErrCodeTypes.None);

                        return;
                    }
                }
            }

            if (Global.FilterFallGoods(client)) //是否奖励物品
            {
                //奖励用户物品
                if (null != TheWuXingMapAwardItem.GoodsDataList)
                {
                    for (int i = 0; i < TheWuXingMapAwardItem.GoodsDataList.Count; i++)
                    {
                        //想DBServer请求加入某个新的物品到背包中
                        //添加物品
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool,
                                                 client, TheWuXingMapAwardItem.GoodsDataList[i].GoodsID, TheWuXingMapAwardItem.GoodsDataList[i].GCount, TheWuXingMapAwardItem.GoodsDataList[i].Quality, "", TheWuXingMapAwardItem.GoodsDataList[i].Forge_level, TheWuXingMapAwardItem.GoodsDataList[i].Binding, 0, "", true, 1, "五行奇阵奖励物品", Global.ConstGoodsEndTime, TheWuXingMapAwardItem.GoodsDataList[i].AddPropIndex, TheWuXingMapAwardItem.GoodsDataList[i].BornIndex, TheWuXingMapAwardItem.GoodsDataList[i].Lucky, TheWuXingMapAwardItem.GoodsDataList[i].Strong);
                    }
                }
            }

            //添加角色的ID+日期的ID的奖励领取状态
            //更新角色的日常数据_五行奇阵领取奖励数量
            GameManager.ClientMgr.UpdateRoleDailyData_WuXingNum(client, 1);

            //奖励用户经验
            //异步写数据库,写入经验和级别
            double expXiShu   = TheWuXingMapAwardItem.ExpXiShu;
            int    experience = (int)Math.Pow(client.ClientData.Level, expXiShu);

            //处理VIP月卡
            if (DBRoleBufferManager.ProcessMonthVIP(client) > 0.0)
            {
                experience = (int)(experience * 1.50);
            }

            //处理角色经验
            GameManager.ClientMgr.ProcessRoleExperience(client, experience, true, false);

            //五行奇阵通关获取经验通知
            Global.BroadcastWuXingExperience(client, experience);

            //奖励用户金钱
            //异步写数据库,写入金钱
            int money = TheWuXingMapAwardItem.Money1;

            if (-1 != money)
            {
                //过滤金币奖励
                money = Global.FilterValue(client, money);

                //更新用户的铜钱
                GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, money, "五行奇阵", false);

                GameManager.SystemServerEvents.AddEvent(string.Format("角色获取金钱, roleID={0}({1}), Money={2}, newMoney={3}", client.ClientData.RoleID, client.ClientData.RoleName, client.ClientData.Money1, money), EventLevels.Record);
            }

            //获取当前正在骑乘的坐骑的进阶养成点
            int currentHorseBlessPoint = ProcessHorse.GetCurrentHorseBlessPoint(client);

            if (currentHorseBlessPoint > 0 && blessPoint > 0)
            {
                double blessPointPercent = blessPoint / 100.0;
                blessPoint = (int)(blessPointPercent * currentHorseBlessPoint);

                //过滤养成点奖励
                blessPoint = Global.FilterValue(client, blessPoint);

                //为指定的坐骑增加养成点(临时或者永久)
                ProcessHorse.ProcessAddHorseAwardLucky(client, blessPoint, true, "五行奇阵奖励");
            }

            Global.AddWuXingAwardEvent(client, experience, blessPoint);
        }
Example #24
0
        public static int ProcessWingMerge(GameClient client, int mergeItemID, int luckyGoodsID, int WingDBID, int CrystalDBID, CacheMergeItem cacheMergeItem)
        {
            GoodsData goodData = null;

            if (mergeItemID == 5 || mergeItemID == 6)
            {
                if (WingDBID < 0)
                {
                    return(-304);
                }
                goodData = Global.GetGoodsByDbID(client, WingDBID);
                if (goodData == null)
                {
                    return(-305);
                }
            }
            bool usedBinding     = false;
            bool usedTimeLimited = false;

            if (cacheMergeItem.OrigGoodsIDList != null)
            {
                for (int i = 0; i < cacheMergeItem.OrigGoodsIDList.Count; i++)
                {
                    GoodsData goodsData = Global.GetGoodsByID(client, cacheMergeItem.OrigGoodsIDList[i]);
                    if (null == goodsData)
                    {
                        return(-301);
                    }
                    if (goodsData.GCount < cacheMergeItem.OrigGoodsNumList[i])
                    {
                        return(-301);
                    }
                }
                for (int i = 0; i < cacheMergeItem.OrigGoodsIDList.Count; i++)
                {
                    if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.OrigGoodsIDList[i], cacheMergeItem.OrigGoodsNumList[i], false, out usedBinding, out usedTimeLimited, true))
                    {
                        return(-301);
                    }
                }
            }
            int        newGoodsBinding = 0;
            List <int> nNeedCrystalID  = MergeNewGoods.GetCrystalIDForWingMerge(client, mergeItemID);
            int        result;

            if (nNeedCrystalID == null)
            {
                result = -302;
            }
            else
            {
                int  nGoodsID         = -1;
                bool usedBinding2     = false;
                bool usedTimeLimited2 = false;
                if (CrystalDBID > 0)
                {
                    GoodsData goodsinfo = Global.GetGoodsByDbID(client, CrystalDBID);
                    if (goodsinfo != null)
                    {
                        nGoodsID = goodsinfo.GoodsID;
                        if (nNeedCrystalID.Count > 0 && !nNeedCrystalID.Contains(nGoodsID))
                        {
                            return(-302);
                        }
                        if (GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, goodsinfo.GoodsID, 1, false, out usedBinding2, out usedTimeLimited2, false))
                        {
                            if (newGoodsBinding <= 0)
                            {
                                newGoodsBinding = (usedBinding2 ? 1 : 0);
                            }
                        }
                    }
                }
                if (!MergeNewGoods.RollWingMergeSuccess(client, cacheMergeItem, luckyGoodsID))
                {
                    result = -300;
                }
                else
                {
                    int nWingGoods         = MergeNewGoods.GetFianlWingGoodsID(client, mergeItemID, nGoodsID, nNeedCrystalID);
                    int ExcellenceProperty = MergeNewGoods.RollWingGoodsExcellenceProperty(mergeItemID);
                    int nForge             = 0;
                    if (goodData != null)
                    {
                        nForge = goodData.Forge_level;
                    }
                    int dbRet = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, nWingGoods, 1, 0, "", nForge, newGoodsBinding, 0, "", true, 1, "材料合成新物品--翅膀合成", "1900-01-01 12:00:00", 0, 0, 0, 0, ExcellenceProperty, 0, 0, null, null, 0, true);
                    if (dbRet < 0)
                    {
                        result = -20;
                    }
                    else
                    {
                        if (goodData != null)
                        {
                            bool usedBinding3     = false;
                            bool usedTimeLimited3 = false;
                            GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, goodData.GoodsID, 1, false, out usedBinding3, out usedTimeLimited3, false);
                        }
                        result = 0;
                    }
                }
            }
            return(result);
        }
Example #25
0
        /// <summary>
        // 给奖励 --  第二个版本
        /// </summary>
        static public void GiveAwardBloodCastScene2(GameClient client, int nMultiple)
        {
            int nSceneID = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BloodCastleSceneid);
            int nFlag    = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BloodCastleSceneFinishFlag);

            BloodCastleDataInfo bcDataTmp = null;

            if (!Data.BloodCastleDataInfoList.TryGetValue(nSceneID, out bcDataTmp))
            {
                return;
            }

            // 如果提交了任务(就是提交了水晶棺物品) 就给大家奖励
            if (nFlag == 1)
            {
                string[] sItem = bcDataTmp.AwardItem2;

                if (null != sItem && sItem.Length > 0)
                {
                    for (int i = 0; i < sItem.Length; i++)
                    {
                        if (string.IsNullOrEmpty(sItem[i].Trim()))
                        {
                            continue;
                        }

                        string[] sFields = sItem[i].Split(',');
                        if (string.IsNullOrEmpty(sFields[i].Trim()))
                        {
                            continue;
                        }

                        int nGoodsID  = Convert.ToInt32(sFields[0].Trim());
                        int nGoodsNum = Convert.ToInt32(sFields[1].Trim());
                        int nBinding  = Convert.ToInt32(sFields[2].Trim());

                        GoodsData goodsData = new GoodsData()
                        {
                            Id             = -1, GoodsID = nGoodsID, Using = 0, Forge_level = 0, Starttime = "1900-01-01 12:00:00", Endtime = Global.ConstGoodsEndTime, Site = 0,
                            Quality        = (int)GoodsQuality.White, Props = "", GCount = nGoodsNum, Binding = nBinding, Jewellist = "", BagIndex = 0, AddPropIndex = 0, BornIndex = 0, Lucky = 0, Strong = 0,
                            ExcellenceInfo = 0, AppendPropLev = 0, ChangeLifeLevForEquip = 0,
                        };

                        string sMsg = "血色堡垒奖励--统一奖励";

                        if (!Global.CanAddGoodsNum(client, nGoodsNum))
                        {
                            for (int j = 0; j < nGoodsNum; ++j)
                            {
                                Global.UseMailGivePlayerAward(client, goodsData, "血色堡垒奖励", sMsg);
                            }
                        }
                        else
                        {
                            Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, nGoodsID, nGoodsNum, goodsData.Quality, "", goodsData.Forge_level,
                                                     goodsData.Binding, 0, "", true, 1, sMsg, goodsData.Endtime);
                        }
                    }
                }
            }

            // 根据积分以及公式给奖励(经验)
            if (client.ClientData.BloodCastleAwardPoint > 0)
            {
                // 公式
                int nExp   = nMultiple * client.ClientData.BloodCastleAwardPoint * bcDataTmp.ExpModulus;
                int nMoney = client.ClientData.BloodCastleAwardPoint * bcDataTmp.MoneyModulus;

                if (nExp > 0)
                {
                    GameManager.ClientMgr.ProcessRoleExperience(client, nExp, false);
                }

                if (nMoney > 0)
                {
                    GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, nMoney, "血色城堡奖励二", false);
                }
                //GameManager.ClientMgr.AddUserYinLiang(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, nMoney);

                // 存盘
                if (client.ClientData.BloodCastleAwardPoint > client.ClientData.BloodCastleAwardTotalPoint)
                {
                    client.ClientData.BloodCastleAwardTotalPoint = client.ClientData.BloodCastleAwardPoint;
                }

                if (client.ClientData.BloodCastleAwardPoint > m_nTotalPointValue)
                {
                    SetTotalPointInfo(client.ClientData.RoleName, client.ClientData.BloodCastleAwardPoint);
                }

                // 清空
                client.ClientData.BloodCastleAwardPoint = 0;
                Global.SaveRoleParamsInt32ValueToDB(client, RoleParamName.BloodCastlePlayerPoint, client.ClientData.BloodCastleAwardPoint, true);
            }
        }
Example #26
0
        /// <summary>
        /// 处理装备进阶
        /// </summary>
        /// <param name="goodsDbID"></param>
        /// <param name="ironNum"></param>
        /// <param name="goldRock"></param>
        /// <param name="luckyNum"></param>
        /// <returns></returns>
        public static int ProcessUpgrade(GameClient client, int goodsDbID)
        {
            //判断背包中是否有此物品
            GoodsData goodsData = Global.GetGoodsByDbID(client, goodsDbID);

            if (null == goodsData)
            {
                return(-1);
            }

            if (goodsData.Site != 0) //如果物品不在背包中,拒绝操作
            {
                return(-9998);
            }

            if (goodsData.Using > 0) //如果物品被佩戴在身上, 拒绝操作
            {
                return(-9999);
            }

            //首先判断要进阶的物品是否是装备,如果不是,则返回失败代码
            SystemXmlItem systemGoods = null;

            if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(goodsData.GoodsID, out systemGoods))
            {
                return(-2);
            }

            //判断是否是武器装备
            int categoriy = systemGoods.GetIntValue("Categoriy");

            if (categoriy < (int)ItemCategories.TouKui || categoriy >= (int)ItemCategories.EquipMax)
            {
                return(-3);
            }

            //判断是否已经是最高阶的装备
            int suitID = systemGoods.GetIntValue("SuitID");

            //不用判断,便于将来自由扩展,也不用维护MaxSuitID的值

            /*
             * if (suitID >= Global.MaxSuitID)
             * {
             *  return -4;
             * }
             */

            int toOccupation = systemGoods.GetIntValue("ToOccupation");
            int toSex        = systemGoods.GetIntValue("ToSex");

            int           newGoodsID             = -1;
            SystemXmlItem newGoodsXmlItem        = null;
            Dictionary <int, SystemXmlItem> dict = GameManager.SystemGoods.SystemXmlItemDict;

            foreach (var goodsItem in dict.Values)
            {
                if (categoriy == goodsItem.GetIntValue("Categoriy") &&
                    goodsItem.GetIntValue("SuitID") == (suitID + 1) &&
                    goodsItem.GetIntValue("ToOccupation") == toOccupation &&
                    goodsItem.GetIntValue("ToSex") == toSex)
                {
                    newGoodsXmlItem = goodsItem;
                    newGoodsID      = goodsItem.GetIntValue("ID");
                    break;
                }
            }

            //没有找到下一阶的装备
            if (newGoodsID < 0)
            {
                return(-5);
            }

            //下一阶装备ID
            int nextSuitID = suitID + 1;

            //返回装备进阶配置项
            SystemXmlItem systemEquipUpgradeItem = EquipUpgradeCacheMgr.GetEquipUpgradeCacheItem(categoriy, nextSuitID);

            //相当于前面的最高阶判断
            if (null == systemEquipUpgradeItem)
            {
                return(-4);
            }

            //需要物品 女娲石
            int needGoodsID = systemEquipUpgradeItem.GetIntValue("NeedGoodsID");

            if (needGoodsID < 0)
            {
                return(-6);
            }

            //需要物品数量
            int needGoodsNum = systemEquipUpgradeItem.GetIntValue("GoodsNum");

            if (needGoodsNum <= 0)
            {
                return(-7);
            }

            //需要积分
            int needJiFen = systemEquipUpgradeItem.GetIntValue("JiFen");

            if (needJiFen <= 0)
            {
                return(-8);
            }

            //成功率
            int succeed = systemEquipUpgradeItem.GetIntValue("Succeed") * 100;//为了以10000为标准进行概率判定,乘100

            if (succeed < 0)
            {
                return(-9);
            }

            int  newGoodsBinding = goodsData.Binding;
            bool usedBinding     = false;
            bool usedTimeLimited = false;

            //女娲石数量不够
            if (Global.GetTotalGoodsCountByID(client, needGoodsID) < needGoodsNum)
            {
                return(-10);
            }

            //积分是否足够
            int jiFen = GameManager.ClientMgr.GetZhuangBeiJiFenValue(client);

            if (jiFen < needJiFen)
            {
                return(-11);//装备积分先屏蔽,主要方便测试
            }

            //扣除进阶道具
            if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool,
                                                      Global._TCPManager.TcpOutPacketPool, client, needGoodsID, needGoodsNum, false, out usedBinding, out usedTimeLimited))
            {
                return(-12);
            }

            //成功与否判断
            if (Global.GetRandomNumber(0, 10001) > succeed)
            {
                return(-1000); //进阶没有成功
            }

            //进阶成功,开始装备扣除
            //扣除积分
            GameManager.ClientMgr.ModifyZhuangBeiJiFenValue(client, -needJiFen, true);

            //扣除原有的装备
            if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool,
                                                      Global._TCPManager.TcpOutPacketPool, client, goodsDbID, false))
            {
                return(-14);
            }

            int currentStrong = Math.Max(goodsData.Strong, 0);
            //int currentLucky = Math.Max(0, goodsData.Lucky);
            int currentLucky = 0; //幸运值不带过去

            //给予新的装备
            int dbRet = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, newGoodsID, 1, goodsData.Quality, "", goodsData.Forge_level,
                                                 goodsData.Binding, 0, goodsData.Jewellist, false, 1, "装备进阶", Global.ConstGoodsEndTime, goodsData.AddPropIndex, goodsData.BornIndex, currentLucky, currentStrong, goodsData.ExcellenceInfo, goodsData.AppendPropLev, goodsData.ChangeLifeLevForEquip, goodsData.WashProps);

            if (dbRet < 0)
            {
                return(-2000);
            }

            //进阶成功(紫色 + 6级以上提示)
            Global.BroadcastEquipUpgradeOk(client, goodsData.GoodsID, newGoodsID, goodsData.Quality, goodsData.Forge_level);

            //处理成就,第一次炼化,炼化就是神装进阶,的确不好理解
            //ChengJiuManager.OnFirstLianHua(client);

            return(dbRet);
        }
Example #27
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);
 }
Example #28
0
        private static int ProcessMergeNewGoods(GameClient client, int mergeItemID, CacheMergeItem cacheMergeItem, int luckyGoodsID, int nUseBindItemFirst)
        {
            int  newGoodsBinding   = 0;
            int  addSuccessPercent = 0;
            bool bLeftGrid         = false;
            int  nNewGoodsID       = cacheMergeItem.NewGoodsID[0];

            if (cacheMergeItem.NewGoodsID.Count > 1)
            {
                if (!Global.CanAddGoodsNum(client, 1))
                {
                    return(-1);
                }
                nNewGoodsID = cacheMergeItem.NewGoodsID[Global.GetRandomNumber(0, cacheMergeItem.NewGoodsID.Count)];
                bLeftGrid   = true;
            }
            int ret = MergeNewGoods.CanMergeNewGoods(client, cacheMergeItem, nNewGoodsID, bLeftGrid);
            int result;

            if (ret < 0)
            {
                result = ret;
            }
            else
            {
                if (luckyGoodsID > 0)
                {
                    int luckyPercent = Global.GetLuckyValue(luckyGoodsID);
                    if (luckyPercent > 0)
                    {
                        bool usedBinding     = false;
                        bool usedTimeLimited = false;
                        if (GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, luckyGoodsID, 1, false, out usedBinding, out usedTimeLimited, false))
                        {
                            if (newGoodsBinding <= 0)
                            {
                                newGoodsBinding = (usedBinding ? 1 : 0);
                            }
                            addSuccessPercent = luckyPercent;
                        }
                    }
                }
                bool success = MergeNewGoods.JugeSucess(mergeItemID, cacheMergeItem, addSuccessPercent);
                for (int i = 0; i < cacheMergeItem.OrigGoodsIDList.Count; i++)
                {
                    int usingGoodsNum   = MergeNewGoods.GetUsingGoodsNum(success, cacheMergeItem, cacheMergeItem.OrigGoodsIDList[i], cacheMergeItem.OrigGoodsNumList[i]);
                    int nBindGoodNum    = Global.GetTotalBindGoodsCountByID(client, cacheMergeItem.OrigGoodsIDList[i]);
                    int nNotBindGoodNum = Global.GetTotalNotBindGoodsCountByID(client, cacheMergeItem.OrigGoodsIDList[i]);
                    if (usingGoodsNum > nBindGoodNum + nNotBindGoodNum)
                    {
                        return(-10);
                    }
                    bool usedBinding     = false;
                    bool usedTimeLimited = false;
                    if (nUseBindItemFirst > 0 && nBindGoodNum > 0)
                    {
                        int nSum;
                        int nSubNum;
                        if (usingGoodsNum > nBindGoodNum)
                        {
                            nSum    = nBindGoodNum;
                            nSubNum = usingGoodsNum - nBindGoodNum;
                        }
                        else
                        {
                            nSum    = usingGoodsNum;
                            nSubNum = 0;
                        }
                        if (nSum > 0)
                        {
                            if (!GameManager.ClientMgr.NotifyUseBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.OrigGoodsIDList[i], nSum, false, out usedBinding, out usedTimeLimited, true))
                            {
                                return(-10);
                            }
                        }
                        if (nSubNum > 0)
                        {
                            if (!GameManager.ClientMgr.NotifyUseNotBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.OrigGoodsIDList[i], nSubNum, false, out usedBinding, out usedTimeLimited, true))
                            {
                                return(-10);
                            }
                        }
                        newGoodsBinding = 1;
                    }
                    else
                    {
                        int nSum;
                        int nSubNum;
                        if (usingGoodsNum > nNotBindGoodNum)
                        {
                            nSum    = nNotBindGoodNum;
                            nSubNum = usingGoodsNum - nNotBindGoodNum;
                        }
                        else
                        {
                            nSum    = usingGoodsNum;
                            nSubNum = 0;
                        }
                        if (nSum > 0)
                        {
                            if (!GameManager.ClientMgr.NotifyUseNotBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.OrigGoodsIDList[i], nSum, false, out usedBinding, out usedTimeLimited, true))
                            {
                                return(-10);
                            }
                        }
                        if (nSubNum > 0)
                        {
                            if (!GameManager.ClientMgr.NotifyUseBindGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.OrigGoodsIDList[i], nSubNum, false, out usedBinding, out usedTimeLimited, true))
                            {
                                return(-10);
                            }
                            newGoodsBinding = 1;
                        }
                    }
                }
                if (cacheMergeItem.DianJuan > 0)
                {
                    if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, cacheMergeItem.DianJuan, "合成新物品", true, true, false, DaiBiSySType.None))
                    {
                        return(-11);
                    }
                }
                if (cacheMergeItem.Money > 0)
                {
                    if (!Global.SubBindTongQianAndTongQian(client, cacheMergeItem.Money, "材料合成"))
                    {
                        return(-12);
                    }
                }
                if (cacheMergeItem.JingYuan > 0)
                {
                    GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, -cacheMergeItem.JingYuan, "材料合成", true, true, false);
                }
                if (!success)
                {
                    result = -1000;
                }
                else
                {
                    int dbRet = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, nNewGoodsID, 1, 0, "", 0, newGoodsBinding, 0, "", true, 1, "材料合成新物品", "1900-01-01 12:00:00", 0, 0, 0, 0, 0, 0, 0, null, null, 0, true);
                    if (dbRet < 0)
                    {
                        result = -20;
                    }
                    else
                    {
                        if (90 == Global.GetGoodsCatetoriy(nNewGoodsID))
                        {
                            if (Global.GetJewelLevel(nNewGoodsID) >= 6)
                            {
                                Global.BroadcastMergeJewelOk(client, nNewGoodsID);
                            }
                        }
                        if (120 == Global.GetGoodsCatetoriy(nNewGoodsID))
                        {
                        }
                        ChengJiuManager.OnFirstHeCheng(client);
                        ChengJiuManager.OnRoleGoodsHeCheng(client, nNewGoodsID);
                        SevenDayGoalEventObject evObj = SevenDayGoalEvPool.Alloc(client, ESevenDayGoalFuncType.HeChengTimes);
                        evObj.Arg1 = nNewGoodsID;
                        GlobalEventSource.getInstance().fireEvent(evObj);
                        ProcessTask.ProcessAddTaskVal(client, TaskTypes.Merge_GuoShi, cacheMergeItem.MergeType, 1, new object[0]);
                        result = 0;
                    }
                }
            }
            return(result);
        }
Example #29
0
        /// <summary>
        /// 给予奖励
        /// </summary>
        /// <param name="client"></param>
        public void GiveAwardAngelTempleScene(bool bBossKilled)
        {
            List <Object> objsList = GameManager.ClientMgr.GetMapClients(m_AngelTempleData.MapCode); //发送给所有地图的用户

            if (null == objsList)
            {
                return;
            }

            //拷贝一份伤害列表
            int roleCount = 0;
            List <AngelTemplePointInfo> pointList = new List <AngelTemplePointInfo>();

            lock (m_PointDamageInfoMutex)
            {
                for (int i = 0; i < objsList.Count; ++i)
                {
                    if (!(objsList[i] is GameClient))
                    {
                        continue;
                    }

                    GameClient client = (objsList[i] as GameClient);

                    AngelTemplePointInfo tmpInfo;
                    if (!m_RoleDamageAngelValue.TryGetValue(client.ClientData.RoleID, out tmpInfo))
                    {
                        SendAngelTempleAwardMsg(client, -1, 0, 0, Global.GetLang("无"), "", bBossKilled);
                        continue;
                    }
                    if (tmpInfo.LeaveScene)
                    {
                        continue;
                    }
                    if (Interlocked.CompareExchange(ref tmpInfo.m_GetAwardFlag, 1, 0) != 0)
                    {
                        continue;
                    }

                    if (tmpInfo.m_DamagePoint < AngelTempleMinHurt)
                    {
                        SendAngelTempleAwardMsg(client, -1, 0, 0, Global.GetLang("无"), "", bBossKilled);
                        continue;
                    }

                    roleCount++;
                    pointList.Add(tmpInfo);
                }
            }

            //按伤害排序
            pointList.Sort(AngelTemplePointInfo.Compare_static); //从大到小排序

            //计算排名奖励
            if (bBossKilled)
            {
                foreach (var kv in GameManager.AngelTempleAward.SystemXmlItemDict)
                {
                    if (null != kv.Value)
                    {
                        int    id         = kv.Value.GetIntValue("ID");
                        int    minPaiMing = kv.Value.GetIntValue("MinPaiMing");
                        int    maxPaiMing = kv.Value.GetIntValue("MaxPaiMing");
                        int    shengWang  = kv.Value.GetIntValue("ShengWang");
                        int    gold       = kv.Value.GetIntValue("Gold");
                        string goodsStr   = kv.Value.GetStringValue("Goods");

                        minPaiMing = Global.GMax(0, minPaiMing - 1);
                        maxPaiMing = Global.GMin(10000, maxPaiMing - 1);
                        for (int i = minPaiMing; i <= maxPaiMing && i < roleCount; i++)
                        {
                            pointList[i].m_AwardPaiMing    = i + 1;
                            pointList[i].m_AwardShengWang += shengWang;
                            pointList[i].m_AwardGold      += gold;
                            pointList[i].GoodsList.AddNoRepeat(goodsStr);
                        }
                    }
                }

                //计算幸运奖励
                int[] luckPaiMings = new int[roleCount];
                for (int i = 0; i < roleCount; i++)
                {
                    luckPaiMings[i] = i;
                }
                int luckAwardsCount = 0; //幸运奖励计数
                foreach (var kv in GameManager.AngelTempleLuckyAward.SystemXmlItemDict)
                {
                    if (null != kv.Value)
                    {
                        int    awardID        = kv.Value.GetIntValue("ID");
                        int    awardNum       = kv.Value.GetIntValue("Number");
                        string luckAwardsName = Global.GetLang(kv.Value.GetStringValue("Name"));
                        string luckAwardGoods = kv.Value.GetStringValue("Goods");
                        for (int count = 0; count < awardNum && luckAwardsCount < roleCount; count++, luckAwardsCount++)
                        {
                            int rand = Global.GetRandomNumber(luckAwardsCount, roleCount); //在剩下的角色里面随机抽取一个
                            int t    = luckPaiMings[luckAwardsCount];
                            luckPaiMings[luckAwardsCount] = luckPaiMings[rand];
                            luckPaiMings[rand]            = t;

                            int index = luckPaiMings[luckAwardsCount]; //此幸运获奖者在伤害排行中的位置
                            //pointList[index].m_LuckPaiMingID = awardID;
                            pointList[index].m_LuckPaiMingName = luckAwardsName;
                            pointList[index].GoodsList.AddNoRepeat(luckAwardGoods);
                        }
                    }
                }
            }
            else
            {
                SystemXmlItem xmlItem = null;
                foreach (var kv in GameManager.AngelTempleAward.SystemXmlItemDict)
                {
                    if (null != kv.Value)
                    {
                        xmlItem = kv.Value;
                    }
                }

                if (null != xmlItem)
                {
                    int    id        = xmlItem.GetIntValue("ID");
                    int    shengWang = xmlItem.GetIntValue("ShengWang");
                    int    gold      = xmlItem.GetIntValue("Gold");
                    string goodsStr  = xmlItem.GetStringValue("Goods");

                    for (int i = 0; i < roleCount; i++)
                    {
                        pointList[i].m_AwardPaiMing    = -1;
                        pointList[i].m_LuckPaiMingName = Global.GetLang("无");
                        pointList[i].m_AwardShengWang  = shengWang;
                        pointList[i].m_AwardGold       = gold;
                        pointList[i].GoodsList.AddNoRepeat(goodsStr);
                    }
                }
            }

            // 节日活动的多倍处理
            double awardmuti = 1.0;
            JieRiMultAwardActivity activity = HuodongCachingMgr.GetJieRiMultAwardActivity();

            if (null != activity)
            {
                JieRiMultConfig config = activity.GetConfig((int)MultActivityType.AngelTemple);
                if (null != config)
                {
                    awardmuti += config.GetMult();
                }
            }

            if (awardmuti > 1.0)
            {
                foreach (var dp in pointList)
                {
                    dp.m_AwardGold      = (int)(dp.m_AwardGold * awardmuti);
                    dp.m_AwardShengWang = (int)(dp.m_AwardShengWang * awardmuti);
                    foreach (var item in dp.GoodsList.Items)
                    {
                        item.GoodsNum = (int)(item.GoodsNum * awardmuti);
                    }
                }
            }

            //发放奖励
            foreach (var dp in pointList)
            {
                GameClient gc = GameManager.ClientMgr.FindClient(dp.m_RoleID);
                if (null != gc)
                {
                    if (dp.m_AwardGold > 0)
                    {
                        GameManager.ClientMgr.AddUserYinLiang(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, gc, dp.m_AwardGold, "天使神殿奖励");
                    }
                    if (dp.m_AwardShengWang > 0)
                    {
                        GameManager.ClientMgr.ModifyShengWangValue(gc, dp.m_AwardShengWang, "天使神殿", true);
                        //GameManager.ClientMgr.ModifyZhanHunValue(gc, dp.m_AwardShengWang, false, true);
                    }

                    foreach (var item in dp.GoodsList.Items)
                    {
                        Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, gc, item.GoodsID, item.GoodsNum, 0, "", item.Level, item.Binding, 0, "", true, 1, "天使神殿奖励物品", Global.ConstGoodsEndTime, 0, 0, item.IsHaveLuckyProp, 0, item.ExcellencePorpValue, item.AppendLev);
                    }
                    SendAngelTempleAwardMsg(gc, dp.m_AwardPaiMing, dp.m_AwardGold, dp.m_AwardShengWang, dp.m_LuckPaiMingName, dp.GoodsList.ToString(), bBossKilled);
                }
            }
        }
Example #30
0
        public static CallSpriteResult CallPet(GameClient client, int times, out string strGetGoods)
        {
            strGetGoods = "";
            CallSpriteResult result;

            if (times != 1 && times != 10)
            {
                result = CallSpriteResult.ErrorParams;
            }
            else
            {
                CallPetType TypeData = CallPetManager.GetCallPetType(1);
                if (null == TypeData)
                {
                    result = CallSpriteResult.ErrorConfig;
                }
                else if (client.ClientData.Level < TypeData.MinLevel)
                {
                    result = CallSpriteResult.ErrorLevel;
                }
                else if (client.ClientData.Level > TypeData.MaxLevel)
                {
                    result = CallSpriteResult.ErrorLevel;
                }
                else if (client.ClientData.ChangeLifeCount < TypeData.MinZhuanSheng)
                {
                    result = CallSpriteResult.ErrorLevel;
                }
                else if (client.ClientData.ChangeLifeCount > TypeData.MaxZhuanSheng)
                {
                    result = CallSpriteResult.ErrorLevel;
                }
                else
                {
                    bool bFreeCall = false;
                    bool bUseGoods = false;
                    int  bind      = 0;
                    if (1 == times)
                    {
                        if (CallPetManager.getFreeSec(client) <= 0L)
                        {
                            bFreeCall = true;
                            bind      = 1;
                        }
                    }
                    if (!bFreeCall && CallPetManager.CallPetGoodsID > 0)
                    {
                        if (1 == times)
                        {
                            if (null != Global.GetGoodsByID(client, CallPetManager.CallPetGoodsID))
                            {
                                bUseGoods = true;
                                bind      = 1;
                            }
                        }
                    }
                    int nNeedLuckStar = CallPetManager.GetCallPetPrice(times);
                    if (nNeedLuckStar < 0)
                    {
                        result = CallSpriteResult.ErrorConfig;
                    }
                    else
                    {
                        if (!bFreeCall && !bUseGoods)
                        {
                            if (Global.IsRoleHasEnoughMoney(client, nNeedLuckStar, 163) < 0 && !HuanLeDaiBiManager.GetInstance().HuanledaibiReplaceEnough(client, nNeedLuckStar, DaiBiSySType.JingLingLieQu))
                            {
                                return(CallSpriteResult.ZuanShiNotEnough);
                            }
                        }
                        if (CallPetManager.GetMaxPetCount() - CallPetManager.GetPetListCount(client) < times)
                        {
                            result = CallSpriteResult.SpriteBagIsFull;
                        }
                        else
                        {
                            if (!bFreeCall)
                            {
                                if (bUseGoods)
                                {
                                    bool usedBinding     = false;
                                    bool usedTimeLimited = false;
                                    if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, CallPetManager.CallPetGoodsID, 1, false, out usedBinding, out usedTimeLimited, false))
                                    {
                                        bUseGoods = false;
                                    }
                                }
                            }
                            if (!bFreeCall && !bUseGoods)
                            {
                                if (!GameManager.ClientMgr.ModifyLuckStarValue(client, -nNeedLuckStar, "精灵召唤", false, DaiBiSySType.JingLingLieQu))
                                {
                                    return(CallSpriteResult.ZuanShiNotEnough);
                                }
                                bind = 0;
                            }
                            for (int i = 0; i < times; i++)
                            {
                                CallPetConfig        CfgData = null;
                                List <CallPetConfig> CfgList = CallPetManager.GetCallPetConfigList(bFreeCall || bUseGoods);
                                if (CfgList == null || CfgList.Count <= 0)
                                {
                                    return(CallSpriteResult.ErrorConfig);
                                }
                                int random = Global.GetRandomNumber(1, 100001);
                                foreach (CallPetConfig item in CfgList)
                                {
                                    if (random >= item.StartValues && random <= item.EndValues)
                                    {
                                        CfgData = item;
                                        break;
                                    }
                                }
                                LogManager.WriteLog(LogTypes.Info, string.Format("获取精灵随机数: random = {0}, GoodsID = {1}", random, CfgData.GoodsID), null, true);
                                if (null != CfgData)
                                {
                                    int nExcellenceProp = 0;
                                    if (CfgData.ZhuoYueFallID != -1)
                                    {
                                        nExcellenceProp = GameManager.GoodsPackMgr.GetExcellencePropertysID(CfgData.GoodsID, CfgData.ZhuoYueFallID);
                                    }
                                    Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, CfgData.GoodsID, CfgData.Num, 0, "", 0, bind, 4000, "", false, 1, "精灵召唤", "1900-01-01 12:00:00", 0, 0, 0, 0, nExcellenceProp, 0, 0, null, null, 0, true);
                                    strGetGoods += string.Format("{0},{1},{2},{3},{4},{5},{6}|", new object[]
                                    {
                                        CfgData.GoodsID,
                                        CfgData.Num,
                                        bind,
                                        0,
                                        0,
                                        0,
                                        nExcellenceProp
                                    });
                                }
                            }
                            if (bFreeCall)
                            {
                                Global.UpdateRoleParamByName(client, "CallPetFreeTime", Global.GetOffsetSecond(TimeUtil.NowDateTime()).ToString(), true);
                                if (client._IconStateMgr.CheckPetIcon(client))
                                {
                                    client._IconStateMgr.SendIconStateToClient(client);
                                }
                            }
                            else if (!bUseGoods)
                            {
                                int nPetJiFen = (int)((double)nNeedLuckStar * CallPetManager.ConsumeCallPetJiFen);
                                GameManager.ClientMgr.ModifyPetJiFenValue(client, nPetJiFen, "精灵召唤", false, true);
                            }
                            result = CallSpriteResult.Success;
                        }
                    }
                }
            }
            return(result);
        }