예제 #1
0
        /// <summary>
        /// 通知客户端奖励信息
        /// </summary>
        /// <param name="roleid"></param>
        /// <param name="retItem"></param>
        private void NtfAwardData(int roleid, CoupleArenaPkResultItem retItem)
        {
            GameClient client = GameManager.ClientMgr.FindClient(roleid);

            if (client == null || client.ClientData.MapCode != WarCfg.MapCode)
            {
                return;
            }

            var cfg = DuanWeiCfgList.Find(_d => _d.Type == retItem.OldDuanWeiType && _d.Level == retItem.OldDuanWeiLevel);

            if (cfg == null)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("NtfAwardData 段位配置找不到 type={0},level={1}", retItem.OldDuanWeiType, retItem.OldDuanWeiLevel));
                return;
            }

            DateTime now             = TimeUtil.NowDateTime();
            int      getRongYaoTimes = 0;
            bool     canGetRongYao   = false;
            string   szWeekRongYao   = Global.GetRoleParamByName(client, RoleParamName.CoupleArenaWeekRongYao);

            if (!string.IsNullOrEmpty(szWeekRongYao))
            {
                string[] fields = szWeekRongYao.Split(',');
                if (fields != null && fields.Length == 2 && Convert.ToInt32(fields[0]) == TimeUtil.MakeFirstWeekday(now))
                {
                    getRongYaoTimes = Convert.ToInt32(fields[1]);
                }
            }

            CoupleArenaPkResultData data = new CoupleArenaPkResultData();

            data.PKResult     = retItem.Result;
            data.DuanWeiType  = retItem.NewDuanWeiType;
            data.DuanWeiLevel = retItem.NewDuanWeiLevel;
            data.GetJiFen     = retItem.GetJiFen;
            if (retItem.Result != (int)ECoupleArenaPkResult.Invalid && getRongYaoTimes < cfg.WeekGetRongYaoTimes)
            {
                data.GetRongYao = retItem.Result == (int)ECoupleArenaPkResult.Win ? cfg.WinRongYao : cfg.LoseRongYao;
                canGetRongYao   = true;
            }

            if (canGetRongYao)
            {
                GameManager.ClientMgr.ModifyTianTiRongYaoValue(client, data.GetRongYao, "情侣竞技系统获得荣耀", true);
                Global.SaveRoleParamsStringToDB(client, RoleParamName.CoupleArenaWeekRongYao, string.Format("{0},{1}", TimeUtil.MakeFirstWeekday(now), getRongYaoTimes + 1), true);
            }

            client.sendCmd((int)TCPGameServerCmds.CMD_COUPLE_ARENA_NTF_PK_RESULT, data);
        }
예제 #2
0
        private void HandlePkResult(int man, int manzone, byte[] mandata, int wife, int wifezone, byte[] wifedata, int pkDuanWeiType, int pkDuanWeiLevel, CoupleArenaPkResultItem retData)
        {
            CoupleArenaCoupleDataK coupleData = null;

            if (!SyncData.RoleDict.TryGetValue(man, out coupleData))
            {
                coupleData                  = new CoupleArenaCoupleDataK();
                coupleData.Db_CoupleId      = Persistence.GetNextDbCoupleId();
                coupleData.ManRoleId        = man;
                coupleData.ManZoneId        = manzone;
                coupleData.ManSelectorData  = mandata;
                coupleData.WifeRoleId       = wife;
                coupleData.WifeZoneId       = wifezone;
                coupleData.WifeSelectorData = wifedata;
                coupleData.DuanWeiLevel     = _DuanWeiCfgList[0].DuanWeiLevel;
                coupleData.DuanWeiType      = _DuanWeiCfgList[0].DuanWeiType;
                coupleData.Rank             = SyncData.RankList.Count + 1;
                if (retData.Result != (int)ECoupleArenaPkResult.Invalid)
                {
                    SyncData.RankList.Add(coupleData);
                    SyncData.RoleDict[coupleData.ManRoleId]  = coupleData;
                    SyncData.RoleDict[coupleData.WifeRoleId] = coupleData;
                }
            }
            else
            {
                // 更新形象
                coupleData.ManSelectorData  = mandata;
                coupleData.WifeSelectorData = wifedata;
            }

            retData.OldDuanWeiType  = coupleData.DuanWeiType;
            retData.OldDuanWeiLevel = coupleData.DuanWeiLevel;

            // 失败扣除自己段位的积分
            _CoupleArenaDuanWeiCfg duanweiCfgLose = _DuanWeiCfgList.Find(
                _d => _d.DuanWeiLevel == coupleData.DuanWeiLevel && _d.DuanWeiType == coupleData.DuanWeiType);

            if (duanweiCfgLose == null)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("couplearena.HandlePkResult can't find duanwei cfg ,type={0}, level={1}", coupleData.DuanWeiType, coupleData.DuanWeiLevel));
                return;
            }

            // 胜利奖励对方段位的积分
            _CoupleArenaDuanWeiCfg duanweiCfgWin = _DuanWeiCfgList.Find(
                _d => _d.DuanWeiLevel == pkDuanWeiLevel && _d.DuanWeiType == pkDuanWeiType);

            if (duanweiCfgWin == null)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("couplearena.HandlePkResult can't find duanwei cfg ,type={0}, level={1}", pkDuanWeiType, pkDuanWeiLevel));
                return;
            }

            if (retData.Result == (int)ECoupleArenaPkResult.Invalid)
            {
                retData.NewDuanWeiType  = coupleData.DuanWeiType;
                retData.NewDuanWeiLevel = coupleData.DuanWeiLevel;
            }
            else
            {
                coupleData.TotalFightTimes++;
                if (retData.Result == (int)ECoupleArenaPkResult.Win)
                {
                    coupleData.WinFightTimes++;
                    coupleData.LianShengTimes++;
                    coupleData.JiFen += duanweiCfgWin.WinJiFen;

                    retData.GetJiFen = duanweiCfgWin.WinJiFen;
                }
                else
                {
                    coupleData.LianShengTimes = 0;
                    coupleData.JiFen         += duanweiCfgLose.LoseJiFen;
                    coupleData.JiFen          = Math.Max(coupleData.JiFen, 0);

                    retData.GetJiFen = duanweiCfgLose.LoseJiFen;
                }

                ParseDuanweiByJiFen(coupleData.JiFen, out coupleData.DuanWeiType, out coupleData.DuanWeiLevel);
                SyncData.ModifyTime = TimeUtil.NowDateTime();

                retData.NewDuanWeiLevel = coupleData.DuanWeiLevel;
                retData.NewDuanWeiType  = coupleData.DuanWeiType;
                this.IsNeedSort         = true;
            }

            if (retData.Result != (int)ECoupleArenaPkResult.Invalid)
            {
                Persistence.WriteCoupleData(coupleData);
            }
        }