private int GiveSweepReward(GameClient client)
        {
            int result;

            if (client.ClientData.LayerRewardData == null || client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count != 1)
            {
                result = -1;
            }
            else
            {
                int nExp    = 0;
                int nMoney  = 0;
                int nXinHun = 0;
                List <GoodsData> rewardList = null;
                lock (client.ClientData.LayerRewardData)
                {
                    nExp       = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nExp;
                    nMoney     = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nMoney;
                    nXinHun    = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].nXinHun;
                    rewardList = client.ClientData.LayerRewardData.WanMoTaLayerRewardList[0].sweepAwardGoodsList;
                    client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Clear();
                }
                WanMotaCopySceneManager.AddRewardToClient(client, rewardList, nExp, nMoney, nXinHun, "万魔塔扫荡奖励");
                result = 0;
            }
            return(result);
        }
        public bool processCmd(Logic.GameClient client, string[] cmdParams)
        {
            int    nID     = (int)TCPGameServerCmds.CMD_SPR_GET_WANMOTA_DETAIL;
            int    nRoleID = Global.SafeConvertToInt32(cmdParams[0]);
            string strCmd  = "";

            WanMotaInfo data = WanMotaCopySceneManager.GetWanMoTaDetail(client, false);

            if (null == data)
            {
                strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", -1, nRoleID, 0, 0, 0, 0, 0);
                client.sendCmd(nID, strCmd);
                return(true);
            }
            else
            {
                strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", 0, nRoleID,
                                       data.nPassLayerCount,
                                       data.nTopPassLayerCount,
                                       SweepWanMotaManager.GetSweepCount(client),
                                       data.nSweepLayer,
                                       WanMotaCopySceneManager.WanmotaIsSweeping(client));

                if (WanMoTaTopLayer < data.nTopPassLayerCount)
                {
                    WanMoTaTopLayer = data.nTopPassLayerCount;
                }

                client.sendCmd(nID, strCmd);
                return(true);
            }
        }
Beispiel #3
0
        public static bool IsInCopyTimesLimit(GameClient client, SystemXmlItem fubenItem)
        {
            bool result;

            if (client == null || fubenItem == null)
            {
                result = false;
            }
            else
            {
                int copyId = fubenItem.GetIntValue("ID", -1);
                if (WanMotaCopySceneManager.IsWanMoTaMapCode(copyId))
                {
                    result = true;
                }
                else
                {
                    int maxEnterNum  = fubenItem.GetIntValue("EnterNumber", -1);
                    int maxFinishNum = fubenItem.GetIntValue("FinishNumber", -1);
                    int hadFinishNum;
                    int hadEnterNum = Global.GetFuBenEnterNum(Global.GetFuBenData(client, copyId), out hadFinishNum);
                    if (maxEnterNum <= 0 && maxFinishNum <= 0)
                    {
                        result = true;
                    }
                    else
                    {
                        int[] nAddNum;
                        if (Global.IsInExperienceCopyScene(copyId))
                        {
                            nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum", ',');
                        }
                        else if (copyId == 5100)
                        {
                            nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum", ',');
                        }
                        else
                        {
                            nAddNum = null;
                        }
                        int extAddNum = 0;
                        int nVipLev   = client.ClientData.VipLevel;
                        if (nVipLev > 0 && nVipLev <= VIPEumValue.VIPENUMVALUE_MAXLEVEL && nAddNum != null && nAddNum.Length > nVipLev)
                        {
                            extAddNum = nAddNum[nVipLev];
                        }
                        result = ((maxEnterNum <= 0 || hadEnterNum < maxEnterNum + extAddNum) && (maxFinishNum <= 0 || hadFinishNum < maxFinishNum + extAddNum));
                    }
                }
            }
            return(result);
        }
Beispiel #4
0
        public bool processCmd(GameClient client, string[] cmdParams)
        {
            int         nID     = 618;
            int         nRoleID = Global.SafeConvertToInt32(cmdParams[0]);
            WanMotaInfo data    = WanMotaCopySceneManager.GetWanMoTaDetail(client, false);
            bool        result;

            if (null == data)
            {
                string strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[]
                {
                    -1,
                    nRoleID,
                    0,
                    0,
                    0,
                    0,
                    0
                });
                client.sendCmd(nID, strCmd, false);
                result = true;
            }
            else
            {
                if (data.nPassLayerCount != client.ClientData.WanMoTaNextLayerOrder)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("角色roleid={0} 万魔塔层数不一致 nPassLayerCount={1}, WanMoTaNextLayerOrder={2}", client.ClientData.RoleID, data.nPassLayerCount, client.ClientData.WanMoTaNextLayerOrder), null, true);
                    client.ClientData.WanMoTaNextLayerOrder = data.nPassLayerCount;
                    GameManager.ClientMgr.SaveWanMoTaPassLayerValue(client, data.nPassLayerCount, true);
                }
                string strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[]
                {
                    0,
                    nRoleID,
                    data.nPassLayerCount,
                    data.nTopPassLayerCount,
                    SweepWanMotaManager.GetSweepCount(client),
                    data.nSweepLayer,
                    WanMotaCopySceneManager.WanmotaIsSweeping(client)
                });
                SingletonTemplate <WanMoTaTopLayerManager> .Instance().CheckNeedUpdate(data.nTopPassLayerCount);

                client.sendCmd(nID, strCmd, false);
                result = true;
            }
            return(result);
        }
        public bool processCmd(Logic.GameClient client, string[] cmdParams)
        {
            int    nID     = (int)TCPGameServerCmds.CMD_SPR_GET_WANMOTA_DETAIL;
            int    nRoleID = Global.SafeConvertToInt32(cmdParams[0]);
            string strCmd  = "";

            WanMotaInfo data = WanMotaCopySceneManager.GetWanMoTaDetail(client, false);

            if (null == data)
            {
                strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", -1, nRoleID, 0, 0, 0, 0, 0);
                client.sendCmd(nID, strCmd);
                return(true);
            }
            else
            {
                if (data.nPassLayerCount != client.ClientData.WanMoTaNextLayerOrder)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("角色roleid={0} 万魔塔层数不一致 nPassLayerCount={1}, WanMoTaNextLayerOrder={2}", client.ClientData.RoleID, data.nPassLayerCount, client.ClientData.WanMoTaNextLayerOrder));
                    client.ClientData.WanMoTaNextLayerOrder = data.nPassLayerCount;
                    //WanMoTaDBCommandManager.LayerChangeDBCommand(client, data.nPassLayerCount);
                    GameManager.ClientMgr.SaveWanMoTaPassLayerValue(client, data.nPassLayerCount, true);
                }

                strCmd = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", 0, nRoleID,
                                       data.nPassLayerCount,
                                       data.nTopPassLayerCount,
                                       SweepWanMotaManager.GetSweepCount(client),
                                       data.nSweepLayer,
                                       WanMotaCopySceneManager.WanmotaIsSweeping(client));

                // modify by chenjingui. 20150717,解决多线程操作问题
                // 其实应该在GameServer启动的时候,加载一次万魔塔最高通关,暂时先按照原有方式
                WanMoTaTopLayerManager.Instance().CheckNeedUpdate(data.nTopPassLayerCount);

                /*
                 * if (WanMoTaTopLayer < data.nTopPassLayerCount)
                 * {
                 *  WanMoTaTopLayer = data.nTopPassLayerCount;
                 * }*/

                client.sendCmd(nID, strCmd);
                return(true);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 是否满足副本的进入次数和完成次数限制
        /// </summary>
        public static bool IsInCopyTimesLimit(GameClient client, SystemXmlItem fubenItem)
        {
            if (client == null || fubenItem == null)
            {
                return(false);
            }

            int copyId = fubenItem.GetIntValue("ID");

            if (WanMotaCopySceneManager.IsWanMoTaMapCode(copyId))
            {
                // 万魔塔的挑战次数没有限制
                return(true);
            }

            int maxEnterNum  = fubenItem.GetIntValue("EnterNumber");
            int maxFinishNum = fubenItem.GetIntValue("FinishNumber");

            int hadFinishNum;
            int hadEnterNum = Global.GetFuBenEnterNum(Global.GetFuBenData(client, copyId), out hadFinishNum);

            if (maxEnterNum <= 0 && maxFinishNum <= 0)
            {
                // 没有次数限制
                return(true);
            }

            // VIP 对金币副本和经验副本有次数加成
            // 血色城堡和万兽场不在这里判断
            int[] nAddNum = null;
            if (Global.IsInExperienceCopyScene(copyId))
            {
                nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum");
            }
            else if (copyId == (int)GoldCopySceneEnum.GOLDCOPYSCENEMAPCODEID)
            {
                nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum");
            }
            else
            {
                nAddNum = null;
            }

            int extAddNum = 0;
            int nVipLev   = client.ClientData.VipLevel;

            if (nVipLev > 0 && nVipLev <= (int)VIPEumValue.VIPENUMVALUE_MAXLEVEL &&
                nAddNum != null && nAddNum.Length > nVipLev)
            {
                extAddNum = nAddNum[nVipLev];
            }

            // 注:最大进入次数和最大完成次数实际只会配置一个,但是这里不做特殊处理,两个都检查一下
            if (maxEnterNum > 0 && hadEnterNum >= maxEnterNum + extAddNum)
            {
                return(false);
            }

            if (maxFinishNum > 0 && hadFinishNum >= maxFinishNum + extAddNum)
            {
                return(false);
            }

            return(true);
        }