/// <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); }
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); } }